provwasm_std/types/tendermint/
types.rs

1use provwasm_proc_macro::CosmwasmExt;
2/// ConsensusParams contains consensus critical parameters that determine the
3/// validity of blocks.
4#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
5#[proto_message(type_url = "/tendermint.types.ConsensusParams")]
6pub struct ConsensusParams {
7    #[prost(message, optional, tag = "1")]
8    pub block: ::core::option::Option<BlockParams>,
9    #[prost(message, optional, tag = "2")]
10    pub evidence: ::core::option::Option<EvidenceParams>,
11    #[prost(message, optional, tag = "3")]
12    pub validator: ::core::option::Option<ValidatorParams>,
13    #[prost(message, optional, tag = "4")]
14    pub version: ::core::option::Option<VersionParams>,
15    #[prost(message, optional, tag = "5")]
16    pub abci: ::core::option::Option<AbciParams>,
17}
18/// BlockParams contains limits on the block size.
19#[derive(Clone, Copy, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
20#[proto_message(type_url = "/tendermint.types.BlockParams")]
21pub struct BlockParams {
22    /// Max block size, in bytes.
23    /// Note: must be greater than 0
24    #[prost(int64, tag = "1")]
25    pub max_bytes: i64,
26    /// Max gas per block.
27    /// Note: must be greater or equal to -1
28    #[prost(int64, tag = "2")]
29    pub max_gas: i64,
30}
31/// EvidenceParams determine how we handle evidence of malfeasance.
32#[derive(Clone, Copy, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
33#[proto_message(type_url = "/tendermint.types.EvidenceParams")]
34pub struct EvidenceParams {
35    /// Max age of evidence, in blocks.
36    ///
37    /// The basic formula for calculating this is: MaxAgeDuration / {average block
38    /// time}.
39    #[prost(int64, tag = "1")]
40    pub max_age_num_blocks: i64,
41    /// Max age of evidence, in time.
42    ///
43    /// It should correspond with an app's "unbonding period" or other similar
44    /// mechanism for handling [Nothing-At-Stake
45    /// attacks](<https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed>).
46    #[prost(message, optional, tag = "2")]
47    pub max_age_duration: ::core::option::Option<crate::shim::Duration>,
48    /// This sets the maximum size of total evidence in bytes that can be committed in a single block.
49    /// and should fall comfortably under the max block bytes.
50    /// Default is 1048576 or 1MB
51    #[prost(int64, tag = "3")]
52    pub max_bytes: i64,
53}
54/// ValidatorParams restrict the public key types validators can use.
55/// NOTE: uses ABCI pubkey naming, not Amino names.
56#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
57#[proto_message(type_url = "/tendermint.types.ValidatorParams")]
58pub struct ValidatorParams {
59    #[prost(string, repeated, tag = "1")]
60    pub pub_key_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
61}
62/// VersionParams contains the ABCI application version.
63#[derive(Clone, Copy, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
64#[proto_message(type_url = "/tendermint.types.VersionParams")]
65pub struct VersionParams {
66    #[prost(uint64, tag = "1")]
67    pub app: u64,
68}
69/// HashedParams is a subset of ConsensusParams.
70///
71/// It is hashed into the Header.ConsensusHash.
72#[derive(Clone, Copy, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
73#[proto_message(type_url = "/tendermint.types.HashedParams")]
74pub struct HashedParams {
75    #[prost(int64, tag = "1")]
76    pub block_max_bytes: i64,
77    #[prost(int64, tag = "2")]
78    pub block_max_gas: i64,
79}
80/// ABCIParams configure functionality specific to the Application Blockchain Interface.
81#[derive(Clone, Copy, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
82#[proto_message(type_url = "/tendermint.types.ABCIParams")]
83pub struct AbciParams {
84    /// vote_extensions_enable_height configures the first height during which
85    /// vote extensions will be enabled. During this specified height, and for all
86    /// subsequent heights, precommit messages that do not contain valid extension data
87    /// will be considered invalid. Prior to this height, vote extensions will not
88    /// be used or accepted by validators on the network.
89    ///
90    /// Once enabled, vote extensions will be created by the application in ExtendVote,
91    /// passed to the application for validation in VerifyVoteExtension and given
92    /// to the application to use when proposing a block during PrepareProposal.
93    #[prost(int64, tag = "1")]
94    pub vote_extensions_enable_height: i64,
95}
96#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
97#[proto_message(type_url = "/tendermint.types.ValidatorSet")]
98pub struct ValidatorSet {
99    #[prost(message, repeated, tag = "1")]
100    pub validators: ::prost::alloc::vec::Vec<Validator>,
101    #[prost(message, optional, tag = "2")]
102    pub proposer: ::core::option::Option<Validator>,
103    #[prost(int64, tag = "3")]
104    pub total_voting_power: i64,
105}
106#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
107#[proto_message(type_url = "/tendermint.types.Validator")]
108pub struct Validator {
109    #[prost(bytes = "vec", tag = "1")]
110    pub address: ::prost::alloc::vec::Vec<u8>,
111    #[prost(message, optional, tag = "2")]
112    pub pub_key: ::core::option::Option<super::crypto::PublicKey>,
113    #[prost(int64, tag = "3")]
114    pub voting_power: i64,
115    #[prost(int64, tag = "4")]
116    pub proposer_priority: i64,
117}
118#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
119#[proto_message(type_url = "/tendermint.types.SimpleValidator")]
120pub struct SimpleValidator {
121    #[prost(message, optional, tag = "1")]
122    pub pub_key: ::core::option::Option<super::crypto::PublicKey>,
123    #[prost(int64, tag = "2")]
124    pub voting_power: i64,
125}
126/// BlockIdFlag indicates which BlockID the signature is for
127#[derive(
128    Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, ::prost::Enumeration, ::schemars::JsonSchema,
129)]
130#[repr(i32)]
131pub enum BlockIdFlag {
132    /// indicates an error condition
133    Unknown = 0,
134    /// the vote was not received
135    Absent = 1,
136    /// voted for the block that received the majority
137    Commit = 2,
138    /// voted for nil
139    Nil = 3,
140}
141impl BlockIdFlag {
142    /// String value of the enum field names used in the ProtoBuf definition.
143    ///
144    /// The values are not transformed in any way and thus are considered stable
145    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
146    pub fn as_str_name(&self) -> &'static str {
147        match self {
148            Self::Unknown => "BLOCK_ID_FLAG_UNKNOWN",
149            Self::Absent => "BLOCK_ID_FLAG_ABSENT",
150            Self::Commit => "BLOCK_ID_FLAG_COMMIT",
151            Self::Nil => "BLOCK_ID_FLAG_NIL",
152        }
153    }
154    /// Creates an enum from field names used in the ProtoBuf definition.
155    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
156        match value {
157            "BLOCK_ID_FLAG_UNKNOWN" => Some(Self::Unknown),
158            "BLOCK_ID_FLAG_ABSENT" => Some(Self::Absent),
159            "BLOCK_ID_FLAG_COMMIT" => Some(Self::Commit),
160            "BLOCK_ID_FLAG_NIL" => Some(Self::Nil),
161            _ => None,
162        }
163    }
164}
165/// PartsetHeader
166#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
167#[proto_message(type_url = "/tendermint.types.PartSetHeader")]
168pub struct PartSetHeader {
169    #[prost(uint32, tag = "1")]
170    pub total: u32,
171    #[prost(bytes = "vec", tag = "2")]
172    pub hash: ::prost::alloc::vec::Vec<u8>,
173}
174#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
175#[proto_message(type_url = "/tendermint.types.Part")]
176pub struct Part {
177    #[prost(uint32, tag = "1")]
178    pub index: u32,
179    #[prost(bytes = "vec", tag = "2")]
180    pub bytes: ::prost::alloc::vec::Vec<u8>,
181    #[prost(message, optional, tag = "3")]
182    pub proof: ::core::option::Option<super::crypto::Proof>,
183}
184/// BlockID
185#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
186#[proto_message(type_url = "/tendermint.types.BlockID")]
187pub struct BlockId {
188    #[prost(bytes = "vec", tag = "1")]
189    pub hash: ::prost::alloc::vec::Vec<u8>,
190    #[prost(message, optional, tag = "2")]
191    pub part_set_header: ::core::option::Option<PartSetHeader>,
192}
193/// Header defines the structure of a block header.
194#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
195#[proto_message(type_url = "/tendermint.types.Header")]
196pub struct Header {
197    /// basic block info
198    #[prost(message, optional, tag = "1")]
199    pub version: ::core::option::Option<super::version::Consensus>,
200    #[prost(string, tag = "2")]
201    pub chain_id: ::prost::alloc::string::String,
202    #[prost(int64, tag = "3")]
203    pub height: i64,
204    #[prost(message, optional, tag = "4")]
205    pub time: ::core::option::Option<crate::shim::Timestamp>,
206    /// prev block info
207    #[prost(message, optional, tag = "5")]
208    pub last_block_id: ::core::option::Option<BlockId>,
209    /// hashes of block data
210    ///
211    /// commit from validators from the last block
212    #[prost(bytes = "vec", tag = "6")]
213    pub last_commit_hash: ::prost::alloc::vec::Vec<u8>,
214    /// transactions
215    #[prost(bytes = "vec", tag = "7")]
216    pub data_hash: ::prost::alloc::vec::Vec<u8>,
217    /// hashes from the app output from the prev block
218    ///
219    /// validators for the current block
220    #[prost(bytes = "vec", tag = "8")]
221    pub validators_hash: ::prost::alloc::vec::Vec<u8>,
222    /// validators for the next block
223    #[prost(bytes = "vec", tag = "9")]
224    pub next_validators_hash: ::prost::alloc::vec::Vec<u8>,
225    /// consensus params for current block
226    #[prost(bytes = "vec", tag = "10")]
227    pub consensus_hash: ::prost::alloc::vec::Vec<u8>,
228    /// state after txs from the previous block
229    #[prost(bytes = "vec", tag = "11")]
230    pub app_hash: ::prost::alloc::vec::Vec<u8>,
231    /// root hash of all results from the txs from the previous block
232    #[prost(bytes = "vec", tag = "12")]
233    pub last_results_hash: ::prost::alloc::vec::Vec<u8>,
234    /// consensus info
235    ///
236    /// evidence included in the block
237    #[prost(bytes = "vec", tag = "13")]
238    pub evidence_hash: ::prost::alloc::vec::Vec<u8>,
239    /// original proposer of the block
240    #[prost(bytes = "vec", tag = "14")]
241    pub proposer_address: ::prost::alloc::vec::Vec<u8>,
242}
243/// Data contains the set of transactions included in the block
244#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
245#[proto_message(type_url = "/tendermint.types.Data")]
246pub struct Data {
247    /// Txs that will be applied by state @ block.Height+1.
248    /// NOTE: not all txs here are valid.  We're just agreeing on the order first.
249    /// This means that block.AppHash does not include these txs.
250    #[prost(bytes = "vec", repeated, tag = "1")]
251    pub txs: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
252}
253/// Vote represents a prevote or precommit vote from validators for
254/// consensus.
255#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
256#[proto_message(type_url = "/tendermint.types.Vote")]
257pub struct Vote {
258    #[prost(enumeration = "SignedMsgType", tag = "1")]
259    pub r#type: i32,
260    #[prost(int64, tag = "2")]
261    pub height: i64,
262    #[prost(int32, tag = "3")]
263    pub round: i32,
264    /// zero if vote is nil.
265    #[prost(message, optional, tag = "4")]
266    pub block_id: ::core::option::Option<BlockId>,
267    #[prost(message, optional, tag = "5")]
268    pub timestamp: ::core::option::Option<crate::shim::Timestamp>,
269    #[prost(bytes = "vec", tag = "6")]
270    pub validator_address: ::prost::alloc::vec::Vec<u8>,
271    #[prost(int32, tag = "7")]
272    pub validator_index: i32,
273    /// Vote signature by the validator if they participated in consensus for the
274    /// associated block.
275    #[prost(bytes = "vec", tag = "8")]
276    pub signature: ::prost::alloc::vec::Vec<u8>,
277    /// Vote extension provided by the application. Only valid for precommit
278    /// messages.
279    #[prost(bytes = "vec", tag = "9")]
280    pub extension: ::prost::alloc::vec::Vec<u8>,
281    /// Vote extension signature by the validator if they participated in
282    /// consensus for the associated block.
283    /// Only valid for precommit messages.
284    #[prost(bytes = "vec", tag = "10")]
285    pub extension_signature: ::prost::alloc::vec::Vec<u8>,
286}
287/// Commit contains the evidence that a block was committed by a set of validators.
288#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
289#[proto_message(type_url = "/tendermint.types.Commit")]
290pub struct Commit {
291    #[prost(int64, tag = "1")]
292    pub height: i64,
293    #[prost(int32, tag = "2")]
294    pub round: i32,
295    #[prost(message, optional, tag = "3")]
296    pub block_id: ::core::option::Option<BlockId>,
297    #[prost(message, repeated, tag = "4")]
298    pub signatures: ::prost::alloc::vec::Vec<CommitSig>,
299}
300/// CommitSig is a part of the Vote included in a Commit.
301#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
302#[proto_message(type_url = "/tendermint.types.CommitSig")]
303pub struct CommitSig {
304    #[prost(enumeration = "BlockIdFlag", tag = "1")]
305    pub block_id_flag: i32,
306    #[prost(bytes = "vec", tag = "2")]
307    pub validator_address: ::prost::alloc::vec::Vec<u8>,
308    #[prost(message, optional, tag = "3")]
309    pub timestamp: ::core::option::Option<crate::shim::Timestamp>,
310    #[prost(bytes = "vec", tag = "4")]
311    pub signature: ::prost::alloc::vec::Vec<u8>,
312}
313#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
314#[proto_message(type_url = "/tendermint.types.ExtendedCommit")]
315pub struct ExtendedCommit {
316    #[prost(int64, tag = "1")]
317    pub height: i64,
318    #[prost(int32, tag = "2")]
319    pub round: i32,
320    #[prost(message, optional, tag = "3")]
321    pub block_id: ::core::option::Option<BlockId>,
322    #[prost(message, repeated, tag = "4")]
323    pub extended_signatures: ::prost::alloc::vec::Vec<ExtendedCommitSig>,
324}
325/// ExtendedCommitSig retains all the same fields as CommitSig but adds vote
326/// extension-related fields. We use two signatures to ensure backwards compatibility.
327/// That is the digest of the original signature is still the same in prior versions
328#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
329#[proto_message(type_url = "/tendermint.types.ExtendedCommitSig")]
330pub struct ExtendedCommitSig {
331    #[prost(enumeration = "BlockIdFlag", tag = "1")]
332    pub block_id_flag: i32,
333    #[prost(bytes = "vec", tag = "2")]
334    pub validator_address: ::prost::alloc::vec::Vec<u8>,
335    #[prost(message, optional, tag = "3")]
336    pub timestamp: ::core::option::Option<crate::shim::Timestamp>,
337    #[prost(bytes = "vec", tag = "4")]
338    pub signature: ::prost::alloc::vec::Vec<u8>,
339    /// Vote extension data
340    #[prost(bytes = "vec", tag = "5")]
341    pub extension: ::prost::alloc::vec::Vec<u8>,
342    /// Vote extension signature
343    #[prost(bytes = "vec", tag = "6")]
344    pub extension_signature: ::prost::alloc::vec::Vec<u8>,
345}
346#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
347#[proto_message(type_url = "/tendermint.types.Proposal")]
348pub struct Proposal {
349    #[prost(enumeration = "SignedMsgType", tag = "1")]
350    pub r#type: i32,
351    #[prost(int64, tag = "2")]
352    pub height: i64,
353    #[prost(int32, tag = "3")]
354    pub round: i32,
355    #[prost(int32, tag = "4")]
356    pub pol_round: i32,
357    #[prost(message, optional, tag = "5")]
358    pub block_id: ::core::option::Option<BlockId>,
359    #[prost(message, optional, tag = "6")]
360    pub timestamp: ::core::option::Option<crate::shim::Timestamp>,
361    #[prost(bytes = "vec", tag = "7")]
362    pub signature: ::prost::alloc::vec::Vec<u8>,
363}
364#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
365#[proto_message(type_url = "/tendermint.types.SignedHeader")]
366pub struct SignedHeader {
367    #[prost(message, optional, tag = "1")]
368    pub header: ::core::option::Option<Header>,
369    #[prost(message, optional, tag = "2")]
370    pub commit: ::core::option::Option<Commit>,
371}
372#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
373#[proto_message(type_url = "/tendermint.types.LightBlock")]
374pub struct LightBlock {
375    #[prost(message, optional, tag = "1")]
376    pub signed_header: ::core::option::Option<SignedHeader>,
377    #[prost(message, optional, tag = "2")]
378    pub validator_set: ::core::option::Option<ValidatorSet>,
379}
380#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
381#[proto_message(type_url = "/tendermint.types.BlockMeta")]
382pub struct BlockMeta {
383    #[prost(message, optional, tag = "1")]
384    pub block_id: ::core::option::Option<BlockId>,
385    #[prost(int64, tag = "2")]
386    pub block_size: i64,
387    #[prost(message, optional, tag = "3")]
388    pub header: ::core::option::Option<Header>,
389    #[prost(int64, tag = "4")]
390    pub num_txs: i64,
391}
392/// TxProof represents a Merkle proof of the presence of a transaction in the Merkle tree.
393#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
394#[proto_message(type_url = "/tendermint.types.TxProof")]
395pub struct TxProof {
396    #[prost(bytes = "vec", tag = "1")]
397    pub root_hash: ::prost::alloc::vec::Vec<u8>,
398    #[prost(bytes = "vec", tag = "2")]
399    pub data: ::prost::alloc::vec::Vec<u8>,
400    #[prost(message, optional, tag = "3")]
401    pub proof: ::core::option::Option<super::crypto::Proof>,
402}
403/// SignedMsgType is a type of signed message in the consensus.
404#[derive(
405    Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, ::prost::Enumeration, ::schemars::JsonSchema,
406)]
407#[repr(i32)]
408pub enum SignedMsgType {
409    Unknown = 0,
410    /// Votes
411    Prevote = 1,
412    Precommit = 2,
413    /// Proposals
414    Proposal = 32,
415}
416impl SignedMsgType {
417    /// String value of the enum field names used in the ProtoBuf definition.
418    ///
419    /// The values are not transformed in any way and thus are considered stable
420    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
421    pub fn as_str_name(&self) -> &'static str {
422        match self {
423            Self::Unknown => "SIGNED_MSG_TYPE_UNKNOWN",
424            Self::Prevote => "SIGNED_MSG_TYPE_PREVOTE",
425            Self::Precommit => "SIGNED_MSG_TYPE_PRECOMMIT",
426            Self::Proposal => "SIGNED_MSG_TYPE_PROPOSAL",
427        }
428    }
429    /// Creates an enum from field names used in the ProtoBuf definition.
430    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
431        match value {
432            "SIGNED_MSG_TYPE_UNKNOWN" => Some(Self::Unknown),
433            "SIGNED_MSG_TYPE_PREVOTE" => Some(Self::Prevote),
434            "SIGNED_MSG_TYPE_PRECOMMIT" => Some(Self::Precommit),
435            "SIGNED_MSG_TYPE_PROPOSAL" => Some(Self::Proposal),
436            _ => None,
437        }
438    }
439}
440#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
441#[proto_message(type_url = "/tendermint.types.Evidence")]
442pub struct Evidence {
443    #[prost(oneof = "evidence::Sum", tags = "1, 2")]
444    pub sum: ::core::option::Option<evidence::Sum>,
445}
446/// Nested message and enum types in `Evidence`.
447pub mod evidence {
448    use provwasm_proc_macro::CosmwasmExt;
449    #[derive(Clone, PartialEq, Eq, ::prost::Oneof, ::schemars::JsonSchema)]
450    pub enum Sum {
451        #[prost(message, tag = "1")]
452        DuplicateVoteEvidence(super::DuplicateVoteEvidence),
453        #[prost(message, tag = "2")]
454        LightClientAttackEvidence(super::LightClientAttackEvidence),
455    }
456}
457/// DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes.
458#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
459#[proto_message(type_url = "/tendermint.types.DuplicateVoteEvidence")]
460pub struct DuplicateVoteEvidence {
461    #[prost(message, optional, tag = "1")]
462    pub vote_a: ::core::option::Option<Vote>,
463    #[prost(message, optional, tag = "2")]
464    pub vote_b: ::core::option::Option<Vote>,
465    #[prost(int64, tag = "3")]
466    pub total_voting_power: i64,
467    #[prost(int64, tag = "4")]
468    pub validator_power: i64,
469    #[prost(message, optional, tag = "5")]
470    pub timestamp: ::core::option::Option<crate::shim::Timestamp>,
471}
472/// LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client.
473#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
474#[proto_message(type_url = "/tendermint.types.LightClientAttackEvidence")]
475pub struct LightClientAttackEvidence {
476    #[prost(message, optional, tag = "1")]
477    pub conflicting_block: ::core::option::Option<LightBlock>,
478    #[prost(int64, tag = "2")]
479    pub common_height: i64,
480    #[prost(message, repeated, tag = "3")]
481    pub byzantine_validators: ::prost::alloc::vec::Vec<Validator>,
482    #[prost(int64, tag = "4")]
483    pub total_voting_power: i64,
484    #[prost(message, optional, tag = "5")]
485    pub timestamp: ::core::option::Option<crate::shim::Timestamp>,
486}
487#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
488#[proto_message(type_url = "/tendermint.types.EvidenceList")]
489pub struct EvidenceList {
490    #[prost(message, repeated, tag = "1")]
491    pub evidence: ::prost::alloc::vec::Vec<Evidence>,
492}
493#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
494#[proto_message(type_url = "/tendermint.types.Block")]
495pub struct Block {
496    #[prost(message, optional, tag = "1")]
497    pub header: ::core::option::Option<Header>,
498    #[prost(message, optional, tag = "2")]
499    pub data: ::core::option::Option<Data>,
500    #[prost(message, optional, tag = "3")]
501    pub evidence: ::core::option::Option<EvidenceList>,
502    #[prost(message, optional, tag = "4")]
503    pub last_commit: ::core::option::Option<Commit>,
504}
505#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
506#[proto_message(type_url = "/tendermint.types.EventDataRoundState")]
507pub struct EventDataRoundState {
508    #[prost(int64, tag = "1")]
509    pub height: i64,
510    #[prost(int32, tag = "2")]
511    pub round: i32,
512    #[prost(string, tag = "3")]
513    pub step: ::prost::alloc::string::String,
514}
515#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
516#[proto_message(type_url = "/tendermint.types.CanonicalBlockID")]
517pub struct CanonicalBlockId {
518    #[prost(bytes = "vec", tag = "1")]
519    pub hash: ::prost::alloc::vec::Vec<u8>,
520    #[prost(message, optional, tag = "2")]
521    pub part_set_header: ::core::option::Option<CanonicalPartSetHeader>,
522}
523#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
524#[proto_message(type_url = "/tendermint.types.CanonicalPartSetHeader")]
525pub struct CanonicalPartSetHeader {
526    #[prost(uint32, tag = "1")]
527    pub total: u32,
528    #[prost(bytes = "vec", tag = "2")]
529    pub hash: ::prost::alloc::vec::Vec<u8>,
530}
531#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
532#[proto_message(type_url = "/tendermint.types.CanonicalProposal")]
533pub struct CanonicalProposal {
534    /// type alias for byte
535    #[prost(enumeration = "SignedMsgType", tag = "1")]
536    pub r#type: i32,
537    /// canonicalization requires fixed size encoding here
538    #[prost(sfixed64, tag = "2")]
539    pub height: i64,
540    /// canonicalization requires fixed size encoding here
541    #[prost(sfixed64, tag = "3")]
542    pub round: i64,
543    #[prost(int64, tag = "4")]
544    pub pol_round: i64,
545    #[prost(message, optional, tag = "5")]
546    pub block_id: ::core::option::Option<CanonicalBlockId>,
547    #[prost(message, optional, tag = "6")]
548    pub timestamp: ::core::option::Option<crate::shim::Timestamp>,
549    #[prost(string, tag = "7")]
550    pub chain_id: ::prost::alloc::string::String,
551}
552#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
553#[proto_message(type_url = "/tendermint.types.CanonicalVote")]
554pub struct CanonicalVote {
555    /// type alias for byte
556    #[prost(enumeration = "SignedMsgType", tag = "1")]
557    pub r#type: i32,
558    /// canonicalization requires fixed size encoding here
559    #[prost(sfixed64, tag = "2")]
560    pub height: i64,
561    /// canonicalization requires fixed size encoding here
562    #[prost(sfixed64, tag = "3")]
563    pub round: i64,
564    #[prost(message, optional, tag = "4")]
565    pub block_id: ::core::option::Option<CanonicalBlockId>,
566    #[prost(message, optional, tag = "5")]
567    pub timestamp: ::core::option::Option<crate::shim::Timestamp>,
568    #[prost(string, tag = "6")]
569    pub chain_id: ::prost::alloc::string::String,
570}
571/// CanonicalVoteExtension provides us a way to serialize a vote extension from
572/// a particular validator such that we can sign over those serialized bytes.
573#[derive(Clone, PartialEq, Eq, ::prost::Message, ::schemars::JsonSchema, CosmwasmExt)]
574#[proto_message(type_url = "/tendermint.types.CanonicalVoteExtension")]
575pub struct CanonicalVoteExtension {
576    #[prost(bytes = "vec", tag = "1")]
577    pub extension: ::prost::alloc::vec::Vec<u8>,
578    #[prost(sfixed64, tag = "2")]
579    pub height: i64,
580    #[prost(sfixed64, tag = "3")]
581    pub round: i64,
582    #[prost(string, tag = "4")]
583    pub chain_id: ::prost::alloc::string::String,
584}