nibiru_std/proto/buf/
cosmos.group.v1.rs

1// @generated
2/// Member represents a group member with an account address,
3/// non-zero weight, metadata and added_at timestamp.
4#[allow(clippy::derive_partial_eq_without_eq)]
5#[derive(Clone, PartialEq, ::prost::Message)]
6pub struct Member {
7    /// address is the member's account address.
8    #[prost(string, tag="1")]
9    pub address: ::prost::alloc::string::String,
10    /// weight is the member's voting weight that should be greater than 0.
11    #[prost(string, tag="2")]
12    pub weight: ::prost::alloc::string::String,
13    /// metadata is any arbitrary metadata attached to the member.
14    #[prost(string, tag="3")]
15    pub metadata: ::prost::alloc::string::String,
16    /// added_at is a timestamp specifying when a member was added.
17    #[prost(message, optional, tag="4")]
18    pub added_at: ::core::option::Option<::prost_types::Timestamp>,
19}
20/// MemberRequest represents a group member to be used in Msg server requests.
21/// Contrary to `Member`, it doesn't have any `added_at` field
22/// since this field cannot be set as part of requests.
23#[allow(clippy::derive_partial_eq_without_eq)]
24#[derive(Clone, PartialEq, ::prost::Message)]
25pub struct MemberRequest {
26    /// address is the member's account address.
27    #[prost(string, tag="1")]
28    pub address: ::prost::alloc::string::String,
29    /// weight is the member's voting weight that should be greater than 0.
30    #[prost(string, tag="2")]
31    pub weight: ::prost::alloc::string::String,
32    /// metadata is any arbitrary metadata attached to the member.
33    #[prost(string, tag="3")]
34    pub metadata: ::prost::alloc::string::String,
35}
36/// ThresholdDecisionPolicy is a decision policy where a proposal passes when it
37/// satisfies the two following conditions:
38/// 1. The sum of all `YES` voter's weights is greater or equal than the defined
39///     `threshold`.
40/// 2. The voting and execution periods of the proposal respect the parameters
41///     given by `windows`.
42#[allow(clippy::derive_partial_eq_without_eq)]
43#[derive(Clone, PartialEq, ::prost::Message)]
44pub struct ThresholdDecisionPolicy {
45    /// threshold is the minimum weighted sum of `YES` votes that must be met or
46    /// exceeded for a proposal to succeed.
47    #[prost(string, tag="1")]
48    pub threshold: ::prost::alloc::string::String,
49    /// windows defines the different windows for voting and execution.
50    #[prost(message, optional, tag="2")]
51    pub windows: ::core::option::Option<DecisionPolicyWindows>,
52}
53/// PercentageDecisionPolicy is a decision policy where a proposal passes when
54/// it satisfies the two following conditions:
55/// 1. The percentage of all `YES` voters' weights out of the total group weight
56///     is greater or equal than the given `percentage`.
57/// 2. The voting and execution periods of the proposal respect the parameters
58///     given by `windows`.
59#[allow(clippy::derive_partial_eq_without_eq)]
60#[derive(Clone, PartialEq, ::prost::Message)]
61pub struct PercentageDecisionPolicy {
62    /// percentage is the minimum percentage of the weighted sum of `YES` votes must
63    /// meet for a proposal to succeed.
64    #[prost(string, tag="1")]
65    pub percentage: ::prost::alloc::string::String,
66    /// windows defines the different windows for voting and execution.
67    #[prost(message, optional, tag="2")]
68    pub windows: ::core::option::Option<DecisionPolicyWindows>,
69}
70/// DecisionPolicyWindows defines the different windows for voting and execution.
71#[allow(clippy::derive_partial_eq_without_eq)]
72#[derive(Clone, PartialEq, ::prost::Message)]
73pub struct DecisionPolicyWindows {
74    /// voting_period is the duration from submission of a proposal to the end of voting period
75    /// Within this times votes can be submitted with MsgVote.
76    #[prost(message, optional, tag="1")]
77    pub voting_period: ::core::option::Option<::prost_types::Duration>,
78    /// min_execution_period is the minimum duration after the proposal submission
79    /// where members can start sending MsgExec. This means that the window for
80    /// sending a MsgExec transaction is:
81    /// `[ submission + min_execution_period ; submission + voting_period + max_execution_period]`
82    /// where max_execution_period is a app-specific config, defined in the keeper.
83    /// If not set, min_execution_period will default to 0.
84    ///
85    /// Please make sure to set a `min_execution_period` that is smaller than
86    /// `voting_period + max_execution_period`, or else the above execution window
87    /// is empty, meaning that all proposals created with this decision policy
88    /// won't be able to be executed.
89    #[prost(message, optional, tag="2")]
90    pub min_execution_period: ::core::option::Option<::prost_types::Duration>,
91}
92//
93// State
94//
95
96/// GroupInfo represents the high-level on-chain information for a group.
97#[allow(clippy::derive_partial_eq_without_eq)]
98#[derive(Clone, PartialEq, ::prost::Message)]
99pub struct GroupInfo {
100    /// id is the unique ID of the group.
101    #[prost(uint64, tag="1")]
102    pub id: u64,
103    /// admin is the account address of the group's admin.
104    #[prost(string, tag="2")]
105    pub admin: ::prost::alloc::string::String,
106    /// metadata is any arbitrary metadata to attached to the group.
107    #[prost(string, tag="3")]
108    pub metadata: ::prost::alloc::string::String,
109    /// version is used to track changes to a group's membership structure that
110    /// would break existing proposals. Whenever any members weight is changed,
111    /// or any member is added or removed this version is incremented and will
112    /// cause proposals based on older versions of this group to fail
113    #[prost(uint64, tag="4")]
114    pub version: u64,
115    /// total_weight is the sum of the group members' weights.
116    #[prost(string, tag="5")]
117    pub total_weight: ::prost::alloc::string::String,
118    /// created_at is a timestamp specifying when a group was created.
119    #[prost(message, optional, tag="6")]
120    pub created_at: ::core::option::Option<::prost_types::Timestamp>,
121}
122/// GroupMember represents the relationship between a group and a member.
123#[allow(clippy::derive_partial_eq_without_eq)]
124#[derive(Clone, PartialEq, ::prost::Message)]
125pub struct GroupMember {
126    /// group_id is the unique ID of the group.
127    #[prost(uint64, tag="1")]
128    pub group_id: u64,
129    /// member is the member data.
130    #[prost(message, optional, tag="2")]
131    pub member: ::core::option::Option<Member>,
132}
133/// GroupPolicyInfo represents the high-level on-chain information for a group policy.
134#[allow(clippy::derive_partial_eq_without_eq)]
135#[derive(Clone, PartialEq, ::prost::Message)]
136pub struct GroupPolicyInfo {
137    /// address is the account address of group policy.
138    #[prost(string, tag="1")]
139    pub address: ::prost::alloc::string::String,
140    /// group_id is the unique ID of the group.
141    #[prost(uint64, tag="2")]
142    pub group_id: u64,
143    /// admin is the account address of the group admin.
144    #[prost(string, tag="3")]
145    pub admin: ::prost::alloc::string::String,
146    /// metadata is any arbitrary metadata attached to the group policy.
147    /// the recommended format of the metadata is to be found here:
148    /// <https://docs.cosmos.network/v0.47/modules/group#decision-policy-1>
149    #[prost(string, tag="4")]
150    pub metadata: ::prost::alloc::string::String,
151    /// version is used to track changes to a group's GroupPolicyInfo structure that
152    /// would create a different result on a running proposal.
153    #[prost(uint64, tag="5")]
154    pub version: u64,
155    /// decision_policy specifies the group policy's decision policy.
156    #[prost(message, optional, tag="6")]
157    pub decision_policy: ::core::option::Option<::prost_types::Any>,
158    /// created_at is a timestamp specifying when a group policy was created.
159    #[prost(message, optional, tag="7")]
160    pub created_at: ::core::option::Option<::prost_types::Timestamp>,
161}
162/// Proposal defines a group proposal. Any member of a group can submit a proposal
163/// for a group policy to decide upon.
164/// A proposal consists of a set of `sdk.Msg`s that will be executed if the proposal
165/// passes as well as some optional metadata associated with the proposal.
166#[allow(clippy::derive_partial_eq_without_eq)]
167#[derive(Clone, PartialEq, ::prost::Message)]
168pub struct Proposal {
169    /// id is the unique id of the proposal.
170    #[prost(uint64, tag="1")]
171    pub id: u64,
172    /// group_policy_address is the account address of group policy.
173    #[prost(string, tag="2")]
174    pub group_policy_address: ::prost::alloc::string::String,
175    /// metadata is any arbitrary metadata attached to the proposal.
176    /// the recommended format of the metadata is to be found here:
177    /// <https://docs.cosmos.network/v0.47/modules/group#proposal-4>
178    #[prost(string, tag="3")]
179    pub metadata: ::prost::alloc::string::String,
180    /// proposers are the account addresses of the proposers.
181    #[prost(string, repeated, tag="4")]
182    pub proposers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
183    /// submit_time is a timestamp specifying when a proposal was submitted.
184    #[prost(message, optional, tag="5")]
185    pub submit_time: ::core::option::Option<::prost_types::Timestamp>,
186    /// group_version tracks the version of the group at proposal submission.
187    /// This field is here for informational purposes only.
188    #[prost(uint64, tag="6")]
189    pub group_version: u64,
190    /// group_policy_version tracks the version of the group policy at proposal submission.
191    /// When a decision policy is changed, existing proposals from previous policy
192    /// versions will become invalid with the `ABORTED` status.
193    /// This field is here for informational purposes only.
194    #[prost(uint64, tag="7")]
195    pub group_policy_version: u64,
196    /// status represents the high level position in the life cycle of the proposal. Initial value is Submitted.
197    #[prost(enumeration="ProposalStatus", tag="8")]
198    pub status: i32,
199    /// final_tally_result contains the sums of all weighted votes for this
200    /// proposal for each vote option. It is empty at submission, and only
201    /// populated after tallying, at voting period end or at proposal execution,
202    /// whichever happens first.
203    #[prost(message, optional, tag="9")]
204    pub final_tally_result: ::core::option::Option<TallyResult>,
205    /// voting_period_end is the timestamp before which voting must be done.
206    /// Unless a successful MsgExec is called before (to execute a proposal whose
207    /// tally is successful before the voting period ends), tallying will be done
208    /// at this point, and the `final_tally_result`and `status` fields will be
209    /// accordingly updated.
210    #[prost(message, optional, tag="10")]
211    pub voting_period_end: ::core::option::Option<::prost_types::Timestamp>,
212    /// executor_result is the final result of the proposal execution. Initial value is NotRun.
213    #[prost(enumeration="ProposalExecutorResult", tag="11")]
214    pub executor_result: i32,
215    /// messages is a list of `sdk.Msg`s that will be executed if the proposal passes.
216    #[prost(message, repeated, tag="12")]
217    pub messages: ::prost::alloc::vec::Vec<::prost_types::Any>,
218    /// title is the title of the proposal
219    ///
220    /// Since: cosmos-sdk 0.47
221    #[prost(string, tag="13")]
222    pub title: ::prost::alloc::string::String,
223    /// summary is a short summary of the proposal
224    ///
225    /// Since: cosmos-sdk 0.47
226    #[prost(string, tag="14")]
227    pub summary: ::prost::alloc::string::String,
228}
229/// TallyResult represents the sum of weighted votes for each vote option.
230#[allow(clippy::derive_partial_eq_without_eq)]
231#[derive(Clone, PartialEq, ::prost::Message)]
232pub struct TallyResult {
233    /// yes_count is the weighted sum of yes votes.
234    #[prost(string, tag="1")]
235    pub yes_count: ::prost::alloc::string::String,
236    /// abstain_count is the weighted sum of abstainers.
237    #[prost(string, tag="2")]
238    pub abstain_count: ::prost::alloc::string::String,
239    /// no_count is the weighted sum of no votes.
240    #[prost(string, tag="3")]
241    pub no_count: ::prost::alloc::string::String,
242    /// no_with_veto_count is the weighted sum of veto.
243    #[prost(string, tag="4")]
244    pub no_with_veto_count: ::prost::alloc::string::String,
245}
246/// Vote represents a vote for a proposal.
247#[allow(clippy::derive_partial_eq_without_eq)]
248#[derive(Clone, PartialEq, ::prost::Message)]
249pub struct Vote {
250    /// proposal is the unique ID of the proposal.
251    #[prost(uint64, tag="1")]
252    pub proposal_id: u64,
253    /// voter is the account address of the voter.
254    #[prost(string, tag="2")]
255    pub voter: ::prost::alloc::string::String,
256    /// option is the voter's choice on the proposal.
257    #[prost(enumeration="VoteOption", tag="3")]
258    pub option: i32,
259    /// metadata is any arbitrary metadata attached to the vote.
260    #[prost(string, tag="4")]
261    pub metadata: ::prost::alloc::string::String,
262    /// submit_time is the timestamp when the vote was submitted.
263    #[prost(message, optional, tag="5")]
264    pub submit_time: ::core::option::Option<::prost_types::Timestamp>,
265}
266/// VoteOption enumerates the valid vote options for a given proposal.
267#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
268#[repr(i32)]
269pub enum VoteOption {
270    /// VOTE_OPTION_UNSPECIFIED defines an unspecified vote option which will
271    /// return an error.
272    Unspecified = 0,
273    /// VOTE_OPTION_YES defines a yes vote option.
274    Yes = 1,
275    /// VOTE_OPTION_ABSTAIN defines an abstain vote option.
276    Abstain = 2,
277    /// VOTE_OPTION_NO defines a no vote option.
278    No = 3,
279    /// VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.
280    NoWithVeto = 4,
281}
282impl VoteOption {
283    /// String value of the enum field names used in the ProtoBuf definition.
284    ///
285    /// The values are not transformed in any way and thus are considered stable
286    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
287    pub fn as_str_name(&self) -> &'static str {
288        match self {
289            VoteOption::Unspecified => "VOTE_OPTION_UNSPECIFIED",
290            VoteOption::Yes => "VOTE_OPTION_YES",
291            VoteOption::Abstain => "VOTE_OPTION_ABSTAIN",
292            VoteOption::No => "VOTE_OPTION_NO",
293            VoteOption::NoWithVeto => "VOTE_OPTION_NO_WITH_VETO",
294        }
295    }
296    /// Creates an enum from field names used in the ProtoBuf definition.
297    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
298        match value {
299            "VOTE_OPTION_UNSPECIFIED" => Some(Self::Unspecified),
300            "VOTE_OPTION_YES" => Some(Self::Yes),
301            "VOTE_OPTION_ABSTAIN" => Some(Self::Abstain),
302            "VOTE_OPTION_NO" => Some(Self::No),
303            "VOTE_OPTION_NO_WITH_VETO" => Some(Self::NoWithVeto),
304            _ => None,
305        }
306    }
307}
308/// ProposalStatus defines proposal statuses.
309#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
310#[repr(i32)]
311pub enum ProposalStatus {
312    /// An empty value is invalid and not allowed.
313    Unspecified = 0,
314    /// Initial status of a proposal when submitted.
315    Submitted = 1,
316    /// Final status of a proposal when the final tally is done and the outcome
317    /// passes the group policy's decision policy.
318    Accepted = 2,
319    /// Final status of a proposal when the final tally is done and the outcome
320    /// is rejected by the group policy's decision policy.
321    Rejected = 3,
322    /// Final status of a proposal when the group policy is modified before the
323    /// final tally.
324    Aborted = 4,
325    /// A proposal can be withdrawn before the voting start time by the owner.
326    /// When this happens the final status is Withdrawn.
327    Withdrawn = 5,
328}
329impl ProposalStatus {
330    /// String value of the enum field names used in the ProtoBuf definition.
331    ///
332    /// The values are not transformed in any way and thus are considered stable
333    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
334    pub fn as_str_name(&self) -> &'static str {
335        match self {
336            ProposalStatus::Unspecified => "PROPOSAL_STATUS_UNSPECIFIED",
337            ProposalStatus::Submitted => "PROPOSAL_STATUS_SUBMITTED",
338            ProposalStatus::Accepted => "PROPOSAL_STATUS_ACCEPTED",
339            ProposalStatus::Rejected => "PROPOSAL_STATUS_REJECTED",
340            ProposalStatus::Aborted => "PROPOSAL_STATUS_ABORTED",
341            ProposalStatus::Withdrawn => "PROPOSAL_STATUS_WITHDRAWN",
342        }
343    }
344    /// Creates an enum from field names used in the ProtoBuf definition.
345    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
346        match value {
347            "PROPOSAL_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
348            "PROPOSAL_STATUS_SUBMITTED" => Some(Self::Submitted),
349            "PROPOSAL_STATUS_ACCEPTED" => Some(Self::Accepted),
350            "PROPOSAL_STATUS_REJECTED" => Some(Self::Rejected),
351            "PROPOSAL_STATUS_ABORTED" => Some(Self::Aborted),
352            "PROPOSAL_STATUS_WITHDRAWN" => Some(Self::Withdrawn),
353            _ => None,
354        }
355    }
356}
357/// ProposalExecutorResult defines types of proposal executor results.
358#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
359#[repr(i32)]
360pub enum ProposalExecutorResult {
361    /// An empty value is not allowed.
362    Unspecified = 0,
363    /// We have not yet run the executor.
364    NotRun = 1,
365    /// The executor was successful and proposed action updated state.
366    Success = 2,
367    /// The executor returned an error and proposed action didn't update state.
368    Failure = 3,
369}
370impl ProposalExecutorResult {
371    /// String value of the enum field names used in the ProtoBuf definition.
372    ///
373    /// The values are not transformed in any way and thus are considered stable
374    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
375    pub fn as_str_name(&self) -> &'static str {
376        match self {
377            ProposalExecutorResult::Unspecified => "PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED",
378            ProposalExecutorResult::NotRun => "PROPOSAL_EXECUTOR_RESULT_NOT_RUN",
379            ProposalExecutorResult::Success => "PROPOSAL_EXECUTOR_RESULT_SUCCESS",
380            ProposalExecutorResult::Failure => "PROPOSAL_EXECUTOR_RESULT_FAILURE",
381        }
382    }
383    /// Creates an enum from field names used in the ProtoBuf definition.
384    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
385        match value {
386            "PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED" => Some(Self::Unspecified),
387            "PROPOSAL_EXECUTOR_RESULT_NOT_RUN" => Some(Self::NotRun),
388            "PROPOSAL_EXECUTOR_RESULT_SUCCESS" => Some(Self::Success),
389            "PROPOSAL_EXECUTOR_RESULT_FAILURE" => Some(Self::Failure),
390            _ => None,
391        }
392    }
393}
394/// EventCreateGroup is an event emitted when a group is created.
395#[allow(clippy::derive_partial_eq_without_eq)]
396#[derive(Clone, PartialEq, ::prost::Message)]
397pub struct EventCreateGroup {
398    /// group_id is the unique ID of the group.
399    #[prost(uint64, tag="1")]
400    pub group_id: u64,
401}
402/// EventUpdateGroup is an event emitted when a group is updated.
403#[allow(clippy::derive_partial_eq_without_eq)]
404#[derive(Clone, PartialEq, ::prost::Message)]
405pub struct EventUpdateGroup {
406    /// group_id is the unique ID of the group.
407    #[prost(uint64, tag="1")]
408    pub group_id: u64,
409}
410/// EventCreateGroupPolicy is an event emitted when a group policy is created.
411#[allow(clippy::derive_partial_eq_without_eq)]
412#[derive(Clone, PartialEq, ::prost::Message)]
413pub struct EventCreateGroupPolicy {
414    /// address is the account address of the group policy.
415    #[prost(string, tag="1")]
416    pub address: ::prost::alloc::string::String,
417}
418/// EventUpdateGroupPolicy is an event emitted when a group policy is updated.
419#[allow(clippy::derive_partial_eq_without_eq)]
420#[derive(Clone, PartialEq, ::prost::Message)]
421pub struct EventUpdateGroupPolicy {
422    /// address is the account address of the group policy.
423    #[prost(string, tag="1")]
424    pub address: ::prost::alloc::string::String,
425}
426/// EventSubmitProposal is an event emitted when a proposal is created.
427#[allow(clippy::derive_partial_eq_without_eq)]
428#[derive(Clone, PartialEq, ::prost::Message)]
429pub struct EventSubmitProposal {
430    /// proposal_id is the unique ID of the proposal.
431    #[prost(uint64, tag="1")]
432    pub proposal_id: u64,
433}
434/// EventWithdrawProposal is an event emitted when a proposal is withdrawn.
435#[allow(clippy::derive_partial_eq_without_eq)]
436#[derive(Clone, PartialEq, ::prost::Message)]
437pub struct EventWithdrawProposal {
438    /// proposal_id is the unique ID of the proposal.
439    #[prost(uint64, tag="1")]
440    pub proposal_id: u64,
441}
442/// EventVote is an event emitted when a voter votes on a proposal.
443#[allow(clippy::derive_partial_eq_without_eq)]
444#[derive(Clone, PartialEq, ::prost::Message)]
445pub struct EventVote {
446    /// proposal_id is the unique ID of the proposal.
447    #[prost(uint64, tag="1")]
448    pub proposal_id: u64,
449}
450/// EventExec is an event emitted when a proposal is executed.
451#[allow(clippy::derive_partial_eq_without_eq)]
452#[derive(Clone, PartialEq, ::prost::Message)]
453pub struct EventExec {
454    /// proposal_id is the unique ID of the proposal.
455    #[prost(uint64, tag="1")]
456    pub proposal_id: u64,
457    /// result is the proposal execution result.
458    #[prost(enumeration="ProposalExecutorResult", tag="2")]
459    pub result: i32,
460    /// logs contains error logs in case the execution result is FAILURE.
461    #[prost(string, tag="3")]
462    pub logs: ::prost::alloc::string::String,
463}
464/// EventLeaveGroup is an event emitted when group member leaves the group.
465#[allow(clippy::derive_partial_eq_without_eq)]
466#[derive(Clone, PartialEq, ::prost::Message)]
467pub struct EventLeaveGroup {
468    /// group_id is the unique ID of the group.
469    #[prost(uint64, tag="1")]
470    pub group_id: u64,
471    /// address is the account address of the group member.
472    #[prost(string, tag="2")]
473    pub address: ::prost::alloc::string::String,
474}
475/// EventProposalPruned is an event emitted when a proposal is pruned.
476#[allow(clippy::derive_partial_eq_without_eq)]
477#[derive(Clone, PartialEq, ::prost::Message)]
478pub struct EventProposalPruned {
479    /// proposal_id is the unique ID of the proposal.
480    #[prost(uint64, tag="1")]
481    pub proposal_id: u64,
482    /// status is the proposal status (UNSPECIFIED, SUBMITTED, ACCEPTED, REJECTED, ABORTED, WITHDRAWN).
483    #[prost(enumeration="ProposalStatus", tag="2")]
484    pub status: i32,
485    /// tally_result is the proposal tally result (when applicable).
486    #[prost(message, optional, tag="3")]
487    pub tally_result: ::core::option::Option<TallyResult>,
488}
489/// GenesisState defines the group module's genesis state.
490#[allow(clippy::derive_partial_eq_without_eq)]
491#[derive(Clone, PartialEq, ::prost::Message)]
492pub struct GenesisState {
493    /// group_seq is the group table orm.Sequence,
494    /// it is used to get the next group ID.
495    #[prost(uint64, tag="1")]
496    pub group_seq: u64,
497    /// groups is the list of groups info.
498    #[prost(message, repeated, tag="2")]
499    pub groups: ::prost::alloc::vec::Vec<GroupInfo>,
500    /// group_members is the list of groups members.
501    #[prost(message, repeated, tag="3")]
502    pub group_members: ::prost::alloc::vec::Vec<GroupMember>,
503    /// group_policy_seq is the group policy table orm.Sequence,
504    /// it is used to generate the next group policy account address.
505    #[prost(uint64, tag="4")]
506    pub group_policy_seq: u64,
507    /// group_policies is the list of group policies info.
508    #[prost(message, repeated, tag="5")]
509    pub group_policies: ::prost::alloc::vec::Vec<GroupPolicyInfo>,
510    /// proposal_seq is the proposal table orm.Sequence,
511    /// it is used to get the next proposal ID.
512    #[prost(uint64, tag="6")]
513    pub proposal_seq: u64,
514    /// proposals is the list of proposals.
515    #[prost(message, repeated, tag="7")]
516    pub proposals: ::prost::alloc::vec::Vec<Proposal>,
517    /// votes is the list of votes.
518    #[prost(message, repeated, tag="8")]
519    pub votes: ::prost::alloc::vec::Vec<Vote>,
520}
521/// QueryGroupInfoRequest is the Query/GroupInfo request type.
522#[allow(clippy::derive_partial_eq_without_eq)]
523#[derive(Clone, PartialEq, ::prost::Message)]
524pub struct QueryGroupInfoRequest {
525    /// group_id is the unique ID of the group.
526    #[prost(uint64, tag="1")]
527    pub group_id: u64,
528}
529/// QueryGroupInfoResponse is the Query/GroupInfo response type.
530#[allow(clippy::derive_partial_eq_without_eq)]
531#[derive(Clone, PartialEq, ::prost::Message)]
532pub struct QueryGroupInfoResponse {
533    /// info is the GroupInfo of the group.
534    #[prost(message, optional, tag="1")]
535    pub info: ::core::option::Option<GroupInfo>,
536}
537/// QueryGroupPolicyInfoRequest is the Query/GroupPolicyInfo request type.
538#[allow(clippy::derive_partial_eq_without_eq)]
539#[derive(Clone, PartialEq, ::prost::Message)]
540pub struct QueryGroupPolicyInfoRequest {
541    /// address is the account address of the group policy.
542    #[prost(string, tag="1")]
543    pub address: ::prost::alloc::string::String,
544}
545/// QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type.
546#[allow(clippy::derive_partial_eq_without_eq)]
547#[derive(Clone, PartialEq, ::prost::Message)]
548pub struct QueryGroupPolicyInfoResponse {
549    /// info is the GroupPolicyInfo of the group policy.
550    #[prost(message, optional, tag="1")]
551    pub info: ::core::option::Option<GroupPolicyInfo>,
552}
553/// QueryGroupMembersRequest is the Query/GroupMembers request type.
554#[allow(clippy::derive_partial_eq_without_eq)]
555#[derive(Clone, PartialEq, ::prost::Message)]
556pub struct QueryGroupMembersRequest {
557    /// group_id is the unique ID of the group.
558    #[prost(uint64, tag="1")]
559    pub group_id: u64,
560    /// pagination defines an optional pagination for the request.
561    #[prost(message, optional, tag="2")]
562    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageRequest>,
563}
564/// QueryGroupMembersResponse is the Query/GroupMembersResponse response type.
565#[allow(clippy::derive_partial_eq_without_eq)]
566#[derive(Clone, PartialEq, ::prost::Message)]
567pub struct QueryGroupMembersResponse {
568    /// members are the members of the group with given group_id.
569    #[prost(message, repeated, tag="1")]
570    pub members: ::prost::alloc::vec::Vec<GroupMember>,
571    /// pagination defines the pagination in the response.
572    #[prost(message, optional, tag="2")]
573    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageResponse>,
574}
575/// QueryGroupsByAdminRequest is the Query/GroupsByAdmin request type.
576#[allow(clippy::derive_partial_eq_without_eq)]
577#[derive(Clone, PartialEq, ::prost::Message)]
578pub struct QueryGroupsByAdminRequest {
579    /// admin is the account address of a group's admin.
580    #[prost(string, tag="1")]
581    pub admin: ::prost::alloc::string::String,
582    /// pagination defines an optional pagination for the request.
583    #[prost(message, optional, tag="2")]
584    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageRequest>,
585}
586/// QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse response type.
587#[allow(clippy::derive_partial_eq_without_eq)]
588#[derive(Clone, PartialEq, ::prost::Message)]
589pub struct QueryGroupsByAdminResponse {
590    /// groups are the groups info with the provided admin.
591    #[prost(message, repeated, tag="1")]
592    pub groups: ::prost::alloc::vec::Vec<GroupInfo>,
593    /// pagination defines the pagination in the response.
594    #[prost(message, optional, tag="2")]
595    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageResponse>,
596}
597/// QueryGroupPoliciesByGroupRequest is the Query/GroupPoliciesByGroup request type.
598#[allow(clippy::derive_partial_eq_without_eq)]
599#[derive(Clone, PartialEq, ::prost::Message)]
600pub struct QueryGroupPoliciesByGroupRequest {
601    /// group_id is the unique ID of the group policy's group.
602    #[prost(uint64, tag="1")]
603    pub group_id: u64,
604    /// pagination defines an optional pagination for the request.
605    #[prost(message, optional, tag="2")]
606    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageRequest>,
607}
608/// QueryGroupPoliciesByGroupResponse is the Query/GroupPoliciesByGroup response type.
609#[allow(clippy::derive_partial_eq_without_eq)]
610#[derive(Clone, PartialEq, ::prost::Message)]
611pub struct QueryGroupPoliciesByGroupResponse {
612    /// group_policies are the group policies info associated with the provided group.
613    #[prost(message, repeated, tag="1")]
614    pub group_policies: ::prost::alloc::vec::Vec<GroupPolicyInfo>,
615    /// pagination defines the pagination in the response.
616    #[prost(message, optional, tag="2")]
617    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageResponse>,
618}
619/// QueryGroupPoliciesByAdminRequest is the Query/GroupPoliciesByAdmin request type.
620#[allow(clippy::derive_partial_eq_without_eq)]
621#[derive(Clone, PartialEq, ::prost::Message)]
622pub struct QueryGroupPoliciesByAdminRequest {
623    /// admin is the admin address of the group policy.
624    #[prost(string, tag="1")]
625    pub admin: ::prost::alloc::string::String,
626    /// pagination defines an optional pagination for the request.
627    #[prost(message, optional, tag="2")]
628    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageRequest>,
629}
630/// QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin response type.
631#[allow(clippy::derive_partial_eq_without_eq)]
632#[derive(Clone, PartialEq, ::prost::Message)]
633pub struct QueryGroupPoliciesByAdminResponse {
634    /// group_policies are the group policies info with provided admin.
635    #[prost(message, repeated, tag="1")]
636    pub group_policies: ::prost::alloc::vec::Vec<GroupPolicyInfo>,
637    /// pagination defines the pagination in the response.
638    #[prost(message, optional, tag="2")]
639    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageResponse>,
640}
641/// QueryProposalRequest is the Query/Proposal request type.
642#[allow(clippy::derive_partial_eq_without_eq)]
643#[derive(Clone, PartialEq, ::prost::Message)]
644pub struct QueryProposalRequest {
645    /// proposal_id is the unique ID of a proposal.
646    #[prost(uint64, tag="1")]
647    pub proposal_id: u64,
648}
649/// QueryProposalResponse is the Query/Proposal response type.
650#[allow(clippy::derive_partial_eq_without_eq)]
651#[derive(Clone, PartialEq, ::prost::Message)]
652pub struct QueryProposalResponse {
653    /// proposal is the proposal info.
654    #[prost(message, optional, tag="1")]
655    pub proposal: ::core::option::Option<Proposal>,
656}
657/// QueryProposalsByGroupPolicyRequest is the Query/ProposalByGroupPolicy request type.
658#[allow(clippy::derive_partial_eq_without_eq)]
659#[derive(Clone, PartialEq, ::prost::Message)]
660pub struct QueryProposalsByGroupPolicyRequest {
661    /// address is the account address of the group policy related to proposals.
662    #[prost(string, tag="1")]
663    pub address: ::prost::alloc::string::String,
664    /// pagination defines an optional pagination for the request.
665    #[prost(message, optional, tag="2")]
666    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageRequest>,
667}
668/// QueryProposalsByGroupPolicyResponse is the Query/ProposalByGroupPolicy response type.
669#[allow(clippy::derive_partial_eq_without_eq)]
670#[derive(Clone, PartialEq, ::prost::Message)]
671pub struct QueryProposalsByGroupPolicyResponse {
672    /// proposals are the proposals with given group policy.
673    #[prost(message, repeated, tag="1")]
674    pub proposals: ::prost::alloc::vec::Vec<Proposal>,
675    /// pagination defines the pagination in the response.
676    #[prost(message, optional, tag="2")]
677    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageResponse>,
678}
679/// QueryVoteByProposalVoterRequest is the Query/VoteByProposalVoter request type.
680#[allow(clippy::derive_partial_eq_without_eq)]
681#[derive(Clone, PartialEq, ::prost::Message)]
682pub struct QueryVoteByProposalVoterRequest {
683    /// proposal_id is the unique ID of a proposal.
684    #[prost(uint64, tag="1")]
685    pub proposal_id: u64,
686    /// voter is a proposal voter account address.
687    #[prost(string, tag="2")]
688    pub voter: ::prost::alloc::string::String,
689}
690/// QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter response type.
691#[allow(clippy::derive_partial_eq_without_eq)]
692#[derive(Clone, PartialEq, ::prost::Message)]
693pub struct QueryVoteByProposalVoterResponse {
694    /// vote is the vote with given proposal_id and voter.
695    #[prost(message, optional, tag="1")]
696    pub vote: ::core::option::Option<Vote>,
697}
698/// QueryVotesByProposalRequest is the Query/VotesByProposal request type.
699#[allow(clippy::derive_partial_eq_without_eq)]
700#[derive(Clone, PartialEq, ::prost::Message)]
701pub struct QueryVotesByProposalRequest {
702    /// proposal_id is the unique ID of a proposal.
703    #[prost(uint64, tag="1")]
704    pub proposal_id: u64,
705    /// pagination defines an optional pagination for the request.
706    #[prost(message, optional, tag="2")]
707    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageRequest>,
708}
709/// QueryVotesByProposalResponse is the Query/VotesByProposal response type.
710#[allow(clippy::derive_partial_eq_without_eq)]
711#[derive(Clone, PartialEq, ::prost::Message)]
712pub struct QueryVotesByProposalResponse {
713    /// votes are the list of votes for given proposal_id.
714    #[prost(message, repeated, tag="1")]
715    pub votes: ::prost::alloc::vec::Vec<Vote>,
716    /// pagination defines the pagination in the response.
717    #[prost(message, optional, tag="2")]
718    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageResponse>,
719}
720/// QueryVotesByVoterRequest is the Query/VotesByVoter request type.
721#[allow(clippy::derive_partial_eq_without_eq)]
722#[derive(Clone, PartialEq, ::prost::Message)]
723pub struct QueryVotesByVoterRequest {
724    /// voter is a proposal voter account address.
725    #[prost(string, tag="1")]
726    pub voter: ::prost::alloc::string::String,
727    /// pagination defines an optional pagination for the request.
728    #[prost(message, optional, tag="2")]
729    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageRequest>,
730}
731/// QueryVotesByVoterResponse is the Query/VotesByVoter response type.
732#[allow(clippy::derive_partial_eq_without_eq)]
733#[derive(Clone, PartialEq, ::prost::Message)]
734pub struct QueryVotesByVoterResponse {
735    /// votes are the list of votes by given voter.
736    #[prost(message, repeated, tag="1")]
737    pub votes: ::prost::alloc::vec::Vec<Vote>,
738    /// pagination defines the pagination in the response.
739    #[prost(message, optional, tag="2")]
740    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageResponse>,
741}
742/// QueryGroupsByMemberRequest is the Query/GroupsByMember request type.
743#[allow(clippy::derive_partial_eq_without_eq)]
744#[derive(Clone, PartialEq, ::prost::Message)]
745pub struct QueryGroupsByMemberRequest {
746    /// address is the group member address.
747    #[prost(string, tag="1")]
748    pub address: ::prost::alloc::string::String,
749    /// pagination defines an optional pagination for the request.
750    #[prost(message, optional, tag="2")]
751    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageRequest>,
752}
753/// QueryGroupsByMemberResponse is the Query/GroupsByMember response type.
754#[allow(clippy::derive_partial_eq_without_eq)]
755#[derive(Clone, PartialEq, ::prost::Message)]
756pub struct QueryGroupsByMemberResponse {
757    /// groups are the groups info with the provided group member.
758    #[prost(message, repeated, tag="1")]
759    pub groups: ::prost::alloc::vec::Vec<GroupInfo>,
760    /// pagination defines the pagination in the response.
761    #[prost(message, optional, tag="2")]
762    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageResponse>,
763}
764/// QueryTallyResultRequest is the Query/TallyResult request type.
765#[allow(clippy::derive_partial_eq_without_eq)]
766#[derive(Clone, PartialEq, ::prost::Message)]
767pub struct QueryTallyResultRequest {
768    /// proposal_id is the unique id of a proposal.
769    #[prost(uint64, tag="1")]
770    pub proposal_id: u64,
771}
772/// QueryTallyResultResponse is the Query/TallyResult response type.
773#[allow(clippy::derive_partial_eq_without_eq)]
774#[derive(Clone, PartialEq, ::prost::Message)]
775pub struct QueryTallyResultResponse {
776    /// tally defines the requested tally.
777    #[prost(message, optional, tag="1")]
778    pub tally: ::core::option::Option<TallyResult>,
779}
780/// QueryGroupsRequest is the Query/Groups request type.
781///
782/// Since: cosmos-sdk 0.47.1
783#[allow(clippy::derive_partial_eq_without_eq)]
784#[derive(Clone, PartialEq, ::prost::Message)]
785pub struct QueryGroupsRequest {
786    /// pagination defines an optional pagination for the request.
787    #[prost(message, optional, tag="2")]
788    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageRequest>,
789}
790/// QueryGroupsResponse is the Query/Groups response type.
791///
792/// Since: cosmos-sdk 0.47.1
793#[allow(clippy::derive_partial_eq_without_eq)]
794#[derive(Clone, PartialEq, ::prost::Message)]
795pub struct QueryGroupsResponse {
796    /// `groups` is all the groups present in state.
797    #[prost(message, repeated, tag="1")]
798    pub groups: ::prost::alloc::vec::Vec<GroupInfo>,
799    /// pagination defines the pagination in the response.
800    #[prost(message, optional, tag="2")]
801    pub pagination: ::core::option::Option<crate::proto::cosmos::base::query::v1beta1::PageResponse>,
802}
803//
804// Groups
805//
806
807/// MsgCreateGroup is the Msg/CreateGroup request type.
808#[allow(clippy::derive_partial_eq_without_eq)]
809#[derive(Clone, PartialEq, ::prost::Message)]
810pub struct MsgCreateGroup {
811    /// admin is the account address of the group admin.
812    #[prost(string, tag="1")]
813    pub admin: ::prost::alloc::string::String,
814    /// members defines the group members.
815    #[prost(message, repeated, tag="2")]
816    pub members: ::prost::alloc::vec::Vec<MemberRequest>,
817    /// metadata is any arbitrary metadata to attached to the group.
818    #[prost(string, tag="3")]
819    pub metadata: ::prost::alloc::string::String,
820}
821/// MsgCreateGroupResponse is the Msg/CreateGroup response type.
822#[allow(clippy::derive_partial_eq_without_eq)]
823#[derive(Clone, PartialEq, ::prost::Message)]
824pub struct MsgCreateGroupResponse {
825    /// group_id is the unique ID of the newly created group.
826    #[prost(uint64, tag="1")]
827    pub group_id: u64,
828}
829/// MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type.
830#[allow(clippy::derive_partial_eq_without_eq)]
831#[derive(Clone, PartialEq, ::prost::Message)]
832pub struct MsgUpdateGroupMembers {
833    /// admin is the account address of the group admin.
834    #[prost(string, tag="1")]
835    pub admin: ::prost::alloc::string::String,
836    /// group_id is the unique ID of the group.
837    #[prost(uint64, tag="2")]
838    pub group_id: u64,
839    /// member_updates is the list of members to update,
840    /// set weight to 0 to remove a member.
841    #[prost(message, repeated, tag="3")]
842    pub member_updates: ::prost::alloc::vec::Vec<MemberRequest>,
843}
844/// MsgUpdateGroupMembersResponse is the Msg/UpdateGroupMembers response type.
845#[allow(clippy::derive_partial_eq_without_eq)]
846#[derive(Clone, PartialEq, ::prost::Message)]
847pub struct MsgUpdateGroupMembersResponse {
848}
849/// MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type.
850#[allow(clippy::derive_partial_eq_without_eq)]
851#[derive(Clone, PartialEq, ::prost::Message)]
852pub struct MsgUpdateGroupAdmin {
853    /// admin is the current account address of the group admin.
854    #[prost(string, tag="1")]
855    pub admin: ::prost::alloc::string::String,
856    /// group_id is the unique ID of the group.
857    #[prost(uint64, tag="2")]
858    pub group_id: u64,
859    /// new_admin is the group new admin account address.
860    #[prost(string, tag="3")]
861    pub new_admin: ::prost::alloc::string::String,
862}
863/// MsgUpdateGroupAdminResponse is the Msg/UpdateGroupAdmin response type.
864#[allow(clippy::derive_partial_eq_without_eq)]
865#[derive(Clone, PartialEq, ::prost::Message)]
866pub struct MsgUpdateGroupAdminResponse {
867}
868/// MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type.
869#[allow(clippy::derive_partial_eq_without_eq)]
870#[derive(Clone, PartialEq, ::prost::Message)]
871pub struct MsgUpdateGroupMetadata {
872    /// admin is the account address of the group admin.
873    #[prost(string, tag="1")]
874    pub admin: ::prost::alloc::string::String,
875    /// group_id is the unique ID of the group.
876    #[prost(uint64, tag="2")]
877    pub group_id: u64,
878    /// metadata is the updated group's metadata.
879    #[prost(string, tag="3")]
880    pub metadata: ::prost::alloc::string::String,
881}
882/// MsgUpdateGroupMetadataResponse is the Msg/UpdateGroupMetadata response type.
883#[allow(clippy::derive_partial_eq_without_eq)]
884#[derive(Clone, PartialEq, ::prost::Message)]
885pub struct MsgUpdateGroupMetadataResponse {
886}
887//
888// Group Policies
889//
890
891/// MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.
892#[allow(clippy::derive_partial_eq_without_eq)]
893#[derive(Clone, PartialEq, ::prost::Message)]
894pub struct MsgCreateGroupPolicy {
895    /// admin is the account address of the group admin.
896    #[prost(string, tag="1")]
897    pub admin: ::prost::alloc::string::String,
898    /// group_id is the unique ID of the group.
899    #[prost(uint64, tag="2")]
900    pub group_id: u64,
901    /// metadata is any arbitrary metadata attached to the group policy.
902    #[prost(string, tag="3")]
903    pub metadata: ::prost::alloc::string::String,
904    /// decision_policy specifies the group policy's decision policy.
905    #[prost(message, optional, tag="4")]
906    pub decision_policy: ::core::option::Option<::prost_types::Any>,
907}
908/// MsgCreateGroupPolicyResponse is the Msg/CreateGroupPolicy response type.
909#[allow(clippy::derive_partial_eq_without_eq)]
910#[derive(Clone, PartialEq, ::prost::Message)]
911pub struct MsgCreateGroupPolicyResponse {
912    /// address is the account address of the newly created group policy.
913    #[prost(string, tag="1")]
914    pub address: ::prost::alloc::string::String,
915}
916/// MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type.
917#[allow(clippy::derive_partial_eq_without_eq)]
918#[derive(Clone, PartialEq, ::prost::Message)]
919pub struct MsgUpdateGroupPolicyAdmin {
920    /// admin is the account address of the group admin.
921    #[prost(string, tag="1")]
922    pub admin: ::prost::alloc::string::String,
923    /// group_policy_address is the account address of the group policy.
924    #[prost(string, tag="2")]
925    pub group_policy_address: ::prost::alloc::string::String,
926    /// new_admin is the new group policy admin.
927    #[prost(string, tag="3")]
928    pub new_admin: ::prost::alloc::string::String,
929}
930/// MsgUpdateGroupPolicyAdminResponse is the Msg/UpdateGroupPolicyAdmin response type.
931#[allow(clippy::derive_partial_eq_without_eq)]
932#[derive(Clone, PartialEq, ::prost::Message)]
933pub struct MsgUpdateGroupPolicyAdminResponse {
934}
935/// MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request type.
936#[allow(clippy::derive_partial_eq_without_eq)]
937#[derive(Clone, PartialEq, ::prost::Message)]
938pub struct MsgCreateGroupWithPolicy {
939    /// admin is the account address of the group and group policy admin.
940    #[prost(string, tag="1")]
941    pub admin: ::prost::alloc::string::String,
942    /// members defines the group members.
943    #[prost(message, repeated, tag="2")]
944    pub members: ::prost::alloc::vec::Vec<MemberRequest>,
945    /// group_metadata is any arbitrary metadata attached to the group.
946    #[prost(string, tag="3")]
947    pub group_metadata: ::prost::alloc::string::String,
948    /// group_policy_metadata is any arbitrary metadata attached to the group policy.
949    #[prost(string, tag="4")]
950    pub group_policy_metadata: ::prost::alloc::string::String,
951    /// group_policy_as_admin is a boolean field, if set to true, the group policy account address will be used as group
952    /// and group policy admin.
953    #[prost(bool, tag="5")]
954    pub group_policy_as_admin: bool,
955    /// decision_policy specifies the group policy's decision policy.
956    #[prost(message, optional, tag="6")]
957    pub decision_policy: ::core::option::Option<::prost_types::Any>,
958}
959/// MsgCreateGroupWithPolicyResponse is the Msg/CreateGroupWithPolicy response type.
960#[allow(clippy::derive_partial_eq_without_eq)]
961#[derive(Clone, PartialEq, ::prost::Message)]
962pub struct MsgCreateGroupWithPolicyResponse {
963    /// group_id is the unique ID of the newly created group with policy.
964    #[prost(uint64, tag="1")]
965    pub group_id: u64,
966    /// group_policy_address is the account address of the newly created group policy.
967    #[prost(string, tag="2")]
968    pub group_policy_address: ::prost::alloc::string::String,
969}
970/// MsgUpdateGroupPolicyDecisionPolicy is the Msg/UpdateGroupPolicyDecisionPolicy request type.
971#[allow(clippy::derive_partial_eq_without_eq)]
972#[derive(Clone, PartialEq, ::prost::Message)]
973pub struct MsgUpdateGroupPolicyDecisionPolicy {
974    /// admin is the account address of the group admin.
975    #[prost(string, tag="1")]
976    pub admin: ::prost::alloc::string::String,
977    /// group_policy_address is the account address of group policy.
978    #[prost(string, tag="2")]
979    pub group_policy_address: ::prost::alloc::string::String,
980    /// decision_policy is the updated group policy's decision policy.
981    #[prost(message, optional, tag="3")]
982    pub decision_policy: ::core::option::Option<::prost_types::Any>,
983}
984/// MsgUpdateGroupPolicyDecisionPolicyResponse is the Msg/UpdateGroupPolicyDecisionPolicy response type.
985#[allow(clippy::derive_partial_eq_without_eq)]
986#[derive(Clone, PartialEq, ::prost::Message)]
987pub struct MsgUpdateGroupPolicyDecisionPolicyResponse {
988}
989/// MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request type.
990#[allow(clippy::derive_partial_eq_without_eq)]
991#[derive(Clone, PartialEq, ::prost::Message)]
992pub struct MsgUpdateGroupPolicyMetadata {
993    /// admin is the account address of the group admin.
994    #[prost(string, tag="1")]
995    pub admin: ::prost::alloc::string::String,
996    /// group_policy_address is the account address of group policy.
997    #[prost(string, tag="2")]
998    pub group_policy_address: ::prost::alloc::string::String,
999    /// metadata is the group policy metadata to be updated.
1000    #[prost(string, tag="3")]
1001    pub metadata: ::prost::alloc::string::String,
1002}
1003/// MsgUpdateGroupPolicyMetadataResponse is the Msg/UpdateGroupPolicyMetadata response type.
1004#[allow(clippy::derive_partial_eq_without_eq)]
1005#[derive(Clone, PartialEq, ::prost::Message)]
1006pub struct MsgUpdateGroupPolicyMetadataResponse {
1007}
1008/// MsgSubmitProposal is the Msg/SubmitProposal request type.
1009#[allow(clippy::derive_partial_eq_without_eq)]
1010#[derive(Clone, PartialEq, ::prost::Message)]
1011pub struct MsgSubmitProposal {
1012    /// group_policy_address is the account address of group policy.
1013    #[prost(string, tag="1")]
1014    pub group_policy_address: ::prost::alloc::string::String,
1015    /// proposers are the account addresses of the proposers.
1016    /// Proposers signatures will be counted as yes votes.
1017    #[prost(string, repeated, tag="2")]
1018    pub proposers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1019    /// metadata is any arbitrary metadata attached to the proposal.
1020    #[prost(string, tag="3")]
1021    pub metadata: ::prost::alloc::string::String,
1022    /// messages is a list of `sdk.Msg`s that will be executed if the proposal passes.
1023    #[prost(message, repeated, tag="4")]
1024    pub messages: ::prost::alloc::vec::Vec<::prost_types::Any>,
1025    /// exec defines the mode of execution of the proposal,
1026    /// whether it should be executed immediately on creation or not.
1027    /// If so, proposers signatures are considered as Yes votes.
1028    #[prost(enumeration="Exec", tag="5")]
1029    pub exec: i32,
1030    /// title is the title of the proposal.
1031    ///
1032    /// Since: cosmos-sdk 0.47
1033    #[prost(string, tag="6")]
1034    pub title: ::prost::alloc::string::String,
1035    /// summary is the summary of the proposal.
1036    ///
1037    /// Since: cosmos-sdk 0.47
1038    #[prost(string, tag="7")]
1039    pub summary: ::prost::alloc::string::String,
1040}
1041/// MsgSubmitProposalResponse is the Msg/SubmitProposal response type.
1042#[allow(clippy::derive_partial_eq_without_eq)]
1043#[derive(Clone, PartialEq, ::prost::Message)]
1044pub struct MsgSubmitProposalResponse {
1045    /// proposal is the unique ID of the proposal.
1046    #[prost(uint64, tag="1")]
1047    pub proposal_id: u64,
1048}
1049/// MsgWithdrawProposal is the Msg/WithdrawProposal request type.
1050#[allow(clippy::derive_partial_eq_without_eq)]
1051#[derive(Clone, PartialEq, ::prost::Message)]
1052pub struct MsgWithdrawProposal {
1053    /// proposal is the unique ID of the proposal.
1054    #[prost(uint64, tag="1")]
1055    pub proposal_id: u64,
1056    /// address is the admin of the group policy or one of the proposer of the proposal.
1057    #[prost(string, tag="2")]
1058    pub address: ::prost::alloc::string::String,
1059}
1060/// MsgWithdrawProposalResponse is the Msg/WithdrawProposal response type.
1061#[allow(clippy::derive_partial_eq_without_eq)]
1062#[derive(Clone, PartialEq, ::prost::Message)]
1063pub struct MsgWithdrawProposalResponse {
1064}
1065/// MsgVote is the Msg/Vote request type.
1066#[allow(clippy::derive_partial_eq_without_eq)]
1067#[derive(Clone, PartialEq, ::prost::Message)]
1068pub struct MsgVote {
1069    /// proposal is the unique ID of the proposal.
1070    #[prost(uint64, tag="1")]
1071    pub proposal_id: u64,
1072    /// voter is the voter account address.
1073    #[prost(string, tag="2")]
1074    pub voter: ::prost::alloc::string::String,
1075    /// option is the voter's choice on the proposal.
1076    #[prost(enumeration="VoteOption", tag="3")]
1077    pub option: i32,
1078    /// metadata is any arbitrary metadata attached to the vote.
1079    #[prost(string, tag="4")]
1080    pub metadata: ::prost::alloc::string::String,
1081    /// exec defines whether the proposal should be executed
1082    /// immediately after voting or not.
1083    #[prost(enumeration="Exec", tag="5")]
1084    pub exec: i32,
1085}
1086/// MsgVoteResponse is the Msg/Vote response type.
1087#[allow(clippy::derive_partial_eq_without_eq)]
1088#[derive(Clone, PartialEq, ::prost::Message)]
1089pub struct MsgVoteResponse {
1090}
1091/// MsgExec is the Msg/Exec request type.
1092#[allow(clippy::derive_partial_eq_without_eq)]
1093#[derive(Clone, PartialEq, ::prost::Message)]
1094pub struct MsgExec {
1095    /// proposal is the unique ID of the proposal.
1096    #[prost(uint64, tag="1")]
1097    pub proposal_id: u64,
1098    /// executor is the account address used to execute the proposal.
1099    #[prost(string, tag="2")]
1100    pub executor: ::prost::alloc::string::String,
1101}
1102/// MsgExecResponse is the Msg/Exec request type.
1103#[allow(clippy::derive_partial_eq_without_eq)]
1104#[derive(Clone, PartialEq, ::prost::Message)]
1105pub struct MsgExecResponse {
1106    /// result is the final result of the proposal execution.
1107    #[prost(enumeration="ProposalExecutorResult", tag="2")]
1108    pub result: i32,
1109}
1110/// MsgLeaveGroup is the Msg/LeaveGroup request type.
1111#[allow(clippy::derive_partial_eq_without_eq)]
1112#[derive(Clone, PartialEq, ::prost::Message)]
1113pub struct MsgLeaveGroup {
1114    /// address is the account address of the group member.
1115    #[prost(string, tag="1")]
1116    pub address: ::prost::alloc::string::String,
1117    /// group_id is the unique ID of the group.
1118    #[prost(uint64, tag="2")]
1119    pub group_id: u64,
1120}
1121/// MsgLeaveGroupResponse is the Msg/LeaveGroup response type.
1122#[allow(clippy::derive_partial_eq_without_eq)]
1123#[derive(Clone, PartialEq, ::prost::Message)]
1124pub struct MsgLeaveGroupResponse {
1125}
1126//
1127// Proposals and Voting
1128//
1129
1130/// Exec defines modes of execution of a proposal on creation or on new vote.
1131#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1132#[repr(i32)]
1133pub enum Exec {
1134    /// An empty value means that there should be a separate
1135    /// MsgExec request for the proposal to execute.
1136    Unspecified = 0,
1137    /// Try to execute the proposal immediately.
1138    /// If the proposal is not allowed per the DecisionPolicy,
1139    /// the proposal will still be open and could
1140    /// be executed at a later point.
1141    Try = 1,
1142}
1143impl Exec {
1144    /// String value of the enum field names used in the ProtoBuf definition.
1145    ///
1146    /// The values are not transformed in any way and thus are considered stable
1147    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1148    pub fn as_str_name(&self) -> &'static str {
1149        match self {
1150            Exec::Unspecified => "EXEC_UNSPECIFIED",
1151            Exec::Try => "EXEC_TRY",
1152        }
1153    }
1154    /// Creates an enum from field names used in the ProtoBuf definition.
1155    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1156        match value {
1157            "EXEC_UNSPECIFIED" => Some(Self::Unspecified),
1158            "EXEC_TRY" => Some(Self::Try),
1159            _ => None,
1160        }
1161    }
1162}
1163// @@protoc_insertion_point(module)