syntax = "proto3"; package cosmos.gov.v1; import "cosmos/base/v1beta1/coin.proto"; import "cosmos/gov/v1/gov.proto"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; import "google/protobuf/any.proto"; import "cosmos/msg/v1/msg.proto"; import "amino/amino.proto"; import "google/protobuf/timestamp.proto"; option go_package = "github.com/cosmos/cosmos-sdk/x/gov/types/v1"; // Msg defines the gov Msg service. service Msg { option (cosmos.msg.v1.service) = true; // SubmitProposal defines a method to create new proposal given the messages. rpc SubmitProposal(MsgSubmitProposal) returns (MsgSubmitProposalResponse) { option (cosmos_proto.method_added_in) = "cosmos-sdk 0.46"; }; // ExecLegacyContent defines a Msg to be in included in a MsgSubmitProposal // to execute a legacy content-based proposal. rpc ExecLegacyContent(MsgExecLegacyContent) returns (MsgExecLegacyContentResponse) { option (cosmos_proto.method_added_in) = "cosmos-sdk 0.46"; }; // Vote defines a method to add a vote on a specific proposal. rpc Vote(MsgVote) returns (MsgVoteResponse) { option (cosmos_proto.method_added_in) = "cosmos-sdk 0.46"; }; // VoteWeighted defines a method to add a weighted vote on a specific proposal. rpc VoteWeighted(MsgVoteWeighted) returns (MsgVoteWeightedResponse) { option (cosmos_proto.method_added_in) = "cosmos-sdk 0.46"; }; // Deposit defines a method to add deposit on a specific proposal. rpc Deposit(MsgDeposit) returns (MsgDepositResponse) { option (cosmos_proto.method_added_in) = "cosmos-sdk 0.46"; }; // UpdateParams defines a governance operation for updating the x/gov module // parameters. The authority is defined in the keeper. rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse) { option (cosmos_proto.method_added_in) = "cosmos-sdk 0.47"; }; // CancelProposal defines a method to cancel governance proposal rpc CancelProposal(MsgCancelProposal) returns (MsgCancelProposalResponse) { option (cosmos_proto.method_added_in) = "cosmos-sdk 0.50"; }; } // MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary // proposal Content. message MsgSubmitProposal { option (cosmos.msg.v1.signer) = "proposer"; option (amino.name) = "cosmos-sdk/v1/MsgSubmitProposal"; // messages are the arbitrary messages to be executed if proposal passes. repeated google.protobuf.Any messages = 1; // initial_deposit is the deposit value that must be paid at proposal submission. repeated cosmos.base.v1beta1.Coin initial_deposit = 2 [ (gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", (amino.dont_omitempty) = true, (amino.encoding) = "legacy_coins" ]; // proposer is the account address of the proposer. string proposer = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // metadata is any arbitrary metadata attached to the proposal. string metadata = 4; // title is the title of the proposal. string title = 5 [(cosmos_proto.field_added_in) = "cosmos-sdk 0.47"]; // summary is the summary of the proposal string summary = 6 [(cosmos_proto.field_added_in) = "cosmos-sdk 0.47"]; // expedited defines if the proposal is expedited or not bool expedited = 7 [(cosmos_proto.field_added_in) = "cosmos-sdk 0.50"]; } // MsgSubmitProposalResponse defines the Msg/SubmitProposal response type. message MsgSubmitProposalResponse { // proposal_id defines the unique id of the proposal. uint64 proposal_id = 1; } // MsgExecLegacyContent is used to wrap the legacy content field into a message. // This ensures backwards compatibility with v1beta1.MsgSubmitProposal. message MsgExecLegacyContent { option (cosmos.msg.v1.signer) = "authority"; option (amino.name) = "cosmos-sdk/v1/MsgExecLegacyContent"; // content is the proposal's content. google.protobuf.Any content = 1 [(cosmos_proto.accepts_interface) = "cosmos.gov.v1beta1.Content"]; // authority must be the gov module address. string authority = 2; } // MsgExecLegacyContentResponse defines the Msg/ExecLegacyContent response type. message MsgExecLegacyContentResponse {} // MsgVote defines a message to cast a vote. message MsgVote { option (cosmos.msg.v1.signer) = "voter"; option (amino.name) = "cosmos-sdk/v1/MsgVote"; // proposal_id defines the unique id of the proposal. uint64 proposal_id = 1 [(gogoproto.jsontag) = "proposal_id", (amino.dont_omitempty) = true]; // voter is the voter address for the proposal. string voter = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // option defines the vote option. VoteOption option = 3; // metadata is any arbitrary metadata attached to the Vote. string metadata = 4; } // MsgVoteResponse defines the Msg/Vote response type. message MsgVoteResponse {} // MsgVoteWeighted defines a message to cast a vote. message MsgVoteWeighted { option (cosmos.msg.v1.signer) = "voter"; option (amino.name) = "cosmos-sdk/v1/MsgVoteWeighted"; // proposal_id defines the unique id of the proposal. uint64 proposal_id = 1 [(gogoproto.jsontag) = "proposal_id", (amino.dont_omitempty) = true]; // voter is the voter address for the proposal. string voter = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // options defines the weighted vote options. repeated WeightedVoteOption options = 3; // metadata is any arbitrary metadata attached to the VoteWeighted. string metadata = 4; } // MsgVoteWeightedResponse defines the Msg/VoteWeighted response type. message MsgVoteWeightedResponse {} // MsgDeposit defines a message to submit a deposit to an existing proposal. message MsgDeposit { option (cosmos.msg.v1.signer) = "depositor"; option (amino.name) = "cosmos-sdk/v1/MsgDeposit"; // proposal_id defines the unique id of the proposal. uint64 proposal_id = 1 [(gogoproto.jsontag) = "proposal_id", (amino.dont_omitempty) = true]; // depositor defines the deposit addresses from the proposals. string depositor = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // amount to be deposited by depositor. repeated cosmos.base.v1beta1.Coin amount = 3 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; } // MsgDepositResponse defines the Msg/Deposit response type. message MsgDepositResponse {} // MsgUpdateParams is the Msg/UpdateParams request type. message MsgUpdateParams { option (cosmos_proto.message_added_in) = "cosmos-sdk 0.47"; option (cosmos.msg.v1.signer) = "authority"; option (amino.name) = "cosmos-sdk/x/gov/v1/MsgUpdateParams"; // authority is the address that controls the module (defaults to x/gov unless overwritten). string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // params defines the x/gov parameters to update. // // NOTE: All parameters must be supplied. Params params = 2 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; } // MsgUpdateParamsResponse defines the response structure for executing a // MsgUpdateParams message. message MsgUpdateParamsResponse { option (cosmos_proto.message_added_in) = "cosmos-sdk 0.47"; } // MsgCancelProposal is the Msg/CancelProposal request type. message MsgCancelProposal { option (cosmos_proto.message_added_in) = "cosmos-sdk 0.50"; option (cosmos.msg.v1.signer) = "proposer"; // proposal_id defines the unique id of the proposal. uint64 proposal_id = 1 [(gogoproto.jsontag) = "proposal_id"]; // proposer is the account address of the proposer. string proposer = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; } // MsgCancelProposalResponse defines the response structure for executing a // MsgCancelProposal message. message MsgCancelProposalResponse { option (cosmos_proto.message_added_in) = "cosmos-sdk 0.50"; // proposal_id defines the unique id of the proposal. uint64 proposal_id = 1 [(gogoproto.jsontag) = "proposal_id"]; // canceled_time is the time when proposal is canceled. google.protobuf.Timestamp canceled_time = 2 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; // canceled_height defines the block height at which the proposal is canceled. uint64 canceled_height = 3; }