persistence_std/types/cosmos/staking/
v1beta1.rs

1use persistence_std_derive::CosmwasmExt;
2/// StakeAuthorization defines authorization for delegate/undelegate/redelegate.
3///
4/// Since: cosmos-sdk 0.43
5#[allow(clippy::derive_partial_eq_without_eq)]
6#[derive(
7    Clone,
8    PartialEq,
9    Eq,
10    ::prost::Message,
11    ::serde::Serialize,
12    ::serde::Deserialize,
13    ::schemars::JsonSchema,
14    CosmwasmExt,
15)]
16#[proto_message(type_url = "/cosmos.staking.v1beta1.StakeAuthorization")]
17pub struct StakeAuthorization {
18    /// max_tokens specifies the maximum amount of tokens can be delegate to a validator. If it is
19    /// empty, there is no spend limit and any amount of coins can be delegated.
20    #[prost(message, optional, tag = "1")]
21    pub max_tokens: ::core::option::Option<super::super::base::v1beta1::Coin>,
22    /// authorization_type defines one of AuthorizationType.
23    #[prost(enumeration = "AuthorizationType", tag = "4")]
24    #[serde(
25        serialize_with = "authorization_type_serde::serialize",
26        deserialize_with = "authorization_type_serde::deserialize"
27    )]
28    pub authorization_type: i32,
29    /// validators is the oneof that represents either allow_list or deny_list
30    #[prost(oneof = "stake_authorization::Validators", tags = "2, 3")]
31    pub validators: ::core::option::Option<stake_authorization::Validators>,
32}
33/// Nested message and enum types in `StakeAuthorization`.
34pub mod stake_authorization {
35    use persistence_std_derive::CosmwasmExt;
36    /// Validators defines list of validator addresses.
37    #[allow(clippy::derive_partial_eq_without_eq)]
38    #[derive(
39        Clone,
40        PartialEq,
41        Eq,
42        ::prost::Message,
43        ::serde::Serialize,
44        ::serde::Deserialize,
45        ::schemars::JsonSchema,
46        CosmwasmExt,
47    )]
48    #[proto_message(type_url = "/cosmos.staking.v1beta1.")]
49    pub struct Validators_ {
50        #[prost(string, repeated, tag = "1")]
51        pub address: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
52    }
53    /// validators is the oneof that represents either allow_list or deny_list
54    #[allow(clippy::derive_partial_eq_without_eq)]
55    #[derive(
56        Clone,
57        PartialEq,
58        Eq,
59        ::prost::Oneof,
60        ::schemars::JsonSchema,
61        ::serde::Serialize,
62        ::serde::Deserialize,
63    )]
64    pub enum Validators {
65        /// allow_list specifies list of validator addresses to whom grantee can delegate tokens on behalf of granter's
66        /// account.
67        #[prost(message, tag = "2")]
68        AllowList(Validators_),
69        /// deny_list specifies list of validator addresses to whom grantee can not delegate tokens.
70        #[prost(message, tag = "3")]
71        DenyList(Validators_),
72    }
73}
74/// AuthorizationType defines the type of staking module authorization type
75///
76/// Since: cosmos-sdk 0.43
77#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
78#[repr(i32)]
79#[derive(::schemars::JsonSchema)]
80pub enum AuthorizationType {
81    /// AUTHORIZATION_TYPE_UNSPECIFIED specifies an unknown authorization type
82    Unspecified = 0,
83    /// AUTHORIZATION_TYPE_DELEGATE defines an authorization type for Msg/Delegate
84    Delegate = 1,
85    /// AUTHORIZATION_TYPE_UNDELEGATE defines an authorization type for Msg/Undelegate
86    Undelegate = 2,
87    /// AUTHORIZATION_TYPE_REDELEGATE defines an authorization type for Msg/BeginRedelegate
88    Redelegate = 3,
89}
90pub mod authorization_type_serde {
91    use super::AuthorizationType;
92    use serde::{Deserialize, Deserializer, Serializer};
93    pub fn deserialize<'de, T, D>(deserializer: D) -> std::result::Result<T, D::Error>
94    where
95        T: From<AuthorizationType>,
96        D: Deserializer<'de>,
97    {
98        let s = String::deserialize(deserializer)?;
99        let enum_value = AuthorizationType::from_str_name(&s).unwrap();
100        let int_value: T = enum_value.into();
101        return Ok(int_value);
102    }
103    pub fn serialize<S>(value: &i32, serializer: S) -> std::result::Result<S::Ok, S::Error>
104    where
105        S: Serializer,
106    {
107        let s: AuthorizationType = AuthorizationType::from_i32(*value).unwrap();
108        serializer.serialize_str(s.as_str_name())
109    }
110}
111impl AuthorizationType {
112    /// String value of the enum field names used in the ProtoBuf definition.
113    ///
114    /// The values are not transformed in any way and thus are considered stable
115    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
116    pub fn as_str_name(&self) -> &'static str {
117        match self {
118            AuthorizationType::Unspecified => "AUTHORIZATION_TYPE_UNSPECIFIED",
119            AuthorizationType::Delegate => "AUTHORIZATION_TYPE_DELEGATE",
120            AuthorizationType::Undelegate => "AUTHORIZATION_TYPE_UNDELEGATE",
121            AuthorizationType::Redelegate => "AUTHORIZATION_TYPE_REDELEGATE",
122        }
123    }
124    /// Creates an enum from field names used in the ProtoBuf definition.
125    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
126        match value {
127            "AUTHORIZATION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
128            "AUTHORIZATION_TYPE_DELEGATE" => Some(Self::Delegate),
129            "AUTHORIZATION_TYPE_UNDELEGATE" => Some(Self::Undelegate),
130            "AUTHORIZATION_TYPE_REDELEGATE" => Some(Self::Redelegate),
131            _ => None,
132        }
133    }
134}
135/// HistoricalInfo contains header and validator information for a given block.
136/// It is stored as part of staking module's state, which persists the `n` most
137/// recent HistoricalInfo
138/// (`n` is set by the staking module's `historical_entries` parameter).
139#[allow(clippy::derive_partial_eq_without_eq)]
140#[derive(
141    Clone,
142    PartialEq,
143    Eq,
144    ::prost::Message,
145    ::serde::Serialize,
146    ::serde::Deserialize,
147    ::schemars::JsonSchema,
148    CosmwasmExt,
149)]
150#[proto_message(type_url = "/cosmos.staking.v1beta1.HistoricalInfo")]
151pub struct HistoricalInfo {
152    #[prost(message, optional, tag = "1")]
153    pub header: ::core::option::Option<super::super::super::tendermint::types::Header>,
154    #[prost(message, repeated, tag = "2")]
155    pub valset: ::prost::alloc::vec::Vec<Validator>,
156}
157/// CommissionRates defines the initial commission rates to be used for creating
158/// a validator.
159#[allow(clippy::derive_partial_eq_without_eq)]
160#[derive(
161    Clone,
162    PartialEq,
163    Eq,
164    ::prost::Message,
165    ::serde::Serialize,
166    ::serde::Deserialize,
167    ::schemars::JsonSchema,
168    CosmwasmExt,
169)]
170#[proto_message(type_url = "/cosmos.staking.v1beta1.CommissionRates")]
171pub struct CommissionRates {
172    /// rate is the commission rate charged to delegators, as a fraction.
173    #[prost(string, tag = "1")]
174    pub rate: ::prost::alloc::string::String,
175    /// max_rate defines the maximum commission rate which validator can ever charge, as a fraction.
176    #[prost(string, tag = "2")]
177    pub max_rate: ::prost::alloc::string::String,
178    /// max_change_rate defines the maximum daily increase of the validator commission, as a fraction.
179    #[prost(string, tag = "3")]
180    pub max_change_rate: ::prost::alloc::string::String,
181}
182/// Commission defines commission parameters for a given validator.
183#[allow(clippy::derive_partial_eq_without_eq)]
184#[derive(
185    Clone,
186    PartialEq,
187    Eq,
188    ::prost::Message,
189    ::serde::Serialize,
190    ::serde::Deserialize,
191    ::schemars::JsonSchema,
192    CosmwasmExt,
193)]
194#[proto_message(type_url = "/cosmos.staking.v1beta1.Commission")]
195pub struct Commission {
196    /// commission_rates defines the initial commission rates to be used for creating a validator.
197    #[prost(message, optional, tag = "1")]
198    pub commission_rates: ::core::option::Option<CommissionRates>,
199    /// update_time is the last time the commission rate was changed.
200    #[prost(message, optional, tag = "2")]
201    pub update_time: ::core::option::Option<crate::shim::Timestamp>,
202}
203/// Description defines a validator description.
204#[allow(clippy::derive_partial_eq_without_eq)]
205#[derive(
206    Clone,
207    PartialEq,
208    Eq,
209    ::prost::Message,
210    ::serde::Serialize,
211    ::serde::Deserialize,
212    ::schemars::JsonSchema,
213    CosmwasmExt,
214)]
215#[proto_message(type_url = "/cosmos.staking.v1beta1.Description")]
216pub struct Description {
217    /// moniker defines a human-readable name for the validator.
218    #[prost(string, tag = "1")]
219    pub moniker: ::prost::alloc::string::String,
220    /// identity defines an optional identity signature (ex. UPort or Keybase).
221    #[prost(string, tag = "2")]
222    pub identity: ::prost::alloc::string::String,
223    /// website defines an optional website link.
224    #[prost(string, tag = "3")]
225    pub website: ::prost::alloc::string::String,
226    /// security_contact defines an optional email for security contact.
227    #[prost(string, tag = "4")]
228    pub security_contact: ::prost::alloc::string::String,
229    /// details define other optional details.
230    #[prost(string, tag = "5")]
231    pub details: ::prost::alloc::string::String,
232}
233/// Validator defines a validator, together with the total amount of the
234/// Validator's bond shares and their exchange rate to coins. Slashing results in
235/// a decrease in the exchange rate, allowing correct calculation of future
236/// undelegations without iterating over delegators. When coins are delegated to
237/// this validator, the validator is credited with a delegation whose number of
238/// bond shares is based on the amount of coins delegated divided by the current
239/// exchange rate. Voting power can be calculated as total bonded shares
240/// multiplied by exchange rate.
241#[allow(clippy::derive_partial_eq_without_eq)]
242#[derive(
243    Clone,
244    PartialEq,
245    Eq,
246    ::prost::Message,
247    ::serde::Serialize,
248    ::serde::Deserialize,
249    ::schemars::JsonSchema,
250    CosmwasmExt,
251)]
252#[proto_message(type_url = "/cosmos.staking.v1beta1.Validator")]
253pub struct Validator {
254    /// operator_address defines the address of the validator's operator; bech encoded in JSON.
255    #[prost(string, tag = "1")]
256    pub operator_address: ::prost::alloc::string::String,
257    /// consensus_pubkey is the consensus public key of the validator, as a Protobuf Any.
258    #[prost(message, optional, tag = "2")]
259    pub consensus_pubkey: ::core::option::Option<crate::shim::Any>,
260    /// jailed defined whether the validator has been jailed from bonded status or not.
261    #[prost(bool, tag = "3")]
262    pub jailed: bool,
263    /// status is the validator status (bonded/unbonding/unbonded).
264    #[prost(enumeration = "BondStatus", tag = "4")]
265    #[serde(
266        serialize_with = "bond_status_serde::serialize",
267        deserialize_with = "bond_status_serde::deserialize"
268    )]
269    pub status: i32,
270    /// tokens define the delegated tokens (incl. self-delegation).
271    #[prost(string, tag = "5")]
272    pub tokens: ::prost::alloc::string::String,
273    /// delegator_shares defines total shares issued to a validator's delegators.
274    #[prost(string, tag = "6")]
275    pub delegator_shares: ::prost::alloc::string::String,
276    /// description defines the description terms for the validator.
277    #[prost(message, optional, tag = "7")]
278    pub description: ::core::option::Option<Description>,
279    /// unbonding_height defines, if unbonding, the height at which this validator has begun unbonding.
280    #[prost(int64, tag = "8")]
281    #[serde(
282        serialize_with = "crate::serde::as_str::serialize",
283        deserialize_with = "crate::serde::as_str::deserialize"
284    )]
285    pub unbonding_height: i64,
286    /// unbonding_time defines, if unbonding, the min time for the validator to complete unbonding.
287    #[prost(message, optional, tag = "9")]
288    pub unbonding_time: ::core::option::Option<crate::shim::Timestamp>,
289    /// commission defines the commission parameters.
290    #[prost(message, optional, tag = "10")]
291    pub commission: ::core::option::Option<Commission>,
292    /// min_self_delegation is the validator's self declared minimum self delegation.
293    #[deprecated]
294    #[prost(string, tag = "11")]
295    pub min_self_delegation: ::prost::alloc::string::String,
296    /// strictly positive if this validator's unbonding has been stopped by external modules
297    ///
298    /// Since: cosmos-sdk 0.47
299    #[prost(int64, tag = "12")]
300    #[serde(
301        serialize_with = "crate::serde::as_str::serialize",
302        deserialize_with = "crate::serde::as_str::deserialize"
303    )]
304    pub unbonding_on_hold_ref_count: i64,
305    /// list of unbonding ids, each uniquely identifing an unbonding of this validator
306    ///
307    /// Since: cosmos-sdk 0.47
308    #[prost(uint64, repeated, tag = "13")]
309    #[serde(alias = "unbondingIDs")]
310    pub unbonding_ids: ::prost::alloc::vec::Vec<u64>,
311    /// validator_bond_shares is the number of shares self bonded from the validator.
312    ///
313    /// Since: cosmos-sdk 0.47-lsm
314    #[prost(string, tag = "14")]
315    pub validator_bond_shares: ::prost::alloc::string::String,
316    /// liquid_shares is the number of shares either tokenized or owned by a liquid staking provider.
317    ///
318    /// Since: cosmos-sdk 0.47-lsm
319    #[prost(string, tag = "15")]
320    pub liquid_shares: ::prost::alloc::string::String,
321}
322/// ValAddresses defines a repeated set of validator addresses.
323#[allow(clippy::derive_partial_eq_without_eq)]
324#[derive(
325    Clone,
326    PartialEq,
327    Eq,
328    ::prost::Message,
329    ::serde::Serialize,
330    ::serde::Deserialize,
331    ::schemars::JsonSchema,
332    CosmwasmExt,
333)]
334#[proto_message(type_url = "/cosmos.staking.v1beta1.ValAddresses")]
335pub struct ValAddresses {
336    #[prost(string, repeated, tag = "1")]
337    pub addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
338}
339/// DVPair is struct that just has a delegator-validator pair with no other data.
340/// It is intended to be used as a marshalable pointer. For example, a DVPair can
341/// be used to construct the key to getting an UnbondingDelegation from state.
342#[allow(clippy::derive_partial_eq_without_eq)]
343#[derive(
344    Clone,
345    PartialEq,
346    Eq,
347    ::prost::Message,
348    ::serde::Serialize,
349    ::serde::Deserialize,
350    ::schemars::JsonSchema,
351    CosmwasmExt,
352)]
353#[proto_message(type_url = "/cosmos.staking.v1beta1.DVPair")]
354pub struct DvPair {
355    #[prost(string, tag = "1")]
356    pub delegator_address: ::prost::alloc::string::String,
357    #[prost(string, tag = "2")]
358    pub validator_address: ::prost::alloc::string::String,
359}
360/// DVPairs defines an array of DVPair objects.
361#[allow(clippy::derive_partial_eq_without_eq)]
362#[derive(
363    Clone,
364    PartialEq,
365    Eq,
366    ::prost::Message,
367    ::serde::Serialize,
368    ::serde::Deserialize,
369    ::schemars::JsonSchema,
370    CosmwasmExt,
371)]
372#[proto_message(type_url = "/cosmos.staking.v1beta1.DVPairs")]
373pub struct DvPairs {
374    #[prost(message, repeated, tag = "1")]
375    pub pairs: ::prost::alloc::vec::Vec<DvPair>,
376}
377/// DVVTriplet is struct that just has a delegator-validator-validator triplet
378/// with no other data. It is intended to be used as a marshalable pointer. For
379/// example, a DVVTriplet can be used to construct the key to getting a
380/// Redelegation from state.
381#[allow(clippy::derive_partial_eq_without_eq)]
382#[derive(
383    Clone,
384    PartialEq,
385    Eq,
386    ::prost::Message,
387    ::serde::Serialize,
388    ::serde::Deserialize,
389    ::schemars::JsonSchema,
390    CosmwasmExt,
391)]
392#[proto_message(type_url = "/cosmos.staking.v1beta1.DVVTriplet")]
393pub struct DvvTriplet {
394    #[prost(string, tag = "1")]
395    pub delegator_address: ::prost::alloc::string::String,
396    #[prost(string, tag = "2")]
397    pub validator_src_address: ::prost::alloc::string::String,
398    #[prost(string, tag = "3")]
399    pub validator_dst_address: ::prost::alloc::string::String,
400}
401/// DVVTriplets defines an array of DVVTriplet objects.
402#[allow(clippy::derive_partial_eq_without_eq)]
403#[derive(
404    Clone,
405    PartialEq,
406    Eq,
407    ::prost::Message,
408    ::serde::Serialize,
409    ::serde::Deserialize,
410    ::schemars::JsonSchema,
411    CosmwasmExt,
412)]
413#[proto_message(type_url = "/cosmos.staking.v1beta1.DVVTriplets")]
414pub struct DvvTriplets {
415    #[prost(message, repeated, tag = "1")]
416    pub triplets: ::prost::alloc::vec::Vec<DvvTriplet>,
417}
418/// Delegation represents the bond with tokens held by an account. It is
419/// owned by one delegator, and is associated with the voting power of one
420/// validator.
421#[allow(clippy::derive_partial_eq_without_eq)]
422#[derive(
423    Clone,
424    PartialEq,
425    Eq,
426    ::prost::Message,
427    ::serde::Serialize,
428    ::serde::Deserialize,
429    ::schemars::JsonSchema,
430    CosmwasmExt,
431)]
432#[proto_message(type_url = "/cosmos.staking.v1beta1.Delegation")]
433pub struct Delegation {
434    /// delegator_address is the bech32-encoded address of the delegator.
435    #[prost(string, tag = "1")]
436    pub delegator_address: ::prost::alloc::string::String,
437    /// validator_address is the bech32-encoded address of the validator.
438    #[prost(string, tag = "2")]
439    pub validator_address: ::prost::alloc::string::String,
440    /// shares define the delegation shares received.
441    #[prost(string, tag = "3")]
442    pub shares: ::prost::alloc::string::String,
443    /// has this delegation been marked as a validator self bond.
444    ///
445    /// Since: cosmos-sdk 0.47-lsm
446    #[prost(bool, tag = "4")]
447    pub validator_bond: bool,
448}
449/// UnbondingDelegation stores all of a single delegator's unbonding bonds
450/// for a single validator in an time-ordered list.
451#[allow(clippy::derive_partial_eq_without_eq)]
452#[derive(
453    Clone,
454    PartialEq,
455    Eq,
456    ::prost::Message,
457    ::serde::Serialize,
458    ::serde::Deserialize,
459    ::schemars::JsonSchema,
460    CosmwasmExt,
461)]
462#[proto_message(type_url = "/cosmos.staking.v1beta1.UnbondingDelegation")]
463pub struct UnbondingDelegation {
464    /// delegator_address is the bech32-encoded address of the delegator.
465    #[prost(string, tag = "1")]
466    pub delegator_address: ::prost::alloc::string::String,
467    /// validator_address is the bech32-encoded address of the validator.
468    #[prost(string, tag = "2")]
469    pub validator_address: ::prost::alloc::string::String,
470    /// entries are the unbonding delegation entries.
471    ///
472    /// unbonding delegation entries
473    #[prost(message, repeated, tag = "3")]
474    pub entries: ::prost::alloc::vec::Vec<UnbondingDelegationEntry>,
475}
476/// UnbondingDelegationEntry defines an unbonding object with relevant metadata.
477#[allow(clippy::derive_partial_eq_without_eq)]
478#[derive(
479    Clone,
480    PartialEq,
481    Eq,
482    ::prost::Message,
483    ::serde::Serialize,
484    ::serde::Deserialize,
485    ::schemars::JsonSchema,
486    CosmwasmExt,
487)]
488#[proto_message(type_url = "/cosmos.staking.v1beta1.UnbondingDelegationEntry")]
489pub struct UnbondingDelegationEntry {
490    /// creation_height is the height which the unbonding took place.
491    #[prost(int64, tag = "1")]
492    #[serde(
493        serialize_with = "crate::serde::as_str::serialize",
494        deserialize_with = "crate::serde::as_str::deserialize"
495    )]
496    pub creation_height: i64,
497    /// completion_time is the unix time for unbonding completion.
498    #[prost(message, optional, tag = "2")]
499    pub completion_time: ::core::option::Option<crate::shim::Timestamp>,
500    /// initial_balance defines the tokens initially scheduled to receive at completion.
501    #[prost(string, tag = "3")]
502    pub initial_balance: ::prost::alloc::string::String,
503    /// balance defines the tokens to receive at completion.
504    #[prost(string, tag = "4")]
505    pub balance: ::prost::alloc::string::String,
506    /// Incrementing id that uniquely identifies this entry
507    #[prost(uint64, tag = "5")]
508    #[serde(alias = "unbondingID")]
509    #[serde(
510        serialize_with = "crate::serde::as_str::serialize",
511        deserialize_with = "crate::serde::as_str::deserialize"
512    )]
513    pub unbonding_id: u64,
514    /// Strictly positive if this entry's unbonding has been stopped by external modules
515    #[prost(int64, tag = "6")]
516    #[serde(
517        serialize_with = "crate::serde::as_str::serialize",
518        deserialize_with = "crate::serde::as_str::deserialize"
519    )]
520    pub unbonding_on_hold_ref_count: i64,
521    /// validator_bond_factor is required for tokenize share and undelegation check for network safety
522    ///
523    /// Since: cosmos-sdk 0.47-lsm
524    #[prost(string, tag = "7")]
525    pub validator_bond_factor: ::prost::alloc::string::String,
526    /// global_liquid_staking_cap represents a cap on the portion of stake that
527    /// comes from liquid staking providers
528    ///
529    /// Since: cosmos-sdk 0.47-lsm
530    #[prost(string, tag = "8")]
531    pub global_liquid_staking_cap: ::prost::alloc::string::String,
532}
533/// RedelegationEntry defines a redelegation object with relevant metadata.
534#[allow(clippy::derive_partial_eq_without_eq)]
535#[derive(
536    Clone,
537    PartialEq,
538    Eq,
539    ::prost::Message,
540    ::serde::Serialize,
541    ::serde::Deserialize,
542    ::schemars::JsonSchema,
543    CosmwasmExt,
544)]
545#[proto_message(type_url = "/cosmos.staking.v1beta1.RedelegationEntry")]
546pub struct RedelegationEntry {
547    /// creation_height  defines the height which the redelegation took place.
548    #[prost(int64, tag = "1")]
549    #[serde(
550        serialize_with = "crate::serde::as_str::serialize",
551        deserialize_with = "crate::serde::as_str::deserialize"
552    )]
553    pub creation_height: i64,
554    /// completion_time defines the unix time for redelegation completion.
555    #[prost(message, optional, tag = "2")]
556    pub completion_time: ::core::option::Option<crate::shim::Timestamp>,
557    /// initial_balance defines the initial balance when redelegation started.
558    #[prost(string, tag = "3")]
559    pub initial_balance: ::prost::alloc::string::String,
560    /// shares_dst is the amount of destination-validator shares created by redelegation.
561    #[prost(string, tag = "4")]
562    pub shares_dst: ::prost::alloc::string::String,
563    /// Incrementing id that uniquely identifies this entry
564    #[prost(uint64, tag = "5")]
565    #[serde(alias = "unbondingID")]
566    #[serde(
567        serialize_with = "crate::serde::as_str::serialize",
568        deserialize_with = "crate::serde::as_str::deserialize"
569    )]
570    pub unbonding_id: u64,
571    /// Strictly positive if this entry's unbonding has been stopped by external modules
572    #[prost(int64, tag = "6")]
573    #[serde(
574        serialize_with = "crate::serde::as_str::serialize",
575        deserialize_with = "crate::serde::as_str::deserialize"
576    )]
577    pub unbonding_on_hold_ref_count: i64,
578}
579/// Redelegation contains the list of a particular delegator's redelegating bonds
580/// from a particular source validator to a particular destination validator.
581#[allow(clippy::derive_partial_eq_without_eq)]
582#[derive(
583    Clone,
584    PartialEq,
585    Eq,
586    ::prost::Message,
587    ::serde::Serialize,
588    ::serde::Deserialize,
589    ::schemars::JsonSchema,
590    CosmwasmExt,
591)]
592#[proto_message(type_url = "/cosmos.staking.v1beta1.Redelegation")]
593pub struct Redelegation {
594    /// delegator_address is the bech32-encoded address of the delegator.
595    #[prost(string, tag = "1")]
596    pub delegator_address: ::prost::alloc::string::String,
597    /// validator_src_address is the validator redelegation source operator address.
598    #[prost(string, tag = "2")]
599    pub validator_src_address: ::prost::alloc::string::String,
600    /// validator_dst_address is the validator redelegation destination operator address.
601    #[prost(string, tag = "3")]
602    pub validator_dst_address: ::prost::alloc::string::String,
603    /// entries are the redelegation entries.
604    ///
605    /// redelegation entries
606    #[prost(message, repeated, tag = "4")]
607    pub entries: ::prost::alloc::vec::Vec<RedelegationEntry>,
608}
609/// Params defines the parameters for the x/staking module.
610#[allow(clippy::derive_partial_eq_without_eq)]
611#[derive(
612    Clone,
613    PartialEq,
614    Eq,
615    ::prost::Message,
616    ::serde::Serialize,
617    ::serde::Deserialize,
618    ::schemars::JsonSchema,
619    CosmwasmExt,
620)]
621#[proto_message(type_url = "/cosmos.staking.v1beta1.Params")]
622pub struct Params {
623    /// unbonding_time is the time duration of unbonding.
624    #[prost(message, optional, tag = "1")]
625    pub unbonding_time: ::core::option::Option<crate::shim::Duration>,
626    /// max_validators is the maximum number of validators.
627    #[prost(uint32, tag = "2")]
628    #[serde(
629        serialize_with = "crate::serde::as_str::serialize",
630        deserialize_with = "crate::serde::as_str::deserialize"
631    )]
632    pub max_validators: u32,
633    /// max_entries is the max entries for either unbonding delegation or redelegation (per pair/trio).
634    #[prost(uint32, tag = "3")]
635    #[serde(
636        serialize_with = "crate::serde::as_str::serialize",
637        deserialize_with = "crate::serde::as_str::deserialize"
638    )]
639    pub max_entries: u32,
640    /// historical_entries is the number of historical entries to persist.
641    #[prost(uint32, tag = "4")]
642    #[serde(
643        serialize_with = "crate::serde::as_str::serialize",
644        deserialize_with = "crate::serde::as_str::deserialize"
645    )]
646    pub historical_entries: u32,
647    /// bond_denom defines the bondable coin denomination.
648    #[prost(string, tag = "5")]
649    pub bond_denom: ::prost::alloc::string::String,
650    /// min_commission_rate is the chain-wide minimum commission rate that a validator can charge their delegators
651    #[prost(string, tag = "6")]
652    pub min_commission_rate: ::prost::alloc::string::String,
653    /// validator_bond_factor is required as a safety check for tokenizing shares and
654    /// delegations from liquid staking providers
655    #[prost(string, tag = "7")]
656    pub validator_bond_factor: ::prost::alloc::string::String,
657    /// global_liquid_staking_cap represents a cap on the portion of stake that
658    /// comes from liquid staking providers
659    #[prost(string, tag = "8")]
660    pub global_liquid_staking_cap: ::prost::alloc::string::String,
661    /// validator_liquid_staking_cap represents a cap on the portion of stake that
662    /// comes from liquid staking providers for a specific validator
663    #[prost(string, tag = "9")]
664    pub validator_liquid_staking_cap: ::prost::alloc::string::String,
665}
666/// DelegationResponse is equivalent to Delegation except that it contains a
667/// balance in addition to shares which is more suitable for client responses.
668#[allow(clippy::derive_partial_eq_without_eq)]
669#[derive(
670    Clone,
671    PartialEq,
672    Eq,
673    ::prost::Message,
674    ::serde::Serialize,
675    ::serde::Deserialize,
676    ::schemars::JsonSchema,
677    CosmwasmExt,
678)]
679#[proto_message(type_url = "/cosmos.staking.v1beta1.DelegationResponse")]
680pub struct DelegationResponse {
681    #[prost(message, optional, tag = "1")]
682    pub delegation: ::core::option::Option<Delegation>,
683    #[prost(message, optional, tag = "2")]
684    pub balance: ::core::option::Option<super::super::base::v1beta1::Coin>,
685}
686/// RedelegationEntryResponse is equivalent to a RedelegationEntry except that it
687/// contains a balance in addition to shares which is more suitable for client
688/// responses.
689#[allow(clippy::derive_partial_eq_without_eq)]
690#[derive(
691    Clone,
692    PartialEq,
693    Eq,
694    ::prost::Message,
695    ::serde::Serialize,
696    ::serde::Deserialize,
697    ::schemars::JsonSchema,
698    CosmwasmExt,
699)]
700#[proto_message(type_url = "/cosmos.staking.v1beta1.RedelegationEntryResponse")]
701pub struct RedelegationEntryResponse {
702    #[prost(message, optional, tag = "1")]
703    pub redelegation_entry: ::core::option::Option<RedelegationEntry>,
704    #[prost(string, tag = "4")]
705    pub balance: ::prost::alloc::string::String,
706}
707/// RedelegationResponse is equivalent to a Redelegation except that its entries
708/// contain a balance in addition to shares which is more suitable for client
709/// responses.
710#[allow(clippy::derive_partial_eq_without_eq)]
711#[derive(
712    Clone,
713    PartialEq,
714    Eq,
715    ::prost::Message,
716    ::serde::Serialize,
717    ::serde::Deserialize,
718    ::schemars::JsonSchema,
719    CosmwasmExt,
720)]
721#[proto_message(type_url = "/cosmos.staking.v1beta1.RedelegationResponse")]
722pub struct RedelegationResponse {
723    #[prost(message, optional, tag = "1")]
724    pub redelegation: ::core::option::Option<Redelegation>,
725    #[prost(message, repeated, tag = "2")]
726    pub entries: ::prost::alloc::vec::Vec<RedelegationEntryResponse>,
727}
728/// Pool is used for tracking bonded and not-bonded token supply of the bond
729/// denomination.
730#[allow(clippy::derive_partial_eq_without_eq)]
731#[derive(
732    Clone,
733    PartialEq,
734    Eq,
735    ::prost::Message,
736    ::serde::Serialize,
737    ::serde::Deserialize,
738    ::schemars::JsonSchema,
739    CosmwasmExt,
740)]
741#[proto_message(type_url = "/cosmos.staking.v1beta1.Pool")]
742pub struct Pool {
743    #[prost(string, tag = "1")]
744    pub not_bonded_tokens: ::prost::alloc::string::String,
745    #[prost(string, tag = "2")]
746    pub bonded_tokens: ::prost::alloc::string::String,
747}
748/// ValidatorUpdates defines an array of abci.ValidatorUpdate objects.
749/// TODO: explore moving this to proto/cosmos/base to separate modules from tendermint dependence
750#[allow(clippy::derive_partial_eq_without_eq)]
751#[derive(
752    Clone,
753    PartialEq,
754    Eq,
755    ::prost::Message,
756    ::serde::Serialize,
757    ::serde::Deserialize,
758    ::schemars::JsonSchema,
759    CosmwasmExt,
760)]
761#[proto_message(type_url = "/cosmos.staking.v1beta1.ValidatorUpdates")]
762pub struct ValidatorUpdates {
763    #[prost(message, repeated, tag = "1")]
764    pub updates: ::prost::alloc::vec::Vec<super::super::super::tendermint::abci::ValidatorUpdate>,
765}
766/// TokenizeShareRecord represents a tokenized delegation.
767///
768/// Since: cosmos-sdk 0.47-lsm
769#[allow(clippy::derive_partial_eq_without_eq)]
770#[derive(
771    Clone,
772    PartialEq,
773    Eq,
774    ::prost::Message,
775    ::serde::Serialize,
776    ::serde::Deserialize,
777    ::schemars::JsonSchema,
778    CosmwasmExt,
779)]
780#[proto_message(type_url = "/cosmos.staking.v1beta1.TokenizeShareRecord")]
781pub struct TokenizeShareRecord {
782    #[prost(uint64, tag = "1")]
783    #[serde(alias = "ID")]
784    #[serde(
785        serialize_with = "crate::serde::as_str::serialize",
786        deserialize_with = "crate::serde::as_str::deserialize"
787    )]
788    pub id: u64,
789    #[prost(string, tag = "2")]
790    pub owner: ::prost::alloc::string::String,
791    /// module account take the role of delegator
792    #[prost(string, tag = "3")]
793    pub module_account: ::prost::alloc::string::String,
794    /// validator delegated to for tokenize share record creation
795    #[prost(string, tag = "4")]
796    pub validator: ::prost::alloc::string::String,
797}
798/// PendingTokenizeShareAuthorizations stores a list of addresses that have their
799/// tokenize share enablement in progress.
800///
801/// Since: cosmos-sdk 0.47-lsm
802#[allow(clippy::derive_partial_eq_without_eq)]
803#[derive(
804    Clone,
805    PartialEq,
806    Eq,
807    ::prost::Message,
808    ::serde::Serialize,
809    ::serde::Deserialize,
810    ::schemars::JsonSchema,
811    CosmwasmExt,
812)]
813#[proto_message(type_url = "/cosmos.staking.v1beta1.PendingTokenizeShareAuthorizations")]
814pub struct PendingTokenizeShareAuthorizations {
815    #[prost(string, repeated, tag = "1")]
816    pub addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
817}
818/// BondStatus is the status of a validator.
819#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
820#[repr(i32)]
821#[derive(::schemars::JsonSchema)]
822pub enum BondStatus {
823    /// UNSPECIFIED defines an invalid validator status.
824    Unspecified = 0,
825    /// UNBONDED defines a validator that is not bonded.
826    Unbonded = 1,
827    /// UNBONDING defines a validator that is unbonding.
828    Unbonding = 2,
829    /// BONDED defines a validator that is bonded.
830    Bonded = 3,
831}
832pub mod bond_status_serde {
833    use super::BondStatus;
834    use serde::{Deserialize, Deserializer, Serializer};
835    pub fn deserialize<'de, T, D>(deserializer: D) -> std::result::Result<T, D::Error>
836    where
837        T: From<BondStatus>,
838        D: Deserializer<'de>,
839    {
840        let s = String::deserialize(deserializer)?;
841        let enum_value = BondStatus::from_str_name(&s).unwrap();
842        let int_value: T = enum_value.into();
843        return Ok(int_value);
844    }
845    pub fn serialize<S>(value: &i32, serializer: S) -> std::result::Result<S::Ok, S::Error>
846    where
847        S: Serializer,
848    {
849        let s: BondStatus = BondStatus::from_i32(*value).unwrap();
850        serializer.serialize_str(s.as_str_name())
851    }
852}
853impl BondStatus {
854    /// String value of the enum field names used in the ProtoBuf definition.
855    ///
856    /// The values are not transformed in any way and thus are considered stable
857    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
858    pub fn as_str_name(&self) -> &'static str {
859        match self {
860            BondStatus::Unspecified => "BOND_STATUS_UNSPECIFIED",
861            BondStatus::Unbonded => "BOND_STATUS_UNBONDED",
862            BondStatus::Unbonding => "BOND_STATUS_UNBONDING",
863            BondStatus::Bonded => "BOND_STATUS_BONDED",
864        }
865    }
866    /// Creates an enum from field names used in the ProtoBuf definition.
867    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
868        match value {
869            "BOND_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
870            "BOND_STATUS_UNBONDED" => Some(Self::Unbonded),
871            "BOND_STATUS_UNBONDING" => Some(Self::Unbonding),
872            "BOND_STATUS_BONDED" => Some(Self::Bonded),
873            _ => None,
874        }
875    }
876}
877/// Infraction indicates the infraction a validator commited.
878#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
879#[repr(i32)]
880#[derive(::schemars::JsonSchema)]
881pub enum Infraction {
882    /// UNSPECIFIED defines an empty infraction.
883    Unspecified = 0,
884    /// DOUBLE_SIGN defines a validator that double-signs a block.
885    DoubleSign = 1,
886    /// DOWNTIME defines a validator that missed signing too many blocks.
887    Downtime = 2,
888}
889pub mod infraction_serde {
890    use super::Infraction;
891    use serde::{Deserialize, Deserializer, Serializer};
892    pub fn deserialize<'de, T, D>(deserializer: D) -> std::result::Result<T, D::Error>
893    where
894        T: From<Infraction>,
895        D: Deserializer<'de>,
896    {
897        let s = String::deserialize(deserializer)?;
898        let enum_value = Infraction::from_str_name(&s).unwrap();
899        let int_value: T = enum_value.into();
900        return Ok(int_value);
901    }
902    pub fn serialize<S>(value: &i32, serializer: S) -> std::result::Result<S::Ok, S::Error>
903    where
904        S: Serializer,
905    {
906        let s: Infraction = Infraction::from_i32(*value).unwrap();
907        serializer.serialize_str(s.as_str_name())
908    }
909}
910impl Infraction {
911    /// String value of the enum field names used in the ProtoBuf definition.
912    ///
913    /// The values are not transformed in any way and thus are considered stable
914    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
915    pub fn as_str_name(&self) -> &'static str {
916        match self {
917            Infraction::Unspecified => "INFRACTION_UNSPECIFIED",
918            Infraction::DoubleSign => "INFRACTION_DOUBLE_SIGN",
919            Infraction::Downtime => "INFRACTION_DOWNTIME",
920        }
921    }
922    /// Creates an enum from field names used in the ProtoBuf definition.
923    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
924        match value {
925            "INFRACTION_UNSPECIFIED" => Some(Self::Unspecified),
926            "INFRACTION_DOUBLE_SIGN" => Some(Self::DoubleSign),
927            "INFRACTION_DOWNTIME" => Some(Self::Downtime),
928            _ => None,
929        }
930    }
931}
932/// TokenizeShareLockStatus represents status of an account's tokenize share lock.
933///
934/// Since: cosmos-sdk 0.47-lsm
935#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
936#[repr(i32)]
937#[derive(::schemars::JsonSchema)]
938pub enum TokenizeShareLockStatus {
939    /// An empty value is not allowed.
940    Unspecified = 0,
941    /// Status means cannot tokenize shares.
942    Locked = 1,
943    /// Status means cannot tokenize shares.
944    Unlocked = 2,
945    /// Status when lock is queued for unlocking.
946    LockExpiring = 3,
947}
948pub mod tokenize_share_lock_status_serde {
949    use super::TokenizeShareLockStatus;
950    use serde::{Deserialize, Deserializer, Serializer};
951    pub fn deserialize<'de, T, D>(deserializer: D) -> std::result::Result<T, D::Error>
952    where
953        T: From<TokenizeShareLockStatus>,
954        D: Deserializer<'de>,
955    {
956        let s = String::deserialize(deserializer)?;
957        let enum_value = TokenizeShareLockStatus::from_str_name(&s).unwrap();
958        let int_value: T = enum_value.into();
959        return Ok(int_value);
960    }
961    pub fn serialize<S>(value: &i32, serializer: S) -> std::result::Result<S::Ok, S::Error>
962    where
963        S: Serializer,
964    {
965        let s: TokenizeShareLockStatus = TokenizeShareLockStatus::from_i32(*value).unwrap();
966        serializer.serialize_str(s.as_str_name())
967    }
968}
969impl TokenizeShareLockStatus {
970    /// String value of the enum field names used in the ProtoBuf definition.
971    ///
972    /// The values are not transformed in any way and thus are considered stable
973    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
974    pub fn as_str_name(&self) -> &'static str {
975        match self {
976            TokenizeShareLockStatus::Unspecified => "TOKENIZE_SHARE_LOCK_STATUS_UNSPECIFIED",
977            TokenizeShareLockStatus::Locked => "TOKENIZE_SHARE_LOCK_STATUS_LOCKED",
978            TokenizeShareLockStatus::Unlocked => "TOKENIZE_SHARE_LOCK_STATUS_UNLOCKED",
979            TokenizeShareLockStatus::LockExpiring => "TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING",
980        }
981    }
982    /// Creates an enum from field names used in the ProtoBuf definition.
983    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
984        match value {
985            "TOKENIZE_SHARE_LOCK_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
986            "TOKENIZE_SHARE_LOCK_STATUS_LOCKED" => Some(Self::Locked),
987            "TOKENIZE_SHARE_LOCK_STATUS_UNLOCKED" => Some(Self::Unlocked),
988            "TOKENIZE_SHARE_LOCK_STATUS_LOCK_EXPIRING" => Some(Self::LockExpiring),
989            _ => None,
990        }
991    }
992}
993/// GenesisState defines the staking module's genesis state.
994#[allow(clippy::derive_partial_eq_without_eq)]
995#[derive(
996    Clone,
997    PartialEq,
998    Eq,
999    ::prost::Message,
1000    ::serde::Serialize,
1001    ::serde::Deserialize,
1002    ::schemars::JsonSchema,
1003    CosmwasmExt,
1004)]
1005#[proto_message(type_url = "/cosmos.staking.v1beta1.GenesisState")]
1006pub struct GenesisState {
1007    /// params defines all the parameters of related to deposit.
1008    #[prost(message, optional, tag = "1")]
1009    pub params: ::core::option::Option<Params>,
1010    /// last_total_power tracks the total amounts of bonded tokens recorded during
1011    /// the previous end block.
1012    #[prost(bytes = "vec", tag = "2")]
1013    pub last_total_power: ::prost::alloc::vec::Vec<u8>,
1014    /// last_validator_powers is a special index that provides a historical list
1015    /// of the last-block's bonded validators.
1016    #[prost(message, repeated, tag = "3")]
1017    pub last_validator_powers: ::prost::alloc::vec::Vec<LastValidatorPower>,
1018    /// delegations defines the validator set at genesis.
1019    #[prost(message, repeated, tag = "4")]
1020    pub validators: ::prost::alloc::vec::Vec<Validator>,
1021    /// delegations defines the delegations active at genesis.
1022    #[prost(message, repeated, tag = "5")]
1023    pub delegations: ::prost::alloc::vec::Vec<Delegation>,
1024    /// unbonding_delegations defines the unbonding delegations active at genesis.
1025    #[prost(message, repeated, tag = "6")]
1026    pub unbonding_delegations: ::prost::alloc::vec::Vec<UnbondingDelegation>,
1027    /// redelegations defines the redelegations active at genesis.
1028    #[prost(message, repeated, tag = "7")]
1029    pub redelegations: ::prost::alloc::vec::Vec<Redelegation>,
1030    #[prost(bool, tag = "8")]
1031    pub exported: bool,
1032    /// store tokenize share records to provide reward to record owners.
1033    ///
1034    /// Since: cosmos-sdk 0.47-lsm
1035    #[prost(message, repeated, tag = "9")]
1036    pub tokenize_share_records: ::prost::alloc::vec::Vec<TokenizeShareRecord>,
1037    /// last tokenize share record id, used for next share record id calculation.
1038    ///
1039    /// Since: cosmos-sdk 0.47-lsm
1040    #[prost(uint64, tag = "10")]
1041    #[serde(alias = "last_tokenize_share_recordID")]
1042    #[serde(
1043        serialize_with = "crate::serde::as_str::serialize",
1044        deserialize_with = "crate::serde::as_str::deserialize"
1045    )]
1046    pub last_tokenize_share_record_id: u64,
1047    /// total number of liquid staked tokens at genesis.
1048    ///
1049    /// Since: cosmos-sdk 0.47-lsm
1050    #[prost(bytes = "vec", tag = "11")]
1051    pub total_liquid_staked_tokens: ::prost::alloc::vec::Vec<u8>,
1052    /// tokenize shares locks at genesis.
1053    ///
1054    /// Since: cosmos-sdk 0.47-lsm
1055    #[prost(message, repeated, tag = "12")]
1056    pub tokenize_share_locks: ::prost::alloc::vec::Vec<TokenizeShareLock>,
1057}
1058/// TokenizeSharesLock required for specifying account locks at genesis.
1059///
1060/// Since: cosmos-sdk 0.47-lsm
1061#[allow(clippy::derive_partial_eq_without_eq)]
1062#[derive(
1063    Clone,
1064    PartialEq,
1065    Eq,
1066    ::prost::Message,
1067    ::serde::Serialize,
1068    ::serde::Deserialize,
1069    ::schemars::JsonSchema,
1070    CosmwasmExt,
1071)]
1072#[proto_message(type_url = "/cosmos.staking.v1beta1.TokenizeShareLock")]
1073pub struct TokenizeShareLock {
1074    /// Address of the account that is locked.
1075    #[prost(string, tag = "1")]
1076    pub address: ::prost::alloc::string::String,
1077    /// Status of the lock (LOCKED or LOCK_EXPIRING)
1078    #[prost(string, tag = "2")]
1079    pub status: ::prost::alloc::string::String,
1080    /// Completion time if the lock is expiring.
1081    #[prost(message, optional, tag = "3")]
1082    pub completion_time: ::core::option::Option<crate::shim::Timestamp>,
1083}
1084/// LastValidatorPower required for validator set update logic.
1085#[allow(clippy::derive_partial_eq_without_eq)]
1086#[derive(
1087    Clone,
1088    PartialEq,
1089    Eq,
1090    ::prost::Message,
1091    ::serde::Serialize,
1092    ::serde::Deserialize,
1093    ::schemars::JsonSchema,
1094    CosmwasmExt,
1095)]
1096#[proto_message(type_url = "/cosmos.staking.v1beta1.LastValidatorPower")]
1097pub struct LastValidatorPower {
1098    /// address is the address of the validator.
1099    #[prost(string, tag = "1")]
1100    pub address: ::prost::alloc::string::String,
1101    /// power defines the power of the validator.
1102    #[prost(int64, tag = "2")]
1103    #[serde(
1104        serialize_with = "crate::serde::as_str::serialize",
1105        deserialize_with = "crate::serde::as_str::deserialize"
1106    )]
1107    pub power: i64,
1108}
1109/// QueryValidatorsRequest is request type for Query/Validators RPC method.
1110#[allow(clippy::derive_partial_eq_without_eq)]
1111#[derive(
1112    Clone,
1113    PartialEq,
1114    Eq,
1115    ::prost::Message,
1116    ::serde::Serialize,
1117    ::serde::Deserialize,
1118    ::schemars::JsonSchema,
1119    CosmwasmExt,
1120)]
1121#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryValidatorsRequest")]
1122#[proto_query(
1123    path = "/cosmos.staking.v1beta1.Query/Validators",
1124    response_type = QueryValidatorsResponse
1125)]
1126pub struct QueryValidatorsRequest {
1127    /// status enables to query for validators matching a given status.
1128    #[prost(string, tag = "1")]
1129    pub status: ::prost::alloc::string::String,
1130    /// pagination defines an optional pagination for the request.
1131    #[prost(message, optional, tag = "2")]
1132    pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
1133}
1134/// QueryValidatorsResponse is response type for the Query/Validators RPC method
1135#[allow(clippy::derive_partial_eq_without_eq)]
1136#[derive(
1137    Clone,
1138    PartialEq,
1139    Eq,
1140    ::prost::Message,
1141    ::serde::Serialize,
1142    ::serde::Deserialize,
1143    ::schemars::JsonSchema,
1144    CosmwasmExt,
1145)]
1146#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryValidatorsResponse")]
1147pub struct QueryValidatorsResponse {
1148    /// validators contains all the queried validators.
1149    #[prost(message, repeated, tag = "1")]
1150    pub validators: ::prost::alloc::vec::Vec<Validator>,
1151    /// pagination defines the pagination in the response.
1152    #[prost(message, optional, tag = "2")]
1153    pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
1154}
1155/// QueryValidatorRequest is response type for the Query/Validator RPC method
1156#[allow(clippy::derive_partial_eq_without_eq)]
1157#[derive(
1158    Clone,
1159    PartialEq,
1160    Eq,
1161    ::prost::Message,
1162    ::serde::Serialize,
1163    ::serde::Deserialize,
1164    ::schemars::JsonSchema,
1165    CosmwasmExt,
1166)]
1167#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryValidatorRequest")]
1168#[proto_query(
1169    path = "/cosmos.staking.v1beta1.Query/Validator",
1170    response_type = QueryValidatorResponse
1171)]
1172pub struct QueryValidatorRequest {
1173    /// validator_addr defines the validator address to query for.
1174    #[prost(string, tag = "1")]
1175    pub validator_addr: ::prost::alloc::string::String,
1176}
1177/// QueryValidatorResponse is response type for the Query/Validator RPC method
1178#[allow(clippy::derive_partial_eq_without_eq)]
1179#[derive(
1180    Clone,
1181    PartialEq,
1182    Eq,
1183    ::prost::Message,
1184    ::serde::Serialize,
1185    ::serde::Deserialize,
1186    ::schemars::JsonSchema,
1187    CosmwasmExt,
1188)]
1189#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryValidatorResponse")]
1190pub struct QueryValidatorResponse {
1191    /// validator defines the validator info.
1192    #[prost(message, optional, tag = "1")]
1193    pub validator: ::core::option::Option<Validator>,
1194}
1195/// QueryValidatorDelegationsRequest is request type for the
1196/// Query/ValidatorDelegations RPC method
1197#[allow(clippy::derive_partial_eq_without_eq)]
1198#[derive(
1199    Clone,
1200    PartialEq,
1201    Eq,
1202    ::prost::Message,
1203    ::serde::Serialize,
1204    ::serde::Deserialize,
1205    ::schemars::JsonSchema,
1206    CosmwasmExt,
1207)]
1208#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryValidatorDelegationsRequest")]
1209#[proto_query(
1210    path = "/cosmos.staking.v1beta1.Query/ValidatorDelegations",
1211    response_type = QueryValidatorDelegationsResponse
1212)]
1213pub struct QueryValidatorDelegationsRequest {
1214    /// validator_addr defines the validator address to query for.
1215    #[prost(string, tag = "1")]
1216    pub validator_addr: ::prost::alloc::string::String,
1217    /// pagination defines an optional pagination for the request.
1218    #[prost(message, optional, tag = "2")]
1219    pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
1220}
1221/// QueryValidatorDelegationsResponse is response type for the
1222/// Query/ValidatorDelegations RPC method
1223#[allow(clippy::derive_partial_eq_without_eq)]
1224#[derive(
1225    Clone,
1226    PartialEq,
1227    Eq,
1228    ::prost::Message,
1229    ::serde::Serialize,
1230    ::serde::Deserialize,
1231    ::schemars::JsonSchema,
1232    CosmwasmExt,
1233)]
1234#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryValidatorDelegationsResponse")]
1235pub struct QueryValidatorDelegationsResponse {
1236    #[prost(message, repeated, tag = "1")]
1237    pub delegation_responses: ::prost::alloc::vec::Vec<DelegationResponse>,
1238    /// pagination defines the pagination in the response.
1239    #[prost(message, optional, tag = "2")]
1240    pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
1241}
1242/// QueryValidatorUnbondingDelegationsRequest is required type for the
1243/// Query/ValidatorUnbondingDelegations RPC method
1244#[allow(clippy::derive_partial_eq_without_eq)]
1245#[derive(
1246    Clone,
1247    PartialEq,
1248    Eq,
1249    ::prost::Message,
1250    ::serde::Serialize,
1251    ::serde::Deserialize,
1252    ::schemars::JsonSchema,
1253    CosmwasmExt,
1254)]
1255#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsRequest")]
1256#[proto_query(
1257    path = "/cosmos.staking.v1beta1.Query/ValidatorUnbondingDelegations",
1258    response_type = QueryValidatorUnbondingDelegationsResponse
1259)]
1260pub struct QueryValidatorUnbondingDelegationsRequest {
1261    /// validator_addr defines the validator address to query for.
1262    #[prost(string, tag = "1")]
1263    pub validator_addr: ::prost::alloc::string::String,
1264    /// pagination defines an optional pagination for the request.
1265    #[prost(message, optional, tag = "2")]
1266    pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
1267}
1268/// QueryValidatorUnbondingDelegationsResponse is response type for the
1269/// Query/ValidatorUnbondingDelegations RPC method.
1270#[allow(clippy::derive_partial_eq_without_eq)]
1271#[derive(
1272    Clone,
1273    PartialEq,
1274    Eq,
1275    ::prost::Message,
1276    ::serde::Serialize,
1277    ::serde::Deserialize,
1278    ::schemars::JsonSchema,
1279    CosmwasmExt,
1280)]
1281#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse")]
1282pub struct QueryValidatorUnbondingDelegationsResponse {
1283    #[prost(message, repeated, tag = "1")]
1284    pub unbonding_responses: ::prost::alloc::vec::Vec<UnbondingDelegation>,
1285    /// pagination defines the pagination in the response.
1286    #[prost(message, optional, tag = "2")]
1287    pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
1288}
1289/// QueryDelegationRequest is request type for the Query/Delegation RPC method.
1290#[allow(clippy::derive_partial_eq_without_eq)]
1291#[derive(
1292    Clone,
1293    PartialEq,
1294    Eq,
1295    ::prost::Message,
1296    ::serde::Serialize,
1297    ::serde::Deserialize,
1298    ::schemars::JsonSchema,
1299    CosmwasmExt,
1300)]
1301#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryDelegationRequest")]
1302#[proto_query(
1303    path = "/cosmos.staking.v1beta1.Query/Delegation",
1304    response_type = QueryDelegationResponse
1305)]
1306pub struct QueryDelegationRequest {
1307    /// delegator_addr defines the delegator address to query for.
1308    #[prost(string, tag = "1")]
1309    pub delegator_addr: ::prost::alloc::string::String,
1310    /// validator_addr defines the validator address to query for.
1311    #[prost(string, tag = "2")]
1312    pub validator_addr: ::prost::alloc::string::String,
1313}
1314/// QueryDelegationResponse is response type for the Query/Delegation RPC method.
1315#[allow(clippy::derive_partial_eq_without_eq)]
1316#[derive(
1317    Clone,
1318    PartialEq,
1319    Eq,
1320    ::prost::Message,
1321    ::serde::Serialize,
1322    ::serde::Deserialize,
1323    ::schemars::JsonSchema,
1324    CosmwasmExt,
1325)]
1326#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryDelegationResponse")]
1327pub struct QueryDelegationResponse {
1328    /// delegation_responses defines the delegation info of a delegation.
1329    #[prost(message, optional, tag = "1")]
1330    pub delegation_response: ::core::option::Option<DelegationResponse>,
1331}
1332/// QueryUnbondingDelegationRequest is request type for the
1333/// Query/UnbondingDelegation RPC method.
1334#[allow(clippy::derive_partial_eq_without_eq)]
1335#[derive(
1336    Clone,
1337    PartialEq,
1338    Eq,
1339    ::prost::Message,
1340    ::serde::Serialize,
1341    ::serde::Deserialize,
1342    ::schemars::JsonSchema,
1343    CosmwasmExt,
1344)]
1345#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryUnbondingDelegationRequest")]
1346#[proto_query(
1347    path = "/cosmos.staking.v1beta1.Query/UnbondingDelegation",
1348    response_type = QueryUnbondingDelegationResponse
1349)]
1350pub struct QueryUnbondingDelegationRequest {
1351    /// delegator_addr defines the delegator address to query for.
1352    #[prost(string, tag = "1")]
1353    pub delegator_addr: ::prost::alloc::string::String,
1354    /// validator_addr defines the validator address to query for.
1355    #[prost(string, tag = "2")]
1356    pub validator_addr: ::prost::alloc::string::String,
1357}
1358/// QueryDelegationResponse is response type for the Query/UnbondingDelegation
1359/// RPC method.
1360#[allow(clippy::derive_partial_eq_without_eq)]
1361#[derive(
1362    Clone,
1363    PartialEq,
1364    Eq,
1365    ::prost::Message,
1366    ::serde::Serialize,
1367    ::serde::Deserialize,
1368    ::schemars::JsonSchema,
1369    CosmwasmExt,
1370)]
1371#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryUnbondingDelegationResponse")]
1372pub struct QueryUnbondingDelegationResponse {
1373    /// unbond defines the unbonding information of a delegation.
1374    #[prost(message, optional, tag = "1")]
1375    pub unbond: ::core::option::Option<UnbondingDelegation>,
1376}
1377/// QueryDelegatorDelegationsRequest is request type for the
1378/// Query/DelegatorDelegations RPC method.
1379#[allow(clippy::derive_partial_eq_without_eq)]
1380#[derive(
1381    Clone,
1382    PartialEq,
1383    Eq,
1384    ::prost::Message,
1385    ::serde::Serialize,
1386    ::serde::Deserialize,
1387    ::schemars::JsonSchema,
1388    CosmwasmExt,
1389)]
1390#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryDelegatorDelegationsRequest")]
1391#[proto_query(
1392    path = "/cosmos.staking.v1beta1.Query/DelegatorDelegations",
1393    response_type = QueryDelegatorDelegationsResponse
1394)]
1395pub struct QueryDelegatorDelegationsRequest {
1396    /// delegator_addr defines the delegator address to query for.
1397    #[prost(string, tag = "1")]
1398    pub delegator_addr: ::prost::alloc::string::String,
1399    /// pagination defines an optional pagination for the request.
1400    #[prost(message, optional, tag = "2")]
1401    pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
1402}
1403/// QueryDelegatorDelegationsResponse is response type for the
1404/// Query/DelegatorDelegations RPC method.
1405#[allow(clippy::derive_partial_eq_without_eq)]
1406#[derive(
1407    Clone,
1408    PartialEq,
1409    Eq,
1410    ::prost::Message,
1411    ::serde::Serialize,
1412    ::serde::Deserialize,
1413    ::schemars::JsonSchema,
1414    CosmwasmExt,
1415)]
1416#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse")]
1417pub struct QueryDelegatorDelegationsResponse {
1418    /// delegation_responses defines all the delegations' info of a delegator.
1419    #[prost(message, repeated, tag = "1")]
1420    pub delegation_responses: ::prost::alloc::vec::Vec<DelegationResponse>,
1421    /// pagination defines the pagination in the response.
1422    #[prost(message, optional, tag = "2")]
1423    pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
1424}
1425/// QueryDelegatorUnbondingDelegationsRequest is request type for the
1426/// Query/DelegatorUnbondingDelegations RPC method.
1427#[allow(clippy::derive_partial_eq_without_eq)]
1428#[derive(
1429    Clone,
1430    PartialEq,
1431    Eq,
1432    ::prost::Message,
1433    ::serde::Serialize,
1434    ::serde::Deserialize,
1435    ::schemars::JsonSchema,
1436    CosmwasmExt,
1437)]
1438#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsRequest")]
1439#[proto_query(
1440    path = "/cosmos.staking.v1beta1.Query/DelegatorUnbondingDelegations",
1441    response_type = QueryDelegatorUnbondingDelegationsResponse
1442)]
1443pub struct QueryDelegatorUnbondingDelegationsRequest {
1444    /// delegator_addr defines the delegator address to query for.
1445    #[prost(string, tag = "1")]
1446    pub delegator_addr: ::prost::alloc::string::String,
1447    /// pagination defines an optional pagination for the request.
1448    #[prost(message, optional, tag = "2")]
1449    pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
1450}
1451/// QueryUnbondingDelegatorDelegationsResponse is response type for the
1452/// Query/UnbondingDelegatorDelegations RPC method.
1453#[allow(clippy::derive_partial_eq_without_eq)]
1454#[derive(
1455    Clone,
1456    PartialEq,
1457    Eq,
1458    ::prost::Message,
1459    ::serde::Serialize,
1460    ::serde::Deserialize,
1461    ::schemars::JsonSchema,
1462    CosmwasmExt,
1463)]
1464#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse")]
1465pub struct QueryDelegatorUnbondingDelegationsResponse {
1466    #[prost(message, repeated, tag = "1")]
1467    pub unbonding_responses: ::prost::alloc::vec::Vec<UnbondingDelegation>,
1468    /// pagination defines the pagination in the response.
1469    #[prost(message, optional, tag = "2")]
1470    pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
1471}
1472/// QueryRedelegationsRequest is request type for the Query/Redelegations RPC
1473/// method.
1474#[allow(clippy::derive_partial_eq_without_eq)]
1475#[derive(
1476    Clone,
1477    PartialEq,
1478    Eq,
1479    ::prost::Message,
1480    ::serde::Serialize,
1481    ::serde::Deserialize,
1482    ::schemars::JsonSchema,
1483    CosmwasmExt,
1484)]
1485#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryRedelegationsRequest")]
1486#[proto_query(
1487    path = "/cosmos.staking.v1beta1.Query/Redelegations",
1488    response_type = QueryRedelegationsResponse
1489)]
1490pub struct QueryRedelegationsRequest {
1491    /// delegator_addr defines the delegator address to query for.
1492    #[prost(string, tag = "1")]
1493    pub delegator_addr: ::prost::alloc::string::String,
1494    /// src_validator_addr defines the validator address to redelegate from.
1495    #[prost(string, tag = "2")]
1496    pub src_validator_addr: ::prost::alloc::string::String,
1497    /// dst_validator_addr defines the validator address to redelegate to.
1498    #[prost(string, tag = "3")]
1499    pub dst_validator_addr: ::prost::alloc::string::String,
1500    /// pagination defines an optional pagination for the request.
1501    #[prost(message, optional, tag = "4")]
1502    pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
1503}
1504/// QueryRedelegationsResponse is response type for the Query/Redelegations RPC
1505/// method.
1506#[allow(clippy::derive_partial_eq_without_eq)]
1507#[derive(
1508    Clone,
1509    PartialEq,
1510    Eq,
1511    ::prost::Message,
1512    ::serde::Serialize,
1513    ::serde::Deserialize,
1514    ::schemars::JsonSchema,
1515    CosmwasmExt,
1516)]
1517#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryRedelegationsResponse")]
1518pub struct QueryRedelegationsResponse {
1519    #[prost(message, repeated, tag = "1")]
1520    pub redelegation_responses: ::prost::alloc::vec::Vec<RedelegationResponse>,
1521    /// pagination defines the pagination in the response.
1522    #[prost(message, optional, tag = "2")]
1523    pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
1524}
1525/// QueryDelegatorValidatorsRequest is request type for the
1526/// Query/DelegatorValidators RPC method.
1527#[allow(clippy::derive_partial_eq_without_eq)]
1528#[derive(
1529    Clone,
1530    PartialEq,
1531    Eq,
1532    ::prost::Message,
1533    ::serde::Serialize,
1534    ::serde::Deserialize,
1535    ::schemars::JsonSchema,
1536    CosmwasmExt,
1537)]
1538#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryDelegatorValidatorsRequest")]
1539#[proto_query(
1540    path = "/cosmos.staking.v1beta1.Query/DelegatorValidators",
1541    response_type = QueryDelegatorValidatorsResponse
1542)]
1543pub struct QueryDelegatorValidatorsRequest {
1544    /// delegator_addr defines the delegator address to query for.
1545    #[prost(string, tag = "1")]
1546    pub delegator_addr: ::prost::alloc::string::String,
1547    /// pagination defines an optional pagination for the request.
1548    #[prost(message, optional, tag = "2")]
1549    pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
1550}
1551/// QueryDelegatorValidatorsResponse is response type for the
1552/// Query/DelegatorValidators RPC method.
1553#[allow(clippy::derive_partial_eq_without_eq)]
1554#[derive(
1555    Clone,
1556    PartialEq,
1557    Eq,
1558    ::prost::Message,
1559    ::serde::Serialize,
1560    ::serde::Deserialize,
1561    ::schemars::JsonSchema,
1562    CosmwasmExt,
1563)]
1564#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse")]
1565pub struct QueryDelegatorValidatorsResponse {
1566    /// validators defines the validators' info of a delegator.
1567    #[prost(message, repeated, tag = "1")]
1568    pub validators: ::prost::alloc::vec::Vec<Validator>,
1569    /// pagination defines the pagination in the response.
1570    #[prost(message, optional, tag = "2")]
1571    pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
1572}
1573/// QueryDelegatorValidatorRequest is request type for the
1574/// Query/DelegatorValidator RPC method.
1575#[allow(clippy::derive_partial_eq_without_eq)]
1576#[derive(
1577    Clone,
1578    PartialEq,
1579    Eq,
1580    ::prost::Message,
1581    ::serde::Serialize,
1582    ::serde::Deserialize,
1583    ::schemars::JsonSchema,
1584    CosmwasmExt,
1585)]
1586#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryDelegatorValidatorRequest")]
1587#[proto_query(
1588    path = "/cosmos.staking.v1beta1.Query/DelegatorValidator",
1589    response_type = QueryDelegatorValidatorResponse
1590)]
1591pub struct QueryDelegatorValidatorRequest {
1592    /// delegator_addr defines the delegator address to query for.
1593    #[prost(string, tag = "1")]
1594    pub delegator_addr: ::prost::alloc::string::String,
1595    /// validator_addr defines the validator address to query for.
1596    #[prost(string, tag = "2")]
1597    pub validator_addr: ::prost::alloc::string::String,
1598}
1599/// QueryDelegatorValidatorResponse response type for the
1600/// Query/DelegatorValidator RPC method.
1601#[allow(clippy::derive_partial_eq_without_eq)]
1602#[derive(
1603    Clone,
1604    PartialEq,
1605    Eq,
1606    ::prost::Message,
1607    ::serde::Serialize,
1608    ::serde::Deserialize,
1609    ::schemars::JsonSchema,
1610    CosmwasmExt,
1611)]
1612#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryDelegatorValidatorResponse")]
1613pub struct QueryDelegatorValidatorResponse {
1614    /// validator defines the validator info.
1615    #[prost(message, optional, tag = "1")]
1616    pub validator: ::core::option::Option<Validator>,
1617}
1618/// QueryHistoricalInfoRequest is request type for the Query/HistoricalInfo RPC
1619/// method.
1620#[allow(clippy::derive_partial_eq_without_eq)]
1621#[derive(
1622    Clone,
1623    PartialEq,
1624    Eq,
1625    ::prost::Message,
1626    ::serde::Serialize,
1627    ::serde::Deserialize,
1628    ::schemars::JsonSchema,
1629    CosmwasmExt,
1630)]
1631#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryHistoricalInfoRequest")]
1632#[proto_query(
1633    path = "/cosmos.staking.v1beta1.Query/HistoricalInfo",
1634    response_type = QueryHistoricalInfoResponse
1635)]
1636pub struct QueryHistoricalInfoRequest {
1637    /// height defines at which height to query the historical info.
1638    #[prost(int64, tag = "1")]
1639    #[serde(
1640        serialize_with = "crate::serde::as_str::serialize",
1641        deserialize_with = "crate::serde::as_str::deserialize"
1642    )]
1643    pub height: i64,
1644}
1645/// QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo RPC
1646/// method.
1647#[allow(clippy::derive_partial_eq_without_eq)]
1648#[derive(
1649    Clone,
1650    PartialEq,
1651    Eq,
1652    ::prost::Message,
1653    ::serde::Serialize,
1654    ::serde::Deserialize,
1655    ::schemars::JsonSchema,
1656    CosmwasmExt,
1657)]
1658#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryHistoricalInfoResponse")]
1659pub struct QueryHistoricalInfoResponse {
1660    /// hist defines the historical info at the given height.
1661    #[prost(message, optional, tag = "1")]
1662    pub hist: ::core::option::Option<HistoricalInfo>,
1663}
1664/// QueryPoolRequest is request type for the Query/Pool RPC method.
1665#[allow(clippy::derive_partial_eq_without_eq)]
1666#[derive(
1667    Clone,
1668    PartialEq,
1669    Eq,
1670    ::prost::Message,
1671    ::serde::Serialize,
1672    ::serde::Deserialize,
1673    ::schemars::JsonSchema,
1674    CosmwasmExt,
1675)]
1676#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryPoolRequest")]
1677#[proto_query(
1678    path = "/cosmos.staking.v1beta1.Query/Pool",
1679    response_type = QueryPoolResponse
1680)]
1681pub struct QueryPoolRequest {}
1682/// QueryPoolResponse is response type for the Query/Pool RPC method.
1683#[allow(clippy::derive_partial_eq_without_eq)]
1684#[derive(
1685    Clone,
1686    PartialEq,
1687    Eq,
1688    ::prost::Message,
1689    ::serde::Serialize,
1690    ::serde::Deserialize,
1691    ::schemars::JsonSchema,
1692    CosmwasmExt,
1693)]
1694#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryPoolResponse")]
1695pub struct QueryPoolResponse {
1696    /// pool defines the pool info.
1697    #[prost(message, optional, tag = "1")]
1698    pub pool: ::core::option::Option<Pool>,
1699}
1700/// QueryParamsRequest is request type for the Query/Params RPC method.
1701#[allow(clippy::derive_partial_eq_without_eq)]
1702#[derive(
1703    Clone,
1704    PartialEq,
1705    Eq,
1706    ::prost::Message,
1707    ::serde::Serialize,
1708    ::serde::Deserialize,
1709    ::schemars::JsonSchema,
1710    CosmwasmExt,
1711)]
1712#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryParamsRequest")]
1713#[proto_query(
1714    path = "/cosmos.staking.v1beta1.Query/Params",
1715    response_type = QueryParamsResponse
1716)]
1717pub struct QueryParamsRequest {}
1718/// QueryParamsResponse is response type for the Query/Params RPC method.
1719#[allow(clippy::derive_partial_eq_without_eq)]
1720#[derive(
1721    Clone,
1722    PartialEq,
1723    Eq,
1724    ::prost::Message,
1725    ::serde::Serialize,
1726    ::serde::Deserialize,
1727    ::schemars::JsonSchema,
1728    CosmwasmExt,
1729)]
1730#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryParamsResponse")]
1731pub struct QueryParamsResponse {
1732    /// params holds all the parameters of this module.
1733    #[prost(message, optional, tag = "1")]
1734    pub params: ::core::option::Option<Params>,
1735}
1736/// QueryTokenizeShareRecordByIdRequest is request type for the
1737/// Query/QueryTokenizeShareRecordById RPC method.
1738///
1739/// Since: cosmos-sdk 0.47-lsm
1740#[allow(clippy::derive_partial_eq_without_eq)]
1741#[derive(
1742    Clone,
1743    PartialEq,
1744    Eq,
1745    ::prost::Message,
1746    ::serde::Serialize,
1747    ::serde::Deserialize,
1748    ::schemars::JsonSchema,
1749    CosmwasmExt,
1750)]
1751#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdRequest")]
1752#[proto_query(
1753    path = "/cosmos.staking.v1beta1.Query/TokenizeShareRecordById",
1754    response_type = QueryTokenizeShareRecordByIdResponse
1755)]
1756pub struct QueryTokenizeShareRecordByIdRequest {
1757    #[prost(uint64, tag = "1")]
1758    #[serde(alias = "ID")]
1759    #[serde(
1760        serialize_with = "crate::serde::as_str::serialize",
1761        deserialize_with = "crate::serde::as_str::deserialize"
1762    )]
1763    pub id: u64,
1764}
1765/// QueryTokenizeShareRecordByIdRequest is response type for the
1766/// Query/QueryTokenizeShareRecordById RPC method.
1767///
1768/// Since: cosmos-sdk 0.47-lsm
1769#[allow(clippy::derive_partial_eq_without_eq)]
1770#[derive(
1771    Clone,
1772    PartialEq,
1773    Eq,
1774    ::prost::Message,
1775    ::serde::Serialize,
1776    ::serde::Deserialize,
1777    ::schemars::JsonSchema,
1778    CosmwasmExt,
1779)]
1780#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryTokenizeShareRecordByIdResponse")]
1781pub struct QueryTokenizeShareRecordByIdResponse {
1782    #[prost(message, optional, tag = "1")]
1783    pub record: ::core::option::Option<TokenizeShareRecord>,
1784}
1785/// QueryTokenizeShareRecordByDenomRequest is request type for the
1786/// Query/QueryTokenizeShareRecordByDenom RPC method.
1787///
1788/// Since: cosmos-sdk 0.47-lsm
1789#[allow(clippy::derive_partial_eq_without_eq)]
1790#[derive(
1791    Clone,
1792    PartialEq,
1793    Eq,
1794    ::prost::Message,
1795    ::serde::Serialize,
1796    ::serde::Deserialize,
1797    ::schemars::JsonSchema,
1798    CosmwasmExt,
1799)]
1800#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomRequest")]
1801#[proto_query(
1802    path = "/cosmos.staking.v1beta1.Query/TokenizeShareRecordByDenom",
1803    response_type = QueryTokenizeShareRecordByDenomResponse
1804)]
1805pub struct QueryTokenizeShareRecordByDenomRequest {
1806    #[prost(string, tag = "1")]
1807    pub denom: ::prost::alloc::string::String,
1808}
1809/// QueryTokenizeShareRecordByDenomResponse is response type for the
1810/// Query/QueryTokenizeShareRecordByDenom RPC method.
1811///
1812/// Since: cosmos-sdk 0.47-lsm
1813#[allow(clippy::derive_partial_eq_without_eq)]
1814#[derive(
1815    Clone,
1816    PartialEq,
1817    Eq,
1818    ::prost::Message,
1819    ::serde::Serialize,
1820    ::serde::Deserialize,
1821    ::schemars::JsonSchema,
1822    CosmwasmExt,
1823)]
1824#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryTokenizeShareRecordByDenomResponse")]
1825pub struct QueryTokenizeShareRecordByDenomResponse {
1826    #[prost(message, optional, tag = "1")]
1827    pub record: ::core::option::Option<TokenizeShareRecord>,
1828}
1829/// QueryTokenizeShareRecordsOwnedRequest is request type for the
1830/// Query/QueryTokenizeShareRecordsOwned RPC method.
1831///
1832/// Since: cosmos-sdk 0.47-lsm
1833#[allow(clippy::derive_partial_eq_without_eq)]
1834#[derive(
1835    Clone,
1836    PartialEq,
1837    Eq,
1838    ::prost::Message,
1839    ::serde::Serialize,
1840    ::serde::Deserialize,
1841    ::schemars::JsonSchema,
1842    CosmwasmExt,
1843)]
1844#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedRequest")]
1845#[proto_query(
1846    path = "/cosmos.staking.v1beta1.Query/TokenizeShareRecordsOwned",
1847    response_type = QueryTokenizeShareRecordsOwnedResponse
1848)]
1849pub struct QueryTokenizeShareRecordsOwnedRequest {
1850    #[prost(string, tag = "1")]
1851    pub owner: ::prost::alloc::string::String,
1852}
1853/// QueryTokenizeShareRecordsOwnedResponse is response type for the
1854/// Query/QueryTokenizeShareRecordsOwned RPC method.
1855///
1856/// Since: cosmos-sdk 0.47-lsm
1857#[allow(clippy::derive_partial_eq_without_eq)]
1858#[derive(
1859    Clone,
1860    PartialEq,
1861    Eq,
1862    ::prost::Message,
1863    ::serde::Serialize,
1864    ::serde::Deserialize,
1865    ::schemars::JsonSchema,
1866    CosmwasmExt,
1867)]
1868#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryTokenizeShareRecordsOwnedResponse")]
1869pub struct QueryTokenizeShareRecordsOwnedResponse {
1870    #[prost(message, repeated, tag = "1")]
1871    pub records: ::prost::alloc::vec::Vec<TokenizeShareRecord>,
1872}
1873/// QueryTotalTokenizeSharedAssetsRequest is request type for the
1874/// Query/QueryTotalTokenizeSharedAssets RPC method.
1875///
1876/// Since: cosmos-sdk 0.47-lsm
1877#[allow(clippy::derive_partial_eq_without_eq)]
1878#[derive(
1879    Clone,
1880    PartialEq,
1881    Eq,
1882    ::prost::Message,
1883    ::serde::Serialize,
1884    ::serde::Deserialize,
1885    ::schemars::JsonSchema,
1886    CosmwasmExt,
1887)]
1888#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsRequest")]
1889#[proto_query(
1890    path = "/cosmos.staking.v1beta1.Query/AllTokenizeShareRecords",
1891    response_type = QueryAllTokenizeShareRecordsResponse
1892)]
1893pub struct QueryAllTokenizeShareRecordsRequest {}
1894/// QueryTotalTokenizeSharedAssetsResponse is response type for the
1895/// Query/QueryTotalTokenizeSharedAssets RPC method.
1896///
1897/// Since: cosmos-sdk 0.47-lsm
1898#[allow(clippy::derive_partial_eq_without_eq)]
1899#[derive(
1900    Clone,
1901    PartialEq,
1902    Eq,
1903    ::prost::Message,
1904    ::serde::Serialize,
1905    ::serde::Deserialize,
1906    ::schemars::JsonSchema,
1907    CosmwasmExt,
1908)]
1909#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryAllTokenizeShareRecordsResponse")]
1910pub struct QueryAllTokenizeShareRecordsResponse {
1911    #[prost(message, repeated, tag = "1")]
1912    pub records: ::prost::alloc::vec::Vec<TokenizeShareRecord>,
1913}
1914/// QueryLastTokenizeShareRecordIdRequest
1915///
1916/// Since: cosmos-sdk 0.47-lsm
1917#[allow(clippy::derive_partial_eq_without_eq)]
1918#[derive(
1919    Clone,
1920    PartialEq,
1921    Eq,
1922    ::prost::Message,
1923    ::serde::Serialize,
1924    ::serde::Deserialize,
1925    ::schemars::JsonSchema,
1926    CosmwasmExt,
1927)]
1928#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdRequest")]
1929#[proto_query(
1930    path = "/cosmos.staking.v1beta1.Query/LastTokenizeShareRecordId",
1931    response_type = QueryLastTokenizeShareRecordIdResponse
1932)]
1933pub struct QueryLastTokenizeShareRecordIdRequest {}
1934/// QueryLastTokenizeShareRecordIdResponse
1935///
1936/// Since: cosmos-sdk 0.47-lsm
1937#[allow(clippy::derive_partial_eq_without_eq)]
1938#[derive(
1939    Clone,
1940    PartialEq,
1941    Eq,
1942    ::prost::Message,
1943    ::serde::Serialize,
1944    ::serde::Deserialize,
1945    ::schemars::JsonSchema,
1946    CosmwasmExt,
1947)]
1948#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryLastTokenizeShareRecordIdResponse")]
1949pub struct QueryLastTokenizeShareRecordIdResponse {
1950    #[prost(uint64, tag = "1")]
1951    #[serde(alias = "ID")]
1952    #[serde(
1953        serialize_with = "crate::serde::as_str::serialize",
1954        deserialize_with = "crate::serde::as_str::deserialize"
1955    )]
1956    pub id: u64,
1957}
1958/// QueryTotalTokenizeSharedAssetsRequest is request type for the
1959/// Query/QueryTotalTokenizeSharedAssets RPC method.
1960///
1961/// Since: cosmos-sdk 0.47-lsm
1962#[allow(clippy::derive_partial_eq_without_eq)]
1963#[derive(
1964    Clone,
1965    PartialEq,
1966    Eq,
1967    ::prost::Message,
1968    ::serde::Serialize,
1969    ::serde::Deserialize,
1970    ::schemars::JsonSchema,
1971    CosmwasmExt,
1972)]
1973#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsRequest")]
1974#[proto_query(
1975    path = "/cosmos.staking.v1beta1.Query/TotalTokenizeSharedAssets",
1976    response_type = QueryTotalTokenizeSharedAssetsResponse
1977)]
1978pub struct QueryTotalTokenizeSharedAssetsRequest {}
1979/// QueryTotalTokenizeSharedAssetsResponse is response type for the
1980/// Query/QueryTotalTokenizeSharedAssets RPC method.
1981///
1982/// Since: cosmos-sdk 0.47-lsm
1983#[allow(clippy::derive_partial_eq_without_eq)]
1984#[derive(
1985    Clone,
1986    PartialEq,
1987    Eq,
1988    ::prost::Message,
1989    ::serde::Serialize,
1990    ::serde::Deserialize,
1991    ::schemars::JsonSchema,
1992    CosmwasmExt,
1993)]
1994#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryTotalTokenizeSharedAssetsResponse")]
1995pub struct QueryTotalTokenizeSharedAssetsResponse {
1996    #[prost(message, optional, tag = "1")]
1997    pub value: ::core::option::Option<super::super::base::v1beta1::Coin>,
1998}
1999/// QueryQueryTotalLiquidStakedRequest is request type for the
2000/// Query/QueryQueryTotalLiquidStaked RPC method.
2001///
2002/// Since: cosmos-sdk 0.47-lsm
2003#[allow(clippy::derive_partial_eq_without_eq)]
2004#[derive(
2005    Clone,
2006    PartialEq,
2007    Eq,
2008    ::prost::Message,
2009    ::serde::Serialize,
2010    ::serde::Deserialize,
2011    ::schemars::JsonSchema,
2012    CosmwasmExt,
2013)]
2014#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryTotalLiquidStaked")]
2015#[proto_query(
2016    path = "/cosmos.staking.v1beta1.Query/TotalLiquidStaked",
2017    response_type = QueryTotalLiquidStakedResponse
2018)]
2019pub struct QueryTotalLiquidStaked {}
2020/// QueryQueryTotalLiquidStakedResponse is response type for the
2021/// Query/QueryQueryTotalLiquidStaked RPC method.
2022///
2023/// Since: cosmos-sdk 0.47-lsm
2024#[allow(clippy::derive_partial_eq_without_eq)]
2025#[derive(
2026    Clone,
2027    PartialEq,
2028    Eq,
2029    ::prost::Message,
2030    ::serde::Serialize,
2031    ::serde::Deserialize,
2032    ::schemars::JsonSchema,
2033    CosmwasmExt,
2034)]
2035#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryTotalLiquidStakedResponse")]
2036pub struct QueryTotalLiquidStakedResponse {
2037    #[prost(string, tag = "1")]
2038    pub tokens: ::prost::alloc::string::String,
2039}
2040/// QueryTokenizeShareLockInfo queries the tokenize share lock information
2041/// associated with given account.
2042///
2043/// Since: cosmos-sdk 0.47-lsm
2044#[allow(clippy::derive_partial_eq_without_eq)]
2045#[derive(
2046    Clone,
2047    PartialEq,
2048    Eq,
2049    ::prost::Message,
2050    ::serde::Serialize,
2051    ::serde::Deserialize,
2052    ::schemars::JsonSchema,
2053    CosmwasmExt,
2054)]
2055#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryTokenizeShareLockInfo")]
2056#[proto_query(
2057    path = "/cosmos.staking.v1beta1.Query/TokenizeShareLockInfo",
2058    response_type = QueryTokenizeShareLockInfoResponse
2059)]
2060pub struct QueryTokenizeShareLockInfo {
2061    #[prost(string, tag = "1")]
2062    pub address: ::prost::alloc::string::String,
2063}
2064/// QueryTokenizeShareLockInfoResponse is the response from the
2065/// QueryTokenizeShareLockInfo query.
2066///
2067/// Since: cosmos-sdk 0.47-lsm
2068#[allow(clippy::derive_partial_eq_without_eq)]
2069#[derive(
2070    Clone,
2071    PartialEq,
2072    Eq,
2073    ::prost::Message,
2074    ::serde::Serialize,
2075    ::serde::Deserialize,
2076    ::schemars::JsonSchema,
2077    CosmwasmExt,
2078)]
2079#[proto_message(type_url = "/cosmos.staking.v1beta1.QueryTokenizeShareLockInfoResponse")]
2080pub struct QueryTokenizeShareLockInfoResponse {
2081    #[prost(string, tag = "1")]
2082    pub status: ::prost::alloc::string::String,
2083    #[prost(string, tag = "2")]
2084    pub expiration_time: ::prost::alloc::string::String,
2085}
2086/// MsgCreateValidator defines a SDK message for creating a new validator.
2087#[allow(clippy::derive_partial_eq_without_eq)]
2088#[derive(
2089    Clone,
2090    PartialEq,
2091    Eq,
2092    ::prost::Message,
2093    ::serde::Serialize,
2094    ::serde::Deserialize,
2095    ::schemars::JsonSchema,
2096    CosmwasmExt,
2097)]
2098#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgCreateValidator")]
2099pub struct MsgCreateValidator {
2100    #[prost(message, optional, tag = "1")]
2101    pub description: ::core::option::Option<Description>,
2102    #[prost(message, optional, tag = "2")]
2103    pub commission: ::core::option::Option<CommissionRates>,
2104    #[deprecated]
2105    #[prost(string, tag = "3")]
2106    pub min_self_delegation: ::prost::alloc::string::String,
2107    #[prost(string, tag = "4")]
2108    pub delegator_address: ::prost::alloc::string::String,
2109    #[prost(string, tag = "5")]
2110    pub validator_address: ::prost::alloc::string::String,
2111    #[prost(message, optional, tag = "6")]
2112    pub pubkey: ::core::option::Option<crate::shim::Any>,
2113    #[prost(message, optional, tag = "7")]
2114    pub value: ::core::option::Option<super::super::base::v1beta1::Coin>,
2115}
2116/// MsgCreateValidatorResponse defines the Msg/CreateValidator response type.
2117#[allow(clippy::derive_partial_eq_without_eq)]
2118#[derive(
2119    Clone,
2120    PartialEq,
2121    Eq,
2122    ::prost::Message,
2123    ::serde::Serialize,
2124    ::serde::Deserialize,
2125    ::schemars::JsonSchema,
2126    CosmwasmExt,
2127)]
2128#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgCreateValidatorResponse")]
2129pub struct MsgCreateValidatorResponse {}
2130/// MsgEditValidator defines a SDK message for editing an existing validator.
2131#[allow(clippy::derive_partial_eq_without_eq)]
2132#[derive(
2133    Clone,
2134    PartialEq,
2135    Eq,
2136    ::prost::Message,
2137    ::serde::Serialize,
2138    ::serde::Deserialize,
2139    ::schemars::JsonSchema,
2140    CosmwasmExt,
2141)]
2142#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgEditValidator")]
2143pub struct MsgEditValidator {
2144    #[prost(message, optional, tag = "1")]
2145    pub description: ::core::option::Option<Description>,
2146    #[prost(string, tag = "2")]
2147    pub validator_address: ::prost::alloc::string::String,
2148    /// We pass a reference to the new commission rate and min self delegation as
2149    /// it's not mandatory to update. If not updated, the deserialized rate will be
2150    /// zero with no way to distinguish if an update was intended.
2151    /// REF: #2373
2152    #[prost(string, tag = "3")]
2153    pub commission_rate: ::prost::alloc::string::String,
2154    #[deprecated]
2155    #[prost(string, tag = "4")]
2156    pub min_self_delegation: ::prost::alloc::string::String,
2157}
2158/// MsgEditValidatorResponse defines the Msg/EditValidator response type.
2159#[allow(clippy::derive_partial_eq_without_eq)]
2160#[derive(
2161    Clone,
2162    PartialEq,
2163    Eq,
2164    ::prost::Message,
2165    ::serde::Serialize,
2166    ::serde::Deserialize,
2167    ::schemars::JsonSchema,
2168    CosmwasmExt,
2169)]
2170#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgEditValidatorResponse")]
2171pub struct MsgEditValidatorResponse {}
2172/// MsgDelegate defines a SDK message for performing a delegation of coins
2173/// from a delegator to a validator.
2174#[allow(clippy::derive_partial_eq_without_eq)]
2175#[derive(
2176    Clone,
2177    PartialEq,
2178    Eq,
2179    ::prost::Message,
2180    ::serde::Serialize,
2181    ::serde::Deserialize,
2182    ::schemars::JsonSchema,
2183    CosmwasmExt,
2184)]
2185#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgDelegate")]
2186pub struct MsgDelegate {
2187    #[prost(string, tag = "1")]
2188    pub delegator_address: ::prost::alloc::string::String,
2189    #[prost(string, tag = "2")]
2190    pub validator_address: ::prost::alloc::string::String,
2191    #[prost(message, optional, tag = "3")]
2192    pub amount: ::core::option::Option<super::super::base::v1beta1::Coin>,
2193}
2194/// MsgDelegateResponse defines the Msg/Delegate response type.
2195#[allow(clippy::derive_partial_eq_without_eq)]
2196#[derive(
2197    Clone,
2198    PartialEq,
2199    Eq,
2200    ::prost::Message,
2201    ::serde::Serialize,
2202    ::serde::Deserialize,
2203    ::schemars::JsonSchema,
2204    CosmwasmExt,
2205)]
2206#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgDelegateResponse")]
2207pub struct MsgDelegateResponse {}
2208/// MsgBeginRedelegate defines a SDK message for performing a redelegation
2209/// of coins from a delegator and source validator to a destination validator.
2210#[allow(clippy::derive_partial_eq_without_eq)]
2211#[derive(
2212    Clone,
2213    PartialEq,
2214    Eq,
2215    ::prost::Message,
2216    ::serde::Serialize,
2217    ::serde::Deserialize,
2218    ::schemars::JsonSchema,
2219    CosmwasmExt,
2220)]
2221#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgBeginRedelegate")]
2222pub struct MsgBeginRedelegate {
2223    #[prost(string, tag = "1")]
2224    pub delegator_address: ::prost::alloc::string::String,
2225    #[prost(string, tag = "2")]
2226    pub validator_src_address: ::prost::alloc::string::String,
2227    #[prost(string, tag = "3")]
2228    pub validator_dst_address: ::prost::alloc::string::String,
2229    #[prost(message, optional, tag = "4")]
2230    pub amount: ::core::option::Option<super::super::base::v1beta1::Coin>,
2231}
2232/// MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type.
2233#[allow(clippy::derive_partial_eq_without_eq)]
2234#[derive(
2235    Clone,
2236    PartialEq,
2237    Eq,
2238    ::prost::Message,
2239    ::serde::Serialize,
2240    ::serde::Deserialize,
2241    ::schemars::JsonSchema,
2242    CosmwasmExt,
2243)]
2244#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgBeginRedelegateResponse")]
2245pub struct MsgBeginRedelegateResponse {
2246    #[prost(message, optional, tag = "1")]
2247    pub completion_time: ::core::option::Option<crate::shim::Timestamp>,
2248}
2249/// MsgUndelegate defines a SDK message for performing an undelegation from a
2250/// delegate and a validator.
2251#[allow(clippy::derive_partial_eq_without_eq)]
2252#[derive(
2253    Clone,
2254    PartialEq,
2255    Eq,
2256    ::prost::Message,
2257    ::serde::Serialize,
2258    ::serde::Deserialize,
2259    ::schemars::JsonSchema,
2260    CosmwasmExt,
2261)]
2262#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgUndelegate")]
2263pub struct MsgUndelegate {
2264    #[prost(string, tag = "1")]
2265    pub delegator_address: ::prost::alloc::string::String,
2266    #[prost(string, tag = "2")]
2267    pub validator_address: ::prost::alloc::string::String,
2268    #[prost(message, optional, tag = "3")]
2269    pub amount: ::core::option::Option<super::super::base::v1beta1::Coin>,
2270}
2271/// MsgUndelegateResponse defines the Msg/Undelegate response type.
2272#[allow(clippy::derive_partial_eq_without_eq)]
2273#[derive(
2274    Clone,
2275    PartialEq,
2276    Eq,
2277    ::prost::Message,
2278    ::serde::Serialize,
2279    ::serde::Deserialize,
2280    ::schemars::JsonSchema,
2281    CosmwasmExt,
2282)]
2283#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgUndelegateResponse")]
2284pub struct MsgUndelegateResponse {
2285    #[prost(message, optional, tag = "1")]
2286    pub completion_time: ::core::option::Option<crate::shim::Timestamp>,
2287}
2288/// MsgCancelUnbondingDelegation defines the SDK message for performing a cancel unbonding delegation for delegator
2289///
2290/// Since: cosmos-sdk 0.46
2291#[allow(clippy::derive_partial_eq_without_eq)]
2292#[derive(
2293    Clone,
2294    PartialEq,
2295    Eq,
2296    ::prost::Message,
2297    ::serde::Serialize,
2298    ::serde::Deserialize,
2299    ::schemars::JsonSchema,
2300    CosmwasmExt,
2301)]
2302#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation")]
2303pub struct MsgCancelUnbondingDelegation {
2304    #[prost(string, tag = "1")]
2305    pub delegator_address: ::prost::alloc::string::String,
2306    #[prost(string, tag = "2")]
2307    pub validator_address: ::prost::alloc::string::String,
2308    /// amount is always less than or equal to unbonding delegation entry balance
2309    #[prost(message, optional, tag = "3")]
2310    pub amount: ::core::option::Option<super::super::base::v1beta1::Coin>,
2311    /// creation_height is the height which the unbonding took place.
2312    #[prost(int64, tag = "4")]
2313    #[serde(
2314        serialize_with = "crate::serde::as_str::serialize",
2315        deserialize_with = "crate::serde::as_str::deserialize"
2316    )]
2317    pub creation_height: i64,
2318}
2319/// MsgCancelUnbondingDelegationResponse
2320///
2321/// Since: cosmos-sdk 0.46
2322#[allow(clippy::derive_partial_eq_without_eq)]
2323#[derive(
2324    Clone,
2325    PartialEq,
2326    Eq,
2327    ::prost::Message,
2328    ::serde::Serialize,
2329    ::serde::Deserialize,
2330    ::schemars::JsonSchema,
2331    CosmwasmExt,
2332)]
2333#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse")]
2334pub struct MsgCancelUnbondingDelegationResponse {}
2335/// MsgUpdateParams is the Msg/UpdateParams request type.
2336///
2337/// Since: cosmos-sdk 0.47
2338#[allow(clippy::derive_partial_eq_without_eq)]
2339#[derive(
2340    Clone,
2341    PartialEq,
2342    Eq,
2343    ::prost::Message,
2344    ::serde::Serialize,
2345    ::serde::Deserialize,
2346    ::schemars::JsonSchema,
2347    CosmwasmExt,
2348)]
2349#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgUpdateParams")]
2350pub struct MsgUpdateParams {
2351    /// authority is the address that controls the module (defaults to x/gov unless overwritten).
2352    #[prost(string, tag = "1")]
2353    pub authority: ::prost::alloc::string::String,
2354    /// params defines the x/staking parameters to update.
2355    ///
2356    /// NOTE: All parameters must be supplied.
2357    #[prost(message, optional, tag = "2")]
2358    pub params: ::core::option::Option<Params>,
2359}
2360/// MsgUpdateParamsResponse defines the response structure for executing a
2361/// MsgUpdateParams message.
2362///
2363/// Since: cosmos-sdk 0.47
2364#[allow(clippy::derive_partial_eq_without_eq)]
2365#[derive(
2366    Clone,
2367    PartialEq,
2368    Eq,
2369    ::prost::Message,
2370    ::serde::Serialize,
2371    ::serde::Deserialize,
2372    ::schemars::JsonSchema,
2373    CosmwasmExt,
2374)]
2375#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgUpdateParamsResponse")]
2376pub struct MsgUpdateParamsResponse {}
2377/// MsgUnbondValidator defines a method for performing the status transition for
2378/// a validator from bonded to unbonding.
2379///
2380/// Since: cosmos-sdk 0.47-lsm
2381#[allow(clippy::derive_partial_eq_without_eq)]
2382#[derive(
2383    Clone,
2384    PartialEq,
2385    Eq,
2386    ::prost::Message,
2387    ::serde::Serialize,
2388    ::serde::Deserialize,
2389    ::schemars::JsonSchema,
2390    CosmwasmExt,
2391)]
2392#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgUnbondValidator")]
2393pub struct MsgUnbondValidator {
2394    #[prost(string, tag = "1")]
2395    pub validator_address: ::prost::alloc::string::String,
2396}
2397/// MsgUnbondValidatorResponse defines the MsgUnbondValidator response type.
2398///
2399/// Since: cosmos-sdk 0.47-lsm
2400#[allow(clippy::derive_partial_eq_without_eq)]
2401#[derive(
2402    Clone,
2403    PartialEq,
2404    Eq,
2405    ::prost::Message,
2406    ::serde::Serialize,
2407    ::serde::Deserialize,
2408    ::schemars::JsonSchema,
2409    CosmwasmExt,
2410)]
2411#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgUnbondValidatorResponse")]
2412pub struct MsgUnbondValidatorResponse {}
2413/// MsgTokenizeShares tokenizes a delegation.
2414///
2415/// Since: cosmos-sdk 0.47-lsm
2416#[allow(clippy::derive_partial_eq_without_eq)]
2417#[derive(
2418    Clone,
2419    PartialEq,
2420    Eq,
2421    ::prost::Message,
2422    ::serde::Serialize,
2423    ::serde::Deserialize,
2424    ::schemars::JsonSchema,
2425    CosmwasmExt,
2426)]
2427#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgTokenizeShares")]
2428pub struct MsgTokenizeShares {
2429    #[prost(string, tag = "1")]
2430    pub delegator_address: ::prost::alloc::string::String,
2431    #[prost(string, tag = "2")]
2432    pub validator_address: ::prost::alloc::string::String,
2433    #[prost(message, optional, tag = "3")]
2434    pub amount: ::core::option::Option<super::super::base::v1beta1::Coin>,
2435    #[prost(string, tag = "4")]
2436    pub tokenized_share_owner: ::prost::alloc::string::String,
2437}
2438/// MsgTokenizeSharesResponse defines the MsgTokenizeShares response type.
2439///
2440/// Since: cosmos-sdk 0.47-lsm
2441#[allow(clippy::derive_partial_eq_without_eq)]
2442#[derive(
2443    Clone,
2444    PartialEq,
2445    Eq,
2446    ::prost::Message,
2447    ::serde::Serialize,
2448    ::serde::Deserialize,
2449    ::schemars::JsonSchema,
2450    CosmwasmExt,
2451)]
2452#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgTokenizeSharesResponse")]
2453pub struct MsgTokenizeSharesResponse {
2454    #[prost(message, optional, tag = "1")]
2455    pub amount: ::core::option::Option<super::super::base::v1beta1::Coin>,
2456}
2457/// MsgRedeemTokensForShares redeems a tokenized share back into a native delegation.
2458///
2459/// Since: cosmos-sdk 0.47-lsm
2460#[allow(clippy::derive_partial_eq_without_eq)]
2461#[derive(
2462    Clone,
2463    PartialEq,
2464    Eq,
2465    ::prost::Message,
2466    ::serde::Serialize,
2467    ::serde::Deserialize,
2468    ::schemars::JsonSchema,
2469    CosmwasmExt,
2470)]
2471#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgRedeemTokensForShares")]
2472pub struct MsgRedeemTokensForShares {
2473    #[prost(string, tag = "1")]
2474    pub delegator_address: ::prost::alloc::string::String,
2475    #[prost(message, optional, tag = "2")]
2476    pub amount: ::core::option::Option<super::super::base::v1beta1::Coin>,
2477}
2478/// MsgRedeemTokensForSharesResponse defines the MsgRedeemTokensForShares response type.
2479///
2480/// Since: cosmos-sdk 0.47-lsm
2481#[allow(clippy::derive_partial_eq_without_eq)]
2482#[derive(
2483    Clone,
2484    PartialEq,
2485    Eq,
2486    ::prost::Message,
2487    ::serde::Serialize,
2488    ::serde::Deserialize,
2489    ::schemars::JsonSchema,
2490    CosmwasmExt,
2491)]
2492#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse")]
2493pub struct MsgRedeemTokensForSharesResponse {
2494    #[prost(message, optional, tag = "1")]
2495    pub amount: ::core::option::Option<super::super::base::v1beta1::Coin>,
2496}
2497/// MsgTransferTokenizeShareRecord transfer a tokenize share record.
2498///
2499/// Since: cosmos-sdk 0.47-lsm
2500#[allow(clippy::derive_partial_eq_without_eq)]
2501#[derive(
2502    Clone,
2503    PartialEq,
2504    Eq,
2505    ::prost::Message,
2506    ::serde::Serialize,
2507    ::serde::Deserialize,
2508    ::schemars::JsonSchema,
2509    CosmwasmExt,
2510)]
2511#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgTransferTokenizeShareRecord")]
2512pub struct MsgTransferTokenizeShareRecord {
2513    #[prost(uint64, tag = "1")]
2514    #[serde(alias = "tokenize_share_recordID")]
2515    #[serde(
2516        serialize_with = "crate::serde::as_str::serialize",
2517        deserialize_with = "crate::serde::as_str::deserialize"
2518    )]
2519    pub tokenize_share_record_id: u64,
2520    #[prost(string, tag = "2")]
2521    pub sender: ::prost::alloc::string::String,
2522    #[prost(string, tag = "3")]
2523    pub new_owner: ::prost::alloc::string::String,
2524}
2525/// MsgTransferTokenizeShareRecordResponse defines the MsgTransferTokenizeShareRecord response type.
2526///
2527/// Since: cosmos-sdk 0.47-lsm
2528#[allow(clippy::derive_partial_eq_without_eq)]
2529#[derive(
2530    Clone,
2531    PartialEq,
2532    Eq,
2533    ::prost::Message,
2534    ::serde::Serialize,
2535    ::serde::Deserialize,
2536    ::schemars::JsonSchema,
2537    CosmwasmExt,
2538)]
2539#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgTransferTokenizeShareRecordResponse")]
2540pub struct MsgTransferTokenizeShareRecordResponse {}
2541/// MsgDisableTokenizeShares prevents the tokenization of shares for a given address.
2542///
2543/// Since: cosmos-sdk 0.47-lsm
2544#[allow(clippy::derive_partial_eq_without_eq)]
2545#[derive(
2546    Clone,
2547    PartialEq,
2548    Eq,
2549    ::prost::Message,
2550    ::serde::Serialize,
2551    ::serde::Deserialize,
2552    ::schemars::JsonSchema,
2553    CosmwasmExt,
2554)]
2555#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgDisableTokenizeShares")]
2556pub struct MsgDisableTokenizeShares {
2557    #[prost(string, tag = "1")]
2558    pub delegator_address: ::prost::alloc::string::String,
2559}
2560/// MsgDisableTokenizeSharesResponse defines the /DisableTokenizeShares response type.
2561///
2562/// Since: cosmos-sdk 0.47-lsm
2563#[allow(clippy::derive_partial_eq_without_eq)]
2564#[derive(
2565    Clone,
2566    PartialEq,
2567    Eq,
2568    ::prost::Message,
2569    ::serde::Serialize,
2570    ::serde::Deserialize,
2571    ::schemars::JsonSchema,
2572    CosmwasmExt,
2573)]
2574#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgDisableTokenizeSharesResponse")]
2575pub struct MsgDisableTokenizeSharesResponse {}
2576/// MsgEnableTokenizeShares re-enables tokenization of shares for a given address.
2577///
2578/// Since: cosmos-sdk 0.47-lsm
2579#[allow(clippy::derive_partial_eq_without_eq)]
2580#[derive(
2581    Clone,
2582    PartialEq,
2583    Eq,
2584    ::prost::Message,
2585    ::serde::Serialize,
2586    ::serde::Deserialize,
2587    ::schemars::JsonSchema,
2588    CosmwasmExt,
2589)]
2590#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgEnableTokenizeShares")]
2591pub struct MsgEnableTokenizeShares {
2592    #[prost(string, tag = "1")]
2593    pub delegator_address: ::prost::alloc::string::String,
2594}
2595/// MsgEnableTokenizeSharesResponse defines the EnableTokenizeShares response type.
2596///
2597/// Since: cosmos-sdk 0.47-lsm
2598#[allow(clippy::derive_partial_eq_without_eq)]
2599#[derive(
2600    Clone,
2601    PartialEq,
2602    Eq,
2603    ::prost::Message,
2604    ::serde::Serialize,
2605    ::serde::Deserialize,
2606    ::schemars::JsonSchema,
2607    CosmwasmExt,
2608)]
2609#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgEnableTokenizeSharesResponse")]
2610pub struct MsgEnableTokenizeSharesResponse {
2611    #[prost(message, optional, tag = "1")]
2612    pub completion_time: ::core::option::Option<crate::shim::Timestamp>,
2613}
2614/// MsgValidatorBond defines a SDK message for performing validator self-bond of delegated coins
2615/// from a delegator to a validator.
2616///
2617/// Since: cosmos-sdk 0.47-lsm
2618#[allow(clippy::derive_partial_eq_without_eq)]
2619#[derive(
2620    Clone,
2621    PartialEq,
2622    Eq,
2623    ::prost::Message,
2624    ::serde::Serialize,
2625    ::serde::Deserialize,
2626    ::schemars::JsonSchema,
2627    CosmwasmExt,
2628)]
2629#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgValidatorBond")]
2630pub struct MsgValidatorBond {
2631    #[prost(string, tag = "1")]
2632    pub delegator_address: ::prost::alloc::string::String,
2633    #[prost(string, tag = "2")]
2634    pub validator_address: ::prost::alloc::string::String,
2635}
2636/// MsgValidatorBondResponse defines the ValidatorBond response type.
2637///
2638/// Since: cosmos-sdk 0.47-lsm
2639#[allow(clippy::derive_partial_eq_without_eq)]
2640#[derive(
2641    Clone,
2642    PartialEq,
2643    Eq,
2644    ::prost::Message,
2645    ::serde::Serialize,
2646    ::serde::Deserialize,
2647    ::schemars::JsonSchema,
2648    CosmwasmExt,
2649)]
2650#[proto_message(type_url = "/cosmos.staking.v1beta1.MsgValidatorBondResponse")]
2651pub struct MsgValidatorBondResponse {}
2652pub struct StakingQuerier<'a, Q: cosmwasm_std::CustomQuery> {
2653    querier: &'a cosmwasm_std::QuerierWrapper<'a, Q>,
2654}
2655impl<'a, Q: cosmwasm_std::CustomQuery> StakingQuerier<'a, Q> {
2656    pub fn new(querier: &'a cosmwasm_std::QuerierWrapper<'a, Q>) -> Self {
2657        Self { querier }
2658    }
2659    pub fn validators(
2660        &self,
2661        status: ::prost::alloc::string::String,
2662        pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
2663    ) -> Result<QueryValidatorsResponse, cosmwasm_std::StdError> {
2664        QueryValidatorsRequest { status, pagination }.query(self.querier)
2665    }
2666    pub fn validator(
2667        &self,
2668        validator_addr: ::prost::alloc::string::String,
2669    ) -> Result<QueryValidatorResponse, cosmwasm_std::StdError> {
2670        QueryValidatorRequest { validator_addr }.query(self.querier)
2671    }
2672    pub fn validator_delegations(
2673        &self,
2674        validator_addr: ::prost::alloc::string::String,
2675        pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
2676    ) -> Result<QueryValidatorDelegationsResponse, cosmwasm_std::StdError> {
2677        QueryValidatorDelegationsRequest {
2678            validator_addr,
2679            pagination,
2680        }
2681        .query(self.querier)
2682    }
2683    pub fn validator_unbonding_delegations(
2684        &self,
2685        validator_addr: ::prost::alloc::string::String,
2686        pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
2687    ) -> Result<QueryValidatorUnbondingDelegationsResponse, cosmwasm_std::StdError> {
2688        QueryValidatorUnbondingDelegationsRequest {
2689            validator_addr,
2690            pagination,
2691        }
2692        .query(self.querier)
2693    }
2694    pub fn delegation(
2695        &self,
2696        delegator_addr: ::prost::alloc::string::String,
2697        validator_addr: ::prost::alloc::string::String,
2698    ) -> Result<QueryDelegationResponse, cosmwasm_std::StdError> {
2699        QueryDelegationRequest {
2700            delegator_addr,
2701            validator_addr,
2702        }
2703        .query(self.querier)
2704    }
2705    pub fn unbonding_delegation(
2706        &self,
2707        delegator_addr: ::prost::alloc::string::String,
2708        validator_addr: ::prost::alloc::string::String,
2709    ) -> Result<QueryUnbondingDelegationResponse, cosmwasm_std::StdError> {
2710        QueryUnbondingDelegationRequest {
2711            delegator_addr,
2712            validator_addr,
2713        }
2714        .query(self.querier)
2715    }
2716    pub fn delegator_delegations(
2717        &self,
2718        delegator_addr: ::prost::alloc::string::String,
2719        pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
2720    ) -> Result<QueryDelegatorDelegationsResponse, cosmwasm_std::StdError> {
2721        QueryDelegatorDelegationsRequest {
2722            delegator_addr,
2723            pagination,
2724        }
2725        .query(self.querier)
2726    }
2727    pub fn delegator_unbonding_delegations(
2728        &self,
2729        delegator_addr: ::prost::alloc::string::String,
2730        pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
2731    ) -> Result<QueryDelegatorUnbondingDelegationsResponse, cosmwasm_std::StdError> {
2732        QueryDelegatorUnbondingDelegationsRequest {
2733            delegator_addr,
2734            pagination,
2735        }
2736        .query(self.querier)
2737    }
2738    pub fn redelegations(
2739        &self,
2740        delegator_addr: ::prost::alloc::string::String,
2741        src_validator_addr: ::prost::alloc::string::String,
2742        dst_validator_addr: ::prost::alloc::string::String,
2743        pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
2744    ) -> Result<QueryRedelegationsResponse, cosmwasm_std::StdError> {
2745        QueryRedelegationsRequest {
2746            delegator_addr,
2747            src_validator_addr,
2748            dst_validator_addr,
2749            pagination,
2750        }
2751        .query(self.querier)
2752    }
2753    pub fn delegator_validators(
2754        &self,
2755        delegator_addr: ::prost::alloc::string::String,
2756        pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
2757    ) -> Result<QueryDelegatorValidatorsResponse, cosmwasm_std::StdError> {
2758        QueryDelegatorValidatorsRequest {
2759            delegator_addr,
2760            pagination,
2761        }
2762        .query(self.querier)
2763    }
2764    pub fn delegator_validator(
2765        &self,
2766        delegator_addr: ::prost::alloc::string::String,
2767        validator_addr: ::prost::alloc::string::String,
2768    ) -> Result<QueryDelegatorValidatorResponse, cosmwasm_std::StdError> {
2769        QueryDelegatorValidatorRequest {
2770            delegator_addr,
2771            validator_addr,
2772        }
2773        .query(self.querier)
2774    }
2775    pub fn historical_info(
2776        &self,
2777        height: i64,
2778    ) -> Result<QueryHistoricalInfoResponse, cosmwasm_std::StdError> {
2779        QueryHistoricalInfoRequest { height }.query(self.querier)
2780    }
2781    pub fn pool(&self) -> Result<QueryPoolResponse, cosmwasm_std::StdError> {
2782        QueryPoolRequest {}.query(self.querier)
2783    }
2784    pub fn params(&self) -> Result<QueryParamsResponse, cosmwasm_std::StdError> {
2785        QueryParamsRequest {}.query(self.querier)
2786    }
2787    pub fn tokenize_share_record_by_id(
2788        &self,
2789        id: u64,
2790    ) -> Result<QueryTokenizeShareRecordByIdResponse, cosmwasm_std::StdError> {
2791        QueryTokenizeShareRecordByIdRequest { id }.query(self.querier)
2792    }
2793    pub fn tokenize_share_record_by_denom(
2794        &self,
2795        denom: ::prost::alloc::string::String,
2796    ) -> Result<QueryTokenizeShareRecordByDenomResponse, cosmwasm_std::StdError> {
2797        QueryTokenizeShareRecordByDenomRequest { denom }.query(self.querier)
2798    }
2799    pub fn tokenize_share_records_owned(
2800        &self,
2801        owner: ::prost::alloc::string::String,
2802    ) -> Result<QueryTokenizeShareRecordsOwnedResponse, cosmwasm_std::StdError> {
2803        QueryTokenizeShareRecordsOwnedRequest { owner }.query(self.querier)
2804    }
2805    pub fn all_tokenize_share_records(
2806        &self,
2807    ) -> Result<QueryAllTokenizeShareRecordsResponse, cosmwasm_std::StdError> {
2808        QueryAllTokenizeShareRecordsRequest {}.query(self.querier)
2809    }
2810    pub fn last_tokenize_share_record_id(
2811        &self,
2812    ) -> Result<QueryLastTokenizeShareRecordIdResponse, cosmwasm_std::StdError> {
2813        QueryLastTokenizeShareRecordIdRequest {}.query(self.querier)
2814    }
2815    pub fn total_tokenize_shared_assets(
2816        &self,
2817    ) -> Result<QueryTotalTokenizeSharedAssetsResponse, cosmwasm_std::StdError> {
2818        QueryTotalTokenizeSharedAssetsRequest {}.query(self.querier)
2819    }
2820    pub fn total_liquid_staked(
2821        &self,
2822    ) -> Result<QueryTotalLiquidStakedResponse, cosmwasm_std::StdError> {
2823        QueryTotalLiquidStaked {}.query(self.querier)
2824    }
2825    pub fn tokenize_share_lock_info(
2826        &self,
2827        address: ::prost::alloc::string::String,
2828    ) -> Result<QueryTokenizeShareLockInfoResponse, cosmwasm_std::StdError> {
2829        QueryTokenizeShareLockInfo { address }.query(self.querier)
2830    }
2831}