penumbra_sdk_proto/gen/
tendermint.abci.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct Request {
4    #[prost(
5        oneof = "request::Value",
6        tags = "1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17"
7    )]
8    pub value: ::core::option::Option<request::Value>,
9}
10/// Nested message and enum types in `Request`.
11pub mod request {
12    #[derive(Clone, PartialEq, ::prost::Oneof)]
13    pub enum Value {
14        #[prost(message, tag = "1")]
15        Echo(super::RequestEcho),
16        #[prost(message, tag = "2")]
17        Flush(super::RequestFlush),
18        #[prost(message, tag = "3")]
19        Info(super::RequestInfo),
20        #[prost(message, tag = "5")]
21        InitChain(super::RequestInitChain),
22        #[prost(message, tag = "6")]
23        Query(super::RequestQuery),
24        #[prost(message, tag = "7")]
25        BeginBlock(super::RequestBeginBlock),
26        #[prost(message, tag = "8")]
27        CheckTx(super::RequestCheckTx),
28        #[prost(message, tag = "9")]
29        DeliverTx(super::RequestDeliverTx),
30        #[prost(message, tag = "10")]
31        EndBlock(super::RequestEndBlock),
32        #[prost(message, tag = "11")]
33        Commit(super::RequestCommit),
34        #[prost(message, tag = "12")]
35        ListSnapshots(super::RequestListSnapshots),
36        #[prost(message, tag = "13")]
37        OfferSnapshot(super::RequestOfferSnapshot),
38        #[prost(message, tag = "14")]
39        LoadSnapshotChunk(super::RequestLoadSnapshotChunk),
40        #[prost(message, tag = "15")]
41        ApplySnapshotChunk(super::RequestApplySnapshotChunk),
42        #[prost(message, tag = "16")]
43        PrepareProposal(super::RequestPrepareProposal),
44        #[prost(message, tag = "17")]
45        ProcessProposal(super::RequestProcessProposal),
46    }
47}
48impl ::prost::Name for Request {
49    const NAME: &'static str = "Request";
50    const PACKAGE: &'static str = "tendermint.abci";
51    fn full_name() -> ::prost::alloc::string::String {
52        "tendermint.abci.Request".into()
53    }
54    fn type_url() -> ::prost::alloc::string::String {
55        "/tendermint.abci.Request".into()
56    }
57}
58#[derive(Clone, PartialEq, ::prost::Message)]
59pub struct RequestEcho {
60    #[prost(string, tag = "1")]
61    pub message: ::prost::alloc::string::String,
62}
63impl ::prost::Name for RequestEcho {
64    const NAME: &'static str = "RequestEcho";
65    const PACKAGE: &'static str = "tendermint.abci";
66    fn full_name() -> ::prost::alloc::string::String {
67        "tendermint.abci.RequestEcho".into()
68    }
69    fn type_url() -> ::prost::alloc::string::String {
70        "/tendermint.abci.RequestEcho".into()
71    }
72}
73#[derive(Clone, Copy, PartialEq, ::prost::Message)]
74pub struct RequestFlush {}
75impl ::prost::Name for RequestFlush {
76    const NAME: &'static str = "RequestFlush";
77    const PACKAGE: &'static str = "tendermint.abci";
78    fn full_name() -> ::prost::alloc::string::String {
79        "tendermint.abci.RequestFlush".into()
80    }
81    fn type_url() -> ::prost::alloc::string::String {
82        "/tendermint.abci.RequestFlush".into()
83    }
84}
85#[derive(Clone, PartialEq, ::prost::Message)]
86pub struct RequestInfo {
87    #[prost(string, tag = "1")]
88    pub version: ::prost::alloc::string::String,
89    #[prost(uint64, tag = "2")]
90    pub block_version: u64,
91    #[prost(uint64, tag = "3")]
92    pub p2p_version: u64,
93    #[prost(string, tag = "4")]
94    pub abci_version: ::prost::alloc::string::String,
95}
96impl ::prost::Name for RequestInfo {
97    const NAME: &'static str = "RequestInfo";
98    const PACKAGE: &'static str = "tendermint.abci";
99    fn full_name() -> ::prost::alloc::string::String {
100        "tendermint.abci.RequestInfo".into()
101    }
102    fn type_url() -> ::prost::alloc::string::String {
103        "/tendermint.abci.RequestInfo".into()
104    }
105}
106#[derive(Clone, PartialEq, ::prost::Message)]
107pub struct RequestInitChain {
108    #[prost(message, optional, tag = "1")]
109    pub time: ::core::option::Option<::pbjson_types::Timestamp>,
110    #[prost(string, tag = "2")]
111    pub chain_id: ::prost::alloc::string::String,
112    #[prost(message, optional, tag = "3")]
113    pub consensus_params: ::core::option::Option<super::types::ConsensusParams>,
114    #[prost(message, repeated, tag = "4")]
115    pub validators: ::prost::alloc::vec::Vec<ValidatorUpdate>,
116    #[prost(bytes = "vec", tag = "5")]
117    pub app_state_bytes: ::prost::alloc::vec::Vec<u8>,
118    #[prost(int64, tag = "6")]
119    pub initial_height: i64,
120}
121impl ::prost::Name for RequestInitChain {
122    const NAME: &'static str = "RequestInitChain";
123    const PACKAGE: &'static str = "tendermint.abci";
124    fn full_name() -> ::prost::alloc::string::String {
125        "tendermint.abci.RequestInitChain".into()
126    }
127    fn type_url() -> ::prost::alloc::string::String {
128        "/tendermint.abci.RequestInitChain".into()
129    }
130}
131#[derive(Clone, PartialEq, ::prost::Message)]
132pub struct RequestQuery {
133    #[prost(bytes = "vec", tag = "1")]
134    pub data: ::prost::alloc::vec::Vec<u8>,
135    #[prost(string, tag = "2")]
136    pub path: ::prost::alloc::string::String,
137    #[prost(int64, tag = "3")]
138    pub height: i64,
139    #[prost(bool, tag = "4")]
140    pub prove: bool,
141}
142impl ::prost::Name for RequestQuery {
143    const NAME: &'static str = "RequestQuery";
144    const PACKAGE: &'static str = "tendermint.abci";
145    fn full_name() -> ::prost::alloc::string::String {
146        "tendermint.abci.RequestQuery".into()
147    }
148    fn type_url() -> ::prost::alloc::string::String {
149        "/tendermint.abci.RequestQuery".into()
150    }
151}
152#[derive(Clone, PartialEq, ::prost::Message)]
153pub struct RequestBeginBlock {
154    #[prost(bytes = "vec", tag = "1")]
155    pub hash: ::prost::alloc::vec::Vec<u8>,
156    #[prost(message, optional, tag = "2")]
157    pub header: ::core::option::Option<super::types::Header>,
158    #[prost(message, optional, tag = "3")]
159    pub last_commit_info: ::core::option::Option<CommitInfo>,
160    #[prost(message, repeated, tag = "4")]
161    pub byzantine_validators: ::prost::alloc::vec::Vec<Misbehavior>,
162}
163impl ::prost::Name for RequestBeginBlock {
164    const NAME: &'static str = "RequestBeginBlock";
165    const PACKAGE: &'static str = "tendermint.abci";
166    fn full_name() -> ::prost::alloc::string::String {
167        "tendermint.abci.RequestBeginBlock".into()
168    }
169    fn type_url() -> ::prost::alloc::string::String {
170        "/tendermint.abci.RequestBeginBlock".into()
171    }
172}
173#[derive(Clone, PartialEq, ::prost::Message)]
174pub struct RequestCheckTx {
175    #[prost(bytes = "vec", tag = "1")]
176    pub tx: ::prost::alloc::vec::Vec<u8>,
177    #[prost(enumeration = "CheckTxType", tag = "2")]
178    pub r#type: i32,
179}
180impl ::prost::Name for RequestCheckTx {
181    const NAME: &'static str = "RequestCheckTx";
182    const PACKAGE: &'static str = "tendermint.abci";
183    fn full_name() -> ::prost::alloc::string::String {
184        "tendermint.abci.RequestCheckTx".into()
185    }
186    fn type_url() -> ::prost::alloc::string::String {
187        "/tendermint.abci.RequestCheckTx".into()
188    }
189}
190#[derive(Clone, PartialEq, ::prost::Message)]
191pub struct RequestDeliverTx {
192    #[prost(bytes = "vec", tag = "1")]
193    pub tx: ::prost::alloc::vec::Vec<u8>,
194}
195impl ::prost::Name for RequestDeliverTx {
196    const NAME: &'static str = "RequestDeliverTx";
197    const PACKAGE: &'static str = "tendermint.abci";
198    fn full_name() -> ::prost::alloc::string::String {
199        "tendermint.abci.RequestDeliverTx".into()
200    }
201    fn type_url() -> ::prost::alloc::string::String {
202        "/tendermint.abci.RequestDeliverTx".into()
203    }
204}
205#[derive(Clone, Copy, PartialEq, ::prost::Message)]
206pub struct RequestEndBlock {
207    #[prost(int64, tag = "1")]
208    pub height: i64,
209}
210impl ::prost::Name for RequestEndBlock {
211    const NAME: &'static str = "RequestEndBlock";
212    const PACKAGE: &'static str = "tendermint.abci";
213    fn full_name() -> ::prost::alloc::string::String {
214        "tendermint.abci.RequestEndBlock".into()
215    }
216    fn type_url() -> ::prost::alloc::string::String {
217        "/tendermint.abci.RequestEndBlock".into()
218    }
219}
220#[derive(Clone, Copy, PartialEq, ::prost::Message)]
221pub struct RequestCommit {}
222impl ::prost::Name for RequestCommit {
223    const NAME: &'static str = "RequestCommit";
224    const PACKAGE: &'static str = "tendermint.abci";
225    fn full_name() -> ::prost::alloc::string::String {
226        "tendermint.abci.RequestCommit".into()
227    }
228    fn type_url() -> ::prost::alloc::string::String {
229        "/tendermint.abci.RequestCommit".into()
230    }
231}
232/// lists available snapshots
233#[derive(Clone, Copy, PartialEq, ::prost::Message)]
234pub struct RequestListSnapshots {}
235impl ::prost::Name for RequestListSnapshots {
236    const NAME: &'static str = "RequestListSnapshots";
237    const PACKAGE: &'static str = "tendermint.abci";
238    fn full_name() -> ::prost::alloc::string::String {
239        "tendermint.abci.RequestListSnapshots".into()
240    }
241    fn type_url() -> ::prost::alloc::string::String {
242        "/tendermint.abci.RequestListSnapshots".into()
243    }
244}
245/// offers a snapshot to the application
246#[derive(Clone, PartialEq, ::prost::Message)]
247pub struct RequestOfferSnapshot {
248    /// snapshot offered by peers
249    #[prost(message, optional, tag = "1")]
250    pub snapshot: ::core::option::Option<Snapshot>,
251    /// light client-verified app hash for snapshot height
252    #[prost(bytes = "vec", tag = "2")]
253    pub app_hash: ::prost::alloc::vec::Vec<u8>,
254}
255impl ::prost::Name for RequestOfferSnapshot {
256    const NAME: &'static str = "RequestOfferSnapshot";
257    const PACKAGE: &'static str = "tendermint.abci";
258    fn full_name() -> ::prost::alloc::string::String {
259        "tendermint.abci.RequestOfferSnapshot".into()
260    }
261    fn type_url() -> ::prost::alloc::string::String {
262        "/tendermint.abci.RequestOfferSnapshot".into()
263    }
264}
265/// loads a snapshot chunk
266#[derive(Clone, Copy, PartialEq, ::prost::Message)]
267pub struct RequestLoadSnapshotChunk {
268    #[prost(uint64, tag = "1")]
269    pub height: u64,
270    #[prost(uint32, tag = "2")]
271    pub format: u32,
272    #[prost(uint32, tag = "3")]
273    pub chunk: u32,
274}
275impl ::prost::Name for RequestLoadSnapshotChunk {
276    const NAME: &'static str = "RequestLoadSnapshotChunk";
277    const PACKAGE: &'static str = "tendermint.abci";
278    fn full_name() -> ::prost::alloc::string::String {
279        "tendermint.abci.RequestLoadSnapshotChunk".into()
280    }
281    fn type_url() -> ::prost::alloc::string::String {
282        "/tendermint.abci.RequestLoadSnapshotChunk".into()
283    }
284}
285/// Applies a snapshot chunk
286#[derive(Clone, PartialEq, ::prost::Message)]
287pub struct RequestApplySnapshotChunk {
288    #[prost(uint32, tag = "1")]
289    pub index: u32,
290    #[prost(bytes = "vec", tag = "2")]
291    pub chunk: ::prost::alloc::vec::Vec<u8>,
292    #[prost(string, tag = "3")]
293    pub sender: ::prost::alloc::string::String,
294}
295impl ::prost::Name for RequestApplySnapshotChunk {
296    const NAME: &'static str = "RequestApplySnapshotChunk";
297    const PACKAGE: &'static str = "tendermint.abci";
298    fn full_name() -> ::prost::alloc::string::String {
299        "tendermint.abci.RequestApplySnapshotChunk".into()
300    }
301    fn type_url() -> ::prost::alloc::string::String {
302        "/tendermint.abci.RequestApplySnapshotChunk".into()
303    }
304}
305#[derive(Clone, PartialEq, ::prost::Message)]
306pub struct RequestPrepareProposal {
307    /// the modified transactions cannot exceed this size.
308    #[prost(int64, tag = "1")]
309    pub max_tx_bytes: i64,
310    /// txs is an array of transactions that will be included in a block,
311    /// sent to the app for possible modifications.
312    #[prost(bytes = "vec", repeated, tag = "2")]
313    pub txs: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
314    #[prost(message, optional, tag = "3")]
315    pub local_last_commit: ::core::option::Option<ExtendedCommitInfo>,
316    #[prost(message, repeated, tag = "4")]
317    pub misbehavior: ::prost::alloc::vec::Vec<Misbehavior>,
318    #[prost(int64, tag = "5")]
319    pub height: i64,
320    #[prost(message, optional, tag = "6")]
321    pub time: ::core::option::Option<::pbjson_types::Timestamp>,
322    #[prost(bytes = "vec", tag = "7")]
323    pub next_validators_hash: ::prost::alloc::vec::Vec<u8>,
324    /// address of the public key of the validator proposing the block.
325    #[prost(bytes = "vec", tag = "8")]
326    pub proposer_address: ::prost::alloc::vec::Vec<u8>,
327}
328impl ::prost::Name for RequestPrepareProposal {
329    const NAME: &'static str = "RequestPrepareProposal";
330    const PACKAGE: &'static str = "tendermint.abci";
331    fn full_name() -> ::prost::alloc::string::String {
332        "tendermint.abci.RequestPrepareProposal".into()
333    }
334    fn type_url() -> ::prost::alloc::string::String {
335        "/tendermint.abci.RequestPrepareProposal".into()
336    }
337}
338#[derive(Clone, PartialEq, ::prost::Message)]
339pub struct RequestProcessProposal {
340    #[prost(bytes = "vec", repeated, tag = "1")]
341    pub txs: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
342    #[prost(message, optional, tag = "2")]
343    pub proposed_last_commit: ::core::option::Option<CommitInfo>,
344    #[prost(message, repeated, tag = "3")]
345    pub misbehavior: ::prost::alloc::vec::Vec<Misbehavior>,
346    /// hash is the merkle root hash of the fields of the proposed block.
347    #[prost(bytes = "vec", tag = "4")]
348    pub hash: ::prost::alloc::vec::Vec<u8>,
349    #[prost(int64, tag = "5")]
350    pub height: i64,
351    #[prost(message, optional, tag = "6")]
352    pub time: ::core::option::Option<::pbjson_types::Timestamp>,
353    #[prost(bytes = "vec", tag = "7")]
354    pub next_validators_hash: ::prost::alloc::vec::Vec<u8>,
355    /// address of the public key of the original proposer of the block.
356    #[prost(bytes = "vec", tag = "8")]
357    pub proposer_address: ::prost::alloc::vec::Vec<u8>,
358}
359impl ::prost::Name for RequestProcessProposal {
360    const NAME: &'static str = "RequestProcessProposal";
361    const PACKAGE: &'static str = "tendermint.abci";
362    fn full_name() -> ::prost::alloc::string::String {
363        "tendermint.abci.RequestProcessProposal".into()
364    }
365    fn type_url() -> ::prost::alloc::string::String {
366        "/tendermint.abci.RequestProcessProposal".into()
367    }
368}
369#[derive(Clone, PartialEq, ::prost::Message)]
370pub struct Response {
371    #[prost(
372        oneof = "response::Value",
373        tags = "1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18"
374    )]
375    pub value: ::core::option::Option<response::Value>,
376}
377/// Nested message and enum types in `Response`.
378pub mod response {
379    #[derive(Clone, PartialEq, ::prost::Oneof)]
380    pub enum Value {
381        #[prost(message, tag = "1")]
382        Exception(super::ResponseException),
383        #[prost(message, tag = "2")]
384        Echo(super::ResponseEcho),
385        #[prost(message, tag = "3")]
386        Flush(super::ResponseFlush),
387        #[prost(message, tag = "4")]
388        Info(super::ResponseInfo),
389        #[prost(message, tag = "6")]
390        InitChain(super::ResponseInitChain),
391        #[prost(message, tag = "7")]
392        Query(super::ResponseQuery),
393        #[prost(message, tag = "8")]
394        BeginBlock(super::ResponseBeginBlock),
395        #[prost(message, tag = "9")]
396        CheckTx(super::ResponseCheckTx),
397        #[prost(message, tag = "10")]
398        DeliverTx(super::ResponseDeliverTx),
399        #[prost(message, tag = "11")]
400        EndBlock(super::ResponseEndBlock),
401        #[prost(message, tag = "12")]
402        Commit(super::ResponseCommit),
403        #[prost(message, tag = "13")]
404        ListSnapshots(super::ResponseListSnapshots),
405        #[prost(message, tag = "14")]
406        OfferSnapshot(super::ResponseOfferSnapshot),
407        #[prost(message, tag = "15")]
408        LoadSnapshotChunk(super::ResponseLoadSnapshotChunk),
409        #[prost(message, tag = "16")]
410        ApplySnapshotChunk(super::ResponseApplySnapshotChunk),
411        #[prost(message, tag = "17")]
412        PrepareProposal(super::ResponsePrepareProposal),
413        #[prost(message, tag = "18")]
414        ProcessProposal(super::ResponseProcessProposal),
415    }
416}
417impl ::prost::Name for Response {
418    const NAME: &'static str = "Response";
419    const PACKAGE: &'static str = "tendermint.abci";
420    fn full_name() -> ::prost::alloc::string::String {
421        "tendermint.abci.Response".into()
422    }
423    fn type_url() -> ::prost::alloc::string::String {
424        "/tendermint.abci.Response".into()
425    }
426}
427/// nondeterministic
428#[derive(Clone, PartialEq, ::prost::Message)]
429pub struct ResponseException {
430    #[prost(string, tag = "1")]
431    pub error: ::prost::alloc::string::String,
432}
433impl ::prost::Name for ResponseException {
434    const NAME: &'static str = "ResponseException";
435    const PACKAGE: &'static str = "tendermint.abci";
436    fn full_name() -> ::prost::alloc::string::String {
437        "tendermint.abci.ResponseException".into()
438    }
439    fn type_url() -> ::prost::alloc::string::String {
440        "/tendermint.abci.ResponseException".into()
441    }
442}
443#[derive(Clone, PartialEq, ::prost::Message)]
444pub struct ResponseEcho {
445    #[prost(string, tag = "1")]
446    pub message: ::prost::alloc::string::String,
447}
448impl ::prost::Name for ResponseEcho {
449    const NAME: &'static str = "ResponseEcho";
450    const PACKAGE: &'static str = "tendermint.abci";
451    fn full_name() -> ::prost::alloc::string::String {
452        "tendermint.abci.ResponseEcho".into()
453    }
454    fn type_url() -> ::prost::alloc::string::String {
455        "/tendermint.abci.ResponseEcho".into()
456    }
457}
458#[derive(Clone, Copy, PartialEq, ::prost::Message)]
459pub struct ResponseFlush {}
460impl ::prost::Name for ResponseFlush {
461    const NAME: &'static str = "ResponseFlush";
462    const PACKAGE: &'static str = "tendermint.abci";
463    fn full_name() -> ::prost::alloc::string::String {
464        "tendermint.abci.ResponseFlush".into()
465    }
466    fn type_url() -> ::prost::alloc::string::String {
467        "/tendermint.abci.ResponseFlush".into()
468    }
469}
470#[derive(Clone, PartialEq, ::prost::Message)]
471pub struct ResponseInfo {
472    #[prost(string, tag = "1")]
473    pub data: ::prost::alloc::string::String,
474    #[prost(string, tag = "2")]
475    pub version: ::prost::alloc::string::String,
476    #[prost(uint64, tag = "3")]
477    pub app_version: u64,
478    #[prost(int64, tag = "4")]
479    pub last_block_height: i64,
480    #[prost(bytes = "vec", tag = "5")]
481    pub last_block_app_hash: ::prost::alloc::vec::Vec<u8>,
482}
483impl ::prost::Name for ResponseInfo {
484    const NAME: &'static str = "ResponseInfo";
485    const PACKAGE: &'static str = "tendermint.abci";
486    fn full_name() -> ::prost::alloc::string::String {
487        "tendermint.abci.ResponseInfo".into()
488    }
489    fn type_url() -> ::prost::alloc::string::String {
490        "/tendermint.abci.ResponseInfo".into()
491    }
492}
493#[derive(Clone, PartialEq, ::prost::Message)]
494pub struct ResponseInitChain {
495    #[prost(message, optional, tag = "1")]
496    pub consensus_params: ::core::option::Option<super::types::ConsensusParams>,
497    #[prost(message, repeated, tag = "2")]
498    pub validators: ::prost::alloc::vec::Vec<ValidatorUpdate>,
499    #[prost(bytes = "vec", tag = "3")]
500    pub app_hash: ::prost::alloc::vec::Vec<u8>,
501}
502impl ::prost::Name for ResponseInitChain {
503    const NAME: &'static str = "ResponseInitChain";
504    const PACKAGE: &'static str = "tendermint.abci";
505    fn full_name() -> ::prost::alloc::string::String {
506        "tendermint.abci.ResponseInitChain".into()
507    }
508    fn type_url() -> ::prost::alloc::string::String {
509        "/tendermint.abci.ResponseInitChain".into()
510    }
511}
512#[derive(Clone, PartialEq, ::prost::Message)]
513pub struct ResponseQuery {
514    #[prost(uint32, tag = "1")]
515    pub code: u32,
516    /// bytes data = 2; // use "value" instead.
517    ///
518    /// nondeterministic
519    #[prost(string, tag = "3")]
520    pub log: ::prost::alloc::string::String,
521    /// nondeterministic
522    #[prost(string, tag = "4")]
523    pub info: ::prost::alloc::string::String,
524    #[prost(int64, tag = "5")]
525    pub index: i64,
526    #[prost(bytes = "vec", tag = "6")]
527    pub key: ::prost::alloc::vec::Vec<u8>,
528    #[prost(bytes = "vec", tag = "7")]
529    pub value: ::prost::alloc::vec::Vec<u8>,
530    #[prost(message, optional, tag = "8")]
531    pub proof_ops: ::core::option::Option<super::crypto::ProofOps>,
532    #[prost(int64, tag = "9")]
533    pub height: i64,
534    #[prost(string, tag = "10")]
535    pub codespace: ::prost::alloc::string::String,
536}
537impl ::prost::Name for ResponseQuery {
538    const NAME: &'static str = "ResponseQuery";
539    const PACKAGE: &'static str = "tendermint.abci";
540    fn full_name() -> ::prost::alloc::string::String {
541        "tendermint.abci.ResponseQuery".into()
542    }
543    fn type_url() -> ::prost::alloc::string::String {
544        "/tendermint.abci.ResponseQuery".into()
545    }
546}
547#[derive(Clone, PartialEq, ::prost::Message)]
548pub struct ResponseBeginBlock {
549    #[prost(message, repeated, tag = "1")]
550    pub events: ::prost::alloc::vec::Vec<Event>,
551}
552impl ::prost::Name for ResponseBeginBlock {
553    const NAME: &'static str = "ResponseBeginBlock";
554    const PACKAGE: &'static str = "tendermint.abci";
555    fn full_name() -> ::prost::alloc::string::String {
556        "tendermint.abci.ResponseBeginBlock".into()
557    }
558    fn type_url() -> ::prost::alloc::string::String {
559        "/tendermint.abci.ResponseBeginBlock".into()
560    }
561}
562#[derive(Clone, PartialEq, ::prost::Message)]
563pub struct ResponseCheckTx {
564    #[prost(uint32, tag = "1")]
565    pub code: u32,
566    #[prost(bytes = "vec", tag = "2")]
567    pub data: ::prost::alloc::vec::Vec<u8>,
568    /// nondeterministic
569    #[prost(string, tag = "3")]
570    pub log: ::prost::alloc::string::String,
571    /// nondeterministic
572    #[prost(string, tag = "4")]
573    pub info: ::prost::alloc::string::String,
574    #[prost(int64, tag = "5")]
575    pub gas_wanted: i64,
576    #[prost(int64, tag = "6")]
577    pub gas_used: i64,
578    #[prost(message, repeated, tag = "7")]
579    pub events: ::prost::alloc::vec::Vec<Event>,
580    #[prost(string, tag = "8")]
581    pub codespace: ::prost::alloc::string::String,
582    #[prost(string, tag = "9")]
583    pub sender: ::prost::alloc::string::String,
584    #[prost(int64, tag = "10")]
585    pub priority: i64,
586    /// mempool_error is set by CometBFT.
587    /// ABCI applictions creating a ResponseCheckTX should not set mempool_error.
588    #[prost(string, tag = "11")]
589    pub mempool_error: ::prost::alloc::string::String,
590}
591impl ::prost::Name for ResponseCheckTx {
592    const NAME: &'static str = "ResponseCheckTx";
593    const PACKAGE: &'static str = "tendermint.abci";
594    fn full_name() -> ::prost::alloc::string::String {
595        "tendermint.abci.ResponseCheckTx".into()
596    }
597    fn type_url() -> ::prost::alloc::string::String {
598        "/tendermint.abci.ResponseCheckTx".into()
599    }
600}
601#[derive(Clone, PartialEq, ::prost::Message)]
602pub struct ResponseDeliverTx {
603    #[prost(uint32, tag = "1")]
604    pub code: u32,
605    #[prost(bytes = "vec", tag = "2")]
606    pub data: ::prost::alloc::vec::Vec<u8>,
607    /// nondeterministic
608    #[prost(string, tag = "3")]
609    pub log: ::prost::alloc::string::String,
610    /// nondeterministic
611    #[prost(string, tag = "4")]
612    pub info: ::prost::alloc::string::String,
613    #[prost(int64, tag = "5")]
614    pub gas_wanted: i64,
615    #[prost(int64, tag = "6")]
616    pub gas_used: i64,
617    /// nondeterministic
618    #[prost(message, repeated, tag = "7")]
619    pub events: ::prost::alloc::vec::Vec<Event>,
620    #[prost(string, tag = "8")]
621    pub codespace: ::prost::alloc::string::String,
622}
623impl ::prost::Name for ResponseDeliverTx {
624    const NAME: &'static str = "ResponseDeliverTx";
625    const PACKAGE: &'static str = "tendermint.abci";
626    fn full_name() -> ::prost::alloc::string::String {
627        "tendermint.abci.ResponseDeliverTx".into()
628    }
629    fn type_url() -> ::prost::alloc::string::String {
630        "/tendermint.abci.ResponseDeliverTx".into()
631    }
632}
633#[derive(Clone, PartialEq, ::prost::Message)]
634pub struct ResponseEndBlock {
635    #[prost(message, repeated, tag = "1")]
636    pub validator_updates: ::prost::alloc::vec::Vec<ValidatorUpdate>,
637    #[prost(message, optional, tag = "2")]
638    pub consensus_param_updates: ::core::option::Option<super::types::ConsensusParams>,
639    #[prost(message, repeated, tag = "3")]
640    pub events: ::prost::alloc::vec::Vec<Event>,
641}
642impl ::prost::Name for ResponseEndBlock {
643    const NAME: &'static str = "ResponseEndBlock";
644    const PACKAGE: &'static str = "tendermint.abci";
645    fn full_name() -> ::prost::alloc::string::String {
646        "tendermint.abci.ResponseEndBlock".into()
647    }
648    fn type_url() -> ::prost::alloc::string::String {
649        "/tendermint.abci.ResponseEndBlock".into()
650    }
651}
652#[derive(Clone, PartialEq, ::prost::Message)]
653pub struct ResponseCommit {
654    /// reserve 1
655    #[prost(bytes = "vec", tag = "2")]
656    pub data: ::prost::alloc::vec::Vec<u8>,
657    #[prost(int64, tag = "3")]
658    pub retain_height: i64,
659}
660impl ::prost::Name for ResponseCommit {
661    const NAME: &'static str = "ResponseCommit";
662    const PACKAGE: &'static str = "tendermint.abci";
663    fn full_name() -> ::prost::alloc::string::String {
664        "tendermint.abci.ResponseCommit".into()
665    }
666    fn type_url() -> ::prost::alloc::string::String {
667        "/tendermint.abci.ResponseCommit".into()
668    }
669}
670#[derive(Clone, PartialEq, ::prost::Message)]
671pub struct ResponseListSnapshots {
672    #[prost(message, repeated, tag = "1")]
673    pub snapshots: ::prost::alloc::vec::Vec<Snapshot>,
674}
675impl ::prost::Name for ResponseListSnapshots {
676    const NAME: &'static str = "ResponseListSnapshots";
677    const PACKAGE: &'static str = "tendermint.abci";
678    fn full_name() -> ::prost::alloc::string::String {
679        "tendermint.abci.ResponseListSnapshots".into()
680    }
681    fn type_url() -> ::prost::alloc::string::String {
682        "/tendermint.abci.ResponseListSnapshots".into()
683    }
684}
685#[derive(Clone, Copy, PartialEq, ::prost::Message)]
686pub struct ResponseOfferSnapshot {
687    #[prost(enumeration = "response_offer_snapshot::Result", tag = "1")]
688    pub result: i32,
689}
690/// Nested message and enum types in `ResponseOfferSnapshot`.
691pub mod response_offer_snapshot {
692    #[derive(
693        Clone,
694        Copy,
695        Debug,
696        PartialEq,
697        Eq,
698        Hash,
699        PartialOrd,
700        Ord,
701        ::prost::Enumeration
702    )]
703    #[repr(i32)]
704    pub enum Result {
705        /// Unknown result, abort all snapshot restoration
706        Unknown = 0,
707        /// Snapshot accepted, apply chunks
708        Accept = 1,
709        /// Abort all snapshot restoration
710        Abort = 2,
711        /// Reject this specific snapshot, try others
712        Reject = 3,
713        /// Reject all snapshots of this format, try others
714        RejectFormat = 4,
715        /// Reject all snapshots from the sender(s), try others
716        RejectSender = 5,
717    }
718    impl Result {
719        /// String value of the enum field names used in the ProtoBuf definition.
720        ///
721        /// The values are not transformed in any way and thus are considered stable
722        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
723        pub fn as_str_name(&self) -> &'static str {
724            match self {
725                Self::Unknown => "UNKNOWN",
726                Self::Accept => "ACCEPT",
727                Self::Abort => "ABORT",
728                Self::Reject => "REJECT",
729                Self::RejectFormat => "REJECT_FORMAT",
730                Self::RejectSender => "REJECT_SENDER",
731            }
732        }
733        /// Creates an enum from field names used in the ProtoBuf definition.
734        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
735            match value {
736                "UNKNOWN" => Some(Self::Unknown),
737                "ACCEPT" => Some(Self::Accept),
738                "ABORT" => Some(Self::Abort),
739                "REJECT" => Some(Self::Reject),
740                "REJECT_FORMAT" => Some(Self::RejectFormat),
741                "REJECT_SENDER" => Some(Self::RejectSender),
742                _ => None,
743            }
744        }
745    }
746}
747impl ::prost::Name for ResponseOfferSnapshot {
748    const NAME: &'static str = "ResponseOfferSnapshot";
749    const PACKAGE: &'static str = "tendermint.abci";
750    fn full_name() -> ::prost::alloc::string::String {
751        "tendermint.abci.ResponseOfferSnapshot".into()
752    }
753    fn type_url() -> ::prost::alloc::string::String {
754        "/tendermint.abci.ResponseOfferSnapshot".into()
755    }
756}
757#[derive(Clone, PartialEq, ::prost::Message)]
758pub struct ResponseLoadSnapshotChunk {
759    #[prost(bytes = "vec", tag = "1")]
760    pub chunk: ::prost::alloc::vec::Vec<u8>,
761}
762impl ::prost::Name for ResponseLoadSnapshotChunk {
763    const NAME: &'static str = "ResponseLoadSnapshotChunk";
764    const PACKAGE: &'static str = "tendermint.abci";
765    fn full_name() -> ::prost::alloc::string::String {
766        "tendermint.abci.ResponseLoadSnapshotChunk".into()
767    }
768    fn type_url() -> ::prost::alloc::string::String {
769        "/tendermint.abci.ResponseLoadSnapshotChunk".into()
770    }
771}
772#[derive(Clone, PartialEq, ::prost::Message)]
773pub struct ResponseApplySnapshotChunk {
774    #[prost(enumeration = "response_apply_snapshot_chunk::Result", tag = "1")]
775    pub result: i32,
776    /// Chunks to refetch and reapply
777    #[prost(uint32, repeated, tag = "2")]
778    pub refetch_chunks: ::prost::alloc::vec::Vec<u32>,
779    /// Chunk senders to reject and ban
780    #[prost(string, repeated, tag = "3")]
781    pub reject_senders: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
782}
783/// Nested message and enum types in `ResponseApplySnapshotChunk`.
784pub mod response_apply_snapshot_chunk {
785    #[derive(
786        Clone,
787        Copy,
788        Debug,
789        PartialEq,
790        Eq,
791        Hash,
792        PartialOrd,
793        Ord,
794        ::prost::Enumeration
795    )]
796    #[repr(i32)]
797    pub enum Result {
798        /// Unknown result, abort all snapshot restoration
799        Unknown = 0,
800        /// Chunk successfully accepted
801        Accept = 1,
802        /// Abort all snapshot restoration
803        Abort = 2,
804        /// Retry chunk (combine with refetch and reject)
805        Retry = 3,
806        /// Retry snapshot (combine with refetch and reject)
807        RetrySnapshot = 4,
808        /// Reject this snapshot, try others
809        RejectSnapshot = 5,
810    }
811    impl Result {
812        /// String value of the enum field names used in the ProtoBuf definition.
813        ///
814        /// The values are not transformed in any way and thus are considered stable
815        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
816        pub fn as_str_name(&self) -> &'static str {
817            match self {
818                Self::Unknown => "UNKNOWN",
819                Self::Accept => "ACCEPT",
820                Self::Abort => "ABORT",
821                Self::Retry => "RETRY",
822                Self::RetrySnapshot => "RETRY_SNAPSHOT",
823                Self::RejectSnapshot => "REJECT_SNAPSHOT",
824            }
825        }
826        /// Creates an enum from field names used in the ProtoBuf definition.
827        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
828            match value {
829                "UNKNOWN" => Some(Self::Unknown),
830                "ACCEPT" => Some(Self::Accept),
831                "ABORT" => Some(Self::Abort),
832                "RETRY" => Some(Self::Retry),
833                "RETRY_SNAPSHOT" => Some(Self::RetrySnapshot),
834                "REJECT_SNAPSHOT" => Some(Self::RejectSnapshot),
835                _ => None,
836            }
837        }
838    }
839}
840impl ::prost::Name for ResponseApplySnapshotChunk {
841    const NAME: &'static str = "ResponseApplySnapshotChunk";
842    const PACKAGE: &'static str = "tendermint.abci";
843    fn full_name() -> ::prost::alloc::string::String {
844        "tendermint.abci.ResponseApplySnapshotChunk".into()
845    }
846    fn type_url() -> ::prost::alloc::string::String {
847        "/tendermint.abci.ResponseApplySnapshotChunk".into()
848    }
849}
850#[derive(Clone, PartialEq, ::prost::Message)]
851pub struct ResponsePrepareProposal {
852    #[prost(bytes = "vec", repeated, tag = "1")]
853    pub txs: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
854}
855impl ::prost::Name for ResponsePrepareProposal {
856    const NAME: &'static str = "ResponsePrepareProposal";
857    const PACKAGE: &'static str = "tendermint.abci";
858    fn full_name() -> ::prost::alloc::string::String {
859        "tendermint.abci.ResponsePrepareProposal".into()
860    }
861    fn type_url() -> ::prost::alloc::string::String {
862        "/tendermint.abci.ResponsePrepareProposal".into()
863    }
864}
865#[derive(Clone, Copy, PartialEq, ::prost::Message)]
866pub struct ResponseProcessProposal {
867    #[prost(enumeration = "response_process_proposal::ProposalStatus", tag = "1")]
868    pub status: i32,
869}
870/// Nested message and enum types in `ResponseProcessProposal`.
871pub mod response_process_proposal {
872    #[derive(
873        Clone,
874        Copy,
875        Debug,
876        PartialEq,
877        Eq,
878        Hash,
879        PartialOrd,
880        Ord,
881        ::prost::Enumeration
882    )]
883    #[repr(i32)]
884    pub enum ProposalStatus {
885        Unknown = 0,
886        Accept = 1,
887        Reject = 2,
888    }
889    impl ProposalStatus {
890        /// String value of the enum field names used in the ProtoBuf definition.
891        ///
892        /// The values are not transformed in any way and thus are considered stable
893        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
894        pub fn as_str_name(&self) -> &'static str {
895            match self {
896                Self::Unknown => "UNKNOWN",
897                Self::Accept => "ACCEPT",
898                Self::Reject => "REJECT",
899            }
900        }
901        /// Creates an enum from field names used in the ProtoBuf definition.
902        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
903            match value {
904                "UNKNOWN" => Some(Self::Unknown),
905                "ACCEPT" => Some(Self::Accept),
906                "REJECT" => Some(Self::Reject),
907                _ => None,
908            }
909        }
910    }
911}
912impl ::prost::Name for ResponseProcessProposal {
913    const NAME: &'static str = "ResponseProcessProposal";
914    const PACKAGE: &'static str = "tendermint.abci";
915    fn full_name() -> ::prost::alloc::string::String {
916        "tendermint.abci.ResponseProcessProposal".into()
917    }
918    fn type_url() -> ::prost::alloc::string::String {
919        "/tendermint.abci.ResponseProcessProposal".into()
920    }
921}
922#[derive(Clone, PartialEq, ::prost::Message)]
923pub struct CommitInfo {
924    #[prost(int32, tag = "1")]
925    pub round: i32,
926    #[prost(message, repeated, tag = "2")]
927    pub votes: ::prost::alloc::vec::Vec<VoteInfo>,
928}
929impl ::prost::Name for CommitInfo {
930    const NAME: &'static str = "CommitInfo";
931    const PACKAGE: &'static str = "tendermint.abci";
932    fn full_name() -> ::prost::alloc::string::String {
933        "tendermint.abci.CommitInfo".into()
934    }
935    fn type_url() -> ::prost::alloc::string::String {
936        "/tendermint.abci.CommitInfo".into()
937    }
938}
939#[derive(Clone, PartialEq, ::prost::Message)]
940pub struct ExtendedCommitInfo {
941    /// The round at which the block proposer decided in the previous height.
942    #[prost(int32, tag = "1")]
943    pub round: i32,
944    /// List of validators' addresses in the last validator set with their voting
945    /// information, including vote extensions.
946    #[prost(message, repeated, tag = "2")]
947    pub votes: ::prost::alloc::vec::Vec<ExtendedVoteInfo>,
948}
949impl ::prost::Name for ExtendedCommitInfo {
950    const NAME: &'static str = "ExtendedCommitInfo";
951    const PACKAGE: &'static str = "tendermint.abci";
952    fn full_name() -> ::prost::alloc::string::String {
953        "tendermint.abci.ExtendedCommitInfo".into()
954    }
955    fn type_url() -> ::prost::alloc::string::String {
956        "/tendermint.abci.ExtendedCommitInfo".into()
957    }
958}
959/// Event allows application developers to attach additional information to
960/// ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and ResponseDeliverTx.
961/// Later, transactions may be queried using these events.
962#[derive(Clone, PartialEq, ::prost::Message)]
963pub struct Event {
964    #[prost(string, tag = "1")]
965    pub r#type: ::prost::alloc::string::String,
966    #[prost(message, repeated, tag = "2")]
967    pub attributes: ::prost::alloc::vec::Vec<EventAttribute>,
968}
969impl ::prost::Name for Event {
970    const NAME: &'static str = "Event";
971    const PACKAGE: &'static str = "tendermint.abci";
972    fn full_name() -> ::prost::alloc::string::String {
973        "tendermint.abci.Event".into()
974    }
975    fn type_url() -> ::prost::alloc::string::String {
976        "/tendermint.abci.Event".into()
977    }
978}
979/// EventAttribute is a single key-value pair, associated with an event.
980#[derive(Clone, PartialEq, ::prost::Message)]
981pub struct EventAttribute {
982    #[prost(string, tag = "1")]
983    pub key: ::prost::alloc::string::String,
984    #[prost(string, tag = "2")]
985    pub value: ::prost::alloc::string::String,
986    /// nondeterministic
987    #[prost(bool, tag = "3")]
988    pub index: bool,
989}
990impl ::prost::Name for EventAttribute {
991    const NAME: &'static str = "EventAttribute";
992    const PACKAGE: &'static str = "tendermint.abci";
993    fn full_name() -> ::prost::alloc::string::String {
994        "tendermint.abci.EventAttribute".into()
995    }
996    fn type_url() -> ::prost::alloc::string::String {
997        "/tendermint.abci.EventAttribute".into()
998    }
999}
1000/// TxResult contains results of executing the transaction.
1001///
1002/// One usage is indexing transaction results.
1003#[derive(Clone, PartialEq, ::prost::Message)]
1004pub struct TxResult {
1005    #[prost(int64, tag = "1")]
1006    pub height: i64,
1007    #[prost(uint32, tag = "2")]
1008    pub index: u32,
1009    #[prost(bytes = "vec", tag = "3")]
1010    pub tx: ::prost::alloc::vec::Vec<u8>,
1011    #[prost(message, optional, tag = "4")]
1012    pub result: ::core::option::Option<ResponseDeliverTx>,
1013}
1014impl ::prost::Name for TxResult {
1015    const NAME: &'static str = "TxResult";
1016    const PACKAGE: &'static str = "tendermint.abci";
1017    fn full_name() -> ::prost::alloc::string::String {
1018        "tendermint.abci.TxResult".into()
1019    }
1020    fn type_url() -> ::prost::alloc::string::String {
1021        "/tendermint.abci.TxResult".into()
1022    }
1023}
1024/// Validator
1025#[derive(Clone, PartialEq, ::prost::Message)]
1026pub struct Validator {
1027    /// The first 20 bytes of SHA256(public key)
1028    #[prost(bytes = "vec", tag = "1")]
1029    pub address: ::prost::alloc::vec::Vec<u8>,
1030    /// PubKey pub_key = 2 \[(gogoproto.nullable)=false\];
1031    ///
1032    /// The voting power
1033    #[prost(int64, tag = "3")]
1034    pub power: i64,
1035}
1036impl ::prost::Name for Validator {
1037    const NAME: &'static str = "Validator";
1038    const PACKAGE: &'static str = "tendermint.abci";
1039    fn full_name() -> ::prost::alloc::string::String {
1040        "tendermint.abci.Validator".into()
1041    }
1042    fn type_url() -> ::prost::alloc::string::String {
1043        "/tendermint.abci.Validator".into()
1044    }
1045}
1046/// ValidatorUpdate
1047#[derive(Clone, PartialEq, ::prost::Message)]
1048pub struct ValidatorUpdate {
1049    #[prost(message, optional, tag = "1")]
1050    pub pub_key: ::core::option::Option<super::crypto::PublicKey>,
1051    #[prost(int64, tag = "2")]
1052    pub power: i64,
1053}
1054impl ::prost::Name for ValidatorUpdate {
1055    const NAME: &'static str = "ValidatorUpdate";
1056    const PACKAGE: &'static str = "tendermint.abci";
1057    fn full_name() -> ::prost::alloc::string::String {
1058        "tendermint.abci.ValidatorUpdate".into()
1059    }
1060    fn type_url() -> ::prost::alloc::string::String {
1061        "/tendermint.abci.ValidatorUpdate".into()
1062    }
1063}
1064/// VoteInfo
1065#[derive(Clone, PartialEq, ::prost::Message)]
1066pub struct VoteInfo {
1067    #[prost(message, optional, tag = "1")]
1068    pub validator: ::core::option::Option<Validator>,
1069    #[prost(bool, tag = "2")]
1070    pub signed_last_block: bool,
1071}
1072impl ::prost::Name for VoteInfo {
1073    const NAME: &'static str = "VoteInfo";
1074    const PACKAGE: &'static str = "tendermint.abci";
1075    fn full_name() -> ::prost::alloc::string::String {
1076        "tendermint.abci.VoteInfo".into()
1077    }
1078    fn type_url() -> ::prost::alloc::string::String {
1079        "/tendermint.abci.VoteInfo".into()
1080    }
1081}
1082#[derive(Clone, PartialEq, ::prost::Message)]
1083pub struct ExtendedVoteInfo {
1084    #[prost(message, optional, tag = "1")]
1085    pub validator: ::core::option::Option<Validator>,
1086    #[prost(bool, tag = "2")]
1087    pub signed_last_block: bool,
1088    /// Reserved for future use
1089    #[prost(bytes = "vec", tag = "3")]
1090    pub vote_extension: ::prost::alloc::vec::Vec<u8>,
1091}
1092impl ::prost::Name for ExtendedVoteInfo {
1093    const NAME: &'static str = "ExtendedVoteInfo";
1094    const PACKAGE: &'static str = "tendermint.abci";
1095    fn full_name() -> ::prost::alloc::string::String {
1096        "tendermint.abci.ExtendedVoteInfo".into()
1097    }
1098    fn type_url() -> ::prost::alloc::string::String {
1099        "/tendermint.abci.ExtendedVoteInfo".into()
1100    }
1101}
1102#[derive(Clone, PartialEq, ::prost::Message)]
1103pub struct Misbehavior {
1104    #[prost(enumeration = "MisbehaviorType", tag = "1")]
1105    pub r#type: i32,
1106    /// The offending validator
1107    #[prost(message, optional, tag = "2")]
1108    pub validator: ::core::option::Option<Validator>,
1109    /// The height when the offense occurred
1110    #[prost(int64, tag = "3")]
1111    pub height: i64,
1112    /// The corresponding time where the offense occurred
1113    #[prost(message, optional, tag = "4")]
1114    pub time: ::core::option::Option<::pbjson_types::Timestamp>,
1115    /// Total voting power of the validator set in case the ABCI application does
1116    /// not store historical validators.
1117    /// <https://github.com/tendermint/tendermint/issues/4581>
1118    #[prost(int64, tag = "5")]
1119    pub total_voting_power: i64,
1120}
1121impl ::prost::Name for Misbehavior {
1122    const NAME: &'static str = "Misbehavior";
1123    const PACKAGE: &'static str = "tendermint.abci";
1124    fn full_name() -> ::prost::alloc::string::String {
1125        "tendermint.abci.Misbehavior".into()
1126    }
1127    fn type_url() -> ::prost::alloc::string::String {
1128        "/tendermint.abci.Misbehavior".into()
1129    }
1130}
1131#[derive(Clone, PartialEq, ::prost::Message)]
1132pub struct Snapshot {
1133    /// The height at which the snapshot was taken
1134    #[prost(uint64, tag = "1")]
1135    pub height: u64,
1136    /// The application-specific snapshot format
1137    #[prost(uint32, tag = "2")]
1138    pub format: u32,
1139    /// Number of chunks in the snapshot
1140    #[prost(uint32, tag = "3")]
1141    pub chunks: u32,
1142    /// Arbitrary snapshot hash, equal only if identical
1143    #[prost(bytes = "vec", tag = "4")]
1144    pub hash: ::prost::alloc::vec::Vec<u8>,
1145    /// Arbitrary application metadata
1146    #[prost(bytes = "vec", tag = "5")]
1147    pub metadata: ::prost::alloc::vec::Vec<u8>,
1148}
1149impl ::prost::Name for Snapshot {
1150    const NAME: &'static str = "Snapshot";
1151    const PACKAGE: &'static str = "tendermint.abci";
1152    fn full_name() -> ::prost::alloc::string::String {
1153        "tendermint.abci.Snapshot".into()
1154    }
1155    fn type_url() -> ::prost::alloc::string::String {
1156        "/tendermint.abci.Snapshot".into()
1157    }
1158}
1159#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1160#[repr(i32)]
1161pub enum CheckTxType {
1162    New = 0,
1163    Recheck = 1,
1164}
1165impl CheckTxType {
1166    /// String value of the enum field names used in the ProtoBuf definition.
1167    ///
1168    /// The values are not transformed in any way and thus are considered stable
1169    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1170    pub fn as_str_name(&self) -> &'static str {
1171        match self {
1172            Self::New => "NEW",
1173            Self::Recheck => "RECHECK",
1174        }
1175    }
1176    /// Creates an enum from field names used in the ProtoBuf definition.
1177    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1178        match value {
1179            "NEW" => Some(Self::New),
1180            "RECHECK" => Some(Self::Recheck),
1181            _ => None,
1182        }
1183    }
1184}
1185#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1186#[repr(i32)]
1187pub enum MisbehaviorType {
1188    Unknown = 0,
1189    DuplicateVote = 1,
1190    LightClientAttack = 2,
1191}
1192impl MisbehaviorType {
1193    /// String value of the enum field names used in the ProtoBuf definition.
1194    ///
1195    /// The values are not transformed in any way and thus are considered stable
1196    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1197    pub fn as_str_name(&self) -> &'static str {
1198        match self {
1199            Self::Unknown => "UNKNOWN",
1200            Self::DuplicateVote => "DUPLICATE_VOTE",
1201            Self::LightClientAttack => "LIGHT_CLIENT_ATTACK",
1202        }
1203    }
1204    /// Creates an enum from field names used in the ProtoBuf definition.
1205    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1206        match value {
1207            "UNKNOWN" => Some(Self::Unknown),
1208            "DUPLICATE_VOTE" => Some(Self::DuplicateVote),
1209            "LIGHT_CLIENT_ATTACK" => Some(Self::LightClientAttack),
1210            _ => None,
1211        }
1212    }
1213}
1214/// Generated client implementations.
1215#[cfg(feature = "rpc")]
1216pub mod abci_application_client {
1217    #![allow(
1218        unused_variables,
1219        dead_code,
1220        missing_docs,
1221        clippy::wildcard_imports,
1222        clippy::let_unit_value,
1223    )]
1224    use tonic::codegen::*;
1225    use tonic::codegen::http::Uri;
1226    #[derive(Debug, Clone)]
1227    pub struct AbciApplicationClient<T> {
1228        inner: tonic::client::Grpc<T>,
1229    }
1230    impl AbciApplicationClient<tonic::transport::Channel> {
1231        /// Attempt to create a new client by connecting to a given endpoint.
1232        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1233        where
1234            D: TryInto<tonic::transport::Endpoint>,
1235            D::Error: Into<StdError>,
1236        {
1237            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1238            Ok(Self::new(conn))
1239        }
1240    }
1241    impl<T> AbciApplicationClient<T>
1242    where
1243        T: tonic::client::GrpcService<tonic::body::BoxBody>,
1244        T::Error: Into<StdError>,
1245        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1246        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1247    {
1248        pub fn new(inner: T) -> Self {
1249            let inner = tonic::client::Grpc::new(inner);
1250            Self { inner }
1251        }
1252        pub fn with_origin(inner: T, origin: Uri) -> Self {
1253            let inner = tonic::client::Grpc::with_origin(inner, origin);
1254            Self { inner }
1255        }
1256        pub fn with_interceptor<F>(
1257            inner: T,
1258            interceptor: F,
1259        ) -> AbciApplicationClient<InterceptedService<T, F>>
1260        where
1261            F: tonic::service::Interceptor,
1262            T::ResponseBody: Default,
1263            T: tonic::codegen::Service<
1264                http::Request<tonic::body::BoxBody>,
1265                Response = http::Response<
1266                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
1267                >,
1268            >,
1269            <T as tonic::codegen::Service<
1270                http::Request<tonic::body::BoxBody>,
1271            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1272        {
1273            AbciApplicationClient::new(InterceptedService::new(inner, interceptor))
1274        }
1275        /// Compress requests with the given encoding.
1276        ///
1277        /// This requires the server to support it otherwise it might respond with an
1278        /// error.
1279        #[must_use]
1280        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1281            self.inner = self.inner.send_compressed(encoding);
1282            self
1283        }
1284        /// Enable decompressing responses.
1285        #[must_use]
1286        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1287            self.inner = self.inner.accept_compressed(encoding);
1288            self
1289        }
1290        /// Limits the maximum size of a decoded message.
1291        ///
1292        /// Default: `4MB`
1293        #[must_use]
1294        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1295            self.inner = self.inner.max_decoding_message_size(limit);
1296            self
1297        }
1298        /// Limits the maximum size of an encoded message.
1299        ///
1300        /// Default: `usize::MAX`
1301        #[must_use]
1302        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1303            self.inner = self.inner.max_encoding_message_size(limit);
1304            self
1305        }
1306        pub async fn echo(
1307            &mut self,
1308            request: impl tonic::IntoRequest<super::RequestEcho>,
1309        ) -> std::result::Result<tonic::Response<super::ResponseEcho>, tonic::Status> {
1310            self.inner
1311                .ready()
1312                .await
1313                .map_err(|e| {
1314                    tonic::Status::unknown(
1315                        format!("Service was not ready: {}", e.into()),
1316                    )
1317                })?;
1318            let codec = tonic::codec::ProstCodec::default();
1319            let path = http::uri::PathAndQuery::from_static(
1320                "/tendermint.abci.ABCIApplication/Echo",
1321            );
1322            let mut req = request.into_request();
1323            req.extensions_mut()
1324                .insert(GrpcMethod::new("tendermint.abci.ABCIApplication", "Echo"));
1325            self.inner.unary(req, path, codec).await
1326        }
1327        pub async fn flush(
1328            &mut self,
1329            request: impl tonic::IntoRequest<super::RequestFlush>,
1330        ) -> std::result::Result<tonic::Response<super::ResponseFlush>, tonic::Status> {
1331            self.inner
1332                .ready()
1333                .await
1334                .map_err(|e| {
1335                    tonic::Status::unknown(
1336                        format!("Service was not ready: {}", e.into()),
1337                    )
1338                })?;
1339            let codec = tonic::codec::ProstCodec::default();
1340            let path = http::uri::PathAndQuery::from_static(
1341                "/tendermint.abci.ABCIApplication/Flush",
1342            );
1343            let mut req = request.into_request();
1344            req.extensions_mut()
1345                .insert(GrpcMethod::new("tendermint.abci.ABCIApplication", "Flush"));
1346            self.inner.unary(req, path, codec).await
1347        }
1348        pub async fn info(
1349            &mut self,
1350            request: impl tonic::IntoRequest<super::RequestInfo>,
1351        ) -> std::result::Result<tonic::Response<super::ResponseInfo>, tonic::Status> {
1352            self.inner
1353                .ready()
1354                .await
1355                .map_err(|e| {
1356                    tonic::Status::unknown(
1357                        format!("Service was not ready: {}", e.into()),
1358                    )
1359                })?;
1360            let codec = tonic::codec::ProstCodec::default();
1361            let path = http::uri::PathAndQuery::from_static(
1362                "/tendermint.abci.ABCIApplication/Info",
1363            );
1364            let mut req = request.into_request();
1365            req.extensions_mut()
1366                .insert(GrpcMethod::new("tendermint.abci.ABCIApplication", "Info"));
1367            self.inner.unary(req, path, codec).await
1368        }
1369        pub async fn deliver_tx(
1370            &mut self,
1371            request: impl tonic::IntoRequest<super::RequestDeliverTx>,
1372        ) -> std::result::Result<
1373            tonic::Response<super::ResponseDeliverTx>,
1374            tonic::Status,
1375        > {
1376            self.inner
1377                .ready()
1378                .await
1379                .map_err(|e| {
1380                    tonic::Status::unknown(
1381                        format!("Service was not ready: {}", e.into()),
1382                    )
1383                })?;
1384            let codec = tonic::codec::ProstCodec::default();
1385            let path = http::uri::PathAndQuery::from_static(
1386                "/tendermint.abci.ABCIApplication/DeliverTx",
1387            );
1388            let mut req = request.into_request();
1389            req.extensions_mut()
1390                .insert(GrpcMethod::new("tendermint.abci.ABCIApplication", "DeliverTx"));
1391            self.inner.unary(req, path, codec).await
1392        }
1393        pub async fn check_tx(
1394            &mut self,
1395            request: impl tonic::IntoRequest<super::RequestCheckTx>,
1396        ) -> std::result::Result<
1397            tonic::Response<super::ResponseCheckTx>,
1398            tonic::Status,
1399        > {
1400            self.inner
1401                .ready()
1402                .await
1403                .map_err(|e| {
1404                    tonic::Status::unknown(
1405                        format!("Service was not ready: {}", e.into()),
1406                    )
1407                })?;
1408            let codec = tonic::codec::ProstCodec::default();
1409            let path = http::uri::PathAndQuery::from_static(
1410                "/tendermint.abci.ABCIApplication/CheckTx",
1411            );
1412            let mut req = request.into_request();
1413            req.extensions_mut()
1414                .insert(GrpcMethod::new("tendermint.abci.ABCIApplication", "CheckTx"));
1415            self.inner.unary(req, path, codec).await
1416        }
1417        pub async fn query(
1418            &mut self,
1419            request: impl tonic::IntoRequest<super::RequestQuery>,
1420        ) -> std::result::Result<tonic::Response<super::ResponseQuery>, tonic::Status> {
1421            self.inner
1422                .ready()
1423                .await
1424                .map_err(|e| {
1425                    tonic::Status::unknown(
1426                        format!("Service was not ready: {}", e.into()),
1427                    )
1428                })?;
1429            let codec = tonic::codec::ProstCodec::default();
1430            let path = http::uri::PathAndQuery::from_static(
1431                "/tendermint.abci.ABCIApplication/Query",
1432            );
1433            let mut req = request.into_request();
1434            req.extensions_mut()
1435                .insert(GrpcMethod::new("tendermint.abci.ABCIApplication", "Query"));
1436            self.inner.unary(req, path, codec).await
1437        }
1438        pub async fn commit(
1439            &mut self,
1440            request: impl tonic::IntoRequest<super::RequestCommit>,
1441        ) -> std::result::Result<tonic::Response<super::ResponseCommit>, tonic::Status> {
1442            self.inner
1443                .ready()
1444                .await
1445                .map_err(|e| {
1446                    tonic::Status::unknown(
1447                        format!("Service was not ready: {}", e.into()),
1448                    )
1449                })?;
1450            let codec = tonic::codec::ProstCodec::default();
1451            let path = http::uri::PathAndQuery::from_static(
1452                "/tendermint.abci.ABCIApplication/Commit",
1453            );
1454            let mut req = request.into_request();
1455            req.extensions_mut()
1456                .insert(GrpcMethod::new("tendermint.abci.ABCIApplication", "Commit"));
1457            self.inner.unary(req, path, codec).await
1458        }
1459        pub async fn init_chain(
1460            &mut self,
1461            request: impl tonic::IntoRequest<super::RequestInitChain>,
1462        ) -> std::result::Result<
1463            tonic::Response<super::ResponseInitChain>,
1464            tonic::Status,
1465        > {
1466            self.inner
1467                .ready()
1468                .await
1469                .map_err(|e| {
1470                    tonic::Status::unknown(
1471                        format!("Service was not ready: {}", e.into()),
1472                    )
1473                })?;
1474            let codec = tonic::codec::ProstCodec::default();
1475            let path = http::uri::PathAndQuery::from_static(
1476                "/tendermint.abci.ABCIApplication/InitChain",
1477            );
1478            let mut req = request.into_request();
1479            req.extensions_mut()
1480                .insert(GrpcMethod::new("tendermint.abci.ABCIApplication", "InitChain"));
1481            self.inner.unary(req, path, codec).await
1482        }
1483        pub async fn begin_block(
1484            &mut self,
1485            request: impl tonic::IntoRequest<super::RequestBeginBlock>,
1486        ) -> std::result::Result<
1487            tonic::Response<super::ResponseBeginBlock>,
1488            tonic::Status,
1489        > {
1490            self.inner
1491                .ready()
1492                .await
1493                .map_err(|e| {
1494                    tonic::Status::unknown(
1495                        format!("Service was not ready: {}", e.into()),
1496                    )
1497                })?;
1498            let codec = tonic::codec::ProstCodec::default();
1499            let path = http::uri::PathAndQuery::from_static(
1500                "/tendermint.abci.ABCIApplication/BeginBlock",
1501            );
1502            let mut req = request.into_request();
1503            req.extensions_mut()
1504                .insert(
1505                    GrpcMethod::new("tendermint.abci.ABCIApplication", "BeginBlock"),
1506                );
1507            self.inner.unary(req, path, codec).await
1508        }
1509        pub async fn end_block(
1510            &mut self,
1511            request: impl tonic::IntoRequest<super::RequestEndBlock>,
1512        ) -> std::result::Result<
1513            tonic::Response<super::ResponseEndBlock>,
1514            tonic::Status,
1515        > {
1516            self.inner
1517                .ready()
1518                .await
1519                .map_err(|e| {
1520                    tonic::Status::unknown(
1521                        format!("Service was not ready: {}", e.into()),
1522                    )
1523                })?;
1524            let codec = tonic::codec::ProstCodec::default();
1525            let path = http::uri::PathAndQuery::from_static(
1526                "/tendermint.abci.ABCIApplication/EndBlock",
1527            );
1528            let mut req = request.into_request();
1529            req.extensions_mut()
1530                .insert(GrpcMethod::new("tendermint.abci.ABCIApplication", "EndBlock"));
1531            self.inner.unary(req, path, codec).await
1532        }
1533        pub async fn list_snapshots(
1534            &mut self,
1535            request: impl tonic::IntoRequest<super::RequestListSnapshots>,
1536        ) -> std::result::Result<
1537            tonic::Response<super::ResponseListSnapshots>,
1538            tonic::Status,
1539        > {
1540            self.inner
1541                .ready()
1542                .await
1543                .map_err(|e| {
1544                    tonic::Status::unknown(
1545                        format!("Service was not ready: {}", e.into()),
1546                    )
1547                })?;
1548            let codec = tonic::codec::ProstCodec::default();
1549            let path = http::uri::PathAndQuery::from_static(
1550                "/tendermint.abci.ABCIApplication/ListSnapshots",
1551            );
1552            let mut req = request.into_request();
1553            req.extensions_mut()
1554                .insert(
1555                    GrpcMethod::new("tendermint.abci.ABCIApplication", "ListSnapshots"),
1556                );
1557            self.inner.unary(req, path, codec).await
1558        }
1559        pub async fn offer_snapshot(
1560            &mut self,
1561            request: impl tonic::IntoRequest<super::RequestOfferSnapshot>,
1562        ) -> std::result::Result<
1563            tonic::Response<super::ResponseOfferSnapshot>,
1564            tonic::Status,
1565        > {
1566            self.inner
1567                .ready()
1568                .await
1569                .map_err(|e| {
1570                    tonic::Status::unknown(
1571                        format!("Service was not ready: {}", e.into()),
1572                    )
1573                })?;
1574            let codec = tonic::codec::ProstCodec::default();
1575            let path = http::uri::PathAndQuery::from_static(
1576                "/tendermint.abci.ABCIApplication/OfferSnapshot",
1577            );
1578            let mut req = request.into_request();
1579            req.extensions_mut()
1580                .insert(
1581                    GrpcMethod::new("tendermint.abci.ABCIApplication", "OfferSnapshot"),
1582                );
1583            self.inner.unary(req, path, codec).await
1584        }
1585        pub async fn load_snapshot_chunk(
1586            &mut self,
1587            request: impl tonic::IntoRequest<super::RequestLoadSnapshotChunk>,
1588        ) -> std::result::Result<
1589            tonic::Response<super::ResponseLoadSnapshotChunk>,
1590            tonic::Status,
1591        > {
1592            self.inner
1593                .ready()
1594                .await
1595                .map_err(|e| {
1596                    tonic::Status::unknown(
1597                        format!("Service was not ready: {}", e.into()),
1598                    )
1599                })?;
1600            let codec = tonic::codec::ProstCodec::default();
1601            let path = http::uri::PathAndQuery::from_static(
1602                "/tendermint.abci.ABCIApplication/LoadSnapshotChunk",
1603            );
1604            let mut req = request.into_request();
1605            req.extensions_mut()
1606                .insert(
1607                    GrpcMethod::new(
1608                        "tendermint.abci.ABCIApplication",
1609                        "LoadSnapshotChunk",
1610                    ),
1611                );
1612            self.inner.unary(req, path, codec).await
1613        }
1614        pub async fn apply_snapshot_chunk(
1615            &mut self,
1616            request: impl tonic::IntoRequest<super::RequestApplySnapshotChunk>,
1617        ) -> std::result::Result<
1618            tonic::Response<super::ResponseApplySnapshotChunk>,
1619            tonic::Status,
1620        > {
1621            self.inner
1622                .ready()
1623                .await
1624                .map_err(|e| {
1625                    tonic::Status::unknown(
1626                        format!("Service was not ready: {}", e.into()),
1627                    )
1628                })?;
1629            let codec = tonic::codec::ProstCodec::default();
1630            let path = http::uri::PathAndQuery::from_static(
1631                "/tendermint.abci.ABCIApplication/ApplySnapshotChunk",
1632            );
1633            let mut req = request.into_request();
1634            req.extensions_mut()
1635                .insert(
1636                    GrpcMethod::new(
1637                        "tendermint.abci.ABCIApplication",
1638                        "ApplySnapshotChunk",
1639                    ),
1640                );
1641            self.inner.unary(req, path, codec).await
1642        }
1643        pub async fn prepare_proposal(
1644            &mut self,
1645            request: impl tonic::IntoRequest<super::RequestPrepareProposal>,
1646        ) -> std::result::Result<
1647            tonic::Response<super::ResponsePrepareProposal>,
1648            tonic::Status,
1649        > {
1650            self.inner
1651                .ready()
1652                .await
1653                .map_err(|e| {
1654                    tonic::Status::unknown(
1655                        format!("Service was not ready: {}", e.into()),
1656                    )
1657                })?;
1658            let codec = tonic::codec::ProstCodec::default();
1659            let path = http::uri::PathAndQuery::from_static(
1660                "/tendermint.abci.ABCIApplication/PrepareProposal",
1661            );
1662            let mut req = request.into_request();
1663            req.extensions_mut()
1664                .insert(
1665                    GrpcMethod::new("tendermint.abci.ABCIApplication", "PrepareProposal"),
1666                );
1667            self.inner.unary(req, path, codec).await
1668        }
1669        pub async fn process_proposal(
1670            &mut self,
1671            request: impl tonic::IntoRequest<super::RequestProcessProposal>,
1672        ) -> std::result::Result<
1673            tonic::Response<super::ResponseProcessProposal>,
1674            tonic::Status,
1675        > {
1676            self.inner
1677                .ready()
1678                .await
1679                .map_err(|e| {
1680                    tonic::Status::unknown(
1681                        format!("Service was not ready: {}", e.into()),
1682                    )
1683                })?;
1684            let codec = tonic::codec::ProstCodec::default();
1685            let path = http::uri::PathAndQuery::from_static(
1686                "/tendermint.abci.ABCIApplication/ProcessProposal",
1687            );
1688            let mut req = request.into_request();
1689            req.extensions_mut()
1690                .insert(
1691                    GrpcMethod::new("tendermint.abci.ABCIApplication", "ProcessProposal"),
1692                );
1693            self.inner.unary(req, path, codec).await
1694        }
1695    }
1696}
1697/// Generated server implementations.
1698#[cfg(feature = "rpc")]
1699pub mod abci_application_server {
1700    #![allow(
1701        unused_variables,
1702        dead_code,
1703        missing_docs,
1704        clippy::wildcard_imports,
1705        clippy::let_unit_value,
1706    )]
1707    use tonic::codegen::*;
1708    /// Generated trait containing gRPC methods that should be implemented for use with AbciApplicationServer.
1709    #[async_trait]
1710    pub trait AbciApplication: std::marker::Send + std::marker::Sync + 'static {
1711        async fn echo(
1712            &self,
1713            request: tonic::Request<super::RequestEcho>,
1714        ) -> std::result::Result<tonic::Response<super::ResponseEcho>, tonic::Status>;
1715        async fn flush(
1716            &self,
1717            request: tonic::Request<super::RequestFlush>,
1718        ) -> std::result::Result<tonic::Response<super::ResponseFlush>, tonic::Status>;
1719        async fn info(
1720            &self,
1721            request: tonic::Request<super::RequestInfo>,
1722        ) -> std::result::Result<tonic::Response<super::ResponseInfo>, tonic::Status>;
1723        async fn deliver_tx(
1724            &self,
1725            request: tonic::Request<super::RequestDeliverTx>,
1726        ) -> std::result::Result<
1727            tonic::Response<super::ResponseDeliverTx>,
1728            tonic::Status,
1729        >;
1730        async fn check_tx(
1731            &self,
1732            request: tonic::Request<super::RequestCheckTx>,
1733        ) -> std::result::Result<tonic::Response<super::ResponseCheckTx>, tonic::Status>;
1734        async fn query(
1735            &self,
1736            request: tonic::Request<super::RequestQuery>,
1737        ) -> std::result::Result<tonic::Response<super::ResponseQuery>, tonic::Status>;
1738        async fn commit(
1739            &self,
1740            request: tonic::Request<super::RequestCommit>,
1741        ) -> std::result::Result<tonic::Response<super::ResponseCommit>, tonic::Status>;
1742        async fn init_chain(
1743            &self,
1744            request: tonic::Request<super::RequestInitChain>,
1745        ) -> std::result::Result<
1746            tonic::Response<super::ResponseInitChain>,
1747            tonic::Status,
1748        >;
1749        async fn begin_block(
1750            &self,
1751            request: tonic::Request<super::RequestBeginBlock>,
1752        ) -> std::result::Result<
1753            tonic::Response<super::ResponseBeginBlock>,
1754            tonic::Status,
1755        >;
1756        async fn end_block(
1757            &self,
1758            request: tonic::Request<super::RequestEndBlock>,
1759        ) -> std::result::Result<
1760            tonic::Response<super::ResponseEndBlock>,
1761            tonic::Status,
1762        >;
1763        async fn list_snapshots(
1764            &self,
1765            request: tonic::Request<super::RequestListSnapshots>,
1766        ) -> std::result::Result<
1767            tonic::Response<super::ResponseListSnapshots>,
1768            tonic::Status,
1769        >;
1770        async fn offer_snapshot(
1771            &self,
1772            request: tonic::Request<super::RequestOfferSnapshot>,
1773        ) -> std::result::Result<
1774            tonic::Response<super::ResponseOfferSnapshot>,
1775            tonic::Status,
1776        >;
1777        async fn load_snapshot_chunk(
1778            &self,
1779            request: tonic::Request<super::RequestLoadSnapshotChunk>,
1780        ) -> std::result::Result<
1781            tonic::Response<super::ResponseLoadSnapshotChunk>,
1782            tonic::Status,
1783        >;
1784        async fn apply_snapshot_chunk(
1785            &self,
1786            request: tonic::Request<super::RequestApplySnapshotChunk>,
1787        ) -> std::result::Result<
1788            tonic::Response<super::ResponseApplySnapshotChunk>,
1789            tonic::Status,
1790        >;
1791        async fn prepare_proposal(
1792            &self,
1793            request: tonic::Request<super::RequestPrepareProposal>,
1794        ) -> std::result::Result<
1795            tonic::Response<super::ResponsePrepareProposal>,
1796            tonic::Status,
1797        >;
1798        async fn process_proposal(
1799            &self,
1800            request: tonic::Request<super::RequestProcessProposal>,
1801        ) -> std::result::Result<
1802            tonic::Response<super::ResponseProcessProposal>,
1803            tonic::Status,
1804        >;
1805    }
1806    #[derive(Debug)]
1807    pub struct AbciApplicationServer<T> {
1808        inner: Arc<T>,
1809        accept_compression_encodings: EnabledCompressionEncodings,
1810        send_compression_encodings: EnabledCompressionEncodings,
1811        max_decoding_message_size: Option<usize>,
1812        max_encoding_message_size: Option<usize>,
1813    }
1814    impl<T> AbciApplicationServer<T> {
1815        pub fn new(inner: T) -> Self {
1816            Self::from_arc(Arc::new(inner))
1817        }
1818        pub fn from_arc(inner: Arc<T>) -> Self {
1819            Self {
1820                inner,
1821                accept_compression_encodings: Default::default(),
1822                send_compression_encodings: Default::default(),
1823                max_decoding_message_size: None,
1824                max_encoding_message_size: None,
1825            }
1826        }
1827        pub fn with_interceptor<F>(
1828            inner: T,
1829            interceptor: F,
1830        ) -> InterceptedService<Self, F>
1831        where
1832            F: tonic::service::Interceptor,
1833        {
1834            InterceptedService::new(Self::new(inner), interceptor)
1835        }
1836        /// Enable decompressing requests with the given encoding.
1837        #[must_use]
1838        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1839            self.accept_compression_encodings.enable(encoding);
1840            self
1841        }
1842        /// Compress responses with the given encoding, if the client supports it.
1843        #[must_use]
1844        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1845            self.send_compression_encodings.enable(encoding);
1846            self
1847        }
1848        /// Limits the maximum size of a decoded message.
1849        ///
1850        /// Default: `4MB`
1851        #[must_use]
1852        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1853            self.max_decoding_message_size = Some(limit);
1854            self
1855        }
1856        /// Limits the maximum size of an encoded message.
1857        ///
1858        /// Default: `usize::MAX`
1859        #[must_use]
1860        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1861            self.max_encoding_message_size = Some(limit);
1862            self
1863        }
1864    }
1865    impl<T, B> tonic::codegen::Service<http::Request<B>> for AbciApplicationServer<T>
1866    where
1867        T: AbciApplication,
1868        B: Body + std::marker::Send + 'static,
1869        B::Error: Into<StdError> + std::marker::Send + 'static,
1870    {
1871        type Response = http::Response<tonic::body::BoxBody>;
1872        type Error = std::convert::Infallible;
1873        type Future = BoxFuture<Self::Response, Self::Error>;
1874        fn poll_ready(
1875            &mut self,
1876            _cx: &mut Context<'_>,
1877        ) -> Poll<std::result::Result<(), Self::Error>> {
1878            Poll::Ready(Ok(()))
1879        }
1880        fn call(&mut self, req: http::Request<B>) -> Self::Future {
1881            match req.uri().path() {
1882                "/tendermint.abci.ABCIApplication/Echo" => {
1883                    #[allow(non_camel_case_types)]
1884                    struct EchoSvc<T: AbciApplication>(pub Arc<T>);
1885                    impl<
1886                        T: AbciApplication,
1887                    > tonic::server::UnaryService<super::RequestEcho> for EchoSvc<T> {
1888                        type Response = super::ResponseEcho;
1889                        type Future = BoxFuture<
1890                            tonic::Response<Self::Response>,
1891                            tonic::Status,
1892                        >;
1893                        fn call(
1894                            &mut self,
1895                            request: tonic::Request<super::RequestEcho>,
1896                        ) -> Self::Future {
1897                            let inner = Arc::clone(&self.0);
1898                            let fut = async move {
1899                                <T as AbciApplication>::echo(&inner, request).await
1900                            };
1901                            Box::pin(fut)
1902                        }
1903                    }
1904                    let accept_compression_encodings = self.accept_compression_encodings;
1905                    let send_compression_encodings = self.send_compression_encodings;
1906                    let max_decoding_message_size = self.max_decoding_message_size;
1907                    let max_encoding_message_size = self.max_encoding_message_size;
1908                    let inner = self.inner.clone();
1909                    let fut = async move {
1910                        let method = EchoSvc(inner);
1911                        let codec = tonic::codec::ProstCodec::default();
1912                        let mut grpc = tonic::server::Grpc::new(codec)
1913                            .apply_compression_config(
1914                                accept_compression_encodings,
1915                                send_compression_encodings,
1916                            )
1917                            .apply_max_message_size_config(
1918                                max_decoding_message_size,
1919                                max_encoding_message_size,
1920                            );
1921                        let res = grpc.unary(method, req).await;
1922                        Ok(res)
1923                    };
1924                    Box::pin(fut)
1925                }
1926                "/tendermint.abci.ABCIApplication/Flush" => {
1927                    #[allow(non_camel_case_types)]
1928                    struct FlushSvc<T: AbciApplication>(pub Arc<T>);
1929                    impl<
1930                        T: AbciApplication,
1931                    > tonic::server::UnaryService<super::RequestFlush> for FlushSvc<T> {
1932                        type Response = super::ResponseFlush;
1933                        type Future = BoxFuture<
1934                            tonic::Response<Self::Response>,
1935                            tonic::Status,
1936                        >;
1937                        fn call(
1938                            &mut self,
1939                            request: tonic::Request<super::RequestFlush>,
1940                        ) -> Self::Future {
1941                            let inner = Arc::clone(&self.0);
1942                            let fut = async move {
1943                                <T as AbciApplication>::flush(&inner, request).await
1944                            };
1945                            Box::pin(fut)
1946                        }
1947                    }
1948                    let accept_compression_encodings = self.accept_compression_encodings;
1949                    let send_compression_encodings = self.send_compression_encodings;
1950                    let max_decoding_message_size = self.max_decoding_message_size;
1951                    let max_encoding_message_size = self.max_encoding_message_size;
1952                    let inner = self.inner.clone();
1953                    let fut = async move {
1954                        let method = FlushSvc(inner);
1955                        let codec = tonic::codec::ProstCodec::default();
1956                        let mut grpc = tonic::server::Grpc::new(codec)
1957                            .apply_compression_config(
1958                                accept_compression_encodings,
1959                                send_compression_encodings,
1960                            )
1961                            .apply_max_message_size_config(
1962                                max_decoding_message_size,
1963                                max_encoding_message_size,
1964                            );
1965                        let res = grpc.unary(method, req).await;
1966                        Ok(res)
1967                    };
1968                    Box::pin(fut)
1969                }
1970                "/tendermint.abci.ABCIApplication/Info" => {
1971                    #[allow(non_camel_case_types)]
1972                    struct InfoSvc<T: AbciApplication>(pub Arc<T>);
1973                    impl<
1974                        T: AbciApplication,
1975                    > tonic::server::UnaryService<super::RequestInfo> for InfoSvc<T> {
1976                        type Response = super::ResponseInfo;
1977                        type Future = BoxFuture<
1978                            tonic::Response<Self::Response>,
1979                            tonic::Status,
1980                        >;
1981                        fn call(
1982                            &mut self,
1983                            request: tonic::Request<super::RequestInfo>,
1984                        ) -> Self::Future {
1985                            let inner = Arc::clone(&self.0);
1986                            let fut = async move {
1987                                <T as AbciApplication>::info(&inner, request).await
1988                            };
1989                            Box::pin(fut)
1990                        }
1991                    }
1992                    let accept_compression_encodings = self.accept_compression_encodings;
1993                    let send_compression_encodings = self.send_compression_encodings;
1994                    let max_decoding_message_size = self.max_decoding_message_size;
1995                    let max_encoding_message_size = self.max_encoding_message_size;
1996                    let inner = self.inner.clone();
1997                    let fut = async move {
1998                        let method = InfoSvc(inner);
1999                        let codec = tonic::codec::ProstCodec::default();
2000                        let mut grpc = tonic::server::Grpc::new(codec)
2001                            .apply_compression_config(
2002                                accept_compression_encodings,
2003                                send_compression_encodings,
2004                            )
2005                            .apply_max_message_size_config(
2006                                max_decoding_message_size,
2007                                max_encoding_message_size,
2008                            );
2009                        let res = grpc.unary(method, req).await;
2010                        Ok(res)
2011                    };
2012                    Box::pin(fut)
2013                }
2014                "/tendermint.abci.ABCIApplication/DeliverTx" => {
2015                    #[allow(non_camel_case_types)]
2016                    struct DeliverTxSvc<T: AbciApplication>(pub Arc<T>);
2017                    impl<
2018                        T: AbciApplication,
2019                    > tonic::server::UnaryService<super::RequestDeliverTx>
2020                    for DeliverTxSvc<T> {
2021                        type Response = super::ResponseDeliverTx;
2022                        type Future = BoxFuture<
2023                            tonic::Response<Self::Response>,
2024                            tonic::Status,
2025                        >;
2026                        fn call(
2027                            &mut self,
2028                            request: tonic::Request<super::RequestDeliverTx>,
2029                        ) -> Self::Future {
2030                            let inner = Arc::clone(&self.0);
2031                            let fut = async move {
2032                                <T as AbciApplication>::deliver_tx(&inner, request).await
2033                            };
2034                            Box::pin(fut)
2035                        }
2036                    }
2037                    let accept_compression_encodings = self.accept_compression_encodings;
2038                    let send_compression_encodings = self.send_compression_encodings;
2039                    let max_decoding_message_size = self.max_decoding_message_size;
2040                    let max_encoding_message_size = self.max_encoding_message_size;
2041                    let inner = self.inner.clone();
2042                    let fut = async move {
2043                        let method = DeliverTxSvc(inner);
2044                        let codec = tonic::codec::ProstCodec::default();
2045                        let mut grpc = tonic::server::Grpc::new(codec)
2046                            .apply_compression_config(
2047                                accept_compression_encodings,
2048                                send_compression_encodings,
2049                            )
2050                            .apply_max_message_size_config(
2051                                max_decoding_message_size,
2052                                max_encoding_message_size,
2053                            );
2054                        let res = grpc.unary(method, req).await;
2055                        Ok(res)
2056                    };
2057                    Box::pin(fut)
2058                }
2059                "/tendermint.abci.ABCIApplication/CheckTx" => {
2060                    #[allow(non_camel_case_types)]
2061                    struct CheckTxSvc<T: AbciApplication>(pub Arc<T>);
2062                    impl<
2063                        T: AbciApplication,
2064                    > tonic::server::UnaryService<super::RequestCheckTx>
2065                    for CheckTxSvc<T> {
2066                        type Response = super::ResponseCheckTx;
2067                        type Future = BoxFuture<
2068                            tonic::Response<Self::Response>,
2069                            tonic::Status,
2070                        >;
2071                        fn call(
2072                            &mut self,
2073                            request: tonic::Request<super::RequestCheckTx>,
2074                        ) -> Self::Future {
2075                            let inner = Arc::clone(&self.0);
2076                            let fut = async move {
2077                                <T as AbciApplication>::check_tx(&inner, request).await
2078                            };
2079                            Box::pin(fut)
2080                        }
2081                    }
2082                    let accept_compression_encodings = self.accept_compression_encodings;
2083                    let send_compression_encodings = self.send_compression_encodings;
2084                    let max_decoding_message_size = self.max_decoding_message_size;
2085                    let max_encoding_message_size = self.max_encoding_message_size;
2086                    let inner = self.inner.clone();
2087                    let fut = async move {
2088                        let method = CheckTxSvc(inner);
2089                        let codec = tonic::codec::ProstCodec::default();
2090                        let mut grpc = tonic::server::Grpc::new(codec)
2091                            .apply_compression_config(
2092                                accept_compression_encodings,
2093                                send_compression_encodings,
2094                            )
2095                            .apply_max_message_size_config(
2096                                max_decoding_message_size,
2097                                max_encoding_message_size,
2098                            );
2099                        let res = grpc.unary(method, req).await;
2100                        Ok(res)
2101                    };
2102                    Box::pin(fut)
2103                }
2104                "/tendermint.abci.ABCIApplication/Query" => {
2105                    #[allow(non_camel_case_types)]
2106                    struct QuerySvc<T: AbciApplication>(pub Arc<T>);
2107                    impl<
2108                        T: AbciApplication,
2109                    > tonic::server::UnaryService<super::RequestQuery> for QuerySvc<T> {
2110                        type Response = super::ResponseQuery;
2111                        type Future = BoxFuture<
2112                            tonic::Response<Self::Response>,
2113                            tonic::Status,
2114                        >;
2115                        fn call(
2116                            &mut self,
2117                            request: tonic::Request<super::RequestQuery>,
2118                        ) -> Self::Future {
2119                            let inner = Arc::clone(&self.0);
2120                            let fut = async move {
2121                                <T as AbciApplication>::query(&inner, request).await
2122                            };
2123                            Box::pin(fut)
2124                        }
2125                    }
2126                    let accept_compression_encodings = self.accept_compression_encodings;
2127                    let send_compression_encodings = self.send_compression_encodings;
2128                    let max_decoding_message_size = self.max_decoding_message_size;
2129                    let max_encoding_message_size = self.max_encoding_message_size;
2130                    let inner = self.inner.clone();
2131                    let fut = async move {
2132                        let method = QuerySvc(inner);
2133                        let codec = tonic::codec::ProstCodec::default();
2134                        let mut grpc = tonic::server::Grpc::new(codec)
2135                            .apply_compression_config(
2136                                accept_compression_encodings,
2137                                send_compression_encodings,
2138                            )
2139                            .apply_max_message_size_config(
2140                                max_decoding_message_size,
2141                                max_encoding_message_size,
2142                            );
2143                        let res = grpc.unary(method, req).await;
2144                        Ok(res)
2145                    };
2146                    Box::pin(fut)
2147                }
2148                "/tendermint.abci.ABCIApplication/Commit" => {
2149                    #[allow(non_camel_case_types)]
2150                    struct CommitSvc<T: AbciApplication>(pub Arc<T>);
2151                    impl<
2152                        T: AbciApplication,
2153                    > tonic::server::UnaryService<super::RequestCommit>
2154                    for CommitSvc<T> {
2155                        type Response = super::ResponseCommit;
2156                        type Future = BoxFuture<
2157                            tonic::Response<Self::Response>,
2158                            tonic::Status,
2159                        >;
2160                        fn call(
2161                            &mut self,
2162                            request: tonic::Request<super::RequestCommit>,
2163                        ) -> Self::Future {
2164                            let inner = Arc::clone(&self.0);
2165                            let fut = async move {
2166                                <T as AbciApplication>::commit(&inner, request).await
2167                            };
2168                            Box::pin(fut)
2169                        }
2170                    }
2171                    let accept_compression_encodings = self.accept_compression_encodings;
2172                    let send_compression_encodings = self.send_compression_encodings;
2173                    let max_decoding_message_size = self.max_decoding_message_size;
2174                    let max_encoding_message_size = self.max_encoding_message_size;
2175                    let inner = self.inner.clone();
2176                    let fut = async move {
2177                        let method = CommitSvc(inner);
2178                        let codec = tonic::codec::ProstCodec::default();
2179                        let mut grpc = tonic::server::Grpc::new(codec)
2180                            .apply_compression_config(
2181                                accept_compression_encodings,
2182                                send_compression_encodings,
2183                            )
2184                            .apply_max_message_size_config(
2185                                max_decoding_message_size,
2186                                max_encoding_message_size,
2187                            );
2188                        let res = grpc.unary(method, req).await;
2189                        Ok(res)
2190                    };
2191                    Box::pin(fut)
2192                }
2193                "/tendermint.abci.ABCIApplication/InitChain" => {
2194                    #[allow(non_camel_case_types)]
2195                    struct InitChainSvc<T: AbciApplication>(pub Arc<T>);
2196                    impl<
2197                        T: AbciApplication,
2198                    > tonic::server::UnaryService<super::RequestInitChain>
2199                    for InitChainSvc<T> {
2200                        type Response = super::ResponseInitChain;
2201                        type Future = BoxFuture<
2202                            tonic::Response<Self::Response>,
2203                            tonic::Status,
2204                        >;
2205                        fn call(
2206                            &mut self,
2207                            request: tonic::Request<super::RequestInitChain>,
2208                        ) -> Self::Future {
2209                            let inner = Arc::clone(&self.0);
2210                            let fut = async move {
2211                                <T as AbciApplication>::init_chain(&inner, request).await
2212                            };
2213                            Box::pin(fut)
2214                        }
2215                    }
2216                    let accept_compression_encodings = self.accept_compression_encodings;
2217                    let send_compression_encodings = self.send_compression_encodings;
2218                    let max_decoding_message_size = self.max_decoding_message_size;
2219                    let max_encoding_message_size = self.max_encoding_message_size;
2220                    let inner = self.inner.clone();
2221                    let fut = async move {
2222                        let method = InitChainSvc(inner);
2223                        let codec = tonic::codec::ProstCodec::default();
2224                        let mut grpc = tonic::server::Grpc::new(codec)
2225                            .apply_compression_config(
2226                                accept_compression_encodings,
2227                                send_compression_encodings,
2228                            )
2229                            .apply_max_message_size_config(
2230                                max_decoding_message_size,
2231                                max_encoding_message_size,
2232                            );
2233                        let res = grpc.unary(method, req).await;
2234                        Ok(res)
2235                    };
2236                    Box::pin(fut)
2237                }
2238                "/tendermint.abci.ABCIApplication/BeginBlock" => {
2239                    #[allow(non_camel_case_types)]
2240                    struct BeginBlockSvc<T: AbciApplication>(pub Arc<T>);
2241                    impl<
2242                        T: AbciApplication,
2243                    > tonic::server::UnaryService<super::RequestBeginBlock>
2244                    for BeginBlockSvc<T> {
2245                        type Response = super::ResponseBeginBlock;
2246                        type Future = BoxFuture<
2247                            tonic::Response<Self::Response>,
2248                            tonic::Status,
2249                        >;
2250                        fn call(
2251                            &mut self,
2252                            request: tonic::Request<super::RequestBeginBlock>,
2253                        ) -> Self::Future {
2254                            let inner = Arc::clone(&self.0);
2255                            let fut = async move {
2256                                <T as AbciApplication>::begin_block(&inner, request).await
2257                            };
2258                            Box::pin(fut)
2259                        }
2260                    }
2261                    let accept_compression_encodings = self.accept_compression_encodings;
2262                    let send_compression_encodings = self.send_compression_encodings;
2263                    let max_decoding_message_size = self.max_decoding_message_size;
2264                    let max_encoding_message_size = self.max_encoding_message_size;
2265                    let inner = self.inner.clone();
2266                    let fut = async move {
2267                        let method = BeginBlockSvc(inner);
2268                        let codec = tonic::codec::ProstCodec::default();
2269                        let mut grpc = tonic::server::Grpc::new(codec)
2270                            .apply_compression_config(
2271                                accept_compression_encodings,
2272                                send_compression_encodings,
2273                            )
2274                            .apply_max_message_size_config(
2275                                max_decoding_message_size,
2276                                max_encoding_message_size,
2277                            );
2278                        let res = grpc.unary(method, req).await;
2279                        Ok(res)
2280                    };
2281                    Box::pin(fut)
2282                }
2283                "/tendermint.abci.ABCIApplication/EndBlock" => {
2284                    #[allow(non_camel_case_types)]
2285                    struct EndBlockSvc<T: AbciApplication>(pub Arc<T>);
2286                    impl<
2287                        T: AbciApplication,
2288                    > tonic::server::UnaryService<super::RequestEndBlock>
2289                    for EndBlockSvc<T> {
2290                        type Response = super::ResponseEndBlock;
2291                        type Future = BoxFuture<
2292                            tonic::Response<Self::Response>,
2293                            tonic::Status,
2294                        >;
2295                        fn call(
2296                            &mut self,
2297                            request: tonic::Request<super::RequestEndBlock>,
2298                        ) -> Self::Future {
2299                            let inner = Arc::clone(&self.0);
2300                            let fut = async move {
2301                                <T as AbciApplication>::end_block(&inner, request).await
2302                            };
2303                            Box::pin(fut)
2304                        }
2305                    }
2306                    let accept_compression_encodings = self.accept_compression_encodings;
2307                    let send_compression_encodings = self.send_compression_encodings;
2308                    let max_decoding_message_size = self.max_decoding_message_size;
2309                    let max_encoding_message_size = self.max_encoding_message_size;
2310                    let inner = self.inner.clone();
2311                    let fut = async move {
2312                        let method = EndBlockSvc(inner);
2313                        let codec = tonic::codec::ProstCodec::default();
2314                        let mut grpc = tonic::server::Grpc::new(codec)
2315                            .apply_compression_config(
2316                                accept_compression_encodings,
2317                                send_compression_encodings,
2318                            )
2319                            .apply_max_message_size_config(
2320                                max_decoding_message_size,
2321                                max_encoding_message_size,
2322                            );
2323                        let res = grpc.unary(method, req).await;
2324                        Ok(res)
2325                    };
2326                    Box::pin(fut)
2327                }
2328                "/tendermint.abci.ABCIApplication/ListSnapshots" => {
2329                    #[allow(non_camel_case_types)]
2330                    struct ListSnapshotsSvc<T: AbciApplication>(pub Arc<T>);
2331                    impl<
2332                        T: AbciApplication,
2333                    > tonic::server::UnaryService<super::RequestListSnapshots>
2334                    for ListSnapshotsSvc<T> {
2335                        type Response = super::ResponseListSnapshots;
2336                        type Future = BoxFuture<
2337                            tonic::Response<Self::Response>,
2338                            tonic::Status,
2339                        >;
2340                        fn call(
2341                            &mut self,
2342                            request: tonic::Request<super::RequestListSnapshots>,
2343                        ) -> Self::Future {
2344                            let inner = Arc::clone(&self.0);
2345                            let fut = async move {
2346                                <T as AbciApplication>::list_snapshots(&inner, request)
2347                                    .await
2348                            };
2349                            Box::pin(fut)
2350                        }
2351                    }
2352                    let accept_compression_encodings = self.accept_compression_encodings;
2353                    let send_compression_encodings = self.send_compression_encodings;
2354                    let max_decoding_message_size = self.max_decoding_message_size;
2355                    let max_encoding_message_size = self.max_encoding_message_size;
2356                    let inner = self.inner.clone();
2357                    let fut = async move {
2358                        let method = ListSnapshotsSvc(inner);
2359                        let codec = tonic::codec::ProstCodec::default();
2360                        let mut grpc = tonic::server::Grpc::new(codec)
2361                            .apply_compression_config(
2362                                accept_compression_encodings,
2363                                send_compression_encodings,
2364                            )
2365                            .apply_max_message_size_config(
2366                                max_decoding_message_size,
2367                                max_encoding_message_size,
2368                            );
2369                        let res = grpc.unary(method, req).await;
2370                        Ok(res)
2371                    };
2372                    Box::pin(fut)
2373                }
2374                "/tendermint.abci.ABCIApplication/OfferSnapshot" => {
2375                    #[allow(non_camel_case_types)]
2376                    struct OfferSnapshotSvc<T: AbciApplication>(pub Arc<T>);
2377                    impl<
2378                        T: AbciApplication,
2379                    > tonic::server::UnaryService<super::RequestOfferSnapshot>
2380                    for OfferSnapshotSvc<T> {
2381                        type Response = super::ResponseOfferSnapshot;
2382                        type Future = BoxFuture<
2383                            tonic::Response<Self::Response>,
2384                            tonic::Status,
2385                        >;
2386                        fn call(
2387                            &mut self,
2388                            request: tonic::Request<super::RequestOfferSnapshot>,
2389                        ) -> Self::Future {
2390                            let inner = Arc::clone(&self.0);
2391                            let fut = async move {
2392                                <T as AbciApplication>::offer_snapshot(&inner, request)
2393                                    .await
2394                            };
2395                            Box::pin(fut)
2396                        }
2397                    }
2398                    let accept_compression_encodings = self.accept_compression_encodings;
2399                    let send_compression_encodings = self.send_compression_encodings;
2400                    let max_decoding_message_size = self.max_decoding_message_size;
2401                    let max_encoding_message_size = self.max_encoding_message_size;
2402                    let inner = self.inner.clone();
2403                    let fut = async move {
2404                        let method = OfferSnapshotSvc(inner);
2405                        let codec = tonic::codec::ProstCodec::default();
2406                        let mut grpc = tonic::server::Grpc::new(codec)
2407                            .apply_compression_config(
2408                                accept_compression_encodings,
2409                                send_compression_encodings,
2410                            )
2411                            .apply_max_message_size_config(
2412                                max_decoding_message_size,
2413                                max_encoding_message_size,
2414                            );
2415                        let res = grpc.unary(method, req).await;
2416                        Ok(res)
2417                    };
2418                    Box::pin(fut)
2419                }
2420                "/tendermint.abci.ABCIApplication/LoadSnapshotChunk" => {
2421                    #[allow(non_camel_case_types)]
2422                    struct LoadSnapshotChunkSvc<T: AbciApplication>(pub Arc<T>);
2423                    impl<
2424                        T: AbciApplication,
2425                    > tonic::server::UnaryService<super::RequestLoadSnapshotChunk>
2426                    for LoadSnapshotChunkSvc<T> {
2427                        type Response = super::ResponseLoadSnapshotChunk;
2428                        type Future = BoxFuture<
2429                            tonic::Response<Self::Response>,
2430                            tonic::Status,
2431                        >;
2432                        fn call(
2433                            &mut self,
2434                            request: tonic::Request<super::RequestLoadSnapshotChunk>,
2435                        ) -> Self::Future {
2436                            let inner = Arc::clone(&self.0);
2437                            let fut = async move {
2438                                <T as AbciApplication>::load_snapshot_chunk(&inner, request)
2439                                    .await
2440                            };
2441                            Box::pin(fut)
2442                        }
2443                    }
2444                    let accept_compression_encodings = self.accept_compression_encodings;
2445                    let send_compression_encodings = self.send_compression_encodings;
2446                    let max_decoding_message_size = self.max_decoding_message_size;
2447                    let max_encoding_message_size = self.max_encoding_message_size;
2448                    let inner = self.inner.clone();
2449                    let fut = async move {
2450                        let method = LoadSnapshotChunkSvc(inner);
2451                        let codec = tonic::codec::ProstCodec::default();
2452                        let mut grpc = tonic::server::Grpc::new(codec)
2453                            .apply_compression_config(
2454                                accept_compression_encodings,
2455                                send_compression_encodings,
2456                            )
2457                            .apply_max_message_size_config(
2458                                max_decoding_message_size,
2459                                max_encoding_message_size,
2460                            );
2461                        let res = grpc.unary(method, req).await;
2462                        Ok(res)
2463                    };
2464                    Box::pin(fut)
2465                }
2466                "/tendermint.abci.ABCIApplication/ApplySnapshotChunk" => {
2467                    #[allow(non_camel_case_types)]
2468                    struct ApplySnapshotChunkSvc<T: AbciApplication>(pub Arc<T>);
2469                    impl<
2470                        T: AbciApplication,
2471                    > tonic::server::UnaryService<super::RequestApplySnapshotChunk>
2472                    for ApplySnapshotChunkSvc<T> {
2473                        type Response = super::ResponseApplySnapshotChunk;
2474                        type Future = BoxFuture<
2475                            tonic::Response<Self::Response>,
2476                            tonic::Status,
2477                        >;
2478                        fn call(
2479                            &mut self,
2480                            request: tonic::Request<super::RequestApplySnapshotChunk>,
2481                        ) -> Self::Future {
2482                            let inner = Arc::clone(&self.0);
2483                            let fut = async move {
2484                                <T as AbciApplication>::apply_snapshot_chunk(
2485                                        &inner,
2486                                        request,
2487                                    )
2488                                    .await
2489                            };
2490                            Box::pin(fut)
2491                        }
2492                    }
2493                    let accept_compression_encodings = self.accept_compression_encodings;
2494                    let send_compression_encodings = self.send_compression_encodings;
2495                    let max_decoding_message_size = self.max_decoding_message_size;
2496                    let max_encoding_message_size = self.max_encoding_message_size;
2497                    let inner = self.inner.clone();
2498                    let fut = async move {
2499                        let method = ApplySnapshotChunkSvc(inner);
2500                        let codec = tonic::codec::ProstCodec::default();
2501                        let mut grpc = tonic::server::Grpc::new(codec)
2502                            .apply_compression_config(
2503                                accept_compression_encodings,
2504                                send_compression_encodings,
2505                            )
2506                            .apply_max_message_size_config(
2507                                max_decoding_message_size,
2508                                max_encoding_message_size,
2509                            );
2510                        let res = grpc.unary(method, req).await;
2511                        Ok(res)
2512                    };
2513                    Box::pin(fut)
2514                }
2515                "/tendermint.abci.ABCIApplication/PrepareProposal" => {
2516                    #[allow(non_camel_case_types)]
2517                    struct PrepareProposalSvc<T: AbciApplication>(pub Arc<T>);
2518                    impl<
2519                        T: AbciApplication,
2520                    > tonic::server::UnaryService<super::RequestPrepareProposal>
2521                    for PrepareProposalSvc<T> {
2522                        type Response = super::ResponsePrepareProposal;
2523                        type Future = BoxFuture<
2524                            tonic::Response<Self::Response>,
2525                            tonic::Status,
2526                        >;
2527                        fn call(
2528                            &mut self,
2529                            request: tonic::Request<super::RequestPrepareProposal>,
2530                        ) -> Self::Future {
2531                            let inner = Arc::clone(&self.0);
2532                            let fut = async move {
2533                                <T as AbciApplication>::prepare_proposal(&inner, request)
2534                                    .await
2535                            };
2536                            Box::pin(fut)
2537                        }
2538                    }
2539                    let accept_compression_encodings = self.accept_compression_encodings;
2540                    let send_compression_encodings = self.send_compression_encodings;
2541                    let max_decoding_message_size = self.max_decoding_message_size;
2542                    let max_encoding_message_size = self.max_encoding_message_size;
2543                    let inner = self.inner.clone();
2544                    let fut = async move {
2545                        let method = PrepareProposalSvc(inner);
2546                        let codec = tonic::codec::ProstCodec::default();
2547                        let mut grpc = tonic::server::Grpc::new(codec)
2548                            .apply_compression_config(
2549                                accept_compression_encodings,
2550                                send_compression_encodings,
2551                            )
2552                            .apply_max_message_size_config(
2553                                max_decoding_message_size,
2554                                max_encoding_message_size,
2555                            );
2556                        let res = grpc.unary(method, req).await;
2557                        Ok(res)
2558                    };
2559                    Box::pin(fut)
2560                }
2561                "/tendermint.abci.ABCIApplication/ProcessProposal" => {
2562                    #[allow(non_camel_case_types)]
2563                    struct ProcessProposalSvc<T: AbciApplication>(pub Arc<T>);
2564                    impl<
2565                        T: AbciApplication,
2566                    > tonic::server::UnaryService<super::RequestProcessProposal>
2567                    for ProcessProposalSvc<T> {
2568                        type Response = super::ResponseProcessProposal;
2569                        type Future = BoxFuture<
2570                            tonic::Response<Self::Response>,
2571                            tonic::Status,
2572                        >;
2573                        fn call(
2574                            &mut self,
2575                            request: tonic::Request<super::RequestProcessProposal>,
2576                        ) -> Self::Future {
2577                            let inner = Arc::clone(&self.0);
2578                            let fut = async move {
2579                                <T as AbciApplication>::process_proposal(&inner, request)
2580                                    .await
2581                            };
2582                            Box::pin(fut)
2583                        }
2584                    }
2585                    let accept_compression_encodings = self.accept_compression_encodings;
2586                    let send_compression_encodings = self.send_compression_encodings;
2587                    let max_decoding_message_size = self.max_decoding_message_size;
2588                    let max_encoding_message_size = self.max_encoding_message_size;
2589                    let inner = self.inner.clone();
2590                    let fut = async move {
2591                        let method = ProcessProposalSvc(inner);
2592                        let codec = tonic::codec::ProstCodec::default();
2593                        let mut grpc = tonic::server::Grpc::new(codec)
2594                            .apply_compression_config(
2595                                accept_compression_encodings,
2596                                send_compression_encodings,
2597                            )
2598                            .apply_max_message_size_config(
2599                                max_decoding_message_size,
2600                                max_encoding_message_size,
2601                            );
2602                        let res = grpc.unary(method, req).await;
2603                        Ok(res)
2604                    };
2605                    Box::pin(fut)
2606                }
2607                _ => {
2608                    Box::pin(async move {
2609                        let mut response = http::Response::new(empty_body());
2610                        let headers = response.headers_mut();
2611                        headers
2612                            .insert(
2613                                tonic::Status::GRPC_STATUS,
2614                                (tonic::Code::Unimplemented as i32).into(),
2615                            );
2616                        headers
2617                            .insert(
2618                                http::header::CONTENT_TYPE,
2619                                tonic::metadata::GRPC_CONTENT_TYPE,
2620                            );
2621                        Ok(response)
2622                    })
2623                }
2624            }
2625        }
2626    }
2627    impl<T> Clone for AbciApplicationServer<T> {
2628        fn clone(&self) -> Self {
2629            let inner = self.inner.clone();
2630            Self {
2631                inner,
2632                accept_compression_encodings: self.accept_compression_encodings,
2633                send_compression_encodings: self.send_compression_encodings,
2634                max_decoding_message_size: self.max_decoding_message_size,
2635                max_encoding_message_size: self.max_encoding_message_size,
2636            }
2637        }
2638    }
2639    /// Generated gRPC service name
2640    pub const SERVICE_NAME: &str = "tendermint.abci.ABCIApplication";
2641    impl<T> tonic::server::NamedService for AbciApplicationServer<T> {
2642        const NAME: &'static str = SERVICE_NAME;
2643    }
2644}