ibc_proto/prost/
ibc.core.channel.v1.rs

1// This file is @generated by prost-build.
2/// Channel defines pipeline for exactly-once packet delivery between specific
3/// modules on separate blockchains, which has at least one end capable of
4/// sending packets and one end capable of receiving packets.
5#[cfg_attr(
6    all(feature = "json-schema", feature = "serde"),
7    derive(::schemars::JsonSchema)
8)]
9#[derive(Clone, PartialEq, ::prost::Message)]
10pub struct Channel {
11    /// current state of the channel end
12    #[prost(enumeration = "State", tag = "1")]
13    pub state: i32,
14    /// whether the channel is ordered or unordered
15    #[prost(enumeration = "Order", tag = "2")]
16    pub ordering: i32,
17    /// counterparty channel end
18    #[prost(message, optional, tag = "3")]
19    pub counterparty: ::core::option::Option<Counterparty>,
20    /// list of connection identifiers, in order, along which packets sent on
21    /// this channel will travel
22    #[prost(string, repeated, tag = "4")]
23    pub connection_hops: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24    /// opaque channel version, which is agreed upon during the handshake
25    #[prost(string, tag = "5")]
26    pub version: ::prost::alloc::string::String,
27    /// upgrade sequence indicates the latest upgrade attempt performed by this channel
28    /// the value of 0 indicates the channel has never been upgraded
29    #[prost(uint64, tag = "6")]
30    pub upgrade_sequence: u64,
31}
32impl ::prost::Name for Channel {
33    const NAME: &'static str = "Channel";
34    const PACKAGE: &'static str = "ibc.core.channel.v1";
35    fn full_name() -> ::prost::alloc::string::String {
36        "ibc.core.channel.v1.Channel".into()
37    }
38    fn type_url() -> ::prost::alloc::string::String {
39        "/ibc.core.channel.v1.Channel".into()
40    }
41}
42/// IdentifiedChannel defines a channel with additional port and channel
43/// identifier fields.
44#[derive(Clone, PartialEq, ::prost::Message)]
45pub struct IdentifiedChannel {
46    /// current state of the channel end
47    #[prost(enumeration = "State", tag = "1")]
48    pub state: i32,
49    /// whether the channel is ordered or unordered
50    #[prost(enumeration = "Order", tag = "2")]
51    pub ordering: i32,
52    /// counterparty channel end
53    #[prost(message, optional, tag = "3")]
54    pub counterparty: ::core::option::Option<Counterparty>,
55    /// list of connection identifiers, in order, along which packets sent on
56    /// this channel will travel
57    #[prost(string, repeated, tag = "4")]
58    pub connection_hops: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
59    /// opaque channel version, which is agreed upon during the handshake
60    #[prost(string, tag = "5")]
61    pub version: ::prost::alloc::string::String,
62    /// port identifier
63    #[prost(string, tag = "6")]
64    pub port_id: ::prost::alloc::string::String,
65    /// channel identifier
66    #[prost(string, tag = "7")]
67    pub channel_id: ::prost::alloc::string::String,
68    /// upgrade sequence indicates the latest upgrade attempt performed by this channel
69    /// the value of 0 indicates the channel has never been upgraded
70    #[prost(uint64, tag = "8")]
71    pub upgrade_sequence: u64,
72}
73impl ::prost::Name for IdentifiedChannel {
74    const NAME: &'static str = "IdentifiedChannel";
75    const PACKAGE: &'static str = "ibc.core.channel.v1";
76    fn full_name() -> ::prost::alloc::string::String {
77        "ibc.core.channel.v1.IdentifiedChannel".into()
78    }
79    fn type_url() -> ::prost::alloc::string::String {
80        "/ibc.core.channel.v1.IdentifiedChannel".into()
81    }
82}
83/// Counterparty defines a channel end counterparty
84#[cfg_attr(
85    all(feature = "json-schema", feature = "serde"),
86    derive(::schemars::JsonSchema)
87)]
88#[derive(Clone, PartialEq, ::prost::Message)]
89pub struct Counterparty {
90    /// port on the counterparty chain which owns the other end of the channel.
91    #[prost(string, tag = "1")]
92    pub port_id: ::prost::alloc::string::String,
93    /// channel end on the counterparty chain
94    #[prost(string, tag = "2")]
95    pub channel_id: ::prost::alloc::string::String,
96}
97impl ::prost::Name for Counterparty {
98    const NAME: &'static str = "Counterparty";
99    const PACKAGE: &'static str = "ibc.core.channel.v1";
100    fn full_name() -> ::prost::alloc::string::String {
101        "ibc.core.channel.v1.Counterparty".into()
102    }
103    fn type_url() -> ::prost::alloc::string::String {
104        "/ibc.core.channel.v1.Counterparty".into()
105    }
106}
107/// Packet defines a type that carries data across different chains through IBC
108#[derive(Clone, PartialEq, ::prost::Message)]
109pub struct Packet {
110    /// number corresponds to the order of sends and receives, where a Packet
111    /// with an earlier sequence number must be sent and received before a Packet
112    /// with a later sequence number.
113    #[prost(uint64, tag = "1")]
114    pub sequence: u64,
115    /// identifies the port on the sending chain.
116    #[prost(string, tag = "2")]
117    pub source_port: ::prost::alloc::string::String,
118    /// identifies the channel end on the sending chain.
119    #[prost(string, tag = "3")]
120    pub source_channel: ::prost::alloc::string::String,
121    /// identifies the port on the receiving chain.
122    #[prost(string, tag = "4")]
123    pub destination_port: ::prost::alloc::string::String,
124    /// identifies the channel end on the receiving chain.
125    #[prost(string, tag = "5")]
126    pub destination_channel: ::prost::alloc::string::String,
127    /// actual opaque bytes transferred directly to the application module
128    #[prost(bytes = "vec", tag = "6")]
129    pub data: ::prost::alloc::vec::Vec<u8>,
130    /// block height after which the packet times out
131    #[prost(message, optional, tag = "7")]
132    pub timeout_height: ::core::option::Option<super::super::client::v1::Height>,
133    /// block timestamp (in nanoseconds) after which the packet times out
134    #[prost(uint64, tag = "8")]
135    pub timeout_timestamp: u64,
136}
137impl ::prost::Name for Packet {
138    const NAME: &'static str = "Packet";
139    const PACKAGE: &'static str = "ibc.core.channel.v1";
140    fn full_name() -> ::prost::alloc::string::String {
141        "ibc.core.channel.v1.Packet".into()
142    }
143    fn type_url() -> ::prost::alloc::string::String {
144        "/ibc.core.channel.v1.Packet".into()
145    }
146}
147/// PacketState defines the generic type necessary to retrieve and store
148/// packet commitments, acknowledgements, and receipts.
149/// Caller is responsible for knowing the context necessary to interpret this
150/// state as a commitment, acknowledgement, or a receipt.
151#[derive(Clone, PartialEq, ::prost::Message)]
152pub struct PacketState {
153    /// channel port identifier.
154    #[prost(string, tag = "1")]
155    pub port_id: ::prost::alloc::string::String,
156    /// channel unique identifier.
157    #[prost(string, tag = "2")]
158    pub channel_id: ::prost::alloc::string::String,
159    /// packet sequence.
160    #[prost(uint64, tag = "3")]
161    pub sequence: u64,
162    /// embedded data that represents packet state.
163    #[prost(bytes = "vec", tag = "4")]
164    pub data: ::prost::alloc::vec::Vec<u8>,
165}
166impl ::prost::Name for PacketState {
167    const NAME: &'static str = "PacketState";
168    const PACKAGE: &'static str = "ibc.core.channel.v1";
169    fn full_name() -> ::prost::alloc::string::String {
170        "ibc.core.channel.v1.PacketState".into()
171    }
172    fn type_url() -> ::prost::alloc::string::String {
173        "/ibc.core.channel.v1.PacketState".into()
174    }
175}
176/// PacketId is an identifer for a unique Packet
177/// Source chains refer to packets by source port/channel
178/// Destination chains refer to packets by destination port/channel
179#[derive(Clone, PartialEq, ::prost::Message)]
180pub struct PacketId {
181    /// channel port identifier
182    #[prost(string, tag = "1")]
183    pub port_id: ::prost::alloc::string::String,
184    /// channel unique identifier
185    #[prost(string, tag = "2")]
186    pub channel_id: ::prost::alloc::string::String,
187    /// packet sequence
188    #[prost(uint64, tag = "3")]
189    pub sequence: u64,
190}
191impl ::prost::Name for PacketId {
192    const NAME: &'static str = "PacketId";
193    const PACKAGE: &'static str = "ibc.core.channel.v1";
194    fn full_name() -> ::prost::alloc::string::String {
195        "ibc.core.channel.v1.PacketId".into()
196    }
197    fn type_url() -> ::prost::alloc::string::String {
198        "/ibc.core.channel.v1.PacketId".into()
199    }
200}
201/// Acknowledgement is the recommended acknowledgement format to be used by
202/// app-specific protocols.
203/// NOTE: The field numbers 21 and 22 were explicitly chosen to avoid accidental
204/// conflicts with other protobuf message formats used for acknowledgements.
205/// The first byte of any message with this format will be the non-ASCII values
206/// `0xaa` (result) or `0xb2` (error). Implemented as defined by ICS:
207/// <https://github.com/cosmos/ibc/tree/master/spec/core/ics-004-channel-and-packet-semantics#acknowledgement-envelope>
208#[derive(Clone, PartialEq, ::prost::Message)]
209pub struct Acknowledgement {
210    /// response contains either a result or an error and must be non-empty
211    #[prost(oneof = "acknowledgement::Response", tags = "21, 22")]
212    pub response: ::core::option::Option<acknowledgement::Response>,
213}
214/// Nested message and enum types in `Acknowledgement`.
215pub mod acknowledgement {
216    /// response contains either a result or an error and must be non-empty
217    #[derive(Clone, PartialEq, ::prost::Oneof)]
218    pub enum Response {
219        #[prost(bytes, tag = "21")]
220        Result(::prost::alloc::vec::Vec<u8>),
221        #[prost(string, tag = "22")]
222        Error(::prost::alloc::string::String),
223    }
224}
225impl ::prost::Name for Acknowledgement {
226    const NAME: &'static str = "Acknowledgement";
227    const PACKAGE: &'static str = "ibc.core.channel.v1";
228    fn full_name() -> ::prost::alloc::string::String {
229        "ibc.core.channel.v1.Acknowledgement".into()
230    }
231    fn type_url() -> ::prost::alloc::string::String {
232        "/ibc.core.channel.v1.Acknowledgement".into()
233    }
234}
235/// Timeout defines an execution deadline structure for 04-channel handlers.
236/// This includes packet lifecycle handlers as well as the upgrade handshake handlers.
237/// A valid Timeout contains either one or both of a timestamp and block height (sequence).
238#[derive(Clone, Copy, PartialEq, ::prost::Message)]
239pub struct Timeout {
240    /// block height after which the packet or upgrade times out
241    #[prost(message, optional, tag = "1")]
242    pub height: ::core::option::Option<super::super::client::v1::Height>,
243    /// block timestamp (in nanoseconds) after which the packet or upgrade times out
244    #[prost(uint64, tag = "2")]
245    pub timestamp: u64,
246}
247impl ::prost::Name for Timeout {
248    const NAME: &'static str = "Timeout";
249    const PACKAGE: &'static str = "ibc.core.channel.v1";
250    fn full_name() -> ::prost::alloc::string::String {
251        "ibc.core.channel.v1.Timeout".into()
252    }
253    fn type_url() -> ::prost::alloc::string::String {
254        "/ibc.core.channel.v1.Timeout".into()
255    }
256}
257/// Params defines the set of IBC channel parameters.
258#[derive(Clone, Copy, PartialEq, ::prost::Message)]
259pub struct Params {
260    /// the relative timeout after which channel upgrades will time out.
261    #[prost(message, optional, tag = "1")]
262    pub upgrade_timeout: ::core::option::Option<Timeout>,
263}
264impl ::prost::Name for Params {
265    const NAME: &'static str = "Params";
266    const PACKAGE: &'static str = "ibc.core.channel.v1";
267    fn full_name() -> ::prost::alloc::string::String {
268        "ibc.core.channel.v1.Params".into()
269    }
270    fn type_url() -> ::prost::alloc::string::String {
271        "/ibc.core.channel.v1.Params".into()
272    }
273}
274/// State defines if a channel is in one of the following states:
275/// CLOSED, INIT, TRYOPEN, OPEN, FLUSHING, FLUSHCOMPLETE or UNINITIALIZED.
276#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
277#[repr(i32)]
278pub enum State {
279    /// Default State
280    UninitializedUnspecified = 0,
281    /// A channel has just started the opening handshake.
282    Init = 1,
283    /// A channel has acknowledged the handshake step on the counterparty chain.
284    Tryopen = 2,
285    /// A channel has completed the handshake. Open channels are
286    /// ready to send and receive packets.
287    Open = 3,
288    /// A channel has been closed and can no longer be used to send or receive
289    /// packets.
290    Closed = 4,
291    /// A channel has just accepted the upgrade handshake attempt and is flushing in-flight packets.
292    Flushing = 5,
293    /// A channel has just completed flushing any in-flight packets.
294    Flushcomplete = 6,
295}
296impl State {
297    /// String value of the enum field names used in the ProtoBuf definition.
298    ///
299    /// The values are not transformed in any way and thus are considered stable
300    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
301    pub fn as_str_name(&self) -> &'static str {
302        match self {
303            Self::UninitializedUnspecified => "STATE_UNINITIALIZED_UNSPECIFIED",
304            Self::Init => "STATE_INIT",
305            Self::Tryopen => "STATE_TRYOPEN",
306            Self::Open => "STATE_OPEN",
307            Self::Closed => "STATE_CLOSED",
308            Self::Flushing => "STATE_FLUSHING",
309            Self::Flushcomplete => "STATE_FLUSHCOMPLETE",
310        }
311    }
312    /// Creates an enum from field names used in the ProtoBuf definition.
313    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
314        match value {
315            "STATE_UNINITIALIZED_UNSPECIFIED" => Some(Self::UninitializedUnspecified),
316            "STATE_INIT" => Some(Self::Init),
317            "STATE_TRYOPEN" => Some(Self::Tryopen),
318            "STATE_OPEN" => Some(Self::Open),
319            "STATE_CLOSED" => Some(Self::Closed),
320            "STATE_FLUSHING" => Some(Self::Flushing),
321            "STATE_FLUSHCOMPLETE" => Some(Self::Flushcomplete),
322            _ => None,
323        }
324    }
325}
326/// Order defines if a channel is ORDERED or UNORDERED
327#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
328#[repr(i32)]
329pub enum Order {
330    /// zero-value for channel ordering
331    NoneUnspecified = 0,
332    /// packets can be delivered in any order, which may differ from the order in
333    /// which they were sent.
334    Unordered = 1,
335    /// packets are delivered exactly in the order which they were sent
336    Ordered = 2,
337}
338impl Order {
339    /// String value of the enum field names used in the ProtoBuf definition.
340    ///
341    /// The values are not transformed in any way and thus are considered stable
342    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
343    pub fn as_str_name(&self) -> &'static str {
344        match self {
345            Self::NoneUnspecified => "ORDER_NONE_UNSPECIFIED",
346            Self::Unordered => "ORDER_UNORDERED",
347            Self::Ordered => "ORDER_ORDERED",
348        }
349    }
350    /// Creates an enum from field names used in the ProtoBuf definition.
351    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
352        match value {
353            "ORDER_NONE_UNSPECIFIED" => Some(Self::NoneUnspecified),
354            "ORDER_UNORDERED" => Some(Self::Unordered),
355            "ORDER_ORDERED" => Some(Self::Ordered),
356            _ => None,
357        }
358    }
359}
360/// GenesisState defines the ibc channel submodule's genesis state.
361#[derive(Clone, PartialEq, ::prost::Message)]
362pub struct GenesisState {
363    #[prost(message, repeated, tag = "1")]
364    pub channels: ::prost::alloc::vec::Vec<IdentifiedChannel>,
365    #[prost(message, repeated, tag = "2")]
366    pub acknowledgements: ::prost::alloc::vec::Vec<PacketState>,
367    #[prost(message, repeated, tag = "3")]
368    pub commitments: ::prost::alloc::vec::Vec<PacketState>,
369    #[prost(message, repeated, tag = "4")]
370    pub receipts: ::prost::alloc::vec::Vec<PacketState>,
371    #[prost(message, repeated, tag = "5")]
372    pub send_sequences: ::prost::alloc::vec::Vec<PacketSequence>,
373    #[prost(message, repeated, tag = "6")]
374    pub recv_sequences: ::prost::alloc::vec::Vec<PacketSequence>,
375    #[prost(message, repeated, tag = "7")]
376    pub ack_sequences: ::prost::alloc::vec::Vec<PacketSequence>,
377    /// the sequence for the next generated channel identifier
378    #[prost(uint64, tag = "8")]
379    pub next_channel_sequence: u64,
380    #[prost(message, optional, tag = "9")]
381    pub params: ::core::option::Option<Params>,
382}
383impl ::prost::Name for GenesisState {
384    const NAME: &'static str = "GenesisState";
385    const PACKAGE: &'static str = "ibc.core.channel.v1";
386    fn full_name() -> ::prost::alloc::string::String {
387        "ibc.core.channel.v1.GenesisState".into()
388    }
389    fn type_url() -> ::prost::alloc::string::String {
390        "/ibc.core.channel.v1.GenesisState".into()
391    }
392}
393/// PacketSequence defines the genesis type necessary to retrieve and store
394/// next send and receive sequences.
395#[derive(Clone, PartialEq, ::prost::Message)]
396pub struct PacketSequence {
397    #[prost(string, tag = "1")]
398    pub port_id: ::prost::alloc::string::String,
399    #[prost(string, tag = "2")]
400    pub channel_id: ::prost::alloc::string::String,
401    #[prost(uint64, tag = "3")]
402    pub sequence: u64,
403}
404impl ::prost::Name for PacketSequence {
405    const NAME: &'static str = "PacketSequence";
406    const PACKAGE: &'static str = "ibc.core.channel.v1";
407    fn full_name() -> ::prost::alloc::string::String {
408        "ibc.core.channel.v1.PacketSequence".into()
409    }
410    fn type_url() -> ::prost::alloc::string::String {
411        "/ibc.core.channel.v1.PacketSequence".into()
412    }
413}
414/// Upgrade is a verifiable type which contains the relevant information
415/// for an attempted upgrade. It provides the proposed changes to the channel
416/// end, the timeout for this upgrade attempt and the next packet sequence
417/// which allows the counterparty to efficiently know the highest sequence it has received.
418/// The next sequence send is used for pruning and upgrading from unordered to ordered channels.
419#[derive(Clone, PartialEq, ::prost::Message)]
420pub struct Upgrade {
421    #[prost(message, optional, tag = "1")]
422    pub fields: ::core::option::Option<UpgradeFields>,
423    #[prost(message, optional, tag = "2")]
424    pub timeout: ::core::option::Option<Timeout>,
425    #[prost(uint64, tag = "3")]
426    pub next_sequence_send: u64,
427}
428impl ::prost::Name for Upgrade {
429    const NAME: &'static str = "Upgrade";
430    const PACKAGE: &'static str = "ibc.core.channel.v1";
431    fn full_name() -> ::prost::alloc::string::String {
432        "ibc.core.channel.v1.Upgrade".into()
433    }
434    fn type_url() -> ::prost::alloc::string::String {
435        "/ibc.core.channel.v1.Upgrade".into()
436    }
437}
438/// UpgradeFields are the fields in a channel end which may be changed
439/// during a channel upgrade.
440#[derive(Clone, PartialEq, ::prost::Message)]
441pub struct UpgradeFields {
442    #[prost(enumeration = "Order", tag = "1")]
443    pub ordering: i32,
444    #[prost(string, repeated, tag = "2")]
445    pub connection_hops: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
446    #[prost(string, tag = "3")]
447    pub version: ::prost::alloc::string::String,
448}
449impl ::prost::Name for UpgradeFields {
450    const NAME: &'static str = "UpgradeFields";
451    const PACKAGE: &'static str = "ibc.core.channel.v1";
452    fn full_name() -> ::prost::alloc::string::String {
453        "ibc.core.channel.v1.UpgradeFields".into()
454    }
455    fn type_url() -> ::prost::alloc::string::String {
456        "/ibc.core.channel.v1.UpgradeFields".into()
457    }
458}
459/// ErrorReceipt defines a type which encapsulates the upgrade sequence and error associated with the
460/// upgrade handshake failure. When a channel upgrade handshake is aborted both chains are expected to increment to the
461/// next sequence.
462#[derive(Clone, PartialEq, ::prost::Message)]
463pub struct ErrorReceipt {
464    /// the channel upgrade sequence
465    #[prost(uint64, tag = "1")]
466    pub sequence: u64,
467    /// the error message detailing the cause of failure
468    #[prost(string, tag = "2")]
469    pub message: ::prost::alloc::string::String,
470}
471impl ::prost::Name for ErrorReceipt {
472    const NAME: &'static str = "ErrorReceipt";
473    const PACKAGE: &'static str = "ibc.core.channel.v1";
474    fn full_name() -> ::prost::alloc::string::String {
475        "ibc.core.channel.v1.ErrorReceipt".into()
476    }
477    fn type_url() -> ::prost::alloc::string::String {
478        "/ibc.core.channel.v1.ErrorReceipt".into()
479    }
480}
481/// MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake. It
482/// is called by a relayer on Chain A.
483#[derive(Clone, PartialEq, ::prost::Message)]
484pub struct MsgChannelOpenInit {
485    #[prost(string, tag = "1")]
486    pub port_id: ::prost::alloc::string::String,
487    #[prost(message, optional, tag = "2")]
488    pub channel: ::core::option::Option<Channel>,
489    #[prost(string, tag = "3")]
490    pub signer: ::prost::alloc::string::String,
491}
492impl ::prost::Name for MsgChannelOpenInit {
493    const NAME: &'static str = "MsgChannelOpenInit";
494    const PACKAGE: &'static str = "ibc.core.channel.v1";
495    fn full_name() -> ::prost::alloc::string::String {
496        "ibc.core.channel.v1.MsgChannelOpenInit".into()
497    }
498    fn type_url() -> ::prost::alloc::string::String {
499        "/ibc.core.channel.v1.MsgChannelOpenInit".into()
500    }
501}
502/// MsgChannelOpenInitResponse defines the Msg/ChannelOpenInit response type.
503#[derive(Clone, PartialEq, ::prost::Message)]
504pub struct MsgChannelOpenInitResponse {
505    #[prost(string, tag = "1")]
506    pub channel_id: ::prost::alloc::string::String,
507    #[prost(string, tag = "2")]
508    pub version: ::prost::alloc::string::String,
509}
510impl ::prost::Name for MsgChannelOpenInitResponse {
511    const NAME: &'static str = "MsgChannelOpenInitResponse";
512    const PACKAGE: &'static str = "ibc.core.channel.v1";
513    fn full_name() -> ::prost::alloc::string::String {
514        "ibc.core.channel.v1.MsgChannelOpenInitResponse".into()
515    }
516    fn type_url() -> ::prost::alloc::string::String {
517        "/ibc.core.channel.v1.MsgChannelOpenInitResponse".into()
518    }
519}
520/// MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel
521/// on Chain B. The version field within the Channel field has been deprecated. Its
522/// value will be ignored by core IBC.
523#[derive(Clone, PartialEq, ::prost::Message)]
524pub struct MsgChannelOpenTry {
525    #[prost(string, tag = "1")]
526    pub port_id: ::prost::alloc::string::String,
527    /// Deprecated: this field is unused. Crossing hello's are no longer supported in core IBC.
528    #[deprecated]
529    #[prost(string, tag = "2")]
530    pub previous_channel_id: ::prost::alloc::string::String,
531    /// NOTE: the version field within the channel has been deprecated. Its value will be ignored by core IBC.
532    #[prost(message, optional, tag = "3")]
533    pub channel: ::core::option::Option<Channel>,
534    #[prost(string, tag = "4")]
535    pub counterparty_version: ::prost::alloc::string::String,
536    #[prost(bytes = "vec", tag = "5")]
537    pub proof_init: ::prost::alloc::vec::Vec<u8>,
538    #[prost(message, optional, tag = "6")]
539    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
540    #[prost(string, tag = "7")]
541    pub signer: ::prost::alloc::string::String,
542}
543impl ::prost::Name for MsgChannelOpenTry {
544    const NAME: &'static str = "MsgChannelOpenTry";
545    const PACKAGE: &'static str = "ibc.core.channel.v1";
546    fn full_name() -> ::prost::alloc::string::String {
547        "ibc.core.channel.v1.MsgChannelOpenTry".into()
548    }
549    fn type_url() -> ::prost::alloc::string::String {
550        "/ibc.core.channel.v1.MsgChannelOpenTry".into()
551    }
552}
553/// MsgChannelOpenTryResponse defines the Msg/ChannelOpenTry response type.
554#[derive(Clone, PartialEq, ::prost::Message)]
555pub struct MsgChannelOpenTryResponse {
556    #[prost(string, tag = "1")]
557    pub version: ::prost::alloc::string::String,
558    #[prost(string, tag = "2")]
559    pub channel_id: ::prost::alloc::string::String,
560}
561impl ::prost::Name for MsgChannelOpenTryResponse {
562    const NAME: &'static str = "MsgChannelOpenTryResponse";
563    const PACKAGE: &'static str = "ibc.core.channel.v1";
564    fn full_name() -> ::prost::alloc::string::String {
565        "ibc.core.channel.v1.MsgChannelOpenTryResponse".into()
566    }
567    fn type_url() -> ::prost::alloc::string::String {
568        "/ibc.core.channel.v1.MsgChannelOpenTryResponse".into()
569    }
570}
571/// MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge
572/// the change of channel state to TRYOPEN on Chain B.
573/// WARNING: a channel upgrade MUST NOT initialize an upgrade for this channel
574/// in the same block as executing this message otherwise the counterparty will
575/// be incapable of opening.
576#[derive(Clone, PartialEq, ::prost::Message)]
577pub struct MsgChannelOpenAck {
578    #[prost(string, tag = "1")]
579    pub port_id: ::prost::alloc::string::String,
580    #[prost(string, tag = "2")]
581    pub channel_id: ::prost::alloc::string::String,
582    #[prost(string, tag = "3")]
583    pub counterparty_channel_id: ::prost::alloc::string::String,
584    #[prost(string, tag = "4")]
585    pub counterparty_version: ::prost::alloc::string::String,
586    #[prost(bytes = "vec", tag = "5")]
587    pub proof_try: ::prost::alloc::vec::Vec<u8>,
588    #[prost(message, optional, tag = "6")]
589    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
590    #[prost(string, tag = "7")]
591    pub signer: ::prost::alloc::string::String,
592}
593impl ::prost::Name for MsgChannelOpenAck {
594    const NAME: &'static str = "MsgChannelOpenAck";
595    const PACKAGE: &'static str = "ibc.core.channel.v1";
596    fn full_name() -> ::prost::alloc::string::String {
597        "ibc.core.channel.v1.MsgChannelOpenAck".into()
598    }
599    fn type_url() -> ::prost::alloc::string::String {
600        "/ibc.core.channel.v1.MsgChannelOpenAck".into()
601    }
602}
603/// MsgChannelOpenAckResponse defines the Msg/ChannelOpenAck response type.
604#[derive(Clone, Copy, PartialEq, ::prost::Message)]
605pub struct MsgChannelOpenAckResponse {}
606impl ::prost::Name for MsgChannelOpenAckResponse {
607    const NAME: &'static str = "MsgChannelOpenAckResponse";
608    const PACKAGE: &'static str = "ibc.core.channel.v1";
609    fn full_name() -> ::prost::alloc::string::String {
610        "ibc.core.channel.v1.MsgChannelOpenAckResponse".into()
611    }
612    fn type_url() -> ::prost::alloc::string::String {
613        "/ibc.core.channel.v1.MsgChannelOpenAckResponse".into()
614    }
615}
616/// MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to
617/// acknowledge the change of channel state to OPEN on Chain A.
618#[derive(Clone, PartialEq, ::prost::Message)]
619pub struct MsgChannelOpenConfirm {
620    #[prost(string, tag = "1")]
621    pub port_id: ::prost::alloc::string::String,
622    #[prost(string, tag = "2")]
623    pub channel_id: ::prost::alloc::string::String,
624    #[prost(bytes = "vec", tag = "3")]
625    pub proof_ack: ::prost::alloc::vec::Vec<u8>,
626    #[prost(message, optional, tag = "4")]
627    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
628    #[prost(string, tag = "5")]
629    pub signer: ::prost::alloc::string::String,
630}
631impl ::prost::Name for MsgChannelOpenConfirm {
632    const NAME: &'static str = "MsgChannelOpenConfirm";
633    const PACKAGE: &'static str = "ibc.core.channel.v1";
634    fn full_name() -> ::prost::alloc::string::String {
635        "ibc.core.channel.v1.MsgChannelOpenConfirm".into()
636    }
637    fn type_url() -> ::prost::alloc::string::String {
638        "/ibc.core.channel.v1.MsgChannelOpenConfirm".into()
639    }
640}
641/// MsgChannelOpenConfirmResponse defines the Msg/ChannelOpenConfirm response
642/// type.
643#[derive(Clone, Copy, PartialEq, ::prost::Message)]
644pub struct MsgChannelOpenConfirmResponse {}
645impl ::prost::Name for MsgChannelOpenConfirmResponse {
646    const NAME: &'static str = "MsgChannelOpenConfirmResponse";
647    const PACKAGE: &'static str = "ibc.core.channel.v1";
648    fn full_name() -> ::prost::alloc::string::String {
649        "ibc.core.channel.v1.MsgChannelOpenConfirmResponse".into()
650    }
651    fn type_url() -> ::prost::alloc::string::String {
652        "/ibc.core.channel.v1.MsgChannelOpenConfirmResponse".into()
653    }
654}
655/// MsgChannelCloseInit defines a msg sent by a Relayer to Chain A
656/// to close a channel with Chain B.
657#[derive(Clone, PartialEq, ::prost::Message)]
658pub struct MsgChannelCloseInit {
659    #[prost(string, tag = "1")]
660    pub port_id: ::prost::alloc::string::String,
661    #[prost(string, tag = "2")]
662    pub channel_id: ::prost::alloc::string::String,
663    #[prost(string, tag = "3")]
664    pub signer: ::prost::alloc::string::String,
665}
666impl ::prost::Name for MsgChannelCloseInit {
667    const NAME: &'static str = "MsgChannelCloseInit";
668    const PACKAGE: &'static str = "ibc.core.channel.v1";
669    fn full_name() -> ::prost::alloc::string::String {
670        "ibc.core.channel.v1.MsgChannelCloseInit".into()
671    }
672    fn type_url() -> ::prost::alloc::string::String {
673        "/ibc.core.channel.v1.MsgChannelCloseInit".into()
674    }
675}
676/// MsgChannelCloseInitResponse defines the Msg/ChannelCloseInit response type.
677#[derive(Clone, Copy, PartialEq, ::prost::Message)]
678pub struct MsgChannelCloseInitResponse {}
679impl ::prost::Name for MsgChannelCloseInitResponse {
680    const NAME: &'static str = "MsgChannelCloseInitResponse";
681    const PACKAGE: &'static str = "ibc.core.channel.v1";
682    fn full_name() -> ::prost::alloc::string::String {
683        "ibc.core.channel.v1.MsgChannelCloseInitResponse".into()
684    }
685    fn type_url() -> ::prost::alloc::string::String {
686        "/ibc.core.channel.v1.MsgChannelCloseInitResponse".into()
687    }
688}
689/// MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B
690/// to acknowledge the change of channel state to CLOSED on Chain A.
691#[derive(Clone, PartialEq, ::prost::Message)]
692pub struct MsgChannelCloseConfirm {
693    #[prost(string, tag = "1")]
694    pub port_id: ::prost::alloc::string::String,
695    #[prost(string, tag = "2")]
696    pub channel_id: ::prost::alloc::string::String,
697    #[prost(bytes = "vec", tag = "3")]
698    pub proof_init: ::prost::alloc::vec::Vec<u8>,
699    #[prost(message, optional, tag = "4")]
700    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
701    #[prost(string, tag = "5")]
702    pub signer: ::prost::alloc::string::String,
703    #[prost(uint64, tag = "6")]
704    pub counterparty_upgrade_sequence: u64,
705}
706impl ::prost::Name for MsgChannelCloseConfirm {
707    const NAME: &'static str = "MsgChannelCloseConfirm";
708    const PACKAGE: &'static str = "ibc.core.channel.v1";
709    fn full_name() -> ::prost::alloc::string::String {
710        "ibc.core.channel.v1.MsgChannelCloseConfirm".into()
711    }
712    fn type_url() -> ::prost::alloc::string::String {
713        "/ibc.core.channel.v1.MsgChannelCloseConfirm".into()
714    }
715}
716/// MsgChannelCloseConfirmResponse defines the Msg/ChannelCloseConfirm response
717/// type.
718#[derive(Clone, Copy, PartialEq, ::prost::Message)]
719pub struct MsgChannelCloseConfirmResponse {}
720impl ::prost::Name for MsgChannelCloseConfirmResponse {
721    const NAME: &'static str = "MsgChannelCloseConfirmResponse";
722    const PACKAGE: &'static str = "ibc.core.channel.v1";
723    fn full_name() -> ::prost::alloc::string::String {
724        "ibc.core.channel.v1.MsgChannelCloseConfirmResponse".into()
725    }
726    fn type_url() -> ::prost::alloc::string::String {
727        "/ibc.core.channel.v1.MsgChannelCloseConfirmResponse".into()
728    }
729}
730/// MsgRecvPacket receives incoming IBC packet
731#[derive(Clone, PartialEq, ::prost::Message)]
732pub struct MsgRecvPacket {
733    #[prost(message, optional, tag = "1")]
734    pub packet: ::core::option::Option<Packet>,
735    #[prost(bytes = "vec", tag = "2")]
736    pub proof_commitment: ::prost::alloc::vec::Vec<u8>,
737    #[prost(message, optional, tag = "3")]
738    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
739    #[prost(string, tag = "4")]
740    pub signer: ::prost::alloc::string::String,
741}
742impl ::prost::Name for MsgRecvPacket {
743    const NAME: &'static str = "MsgRecvPacket";
744    const PACKAGE: &'static str = "ibc.core.channel.v1";
745    fn full_name() -> ::prost::alloc::string::String {
746        "ibc.core.channel.v1.MsgRecvPacket".into()
747    }
748    fn type_url() -> ::prost::alloc::string::String {
749        "/ibc.core.channel.v1.MsgRecvPacket".into()
750    }
751}
752/// MsgRecvPacketResponse defines the Msg/RecvPacket response type.
753#[derive(Clone, Copy, PartialEq, ::prost::Message)]
754pub struct MsgRecvPacketResponse {
755    #[prost(enumeration = "ResponseResultType", tag = "1")]
756    pub result: i32,
757}
758impl ::prost::Name for MsgRecvPacketResponse {
759    const NAME: &'static str = "MsgRecvPacketResponse";
760    const PACKAGE: &'static str = "ibc.core.channel.v1";
761    fn full_name() -> ::prost::alloc::string::String {
762        "ibc.core.channel.v1.MsgRecvPacketResponse".into()
763    }
764    fn type_url() -> ::prost::alloc::string::String {
765        "/ibc.core.channel.v1.MsgRecvPacketResponse".into()
766    }
767}
768/// MsgTimeout receives timed-out packet
769#[derive(Clone, PartialEq, ::prost::Message)]
770pub struct MsgTimeout {
771    #[prost(message, optional, tag = "1")]
772    pub packet: ::core::option::Option<Packet>,
773    #[prost(bytes = "vec", tag = "2")]
774    pub proof_unreceived: ::prost::alloc::vec::Vec<u8>,
775    #[prost(message, optional, tag = "3")]
776    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
777    #[prost(uint64, tag = "4")]
778    pub next_sequence_recv: u64,
779    #[prost(string, tag = "5")]
780    pub signer: ::prost::alloc::string::String,
781}
782impl ::prost::Name for MsgTimeout {
783    const NAME: &'static str = "MsgTimeout";
784    const PACKAGE: &'static str = "ibc.core.channel.v1";
785    fn full_name() -> ::prost::alloc::string::String {
786        "ibc.core.channel.v1.MsgTimeout".into()
787    }
788    fn type_url() -> ::prost::alloc::string::String {
789        "/ibc.core.channel.v1.MsgTimeout".into()
790    }
791}
792/// MsgTimeoutResponse defines the Msg/Timeout response type.
793#[derive(Clone, Copy, PartialEq, ::prost::Message)]
794pub struct MsgTimeoutResponse {
795    #[prost(enumeration = "ResponseResultType", tag = "1")]
796    pub result: i32,
797}
798impl ::prost::Name for MsgTimeoutResponse {
799    const NAME: &'static str = "MsgTimeoutResponse";
800    const PACKAGE: &'static str = "ibc.core.channel.v1";
801    fn full_name() -> ::prost::alloc::string::String {
802        "ibc.core.channel.v1.MsgTimeoutResponse".into()
803    }
804    fn type_url() -> ::prost::alloc::string::String {
805        "/ibc.core.channel.v1.MsgTimeoutResponse".into()
806    }
807}
808/// MsgTimeoutOnClose timed-out packet upon counterparty channel closure.
809#[derive(Clone, PartialEq, ::prost::Message)]
810pub struct MsgTimeoutOnClose {
811    #[prost(message, optional, tag = "1")]
812    pub packet: ::core::option::Option<Packet>,
813    #[prost(bytes = "vec", tag = "2")]
814    pub proof_unreceived: ::prost::alloc::vec::Vec<u8>,
815    #[prost(bytes = "vec", tag = "3")]
816    pub proof_close: ::prost::alloc::vec::Vec<u8>,
817    #[prost(message, optional, tag = "4")]
818    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
819    #[prost(uint64, tag = "5")]
820    pub next_sequence_recv: u64,
821    #[prost(string, tag = "6")]
822    pub signer: ::prost::alloc::string::String,
823    #[prost(uint64, tag = "7")]
824    pub counterparty_upgrade_sequence: u64,
825}
826impl ::prost::Name for MsgTimeoutOnClose {
827    const NAME: &'static str = "MsgTimeoutOnClose";
828    const PACKAGE: &'static str = "ibc.core.channel.v1";
829    fn full_name() -> ::prost::alloc::string::String {
830        "ibc.core.channel.v1.MsgTimeoutOnClose".into()
831    }
832    fn type_url() -> ::prost::alloc::string::String {
833        "/ibc.core.channel.v1.MsgTimeoutOnClose".into()
834    }
835}
836/// MsgTimeoutOnCloseResponse defines the Msg/TimeoutOnClose response type.
837#[derive(Clone, Copy, PartialEq, ::prost::Message)]
838pub struct MsgTimeoutOnCloseResponse {
839    #[prost(enumeration = "ResponseResultType", tag = "1")]
840    pub result: i32,
841}
842impl ::prost::Name for MsgTimeoutOnCloseResponse {
843    const NAME: &'static str = "MsgTimeoutOnCloseResponse";
844    const PACKAGE: &'static str = "ibc.core.channel.v1";
845    fn full_name() -> ::prost::alloc::string::String {
846        "ibc.core.channel.v1.MsgTimeoutOnCloseResponse".into()
847    }
848    fn type_url() -> ::prost::alloc::string::String {
849        "/ibc.core.channel.v1.MsgTimeoutOnCloseResponse".into()
850    }
851}
852/// MsgAcknowledgement receives incoming IBC acknowledgement
853#[derive(Clone, PartialEq, ::prost::Message)]
854pub struct MsgAcknowledgement {
855    #[prost(message, optional, tag = "1")]
856    pub packet: ::core::option::Option<Packet>,
857    #[prost(bytes = "vec", tag = "2")]
858    pub acknowledgement: ::prost::alloc::vec::Vec<u8>,
859    #[prost(bytes = "vec", tag = "3")]
860    pub proof_acked: ::prost::alloc::vec::Vec<u8>,
861    #[prost(message, optional, tag = "4")]
862    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
863    #[prost(string, tag = "5")]
864    pub signer: ::prost::alloc::string::String,
865}
866impl ::prost::Name for MsgAcknowledgement {
867    const NAME: &'static str = "MsgAcknowledgement";
868    const PACKAGE: &'static str = "ibc.core.channel.v1";
869    fn full_name() -> ::prost::alloc::string::String {
870        "ibc.core.channel.v1.MsgAcknowledgement".into()
871    }
872    fn type_url() -> ::prost::alloc::string::String {
873        "/ibc.core.channel.v1.MsgAcknowledgement".into()
874    }
875}
876/// MsgAcknowledgementResponse defines the Msg/Acknowledgement response type.
877#[derive(Clone, Copy, PartialEq, ::prost::Message)]
878pub struct MsgAcknowledgementResponse {
879    #[prost(enumeration = "ResponseResultType", tag = "1")]
880    pub result: i32,
881}
882impl ::prost::Name for MsgAcknowledgementResponse {
883    const NAME: &'static str = "MsgAcknowledgementResponse";
884    const PACKAGE: &'static str = "ibc.core.channel.v1";
885    fn full_name() -> ::prost::alloc::string::String {
886        "ibc.core.channel.v1.MsgAcknowledgementResponse".into()
887    }
888    fn type_url() -> ::prost::alloc::string::String {
889        "/ibc.core.channel.v1.MsgAcknowledgementResponse".into()
890    }
891}
892/// MsgChannelUpgradeInit defines the request type for the ChannelUpgradeInit rpc
893/// WARNING: Initializing a channel upgrade in the same block as opening the channel
894/// may result in the counterparty being incapable of opening.
895#[derive(Clone, PartialEq, ::prost::Message)]
896pub struct MsgChannelUpgradeInit {
897    #[prost(string, tag = "1")]
898    pub port_id: ::prost::alloc::string::String,
899    #[prost(string, tag = "2")]
900    pub channel_id: ::prost::alloc::string::String,
901    #[prost(message, optional, tag = "3")]
902    pub fields: ::core::option::Option<UpgradeFields>,
903    #[prost(string, tag = "4")]
904    pub signer: ::prost::alloc::string::String,
905}
906impl ::prost::Name for MsgChannelUpgradeInit {
907    const NAME: &'static str = "MsgChannelUpgradeInit";
908    const PACKAGE: &'static str = "ibc.core.channel.v1";
909    fn full_name() -> ::prost::alloc::string::String {
910        "ibc.core.channel.v1.MsgChannelUpgradeInit".into()
911    }
912    fn type_url() -> ::prost::alloc::string::String {
913        "/ibc.core.channel.v1.MsgChannelUpgradeInit".into()
914    }
915}
916/// MsgChannelUpgradeInitResponse defines the MsgChannelUpgradeInit response type
917#[derive(Clone, PartialEq, ::prost::Message)]
918pub struct MsgChannelUpgradeInitResponse {
919    #[prost(message, optional, tag = "1")]
920    pub upgrade: ::core::option::Option<Upgrade>,
921    #[prost(uint64, tag = "2")]
922    pub upgrade_sequence: u64,
923}
924impl ::prost::Name for MsgChannelUpgradeInitResponse {
925    const NAME: &'static str = "MsgChannelUpgradeInitResponse";
926    const PACKAGE: &'static str = "ibc.core.channel.v1";
927    fn full_name() -> ::prost::alloc::string::String {
928        "ibc.core.channel.v1.MsgChannelUpgradeInitResponse".into()
929    }
930    fn type_url() -> ::prost::alloc::string::String {
931        "/ibc.core.channel.v1.MsgChannelUpgradeInitResponse".into()
932    }
933}
934/// MsgChannelUpgradeTry defines the request type for the ChannelUpgradeTry rpc
935#[derive(Clone, PartialEq, ::prost::Message)]
936pub struct MsgChannelUpgradeTry {
937    #[prost(string, tag = "1")]
938    pub port_id: ::prost::alloc::string::String,
939    #[prost(string, tag = "2")]
940    pub channel_id: ::prost::alloc::string::String,
941    #[prost(string, repeated, tag = "3")]
942    pub proposed_upgrade_connection_hops: ::prost::alloc::vec::Vec<
943        ::prost::alloc::string::String,
944    >,
945    #[prost(message, optional, tag = "4")]
946    pub counterparty_upgrade_fields: ::core::option::Option<UpgradeFields>,
947    #[prost(uint64, tag = "5")]
948    pub counterparty_upgrade_sequence: u64,
949    #[prost(bytes = "vec", tag = "6")]
950    pub proof_channel: ::prost::alloc::vec::Vec<u8>,
951    #[prost(bytes = "vec", tag = "7")]
952    pub proof_upgrade: ::prost::alloc::vec::Vec<u8>,
953    #[prost(message, optional, tag = "8")]
954    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
955    #[prost(string, tag = "9")]
956    pub signer: ::prost::alloc::string::String,
957}
958impl ::prost::Name for MsgChannelUpgradeTry {
959    const NAME: &'static str = "MsgChannelUpgradeTry";
960    const PACKAGE: &'static str = "ibc.core.channel.v1";
961    fn full_name() -> ::prost::alloc::string::String {
962        "ibc.core.channel.v1.MsgChannelUpgradeTry".into()
963    }
964    fn type_url() -> ::prost::alloc::string::String {
965        "/ibc.core.channel.v1.MsgChannelUpgradeTry".into()
966    }
967}
968/// MsgChannelUpgradeTryResponse defines the MsgChannelUpgradeTry response type
969#[derive(Clone, PartialEq, ::prost::Message)]
970pub struct MsgChannelUpgradeTryResponse {
971    #[prost(message, optional, tag = "1")]
972    pub upgrade: ::core::option::Option<Upgrade>,
973    #[prost(uint64, tag = "2")]
974    pub upgrade_sequence: u64,
975    #[prost(enumeration = "ResponseResultType", tag = "3")]
976    pub result: i32,
977}
978impl ::prost::Name for MsgChannelUpgradeTryResponse {
979    const NAME: &'static str = "MsgChannelUpgradeTryResponse";
980    const PACKAGE: &'static str = "ibc.core.channel.v1";
981    fn full_name() -> ::prost::alloc::string::String {
982        "ibc.core.channel.v1.MsgChannelUpgradeTryResponse".into()
983    }
984    fn type_url() -> ::prost::alloc::string::String {
985        "/ibc.core.channel.v1.MsgChannelUpgradeTryResponse".into()
986    }
987}
988/// MsgChannelUpgradeAck defines the request type for the ChannelUpgradeAck rpc
989#[derive(Clone, PartialEq, ::prost::Message)]
990pub struct MsgChannelUpgradeAck {
991    #[prost(string, tag = "1")]
992    pub port_id: ::prost::alloc::string::String,
993    #[prost(string, tag = "2")]
994    pub channel_id: ::prost::alloc::string::String,
995    #[prost(message, optional, tag = "3")]
996    pub counterparty_upgrade: ::core::option::Option<Upgrade>,
997    #[prost(bytes = "vec", tag = "4")]
998    pub proof_channel: ::prost::alloc::vec::Vec<u8>,
999    #[prost(bytes = "vec", tag = "5")]
1000    pub proof_upgrade: ::prost::alloc::vec::Vec<u8>,
1001    #[prost(message, optional, tag = "6")]
1002    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
1003    #[prost(string, tag = "7")]
1004    pub signer: ::prost::alloc::string::String,
1005}
1006impl ::prost::Name for MsgChannelUpgradeAck {
1007    const NAME: &'static str = "MsgChannelUpgradeAck";
1008    const PACKAGE: &'static str = "ibc.core.channel.v1";
1009    fn full_name() -> ::prost::alloc::string::String {
1010        "ibc.core.channel.v1.MsgChannelUpgradeAck".into()
1011    }
1012    fn type_url() -> ::prost::alloc::string::String {
1013        "/ibc.core.channel.v1.MsgChannelUpgradeAck".into()
1014    }
1015}
1016/// MsgChannelUpgradeAckResponse defines MsgChannelUpgradeAck response type
1017#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1018pub struct MsgChannelUpgradeAckResponse {
1019    #[prost(enumeration = "ResponseResultType", tag = "1")]
1020    pub result: i32,
1021}
1022impl ::prost::Name for MsgChannelUpgradeAckResponse {
1023    const NAME: &'static str = "MsgChannelUpgradeAckResponse";
1024    const PACKAGE: &'static str = "ibc.core.channel.v1";
1025    fn full_name() -> ::prost::alloc::string::String {
1026        "ibc.core.channel.v1.MsgChannelUpgradeAckResponse".into()
1027    }
1028    fn type_url() -> ::prost::alloc::string::String {
1029        "/ibc.core.channel.v1.MsgChannelUpgradeAckResponse".into()
1030    }
1031}
1032/// MsgChannelUpgradeConfirm defines the request type for the ChannelUpgradeConfirm rpc
1033#[derive(Clone, PartialEq, ::prost::Message)]
1034pub struct MsgChannelUpgradeConfirm {
1035    #[prost(string, tag = "1")]
1036    pub port_id: ::prost::alloc::string::String,
1037    #[prost(string, tag = "2")]
1038    pub channel_id: ::prost::alloc::string::String,
1039    #[prost(enumeration = "State", tag = "3")]
1040    pub counterparty_channel_state: i32,
1041    #[prost(message, optional, tag = "4")]
1042    pub counterparty_upgrade: ::core::option::Option<Upgrade>,
1043    #[prost(bytes = "vec", tag = "5")]
1044    pub proof_channel: ::prost::alloc::vec::Vec<u8>,
1045    #[prost(bytes = "vec", tag = "6")]
1046    pub proof_upgrade: ::prost::alloc::vec::Vec<u8>,
1047    #[prost(message, optional, tag = "7")]
1048    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
1049    #[prost(string, tag = "8")]
1050    pub signer: ::prost::alloc::string::String,
1051}
1052impl ::prost::Name for MsgChannelUpgradeConfirm {
1053    const NAME: &'static str = "MsgChannelUpgradeConfirm";
1054    const PACKAGE: &'static str = "ibc.core.channel.v1";
1055    fn full_name() -> ::prost::alloc::string::String {
1056        "ibc.core.channel.v1.MsgChannelUpgradeConfirm".into()
1057    }
1058    fn type_url() -> ::prost::alloc::string::String {
1059        "/ibc.core.channel.v1.MsgChannelUpgradeConfirm".into()
1060    }
1061}
1062/// MsgChannelUpgradeConfirmResponse defines MsgChannelUpgradeConfirm response type
1063#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1064pub struct MsgChannelUpgradeConfirmResponse {
1065    #[prost(enumeration = "ResponseResultType", tag = "1")]
1066    pub result: i32,
1067}
1068impl ::prost::Name for MsgChannelUpgradeConfirmResponse {
1069    const NAME: &'static str = "MsgChannelUpgradeConfirmResponse";
1070    const PACKAGE: &'static str = "ibc.core.channel.v1";
1071    fn full_name() -> ::prost::alloc::string::String {
1072        "ibc.core.channel.v1.MsgChannelUpgradeConfirmResponse".into()
1073    }
1074    fn type_url() -> ::prost::alloc::string::String {
1075        "/ibc.core.channel.v1.MsgChannelUpgradeConfirmResponse".into()
1076    }
1077}
1078/// MsgChannelUpgradeOpen defines the request type for the ChannelUpgradeOpen rpc
1079#[derive(Clone, PartialEq, ::prost::Message)]
1080pub struct MsgChannelUpgradeOpen {
1081    #[prost(string, tag = "1")]
1082    pub port_id: ::prost::alloc::string::String,
1083    #[prost(string, tag = "2")]
1084    pub channel_id: ::prost::alloc::string::String,
1085    #[prost(enumeration = "State", tag = "3")]
1086    pub counterparty_channel_state: i32,
1087    #[prost(uint64, tag = "4")]
1088    pub counterparty_upgrade_sequence: u64,
1089    #[prost(bytes = "vec", tag = "5")]
1090    pub proof_channel: ::prost::alloc::vec::Vec<u8>,
1091    #[prost(message, optional, tag = "6")]
1092    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
1093    #[prost(string, tag = "7")]
1094    pub signer: ::prost::alloc::string::String,
1095}
1096impl ::prost::Name for MsgChannelUpgradeOpen {
1097    const NAME: &'static str = "MsgChannelUpgradeOpen";
1098    const PACKAGE: &'static str = "ibc.core.channel.v1";
1099    fn full_name() -> ::prost::alloc::string::String {
1100        "ibc.core.channel.v1.MsgChannelUpgradeOpen".into()
1101    }
1102    fn type_url() -> ::prost::alloc::string::String {
1103        "/ibc.core.channel.v1.MsgChannelUpgradeOpen".into()
1104    }
1105}
1106/// MsgChannelUpgradeOpenResponse defines the MsgChannelUpgradeOpen response type
1107#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1108pub struct MsgChannelUpgradeOpenResponse {}
1109impl ::prost::Name for MsgChannelUpgradeOpenResponse {
1110    const NAME: &'static str = "MsgChannelUpgradeOpenResponse";
1111    const PACKAGE: &'static str = "ibc.core.channel.v1";
1112    fn full_name() -> ::prost::alloc::string::String {
1113        "ibc.core.channel.v1.MsgChannelUpgradeOpenResponse".into()
1114    }
1115    fn type_url() -> ::prost::alloc::string::String {
1116        "/ibc.core.channel.v1.MsgChannelUpgradeOpenResponse".into()
1117    }
1118}
1119/// MsgChannelUpgradeTimeout defines the request type for the ChannelUpgradeTimeout rpc
1120#[derive(Clone, PartialEq, ::prost::Message)]
1121pub struct MsgChannelUpgradeTimeout {
1122    #[prost(string, tag = "1")]
1123    pub port_id: ::prost::alloc::string::String,
1124    #[prost(string, tag = "2")]
1125    pub channel_id: ::prost::alloc::string::String,
1126    #[prost(message, optional, tag = "3")]
1127    pub counterparty_channel: ::core::option::Option<Channel>,
1128    #[prost(bytes = "vec", tag = "4")]
1129    pub proof_channel: ::prost::alloc::vec::Vec<u8>,
1130    #[prost(message, optional, tag = "5")]
1131    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
1132    #[prost(string, tag = "6")]
1133    pub signer: ::prost::alloc::string::String,
1134}
1135impl ::prost::Name for MsgChannelUpgradeTimeout {
1136    const NAME: &'static str = "MsgChannelUpgradeTimeout";
1137    const PACKAGE: &'static str = "ibc.core.channel.v1";
1138    fn full_name() -> ::prost::alloc::string::String {
1139        "ibc.core.channel.v1.MsgChannelUpgradeTimeout".into()
1140    }
1141    fn type_url() -> ::prost::alloc::string::String {
1142        "/ibc.core.channel.v1.MsgChannelUpgradeTimeout".into()
1143    }
1144}
1145/// MsgChannelUpgradeTimeoutRepsonse defines the MsgChannelUpgradeTimeout response type
1146#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1147pub struct MsgChannelUpgradeTimeoutResponse {}
1148impl ::prost::Name for MsgChannelUpgradeTimeoutResponse {
1149    const NAME: &'static str = "MsgChannelUpgradeTimeoutResponse";
1150    const PACKAGE: &'static str = "ibc.core.channel.v1";
1151    fn full_name() -> ::prost::alloc::string::String {
1152        "ibc.core.channel.v1.MsgChannelUpgradeTimeoutResponse".into()
1153    }
1154    fn type_url() -> ::prost::alloc::string::String {
1155        "/ibc.core.channel.v1.MsgChannelUpgradeTimeoutResponse".into()
1156    }
1157}
1158/// MsgChannelUpgradeCancel defines the request type for the ChannelUpgradeCancel rpc
1159#[derive(Clone, PartialEq, ::prost::Message)]
1160pub struct MsgChannelUpgradeCancel {
1161    #[prost(string, tag = "1")]
1162    pub port_id: ::prost::alloc::string::String,
1163    #[prost(string, tag = "2")]
1164    pub channel_id: ::prost::alloc::string::String,
1165    #[prost(message, optional, tag = "3")]
1166    pub error_receipt: ::core::option::Option<ErrorReceipt>,
1167    #[prost(bytes = "vec", tag = "4")]
1168    pub proof_error_receipt: ::prost::alloc::vec::Vec<u8>,
1169    #[prost(message, optional, tag = "5")]
1170    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
1171    #[prost(string, tag = "6")]
1172    pub signer: ::prost::alloc::string::String,
1173}
1174impl ::prost::Name for MsgChannelUpgradeCancel {
1175    const NAME: &'static str = "MsgChannelUpgradeCancel";
1176    const PACKAGE: &'static str = "ibc.core.channel.v1";
1177    fn full_name() -> ::prost::alloc::string::String {
1178        "ibc.core.channel.v1.MsgChannelUpgradeCancel".into()
1179    }
1180    fn type_url() -> ::prost::alloc::string::String {
1181        "/ibc.core.channel.v1.MsgChannelUpgradeCancel".into()
1182    }
1183}
1184/// MsgChannelUpgradeCancelResponse defines the MsgChannelUpgradeCancel response type
1185#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1186pub struct MsgChannelUpgradeCancelResponse {}
1187impl ::prost::Name for MsgChannelUpgradeCancelResponse {
1188    const NAME: &'static str = "MsgChannelUpgradeCancelResponse";
1189    const PACKAGE: &'static str = "ibc.core.channel.v1";
1190    fn full_name() -> ::prost::alloc::string::String {
1191        "ibc.core.channel.v1.MsgChannelUpgradeCancelResponse".into()
1192    }
1193    fn type_url() -> ::prost::alloc::string::String {
1194        "/ibc.core.channel.v1.MsgChannelUpgradeCancelResponse".into()
1195    }
1196}
1197/// MsgUpdateParams is the MsgUpdateParams request type.
1198#[derive(Clone, PartialEq, ::prost::Message)]
1199pub struct MsgUpdateParams {
1200    /// authority is the address that controls the module (defaults to x/gov unless overwritten).
1201    #[prost(string, tag = "1")]
1202    pub authority: ::prost::alloc::string::String,
1203    /// params defines the channel parameters to update.
1204    ///
1205    /// NOTE: All parameters must be supplied.
1206    #[prost(message, optional, tag = "2")]
1207    pub params: ::core::option::Option<Params>,
1208}
1209impl ::prost::Name for MsgUpdateParams {
1210    const NAME: &'static str = "MsgUpdateParams";
1211    const PACKAGE: &'static str = "ibc.core.channel.v1";
1212    fn full_name() -> ::prost::alloc::string::String {
1213        "ibc.core.channel.v1.MsgUpdateParams".into()
1214    }
1215    fn type_url() -> ::prost::alloc::string::String {
1216        "/ibc.core.channel.v1.MsgUpdateParams".into()
1217    }
1218}
1219/// MsgUpdateParamsResponse defines the MsgUpdateParams response type.
1220#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1221pub struct MsgUpdateParamsResponse {}
1222impl ::prost::Name for MsgUpdateParamsResponse {
1223    const NAME: &'static str = "MsgUpdateParamsResponse";
1224    const PACKAGE: &'static str = "ibc.core.channel.v1";
1225    fn full_name() -> ::prost::alloc::string::String {
1226        "ibc.core.channel.v1.MsgUpdateParamsResponse".into()
1227    }
1228    fn type_url() -> ::prost::alloc::string::String {
1229        "/ibc.core.channel.v1.MsgUpdateParamsResponse".into()
1230    }
1231}
1232/// MsgPruneAcknowledgements defines the request type for the PruneAcknowledgements rpc.
1233#[derive(Clone, PartialEq, ::prost::Message)]
1234pub struct MsgPruneAcknowledgements {
1235    #[prost(string, tag = "1")]
1236    pub port_id: ::prost::alloc::string::String,
1237    #[prost(string, tag = "2")]
1238    pub channel_id: ::prost::alloc::string::String,
1239    #[prost(uint64, tag = "3")]
1240    pub limit: u64,
1241    #[prost(string, tag = "4")]
1242    pub signer: ::prost::alloc::string::String,
1243}
1244impl ::prost::Name for MsgPruneAcknowledgements {
1245    const NAME: &'static str = "MsgPruneAcknowledgements";
1246    const PACKAGE: &'static str = "ibc.core.channel.v1";
1247    fn full_name() -> ::prost::alloc::string::String {
1248        "ibc.core.channel.v1.MsgPruneAcknowledgements".into()
1249    }
1250    fn type_url() -> ::prost::alloc::string::String {
1251        "/ibc.core.channel.v1.MsgPruneAcknowledgements".into()
1252    }
1253}
1254/// MsgPruneAcknowledgementsResponse defines the response type for the PruneAcknowledgements rpc.
1255#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1256pub struct MsgPruneAcknowledgementsResponse {
1257    /// Number of sequences pruned (includes both packet acknowledgements and packet receipts where appropriate).
1258    #[prost(uint64, tag = "1")]
1259    pub total_pruned_sequences: u64,
1260    /// Number of sequences left after pruning.
1261    #[prost(uint64, tag = "2")]
1262    pub total_remaining_sequences: u64,
1263}
1264impl ::prost::Name for MsgPruneAcknowledgementsResponse {
1265    const NAME: &'static str = "MsgPruneAcknowledgementsResponse";
1266    const PACKAGE: &'static str = "ibc.core.channel.v1";
1267    fn full_name() -> ::prost::alloc::string::String {
1268        "ibc.core.channel.v1.MsgPruneAcknowledgementsResponse".into()
1269    }
1270    fn type_url() -> ::prost::alloc::string::String {
1271        "/ibc.core.channel.v1.MsgPruneAcknowledgementsResponse".into()
1272    }
1273}
1274/// ResponseResultType defines the possible outcomes of the execution of a message
1275#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1276#[repr(i32)]
1277pub enum ResponseResultType {
1278    /// Default zero value enumeration
1279    Unspecified = 0,
1280    /// The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)
1281    Noop = 1,
1282    /// The message was executed successfully
1283    Success = 2,
1284    /// The message was executed unsuccessfully
1285    Failure = 3,
1286}
1287impl ResponseResultType {
1288    /// String value of the enum field names used in the ProtoBuf definition.
1289    ///
1290    /// The values are not transformed in any way and thus are considered stable
1291    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1292    pub fn as_str_name(&self) -> &'static str {
1293        match self {
1294            Self::Unspecified => "RESPONSE_RESULT_TYPE_UNSPECIFIED",
1295            Self::Noop => "RESPONSE_RESULT_TYPE_NOOP",
1296            Self::Success => "RESPONSE_RESULT_TYPE_SUCCESS",
1297            Self::Failure => "RESPONSE_RESULT_TYPE_FAILURE",
1298        }
1299    }
1300    /// Creates an enum from field names used in the ProtoBuf definition.
1301    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1302        match value {
1303            "RESPONSE_RESULT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1304            "RESPONSE_RESULT_TYPE_NOOP" => Some(Self::Noop),
1305            "RESPONSE_RESULT_TYPE_SUCCESS" => Some(Self::Success),
1306            "RESPONSE_RESULT_TYPE_FAILURE" => Some(Self::Failure),
1307            _ => None,
1308        }
1309    }
1310}
1311/// Generated client implementations.
1312#[cfg(feature = "client")]
1313pub mod msg_client {
1314    #![allow(
1315        unused_variables,
1316        dead_code,
1317        missing_docs,
1318        clippy::wildcard_imports,
1319        clippy::let_unit_value,
1320    )]
1321    use tonic::codegen::*;
1322    use tonic::codegen::http::Uri;
1323    /// Msg defines the ibc/channel Msg service.
1324    #[derive(Debug, Clone)]
1325    pub struct MsgClient<T> {
1326        inner: tonic::client::Grpc<T>,
1327    }
1328    #[cfg(feature = "transport")]
1329    impl MsgClient<tonic::transport::Channel> {
1330        /// Attempt to create a new client by connecting to a given endpoint.
1331        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1332        where
1333            D: TryInto<tonic::transport::Endpoint>,
1334            D::Error: Into<StdError>,
1335        {
1336            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1337            Ok(Self::new(conn))
1338        }
1339    }
1340    impl<T> MsgClient<T>
1341    where
1342        T: tonic::client::GrpcService<tonic::body::Body>,
1343        T::Error: Into<StdError>,
1344        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1345        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1346    {
1347        pub fn new(inner: T) -> Self {
1348            let inner = tonic::client::Grpc::new(inner);
1349            Self { inner }
1350        }
1351        pub fn with_origin(inner: T, origin: Uri) -> Self {
1352            let inner = tonic::client::Grpc::with_origin(inner, origin);
1353            Self { inner }
1354        }
1355        pub fn with_interceptor<F>(
1356            inner: T,
1357            interceptor: F,
1358        ) -> MsgClient<InterceptedService<T, F>>
1359        where
1360            F: tonic::service::Interceptor,
1361            T::ResponseBody: Default,
1362            T: tonic::codegen::Service<
1363                http::Request<tonic::body::Body>,
1364                Response = http::Response<
1365                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1366                >,
1367            >,
1368            <T as tonic::codegen::Service<
1369                http::Request<tonic::body::Body>,
1370            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1371        {
1372            MsgClient::new(InterceptedService::new(inner, interceptor))
1373        }
1374        /// Compress requests with the given encoding.
1375        ///
1376        /// This requires the server to support it otherwise it might respond with an
1377        /// error.
1378        #[must_use]
1379        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1380            self.inner = self.inner.send_compressed(encoding);
1381            self
1382        }
1383        /// Enable decompressing responses.
1384        #[must_use]
1385        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1386            self.inner = self.inner.accept_compressed(encoding);
1387            self
1388        }
1389        /// Limits the maximum size of a decoded message.
1390        ///
1391        /// Default: `4MB`
1392        #[must_use]
1393        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1394            self.inner = self.inner.max_decoding_message_size(limit);
1395            self
1396        }
1397        /// Limits the maximum size of an encoded message.
1398        ///
1399        /// Default: `usize::MAX`
1400        #[must_use]
1401        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1402            self.inner = self.inner.max_encoding_message_size(limit);
1403            self
1404        }
1405        /// ChannelOpenInit defines a rpc handler method for MsgChannelOpenInit.
1406        pub async fn channel_open_init(
1407            &mut self,
1408            request: impl tonic::IntoRequest<super::MsgChannelOpenInit>,
1409        ) -> std::result::Result<
1410            tonic::Response<super::MsgChannelOpenInitResponse>,
1411            tonic::Status,
1412        > {
1413            self.inner
1414                .ready()
1415                .await
1416                .map_err(|e| {
1417                    tonic::Status::unknown(
1418                        format!("Service was not ready: {}", e.into()),
1419                    )
1420                })?;
1421            let codec = tonic::codec::ProstCodec::default();
1422            let path = http::uri::PathAndQuery::from_static(
1423                "/ibc.core.channel.v1.Msg/ChannelOpenInit",
1424            );
1425            let mut req = request.into_request();
1426            req.extensions_mut()
1427                .insert(GrpcMethod::new("ibc.core.channel.v1.Msg", "ChannelOpenInit"));
1428            self.inner.unary(req, path, codec).await
1429        }
1430        /// ChannelOpenTry defines a rpc handler method for MsgChannelOpenTry.
1431        pub async fn channel_open_try(
1432            &mut self,
1433            request: impl tonic::IntoRequest<super::MsgChannelOpenTry>,
1434        ) -> std::result::Result<
1435            tonic::Response<super::MsgChannelOpenTryResponse>,
1436            tonic::Status,
1437        > {
1438            self.inner
1439                .ready()
1440                .await
1441                .map_err(|e| {
1442                    tonic::Status::unknown(
1443                        format!("Service was not ready: {}", e.into()),
1444                    )
1445                })?;
1446            let codec = tonic::codec::ProstCodec::default();
1447            let path = http::uri::PathAndQuery::from_static(
1448                "/ibc.core.channel.v1.Msg/ChannelOpenTry",
1449            );
1450            let mut req = request.into_request();
1451            req.extensions_mut()
1452                .insert(GrpcMethod::new("ibc.core.channel.v1.Msg", "ChannelOpenTry"));
1453            self.inner.unary(req, path, codec).await
1454        }
1455        /// ChannelOpenAck defines a rpc handler method for MsgChannelOpenAck.
1456        pub async fn channel_open_ack(
1457            &mut self,
1458            request: impl tonic::IntoRequest<super::MsgChannelOpenAck>,
1459        ) -> std::result::Result<
1460            tonic::Response<super::MsgChannelOpenAckResponse>,
1461            tonic::Status,
1462        > {
1463            self.inner
1464                .ready()
1465                .await
1466                .map_err(|e| {
1467                    tonic::Status::unknown(
1468                        format!("Service was not ready: {}", e.into()),
1469                    )
1470                })?;
1471            let codec = tonic::codec::ProstCodec::default();
1472            let path = http::uri::PathAndQuery::from_static(
1473                "/ibc.core.channel.v1.Msg/ChannelOpenAck",
1474            );
1475            let mut req = request.into_request();
1476            req.extensions_mut()
1477                .insert(GrpcMethod::new("ibc.core.channel.v1.Msg", "ChannelOpenAck"));
1478            self.inner.unary(req, path, codec).await
1479        }
1480        /// ChannelOpenConfirm defines a rpc handler method for MsgChannelOpenConfirm.
1481        pub async fn channel_open_confirm(
1482            &mut self,
1483            request: impl tonic::IntoRequest<super::MsgChannelOpenConfirm>,
1484        ) -> std::result::Result<
1485            tonic::Response<super::MsgChannelOpenConfirmResponse>,
1486            tonic::Status,
1487        > {
1488            self.inner
1489                .ready()
1490                .await
1491                .map_err(|e| {
1492                    tonic::Status::unknown(
1493                        format!("Service was not ready: {}", e.into()),
1494                    )
1495                })?;
1496            let codec = tonic::codec::ProstCodec::default();
1497            let path = http::uri::PathAndQuery::from_static(
1498                "/ibc.core.channel.v1.Msg/ChannelOpenConfirm",
1499            );
1500            let mut req = request.into_request();
1501            req.extensions_mut()
1502                .insert(
1503                    GrpcMethod::new("ibc.core.channel.v1.Msg", "ChannelOpenConfirm"),
1504                );
1505            self.inner.unary(req, path, codec).await
1506        }
1507        /// ChannelCloseInit defines a rpc handler method for MsgChannelCloseInit.
1508        pub async fn channel_close_init(
1509            &mut self,
1510            request: impl tonic::IntoRequest<super::MsgChannelCloseInit>,
1511        ) -> std::result::Result<
1512            tonic::Response<super::MsgChannelCloseInitResponse>,
1513            tonic::Status,
1514        > {
1515            self.inner
1516                .ready()
1517                .await
1518                .map_err(|e| {
1519                    tonic::Status::unknown(
1520                        format!("Service was not ready: {}", e.into()),
1521                    )
1522                })?;
1523            let codec = tonic::codec::ProstCodec::default();
1524            let path = http::uri::PathAndQuery::from_static(
1525                "/ibc.core.channel.v1.Msg/ChannelCloseInit",
1526            );
1527            let mut req = request.into_request();
1528            req.extensions_mut()
1529                .insert(GrpcMethod::new("ibc.core.channel.v1.Msg", "ChannelCloseInit"));
1530            self.inner.unary(req, path, codec).await
1531        }
1532        /// ChannelCloseConfirm defines a rpc handler method for
1533        /// MsgChannelCloseConfirm.
1534        pub async fn channel_close_confirm(
1535            &mut self,
1536            request: impl tonic::IntoRequest<super::MsgChannelCloseConfirm>,
1537        ) -> std::result::Result<
1538            tonic::Response<super::MsgChannelCloseConfirmResponse>,
1539            tonic::Status,
1540        > {
1541            self.inner
1542                .ready()
1543                .await
1544                .map_err(|e| {
1545                    tonic::Status::unknown(
1546                        format!("Service was not ready: {}", e.into()),
1547                    )
1548                })?;
1549            let codec = tonic::codec::ProstCodec::default();
1550            let path = http::uri::PathAndQuery::from_static(
1551                "/ibc.core.channel.v1.Msg/ChannelCloseConfirm",
1552            );
1553            let mut req = request.into_request();
1554            req.extensions_mut()
1555                .insert(
1556                    GrpcMethod::new("ibc.core.channel.v1.Msg", "ChannelCloseConfirm"),
1557                );
1558            self.inner.unary(req, path, codec).await
1559        }
1560        /// RecvPacket defines a rpc handler method for MsgRecvPacket.
1561        pub async fn recv_packet(
1562            &mut self,
1563            request: impl tonic::IntoRequest<super::MsgRecvPacket>,
1564        ) -> std::result::Result<
1565            tonic::Response<super::MsgRecvPacketResponse>,
1566            tonic::Status,
1567        > {
1568            self.inner
1569                .ready()
1570                .await
1571                .map_err(|e| {
1572                    tonic::Status::unknown(
1573                        format!("Service was not ready: {}", e.into()),
1574                    )
1575                })?;
1576            let codec = tonic::codec::ProstCodec::default();
1577            let path = http::uri::PathAndQuery::from_static(
1578                "/ibc.core.channel.v1.Msg/RecvPacket",
1579            );
1580            let mut req = request.into_request();
1581            req.extensions_mut()
1582                .insert(GrpcMethod::new("ibc.core.channel.v1.Msg", "RecvPacket"));
1583            self.inner.unary(req, path, codec).await
1584        }
1585        /// Timeout defines a rpc handler method for MsgTimeout.
1586        pub async fn timeout(
1587            &mut self,
1588            request: impl tonic::IntoRequest<super::MsgTimeout>,
1589        ) -> std::result::Result<
1590            tonic::Response<super::MsgTimeoutResponse>,
1591            tonic::Status,
1592        > {
1593            self.inner
1594                .ready()
1595                .await
1596                .map_err(|e| {
1597                    tonic::Status::unknown(
1598                        format!("Service was not ready: {}", e.into()),
1599                    )
1600                })?;
1601            let codec = tonic::codec::ProstCodec::default();
1602            let path = http::uri::PathAndQuery::from_static(
1603                "/ibc.core.channel.v1.Msg/Timeout",
1604            );
1605            let mut req = request.into_request();
1606            req.extensions_mut()
1607                .insert(GrpcMethod::new("ibc.core.channel.v1.Msg", "Timeout"));
1608            self.inner.unary(req, path, codec).await
1609        }
1610        /// TimeoutOnClose defines a rpc handler method for MsgTimeoutOnClose.
1611        pub async fn timeout_on_close(
1612            &mut self,
1613            request: impl tonic::IntoRequest<super::MsgTimeoutOnClose>,
1614        ) -> std::result::Result<
1615            tonic::Response<super::MsgTimeoutOnCloseResponse>,
1616            tonic::Status,
1617        > {
1618            self.inner
1619                .ready()
1620                .await
1621                .map_err(|e| {
1622                    tonic::Status::unknown(
1623                        format!("Service was not ready: {}", e.into()),
1624                    )
1625                })?;
1626            let codec = tonic::codec::ProstCodec::default();
1627            let path = http::uri::PathAndQuery::from_static(
1628                "/ibc.core.channel.v1.Msg/TimeoutOnClose",
1629            );
1630            let mut req = request.into_request();
1631            req.extensions_mut()
1632                .insert(GrpcMethod::new("ibc.core.channel.v1.Msg", "TimeoutOnClose"));
1633            self.inner.unary(req, path, codec).await
1634        }
1635        /// Acknowledgement defines a rpc handler method for MsgAcknowledgement.
1636        pub async fn acknowledgement(
1637            &mut self,
1638            request: impl tonic::IntoRequest<super::MsgAcknowledgement>,
1639        ) -> std::result::Result<
1640            tonic::Response<super::MsgAcknowledgementResponse>,
1641            tonic::Status,
1642        > {
1643            self.inner
1644                .ready()
1645                .await
1646                .map_err(|e| {
1647                    tonic::Status::unknown(
1648                        format!("Service was not ready: {}", e.into()),
1649                    )
1650                })?;
1651            let codec = tonic::codec::ProstCodec::default();
1652            let path = http::uri::PathAndQuery::from_static(
1653                "/ibc.core.channel.v1.Msg/Acknowledgement",
1654            );
1655            let mut req = request.into_request();
1656            req.extensions_mut()
1657                .insert(GrpcMethod::new("ibc.core.channel.v1.Msg", "Acknowledgement"));
1658            self.inner.unary(req, path, codec).await
1659        }
1660        /// ChannelUpgradeInit defines a rpc handler method for MsgChannelUpgradeInit.
1661        pub async fn channel_upgrade_init(
1662            &mut self,
1663            request: impl tonic::IntoRequest<super::MsgChannelUpgradeInit>,
1664        ) -> std::result::Result<
1665            tonic::Response<super::MsgChannelUpgradeInitResponse>,
1666            tonic::Status,
1667        > {
1668            self.inner
1669                .ready()
1670                .await
1671                .map_err(|e| {
1672                    tonic::Status::unknown(
1673                        format!("Service was not ready: {}", e.into()),
1674                    )
1675                })?;
1676            let codec = tonic::codec::ProstCodec::default();
1677            let path = http::uri::PathAndQuery::from_static(
1678                "/ibc.core.channel.v1.Msg/ChannelUpgradeInit",
1679            );
1680            let mut req = request.into_request();
1681            req.extensions_mut()
1682                .insert(
1683                    GrpcMethod::new("ibc.core.channel.v1.Msg", "ChannelUpgradeInit"),
1684                );
1685            self.inner.unary(req, path, codec).await
1686        }
1687        /// ChannelUpgradeTry defines a rpc handler method for MsgChannelUpgradeTry.
1688        pub async fn channel_upgrade_try(
1689            &mut self,
1690            request: impl tonic::IntoRequest<super::MsgChannelUpgradeTry>,
1691        ) -> std::result::Result<
1692            tonic::Response<super::MsgChannelUpgradeTryResponse>,
1693            tonic::Status,
1694        > {
1695            self.inner
1696                .ready()
1697                .await
1698                .map_err(|e| {
1699                    tonic::Status::unknown(
1700                        format!("Service was not ready: {}", e.into()),
1701                    )
1702                })?;
1703            let codec = tonic::codec::ProstCodec::default();
1704            let path = http::uri::PathAndQuery::from_static(
1705                "/ibc.core.channel.v1.Msg/ChannelUpgradeTry",
1706            );
1707            let mut req = request.into_request();
1708            req.extensions_mut()
1709                .insert(GrpcMethod::new("ibc.core.channel.v1.Msg", "ChannelUpgradeTry"));
1710            self.inner.unary(req, path, codec).await
1711        }
1712        /// ChannelUpgradeAck defines a rpc handler method for MsgChannelUpgradeAck.
1713        pub async fn channel_upgrade_ack(
1714            &mut self,
1715            request: impl tonic::IntoRequest<super::MsgChannelUpgradeAck>,
1716        ) -> std::result::Result<
1717            tonic::Response<super::MsgChannelUpgradeAckResponse>,
1718            tonic::Status,
1719        > {
1720            self.inner
1721                .ready()
1722                .await
1723                .map_err(|e| {
1724                    tonic::Status::unknown(
1725                        format!("Service was not ready: {}", e.into()),
1726                    )
1727                })?;
1728            let codec = tonic::codec::ProstCodec::default();
1729            let path = http::uri::PathAndQuery::from_static(
1730                "/ibc.core.channel.v1.Msg/ChannelUpgradeAck",
1731            );
1732            let mut req = request.into_request();
1733            req.extensions_mut()
1734                .insert(GrpcMethod::new("ibc.core.channel.v1.Msg", "ChannelUpgradeAck"));
1735            self.inner.unary(req, path, codec).await
1736        }
1737        /// ChannelUpgradeConfirm defines a rpc handler method for MsgChannelUpgradeConfirm.
1738        pub async fn channel_upgrade_confirm(
1739            &mut self,
1740            request: impl tonic::IntoRequest<super::MsgChannelUpgradeConfirm>,
1741        ) -> std::result::Result<
1742            tonic::Response<super::MsgChannelUpgradeConfirmResponse>,
1743            tonic::Status,
1744        > {
1745            self.inner
1746                .ready()
1747                .await
1748                .map_err(|e| {
1749                    tonic::Status::unknown(
1750                        format!("Service was not ready: {}", e.into()),
1751                    )
1752                })?;
1753            let codec = tonic::codec::ProstCodec::default();
1754            let path = http::uri::PathAndQuery::from_static(
1755                "/ibc.core.channel.v1.Msg/ChannelUpgradeConfirm",
1756            );
1757            let mut req = request.into_request();
1758            req.extensions_mut()
1759                .insert(
1760                    GrpcMethod::new("ibc.core.channel.v1.Msg", "ChannelUpgradeConfirm"),
1761                );
1762            self.inner.unary(req, path, codec).await
1763        }
1764        /// ChannelUpgradeOpen defines a rpc handler method for MsgChannelUpgradeOpen.
1765        pub async fn channel_upgrade_open(
1766            &mut self,
1767            request: impl tonic::IntoRequest<super::MsgChannelUpgradeOpen>,
1768        ) -> std::result::Result<
1769            tonic::Response<super::MsgChannelUpgradeOpenResponse>,
1770            tonic::Status,
1771        > {
1772            self.inner
1773                .ready()
1774                .await
1775                .map_err(|e| {
1776                    tonic::Status::unknown(
1777                        format!("Service was not ready: {}", e.into()),
1778                    )
1779                })?;
1780            let codec = tonic::codec::ProstCodec::default();
1781            let path = http::uri::PathAndQuery::from_static(
1782                "/ibc.core.channel.v1.Msg/ChannelUpgradeOpen",
1783            );
1784            let mut req = request.into_request();
1785            req.extensions_mut()
1786                .insert(
1787                    GrpcMethod::new("ibc.core.channel.v1.Msg", "ChannelUpgradeOpen"),
1788                );
1789            self.inner.unary(req, path, codec).await
1790        }
1791        /// ChannelUpgradeTimeout defines a rpc handler method for MsgChannelUpgradeTimeout.
1792        pub async fn channel_upgrade_timeout(
1793            &mut self,
1794            request: impl tonic::IntoRequest<super::MsgChannelUpgradeTimeout>,
1795        ) -> std::result::Result<
1796            tonic::Response<super::MsgChannelUpgradeTimeoutResponse>,
1797            tonic::Status,
1798        > {
1799            self.inner
1800                .ready()
1801                .await
1802                .map_err(|e| {
1803                    tonic::Status::unknown(
1804                        format!("Service was not ready: {}", e.into()),
1805                    )
1806                })?;
1807            let codec = tonic::codec::ProstCodec::default();
1808            let path = http::uri::PathAndQuery::from_static(
1809                "/ibc.core.channel.v1.Msg/ChannelUpgradeTimeout",
1810            );
1811            let mut req = request.into_request();
1812            req.extensions_mut()
1813                .insert(
1814                    GrpcMethod::new("ibc.core.channel.v1.Msg", "ChannelUpgradeTimeout"),
1815                );
1816            self.inner.unary(req, path, codec).await
1817        }
1818        /// ChannelUpgradeCancel defines a rpc handler method for MsgChannelUpgradeCancel.
1819        pub async fn channel_upgrade_cancel(
1820            &mut self,
1821            request: impl tonic::IntoRequest<super::MsgChannelUpgradeCancel>,
1822        ) -> std::result::Result<
1823            tonic::Response<super::MsgChannelUpgradeCancelResponse>,
1824            tonic::Status,
1825        > {
1826            self.inner
1827                .ready()
1828                .await
1829                .map_err(|e| {
1830                    tonic::Status::unknown(
1831                        format!("Service was not ready: {}", e.into()),
1832                    )
1833                })?;
1834            let codec = tonic::codec::ProstCodec::default();
1835            let path = http::uri::PathAndQuery::from_static(
1836                "/ibc.core.channel.v1.Msg/ChannelUpgradeCancel",
1837            );
1838            let mut req = request.into_request();
1839            req.extensions_mut()
1840                .insert(
1841                    GrpcMethod::new("ibc.core.channel.v1.Msg", "ChannelUpgradeCancel"),
1842                );
1843            self.inner.unary(req, path, codec).await
1844        }
1845        /// UpdateChannelParams defines a rpc handler method for MsgUpdateParams.
1846        pub async fn update_channel_params(
1847            &mut self,
1848            request: impl tonic::IntoRequest<super::MsgUpdateParams>,
1849        ) -> std::result::Result<
1850            tonic::Response<super::MsgUpdateParamsResponse>,
1851            tonic::Status,
1852        > {
1853            self.inner
1854                .ready()
1855                .await
1856                .map_err(|e| {
1857                    tonic::Status::unknown(
1858                        format!("Service was not ready: {}", e.into()),
1859                    )
1860                })?;
1861            let codec = tonic::codec::ProstCodec::default();
1862            let path = http::uri::PathAndQuery::from_static(
1863                "/ibc.core.channel.v1.Msg/UpdateChannelParams",
1864            );
1865            let mut req = request.into_request();
1866            req.extensions_mut()
1867                .insert(
1868                    GrpcMethod::new("ibc.core.channel.v1.Msg", "UpdateChannelParams"),
1869                );
1870            self.inner.unary(req, path, codec).await
1871        }
1872        /// PruneAcknowledgements defines a rpc handler method for MsgPruneAcknowledgements.
1873        pub async fn prune_acknowledgements(
1874            &mut self,
1875            request: impl tonic::IntoRequest<super::MsgPruneAcknowledgements>,
1876        ) -> std::result::Result<
1877            tonic::Response<super::MsgPruneAcknowledgementsResponse>,
1878            tonic::Status,
1879        > {
1880            self.inner
1881                .ready()
1882                .await
1883                .map_err(|e| {
1884                    tonic::Status::unknown(
1885                        format!("Service was not ready: {}", e.into()),
1886                    )
1887                })?;
1888            let codec = tonic::codec::ProstCodec::default();
1889            let path = http::uri::PathAndQuery::from_static(
1890                "/ibc.core.channel.v1.Msg/PruneAcknowledgements",
1891            );
1892            let mut req = request.into_request();
1893            req.extensions_mut()
1894                .insert(
1895                    GrpcMethod::new("ibc.core.channel.v1.Msg", "PruneAcknowledgements"),
1896                );
1897            self.inner.unary(req, path, codec).await
1898        }
1899    }
1900}
1901/// Generated server implementations.
1902#[cfg(feature = "server")]
1903pub mod msg_server {
1904    #![allow(
1905        unused_variables,
1906        dead_code,
1907        missing_docs,
1908        clippy::wildcard_imports,
1909        clippy::let_unit_value,
1910    )]
1911    use tonic::codegen::*;
1912    /// Generated trait containing gRPC methods that should be implemented for use with MsgServer.
1913    #[async_trait]
1914    pub trait Msg: std::marker::Send + std::marker::Sync + 'static {
1915        /// ChannelOpenInit defines a rpc handler method for MsgChannelOpenInit.
1916        async fn channel_open_init(
1917            &self,
1918            request: tonic::Request<super::MsgChannelOpenInit>,
1919        ) -> std::result::Result<
1920            tonic::Response<super::MsgChannelOpenInitResponse>,
1921            tonic::Status,
1922        >;
1923        /// ChannelOpenTry defines a rpc handler method for MsgChannelOpenTry.
1924        async fn channel_open_try(
1925            &self,
1926            request: tonic::Request<super::MsgChannelOpenTry>,
1927        ) -> std::result::Result<
1928            tonic::Response<super::MsgChannelOpenTryResponse>,
1929            tonic::Status,
1930        >;
1931        /// ChannelOpenAck defines a rpc handler method for MsgChannelOpenAck.
1932        async fn channel_open_ack(
1933            &self,
1934            request: tonic::Request<super::MsgChannelOpenAck>,
1935        ) -> std::result::Result<
1936            tonic::Response<super::MsgChannelOpenAckResponse>,
1937            tonic::Status,
1938        >;
1939        /// ChannelOpenConfirm defines a rpc handler method for MsgChannelOpenConfirm.
1940        async fn channel_open_confirm(
1941            &self,
1942            request: tonic::Request<super::MsgChannelOpenConfirm>,
1943        ) -> std::result::Result<
1944            tonic::Response<super::MsgChannelOpenConfirmResponse>,
1945            tonic::Status,
1946        >;
1947        /// ChannelCloseInit defines a rpc handler method for MsgChannelCloseInit.
1948        async fn channel_close_init(
1949            &self,
1950            request: tonic::Request<super::MsgChannelCloseInit>,
1951        ) -> std::result::Result<
1952            tonic::Response<super::MsgChannelCloseInitResponse>,
1953            tonic::Status,
1954        >;
1955        /// ChannelCloseConfirm defines a rpc handler method for
1956        /// MsgChannelCloseConfirm.
1957        async fn channel_close_confirm(
1958            &self,
1959            request: tonic::Request<super::MsgChannelCloseConfirm>,
1960        ) -> std::result::Result<
1961            tonic::Response<super::MsgChannelCloseConfirmResponse>,
1962            tonic::Status,
1963        >;
1964        /// RecvPacket defines a rpc handler method for MsgRecvPacket.
1965        async fn recv_packet(
1966            &self,
1967            request: tonic::Request<super::MsgRecvPacket>,
1968        ) -> std::result::Result<
1969            tonic::Response<super::MsgRecvPacketResponse>,
1970            tonic::Status,
1971        >;
1972        /// Timeout defines a rpc handler method for MsgTimeout.
1973        async fn timeout(
1974            &self,
1975            request: tonic::Request<super::MsgTimeout>,
1976        ) -> std::result::Result<
1977            tonic::Response<super::MsgTimeoutResponse>,
1978            tonic::Status,
1979        >;
1980        /// TimeoutOnClose defines a rpc handler method for MsgTimeoutOnClose.
1981        async fn timeout_on_close(
1982            &self,
1983            request: tonic::Request<super::MsgTimeoutOnClose>,
1984        ) -> std::result::Result<
1985            tonic::Response<super::MsgTimeoutOnCloseResponse>,
1986            tonic::Status,
1987        >;
1988        /// Acknowledgement defines a rpc handler method for MsgAcknowledgement.
1989        async fn acknowledgement(
1990            &self,
1991            request: tonic::Request<super::MsgAcknowledgement>,
1992        ) -> std::result::Result<
1993            tonic::Response<super::MsgAcknowledgementResponse>,
1994            tonic::Status,
1995        >;
1996        /// ChannelUpgradeInit defines a rpc handler method for MsgChannelUpgradeInit.
1997        async fn channel_upgrade_init(
1998            &self,
1999            request: tonic::Request<super::MsgChannelUpgradeInit>,
2000        ) -> std::result::Result<
2001            tonic::Response<super::MsgChannelUpgradeInitResponse>,
2002            tonic::Status,
2003        >;
2004        /// ChannelUpgradeTry defines a rpc handler method for MsgChannelUpgradeTry.
2005        async fn channel_upgrade_try(
2006            &self,
2007            request: tonic::Request<super::MsgChannelUpgradeTry>,
2008        ) -> std::result::Result<
2009            tonic::Response<super::MsgChannelUpgradeTryResponse>,
2010            tonic::Status,
2011        >;
2012        /// ChannelUpgradeAck defines a rpc handler method for MsgChannelUpgradeAck.
2013        async fn channel_upgrade_ack(
2014            &self,
2015            request: tonic::Request<super::MsgChannelUpgradeAck>,
2016        ) -> std::result::Result<
2017            tonic::Response<super::MsgChannelUpgradeAckResponse>,
2018            tonic::Status,
2019        >;
2020        /// ChannelUpgradeConfirm defines a rpc handler method for MsgChannelUpgradeConfirm.
2021        async fn channel_upgrade_confirm(
2022            &self,
2023            request: tonic::Request<super::MsgChannelUpgradeConfirm>,
2024        ) -> std::result::Result<
2025            tonic::Response<super::MsgChannelUpgradeConfirmResponse>,
2026            tonic::Status,
2027        >;
2028        /// ChannelUpgradeOpen defines a rpc handler method for MsgChannelUpgradeOpen.
2029        async fn channel_upgrade_open(
2030            &self,
2031            request: tonic::Request<super::MsgChannelUpgradeOpen>,
2032        ) -> std::result::Result<
2033            tonic::Response<super::MsgChannelUpgradeOpenResponse>,
2034            tonic::Status,
2035        >;
2036        /// ChannelUpgradeTimeout defines a rpc handler method for MsgChannelUpgradeTimeout.
2037        async fn channel_upgrade_timeout(
2038            &self,
2039            request: tonic::Request<super::MsgChannelUpgradeTimeout>,
2040        ) -> std::result::Result<
2041            tonic::Response<super::MsgChannelUpgradeTimeoutResponse>,
2042            tonic::Status,
2043        >;
2044        /// ChannelUpgradeCancel defines a rpc handler method for MsgChannelUpgradeCancel.
2045        async fn channel_upgrade_cancel(
2046            &self,
2047            request: tonic::Request<super::MsgChannelUpgradeCancel>,
2048        ) -> std::result::Result<
2049            tonic::Response<super::MsgChannelUpgradeCancelResponse>,
2050            tonic::Status,
2051        >;
2052        /// UpdateChannelParams defines a rpc handler method for MsgUpdateParams.
2053        async fn update_channel_params(
2054            &self,
2055            request: tonic::Request<super::MsgUpdateParams>,
2056        ) -> std::result::Result<
2057            tonic::Response<super::MsgUpdateParamsResponse>,
2058            tonic::Status,
2059        >;
2060        /// PruneAcknowledgements defines a rpc handler method for MsgPruneAcknowledgements.
2061        async fn prune_acknowledgements(
2062            &self,
2063            request: tonic::Request<super::MsgPruneAcknowledgements>,
2064        ) -> std::result::Result<
2065            tonic::Response<super::MsgPruneAcknowledgementsResponse>,
2066            tonic::Status,
2067        >;
2068    }
2069    /// Msg defines the ibc/channel Msg service.
2070    #[derive(Debug)]
2071    pub struct MsgServer<T> {
2072        inner: Arc<T>,
2073        accept_compression_encodings: EnabledCompressionEncodings,
2074        send_compression_encodings: EnabledCompressionEncodings,
2075        max_decoding_message_size: Option<usize>,
2076        max_encoding_message_size: Option<usize>,
2077    }
2078    impl<T> MsgServer<T> {
2079        pub fn new(inner: T) -> Self {
2080            Self::from_arc(Arc::new(inner))
2081        }
2082        pub fn from_arc(inner: Arc<T>) -> Self {
2083            Self {
2084                inner,
2085                accept_compression_encodings: Default::default(),
2086                send_compression_encodings: Default::default(),
2087                max_decoding_message_size: None,
2088                max_encoding_message_size: None,
2089            }
2090        }
2091        pub fn with_interceptor<F>(
2092            inner: T,
2093            interceptor: F,
2094        ) -> InterceptedService<Self, F>
2095        where
2096            F: tonic::service::Interceptor,
2097        {
2098            InterceptedService::new(Self::new(inner), interceptor)
2099        }
2100        /// Enable decompressing requests with the given encoding.
2101        #[must_use]
2102        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2103            self.accept_compression_encodings.enable(encoding);
2104            self
2105        }
2106        /// Compress responses with the given encoding, if the client supports it.
2107        #[must_use]
2108        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2109            self.send_compression_encodings.enable(encoding);
2110            self
2111        }
2112        /// Limits the maximum size of a decoded message.
2113        ///
2114        /// Default: `4MB`
2115        #[must_use]
2116        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2117            self.max_decoding_message_size = Some(limit);
2118            self
2119        }
2120        /// Limits the maximum size of an encoded message.
2121        ///
2122        /// Default: `usize::MAX`
2123        #[must_use]
2124        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2125            self.max_encoding_message_size = Some(limit);
2126            self
2127        }
2128    }
2129    impl<T, B> tonic::codegen::Service<http::Request<B>> for MsgServer<T>
2130    where
2131        T: Msg,
2132        B: Body + std::marker::Send + 'static,
2133        B::Error: Into<StdError> + std::marker::Send + 'static,
2134    {
2135        type Response = http::Response<tonic::body::Body>;
2136        type Error = std::convert::Infallible;
2137        type Future = BoxFuture<Self::Response, Self::Error>;
2138        fn poll_ready(
2139            &mut self,
2140            _cx: &mut Context<'_>,
2141        ) -> Poll<std::result::Result<(), Self::Error>> {
2142            Poll::Ready(Ok(()))
2143        }
2144        fn call(&mut self, req: http::Request<B>) -> Self::Future {
2145            match req.uri().path() {
2146                "/ibc.core.channel.v1.Msg/ChannelOpenInit" => {
2147                    #[allow(non_camel_case_types)]
2148                    struct ChannelOpenInitSvc<T: Msg>(pub Arc<T>);
2149                    impl<T: Msg> tonic::server::UnaryService<super::MsgChannelOpenInit>
2150                    for ChannelOpenInitSvc<T> {
2151                        type Response = super::MsgChannelOpenInitResponse;
2152                        type Future = BoxFuture<
2153                            tonic::Response<Self::Response>,
2154                            tonic::Status,
2155                        >;
2156                        fn call(
2157                            &mut self,
2158                            request: tonic::Request<super::MsgChannelOpenInit>,
2159                        ) -> Self::Future {
2160                            let inner = Arc::clone(&self.0);
2161                            let fut = async move {
2162                                <T as Msg>::channel_open_init(&inner, request).await
2163                            };
2164                            Box::pin(fut)
2165                        }
2166                    }
2167                    let accept_compression_encodings = self.accept_compression_encodings;
2168                    let send_compression_encodings = self.send_compression_encodings;
2169                    let max_decoding_message_size = self.max_decoding_message_size;
2170                    let max_encoding_message_size = self.max_encoding_message_size;
2171                    let inner = self.inner.clone();
2172                    let fut = async move {
2173                        let method = ChannelOpenInitSvc(inner);
2174                        let codec = tonic::codec::ProstCodec::default();
2175                        let mut grpc = tonic::server::Grpc::new(codec)
2176                            .apply_compression_config(
2177                                accept_compression_encodings,
2178                                send_compression_encodings,
2179                            )
2180                            .apply_max_message_size_config(
2181                                max_decoding_message_size,
2182                                max_encoding_message_size,
2183                            );
2184                        let res = grpc.unary(method, req).await;
2185                        Ok(res)
2186                    };
2187                    Box::pin(fut)
2188                }
2189                "/ibc.core.channel.v1.Msg/ChannelOpenTry" => {
2190                    #[allow(non_camel_case_types)]
2191                    struct ChannelOpenTrySvc<T: Msg>(pub Arc<T>);
2192                    impl<T: Msg> tonic::server::UnaryService<super::MsgChannelOpenTry>
2193                    for ChannelOpenTrySvc<T> {
2194                        type Response = super::MsgChannelOpenTryResponse;
2195                        type Future = BoxFuture<
2196                            tonic::Response<Self::Response>,
2197                            tonic::Status,
2198                        >;
2199                        fn call(
2200                            &mut self,
2201                            request: tonic::Request<super::MsgChannelOpenTry>,
2202                        ) -> Self::Future {
2203                            let inner = Arc::clone(&self.0);
2204                            let fut = async move {
2205                                <T as Msg>::channel_open_try(&inner, request).await
2206                            };
2207                            Box::pin(fut)
2208                        }
2209                    }
2210                    let accept_compression_encodings = self.accept_compression_encodings;
2211                    let send_compression_encodings = self.send_compression_encodings;
2212                    let max_decoding_message_size = self.max_decoding_message_size;
2213                    let max_encoding_message_size = self.max_encoding_message_size;
2214                    let inner = self.inner.clone();
2215                    let fut = async move {
2216                        let method = ChannelOpenTrySvc(inner);
2217                        let codec = tonic::codec::ProstCodec::default();
2218                        let mut grpc = tonic::server::Grpc::new(codec)
2219                            .apply_compression_config(
2220                                accept_compression_encodings,
2221                                send_compression_encodings,
2222                            )
2223                            .apply_max_message_size_config(
2224                                max_decoding_message_size,
2225                                max_encoding_message_size,
2226                            );
2227                        let res = grpc.unary(method, req).await;
2228                        Ok(res)
2229                    };
2230                    Box::pin(fut)
2231                }
2232                "/ibc.core.channel.v1.Msg/ChannelOpenAck" => {
2233                    #[allow(non_camel_case_types)]
2234                    struct ChannelOpenAckSvc<T: Msg>(pub Arc<T>);
2235                    impl<T: Msg> tonic::server::UnaryService<super::MsgChannelOpenAck>
2236                    for ChannelOpenAckSvc<T> {
2237                        type Response = super::MsgChannelOpenAckResponse;
2238                        type Future = BoxFuture<
2239                            tonic::Response<Self::Response>,
2240                            tonic::Status,
2241                        >;
2242                        fn call(
2243                            &mut self,
2244                            request: tonic::Request<super::MsgChannelOpenAck>,
2245                        ) -> Self::Future {
2246                            let inner = Arc::clone(&self.0);
2247                            let fut = async move {
2248                                <T as Msg>::channel_open_ack(&inner, request).await
2249                            };
2250                            Box::pin(fut)
2251                        }
2252                    }
2253                    let accept_compression_encodings = self.accept_compression_encodings;
2254                    let send_compression_encodings = self.send_compression_encodings;
2255                    let max_decoding_message_size = self.max_decoding_message_size;
2256                    let max_encoding_message_size = self.max_encoding_message_size;
2257                    let inner = self.inner.clone();
2258                    let fut = async move {
2259                        let method = ChannelOpenAckSvc(inner);
2260                        let codec = tonic::codec::ProstCodec::default();
2261                        let mut grpc = tonic::server::Grpc::new(codec)
2262                            .apply_compression_config(
2263                                accept_compression_encodings,
2264                                send_compression_encodings,
2265                            )
2266                            .apply_max_message_size_config(
2267                                max_decoding_message_size,
2268                                max_encoding_message_size,
2269                            );
2270                        let res = grpc.unary(method, req).await;
2271                        Ok(res)
2272                    };
2273                    Box::pin(fut)
2274                }
2275                "/ibc.core.channel.v1.Msg/ChannelOpenConfirm" => {
2276                    #[allow(non_camel_case_types)]
2277                    struct ChannelOpenConfirmSvc<T: Msg>(pub Arc<T>);
2278                    impl<
2279                        T: Msg,
2280                    > tonic::server::UnaryService<super::MsgChannelOpenConfirm>
2281                    for ChannelOpenConfirmSvc<T> {
2282                        type Response = super::MsgChannelOpenConfirmResponse;
2283                        type Future = BoxFuture<
2284                            tonic::Response<Self::Response>,
2285                            tonic::Status,
2286                        >;
2287                        fn call(
2288                            &mut self,
2289                            request: tonic::Request<super::MsgChannelOpenConfirm>,
2290                        ) -> Self::Future {
2291                            let inner = Arc::clone(&self.0);
2292                            let fut = async move {
2293                                <T as Msg>::channel_open_confirm(&inner, request).await
2294                            };
2295                            Box::pin(fut)
2296                        }
2297                    }
2298                    let accept_compression_encodings = self.accept_compression_encodings;
2299                    let send_compression_encodings = self.send_compression_encodings;
2300                    let max_decoding_message_size = self.max_decoding_message_size;
2301                    let max_encoding_message_size = self.max_encoding_message_size;
2302                    let inner = self.inner.clone();
2303                    let fut = async move {
2304                        let method = ChannelOpenConfirmSvc(inner);
2305                        let codec = tonic::codec::ProstCodec::default();
2306                        let mut grpc = tonic::server::Grpc::new(codec)
2307                            .apply_compression_config(
2308                                accept_compression_encodings,
2309                                send_compression_encodings,
2310                            )
2311                            .apply_max_message_size_config(
2312                                max_decoding_message_size,
2313                                max_encoding_message_size,
2314                            );
2315                        let res = grpc.unary(method, req).await;
2316                        Ok(res)
2317                    };
2318                    Box::pin(fut)
2319                }
2320                "/ibc.core.channel.v1.Msg/ChannelCloseInit" => {
2321                    #[allow(non_camel_case_types)]
2322                    struct ChannelCloseInitSvc<T: Msg>(pub Arc<T>);
2323                    impl<T: Msg> tonic::server::UnaryService<super::MsgChannelCloseInit>
2324                    for ChannelCloseInitSvc<T> {
2325                        type Response = super::MsgChannelCloseInitResponse;
2326                        type Future = BoxFuture<
2327                            tonic::Response<Self::Response>,
2328                            tonic::Status,
2329                        >;
2330                        fn call(
2331                            &mut self,
2332                            request: tonic::Request<super::MsgChannelCloseInit>,
2333                        ) -> Self::Future {
2334                            let inner = Arc::clone(&self.0);
2335                            let fut = async move {
2336                                <T as Msg>::channel_close_init(&inner, request).await
2337                            };
2338                            Box::pin(fut)
2339                        }
2340                    }
2341                    let accept_compression_encodings = self.accept_compression_encodings;
2342                    let send_compression_encodings = self.send_compression_encodings;
2343                    let max_decoding_message_size = self.max_decoding_message_size;
2344                    let max_encoding_message_size = self.max_encoding_message_size;
2345                    let inner = self.inner.clone();
2346                    let fut = async move {
2347                        let method = ChannelCloseInitSvc(inner);
2348                        let codec = tonic::codec::ProstCodec::default();
2349                        let mut grpc = tonic::server::Grpc::new(codec)
2350                            .apply_compression_config(
2351                                accept_compression_encodings,
2352                                send_compression_encodings,
2353                            )
2354                            .apply_max_message_size_config(
2355                                max_decoding_message_size,
2356                                max_encoding_message_size,
2357                            );
2358                        let res = grpc.unary(method, req).await;
2359                        Ok(res)
2360                    };
2361                    Box::pin(fut)
2362                }
2363                "/ibc.core.channel.v1.Msg/ChannelCloseConfirm" => {
2364                    #[allow(non_camel_case_types)]
2365                    struct ChannelCloseConfirmSvc<T: Msg>(pub Arc<T>);
2366                    impl<
2367                        T: Msg,
2368                    > tonic::server::UnaryService<super::MsgChannelCloseConfirm>
2369                    for ChannelCloseConfirmSvc<T> {
2370                        type Response = super::MsgChannelCloseConfirmResponse;
2371                        type Future = BoxFuture<
2372                            tonic::Response<Self::Response>,
2373                            tonic::Status,
2374                        >;
2375                        fn call(
2376                            &mut self,
2377                            request: tonic::Request<super::MsgChannelCloseConfirm>,
2378                        ) -> Self::Future {
2379                            let inner = Arc::clone(&self.0);
2380                            let fut = async move {
2381                                <T as Msg>::channel_close_confirm(&inner, request).await
2382                            };
2383                            Box::pin(fut)
2384                        }
2385                    }
2386                    let accept_compression_encodings = self.accept_compression_encodings;
2387                    let send_compression_encodings = self.send_compression_encodings;
2388                    let max_decoding_message_size = self.max_decoding_message_size;
2389                    let max_encoding_message_size = self.max_encoding_message_size;
2390                    let inner = self.inner.clone();
2391                    let fut = async move {
2392                        let method = ChannelCloseConfirmSvc(inner);
2393                        let codec = tonic::codec::ProstCodec::default();
2394                        let mut grpc = tonic::server::Grpc::new(codec)
2395                            .apply_compression_config(
2396                                accept_compression_encodings,
2397                                send_compression_encodings,
2398                            )
2399                            .apply_max_message_size_config(
2400                                max_decoding_message_size,
2401                                max_encoding_message_size,
2402                            );
2403                        let res = grpc.unary(method, req).await;
2404                        Ok(res)
2405                    };
2406                    Box::pin(fut)
2407                }
2408                "/ibc.core.channel.v1.Msg/RecvPacket" => {
2409                    #[allow(non_camel_case_types)]
2410                    struct RecvPacketSvc<T: Msg>(pub Arc<T>);
2411                    impl<T: Msg> tonic::server::UnaryService<super::MsgRecvPacket>
2412                    for RecvPacketSvc<T> {
2413                        type Response = super::MsgRecvPacketResponse;
2414                        type Future = BoxFuture<
2415                            tonic::Response<Self::Response>,
2416                            tonic::Status,
2417                        >;
2418                        fn call(
2419                            &mut self,
2420                            request: tonic::Request<super::MsgRecvPacket>,
2421                        ) -> Self::Future {
2422                            let inner = Arc::clone(&self.0);
2423                            let fut = async move {
2424                                <T as Msg>::recv_packet(&inner, request).await
2425                            };
2426                            Box::pin(fut)
2427                        }
2428                    }
2429                    let accept_compression_encodings = self.accept_compression_encodings;
2430                    let send_compression_encodings = self.send_compression_encodings;
2431                    let max_decoding_message_size = self.max_decoding_message_size;
2432                    let max_encoding_message_size = self.max_encoding_message_size;
2433                    let inner = self.inner.clone();
2434                    let fut = async move {
2435                        let method = RecvPacketSvc(inner);
2436                        let codec = tonic::codec::ProstCodec::default();
2437                        let mut grpc = tonic::server::Grpc::new(codec)
2438                            .apply_compression_config(
2439                                accept_compression_encodings,
2440                                send_compression_encodings,
2441                            )
2442                            .apply_max_message_size_config(
2443                                max_decoding_message_size,
2444                                max_encoding_message_size,
2445                            );
2446                        let res = grpc.unary(method, req).await;
2447                        Ok(res)
2448                    };
2449                    Box::pin(fut)
2450                }
2451                "/ibc.core.channel.v1.Msg/Timeout" => {
2452                    #[allow(non_camel_case_types)]
2453                    struct TimeoutSvc<T: Msg>(pub Arc<T>);
2454                    impl<T: Msg> tonic::server::UnaryService<super::MsgTimeout>
2455                    for TimeoutSvc<T> {
2456                        type Response = super::MsgTimeoutResponse;
2457                        type Future = BoxFuture<
2458                            tonic::Response<Self::Response>,
2459                            tonic::Status,
2460                        >;
2461                        fn call(
2462                            &mut self,
2463                            request: tonic::Request<super::MsgTimeout>,
2464                        ) -> Self::Future {
2465                            let inner = Arc::clone(&self.0);
2466                            let fut = async move {
2467                                <T as Msg>::timeout(&inner, request).await
2468                            };
2469                            Box::pin(fut)
2470                        }
2471                    }
2472                    let accept_compression_encodings = self.accept_compression_encodings;
2473                    let send_compression_encodings = self.send_compression_encodings;
2474                    let max_decoding_message_size = self.max_decoding_message_size;
2475                    let max_encoding_message_size = self.max_encoding_message_size;
2476                    let inner = self.inner.clone();
2477                    let fut = async move {
2478                        let method = TimeoutSvc(inner);
2479                        let codec = tonic::codec::ProstCodec::default();
2480                        let mut grpc = tonic::server::Grpc::new(codec)
2481                            .apply_compression_config(
2482                                accept_compression_encodings,
2483                                send_compression_encodings,
2484                            )
2485                            .apply_max_message_size_config(
2486                                max_decoding_message_size,
2487                                max_encoding_message_size,
2488                            );
2489                        let res = grpc.unary(method, req).await;
2490                        Ok(res)
2491                    };
2492                    Box::pin(fut)
2493                }
2494                "/ibc.core.channel.v1.Msg/TimeoutOnClose" => {
2495                    #[allow(non_camel_case_types)]
2496                    struct TimeoutOnCloseSvc<T: Msg>(pub Arc<T>);
2497                    impl<T: Msg> tonic::server::UnaryService<super::MsgTimeoutOnClose>
2498                    for TimeoutOnCloseSvc<T> {
2499                        type Response = super::MsgTimeoutOnCloseResponse;
2500                        type Future = BoxFuture<
2501                            tonic::Response<Self::Response>,
2502                            tonic::Status,
2503                        >;
2504                        fn call(
2505                            &mut self,
2506                            request: tonic::Request<super::MsgTimeoutOnClose>,
2507                        ) -> Self::Future {
2508                            let inner = Arc::clone(&self.0);
2509                            let fut = async move {
2510                                <T as Msg>::timeout_on_close(&inner, request).await
2511                            };
2512                            Box::pin(fut)
2513                        }
2514                    }
2515                    let accept_compression_encodings = self.accept_compression_encodings;
2516                    let send_compression_encodings = self.send_compression_encodings;
2517                    let max_decoding_message_size = self.max_decoding_message_size;
2518                    let max_encoding_message_size = self.max_encoding_message_size;
2519                    let inner = self.inner.clone();
2520                    let fut = async move {
2521                        let method = TimeoutOnCloseSvc(inner);
2522                        let codec = tonic::codec::ProstCodec::default();
2523                        let mut grpc = tonic::server::Grpc::new(codec)
2524                            .apply_compression_config(
2525                                accept_compression_encodings,
2526                                send_compression_encodings,
2527                            )
2528                            .apply_max_message_size_config(
2529                                max_decoding_message_size,
2530                                max_encoding_message_size,
2531                            );
2532                        let res = grpc.unary(method, req).await;
2533                        Ok(res)
2534                    };
2535                    Box::pin(fut)
2536                }
2537                "/ibc.core.channel.v1.Msg/Acknowledgement" => {
2538                    #[allow(non_camel_case_types)]
2539                    struct AcknowledgementSvc<T: Msg>(pub Arc<T>);
2540                    impl<T: Msg> tonic::server::UnaryService<super::MsgAcknowledgement>
2541                    for AcknowledgementSvc<T> {
2542                        type Response = super::MsgAcknowledgementResponse;
2543                        type Future = BoxFuture<
2544                            tonic::Response<Self::Response>,
2545                            tonic::Status,
2546                        >;
2547                        fn call(
2548                            &mut self,
2549                            request: tonic::Request<super::MsgAcknowledgement>,
2550                        ) -> Self::Future {
2551                            let inner = Arc::clone(&self.0);
2552                            let fut = async move {
2553                                <T as Msg>::acknowledgement(&inner, request).await
2554                            };
2555                            Box::pin(fut)
2556                        }
2557                    }
2558                    let accept_compression_encodings = self.accept_compression_encodings;
2559                    let send_compression_encodings = self.send_compression_encodings;
2560                    let max_decoding_message_size = self.max_decoding_message_size;
2561                    let max_encoding_message_size = self.max_encoding_message_size;
2562                    let inner = self.inner.clone();
2563                    let fut = async move {
2564                        let method = AcknowledgementSvc(inner);
2565                        let codec = tonic::codec::ProstCodec::default();
2566                        let mut grpc = tonic::server::Grpc::new(codec)
2567                            .apply_compression_config(
2568                                accept_compression_encodings,
2569                                send_compression_encodings,
2570                            )
2571                            .apply_max_message_size_config(
2572                                max_decoding_message_size,
2573                                max_encoding_message_size,
2574                            );
2575                        let res = grpc.unary(method, req).await;
2576                        Ok(res)
2577                    };
2578                    Box::pin(fut)
2579                }
2580                "/ibc.core.channel.v1.Msg/ChannelUpgradeInit" => {
2581                    #[allow(non_camel_case_types)]
2582                    struct ChannelUpgradeInitSvc<T: Msg>(pub Arc<T>);
2583                    impl<
2584                        T: Msg,
2585                    > tonic::server::UnaryService<super::MsgChannelUpgradeInit>
2586                    for ChannelUpgradeInitSvc<T> {
2587                        type Response = super::MsgChannelUpgradeInitResponse;
2588                        type Future = BoxFuture<
2589                            tonic::Response<Self::Response>,
2590                            tonic::Status,
2591                        >;
2592                        fn call(
2593                            &mut self,
2594                            request: tonic::Request<super::MsgChannelUpgradeInit>,
2595                        ) -> Self::Future {
2596                            let inner = Arc::clone(&self.0);
2597                            let fut = async move {
2598                                <T as Msg>::channel_upgrade_init(&inner, request).await
2599                            };
2600                            Box::pin(fut)
2601                        }
2602                    }
2603                    let accept_compression_encodings = self.accept_compression_encodings;
2604                    let send_compression_encodings = self.send_compression_encodings;
2605                    let max_decoding_message_size = self.max_decoding_message_size;
2606                    let max_encoding_message_size = self.max_encoding_message_size;
2607                    let inner = self.inner.clone();
2608                    let fut = async move {
2609                        let method = ChannelUpgradeInitSvc(inner);
2610                        let codec = tonic::codec::ProstCodec::default();
2611                        let mut grpc = tonic::server::Grpc::new(codec)
2612                            .apply_compression_config(
2613                                accept_compression_encodings,
2614                                send_compression_encodings,
2615                            )
2616                            .apply_max_message_size_config(
2617                                max_decoding_message_size,
2618                                max_encoding_message_size,
2619                            );
2620                        let res = grpc.unary(method, req).await;
2621                        Ok(res)
2622                    };
2623                    Box::pin(fut)
2624                }
2625                "/ibc.core.channel.v1.Msg/ChannelUpgradeTry" => {
2626                    #[allow(non_camel_case_types)]
2627                    struct ChannelUpgradeTrySvc<T: Msg>(pub Arc<T>);
2628                    impl<T: Msg> tonic::server::UnaryService<super::MsgChannelUpgradeTry>
2629                    for ChannelUpgradeTrySvc<T> {
2630                        type Response = super::MsgChannelUpgradeTryResponse;
2631                        type Future = BoxFuture<
2632                            tonic::Response<Self::Response>,
2633                            tonic::Status,
2634                        >;
2635                        fn call(
2636                            &mut self,
2637                            request: tonic::Request<super::MsgChannelUpgradeTry>,
2638                        ) -> Self::Future {
2639                            let inner = Arc::clone(&self.0);
2640                            let fut = async move {
2641                                <T as Msg>::channel_upgrade_try(&inner, request).await
2642                            };
2643                            Box::pin(fut)
2644                        }
2645                    }
2646                    let accept_compression_encodings = self.accept_compression_encodings;
2647                    let send_compression_encodings = self.send_compression_encodings;
2648                    let max_decoding_message_size = self.max_decoding_message_size;
2649                    let max_encoding_message_size = self.max_encoding_message_size;
2650                    let inner = self.inner.clone();
2651                    let fut = async move {
2652                        let method = ChannelUpgradeTrySvc(inner);
2653                        let codec = tonic::codec::ProstCodec::default();
2654                        let mut grpc = tonic::server::Grpc::new(codec)
2655                            .apply_compression_config(
2656                                accept_compression_encodings,
2657                                send_compression_encodings,
2658                            )
2659                            .apply_max_message_size_config(
2660                                max_decoding_message_size,
2661                                max_encoding_message_size,
2662                            );
2663                        let res = grpc.unary(method, req).await;
2664                        Ok(res)
2665                    };
2666                    Box::pin(fut)
2667                }
2668                "/ibc.core.channel.v1.Msg/ChannelUpgradeAck" => {
2669                    #[allow(non_camel_case_types)]
2670                    struct ChannelUpgradeAckSvc<T: Msg>(pub Arc<T>);
2671                    impl<T: Msg> tonic::server::UnaryService<super::MsgChannelUpgradeAck>
2672                    for ChannelUpgradeAckSvc<T> {
2673                        type Response = super::MsgChannelUpgradeAckResponse;
2674                        type Future = BoxFuture<
2675                            tonic::Response<Self::Response>,
2676                            tonic::Status,
2677                        >;
2678                        fn call(
2679                            &mut self,
2680                            request: tonic::Request<super::MsgChannelUpgradeAck>,
2681                        ) -> Self::Future {
2682                            let inner = Arc::clone(&self.0);
2683                            let fut = async move {
2684                                <T as Msg>::channel_upgrade_ack(&inner, request).await
2685                            };
2686                            Box::pin(fut)
2687                        }
2688                    }
2689                    let accept_compression_encodings = self.accept_compression_encodings;
2690                    let send_compression_encodings = self.send_compression_encodings;
2691                    let max_decoding_message_size = self.max_decoding_message_size;
2692                    let max_encoding_message_size = self.max_encoding_message_size;
2693                    let inner = self.inner.clone();
2694                    let fut = async move {
2695                        let method = ChannelUpgradeAckSvc(inner);
2696                        let codec = tonic::codec::ProstCodec::default();
2697                        let mut grpc = tonic::server::Grpc::new(codec)
2698                            .apply_compression_config(
2699                                accept_compression_encodings,
2700                                send_compression_encodings,
2701                            )
2702                            .apply_max_message_size_config(
2703                                max_decoding_message_size,
2704                                max_encoding_message_size,
2705                            );
2706                        let res = grpc.unary(method, req).await;
2707                        Ok(res)
2708                    };
2709                    Box::pin(fut)
2710                }
2711                "/ibc.core.channel.v1.Msg/ChannelUpgradeConfirm" => {
2712                    #[allow(non_camel_case_types)]
2713                    struct ChannelUpgradeConfirmSvc<T: Msg>(pub Arc<T>);
2714                    impl<
2715                        T: Msg,
2716                    > tonic::server::UnaryService<super::MsgChannelUpgradeConfirm>
2717                    for ChannelUpgradeConfirmSvc<T> {
2718                        type Response = super::MsgChannelUpgradeConfirmResponse;
2719                        type Future = BoxFuture<
2720                            tonic::Response<Self::Response>,
2721                            tonic::Status,
2722                        >;
2723                        fn call(
2724                            &mut self,
2725                            request: tonic::Request<super::MsgChannelUpgradeConfirm>,
2726                        ) -> Self::Future {
2727                            let inner = Arc::clone(&self.0);
2728                            let fut = async move {
2729                                <T as Msg>::channel_upgrade_confirm(&inner, request).await
2730                            };
2731                            Box::pin(fut)
2732                        }
2733                    }
2734                    let accept_compression_encodings = self.accept_compression_encodings;
2735                    let send_compression_encodings = self.send_compression_encodings;
2736                    let max_decoding_message_size = self.max_decoding_message_size;
2737                    let max_encoding_message_size = self.max_encoding_message_size;
2738                    let inner = self.inner.clone();
2739                    let fut = async move {
2740                        let method = ChannelUpgradeConfirmSvc(inner);
2741                        let codec = tonic::codec::ProstCodec::default();
2742                        let mut grpc = tonic::server::Grpc::new(codec)
2743                            .apply_compression_config(
2744                                accept_compression_encodings,
2745                                send_compression_encodings,
2746                            )
2747                            .apply_max_message_size_config(
2748                                max_decoding_message_size,
2749                                max_encoding_message_size,
2750                            );
2751                        let res = grpc.unary(method, req).await;
2752                        Ok(res)
2753                    };
2754                    Box::pin(fut)
2755                }
2756                "/ibc.core.channel.v1.Msg/ChannelUpgradeOpen" => {
2757                    #[allow(non_camel_case_types)]
2758                    struct ChannelUpgradeOpenSvc<T: Msg>(pub Arc<T>);
2759                    impl<
2760                        T: Msg,
2761                    > tonic::server::UnaryService<super::MsgChannelUpgradeOpen>
2762                    for ChannelUpgradeOpenSvc<T> {
2763                        type Response = super::MsgChannelUpgradeOpenResponse;
2764                        type Future = BoxFuture<
2765                            tonic::Response<Self::Response>,
2766                            tonic::Status,
2767                        >;
2768                        fn call(
2769                            &mut self,
2770                            request: tonic::Request<super::MsgChannelUpgradeOpen>,
2771                        ) -> Self::Future {
2772                            let inner = Arc::clone(&self.0);
2773                            let fut = async move {
2774                                <T as Msg>::channel_upgrade_open(&inner, request).await
2775                            };
2776                            Box::pin(fut)
2777                        }
2778                    }
2779                    let accept_compression_encodings = self.accept_compression_encodings;
2780                    let send_compression_encodings = self.send_compression_encodings;
2781                    let max_decoding_message_size = self.max_decoding_message_size;
2782                    let max_encoding_message_size = self.max_encoding_message_size;
2783                    let inner = self.inner.clone();
2784                    let fut = async move {
2785                        let method = ChannelUpgradeOpenSvc(inner);
2786                        let codec = tonic::codec::ProstCodec::default();
2787                        let mut grpc = tonic::server::Grpc::new(codec)
2788                            .apply_compression_config(
2789                                accept_compression_encodings,
2790                                send_compression_encodings,
2791                            )
2792                            .apply_max_message_size_config(
2793                                max_decoding_message_size,
2794                                max_encoding_message_size,
2795                            );
2796                        let res = grpc.unary(method, req).await;
2797                        Ok(res)
2798                    };
2799                    Box::pin(fut)
2800                }
2801                "/ibc.core.channel.v1.Msg/ChannelUpgradeTimeout" => {
2802                    #[allow(non_camel_case_types)]
2803                    struct ChannelUpgradeTimeoutSvc<T: Msg>(pub Arc<T>);
2804                    impl<
2805                        T: Msg,
2806                    > tonic::server::UnaryService<super::MsgChannelUpgradeTimeout>
2807                    for ChannelUpgradeTimeoutSvc<T> {
2808                        type Response = super::MsgChannelUpgradeTimeoutResponse;
2809                        type Future = BoxFuture<
2810                            tonic::Response<Self::Response>,
2811                            tonic::Status,
2812                        >;
2813                        fn call(
2814                            &mut self,
2815                            request: tonic::Request<super::MsgChannelUpgradeTimeout>,
2816                        ) -> Self::Future {
2817                            let inner = Arc::clone(&self.0);
2818                            let fut = async move {
2819                                <T as Msg>::channel_upgrade_timeout(&inner, request).await
2820                            };
2821                            Box::pin(fut)
2822                        }
2823                    }
2824                    let accept_compression_encodings = self.accept_compression_encodings;
2825                    let send_compression_encodings = self.send_compression_encodings;
2826                    let max_decoding_message_size = self.max_decoding_message_size;
2827                    let max_encoding_message_size = self.max_encoding_message_size;
2828                    let inner = self.inner.clone();
2829                    let fut = async move {
2830                        let method = ChannelUpgradeTimeoutSvc(inner);
2831                        let codec = tonic::codec::ProstCodec::default();
2832                        let mut grpc = tonic::server::Grpc::new(codec)
2833                            .apply_compression_config(
2834                                accept_compression_encodings,
2835                                send_compression_encodings,
2836                            )
2837                            .apply_max_message_size_config(
2838                                max_decoding_message_size,
2839                                max_encoding_message_size,
2840                            );
2841                        let res = grpc.unary(method, req).await;
2842                        Ok(res)
2843                    };
2844                    Box::pin(fut)
2845                }
2846                "/ibc.core.channel.v1.Msg/ChannelUpgradeCancel" => {
2847                    #[allow(non_camel_case_types)]
2848                    struct ChannelUpgradeCancelSvc<T: Msg>(pub Arc<T>);
2849                    impl<
2850                        T: Msg,
2851                    > tonic::server::UnaryService<super::MsgChannelUpgradeCancel>
2852                    for ChannelUpgradeCancelSvc<T> {
2853                        type Response = super::MsgChannelUpgradeCancelResponse;
2854                        type Future = BoxFuture<
2855                            tonic::Response<Self::Response>,
2856                            tonic::Status,
2857                        >;
2858                        fn call(
2859                            &mut self,
2860                            request: tonic::Request<super::MsgChannelUpgradeCancel>,
2861                        ) -> Self::Future {
2862                            let inner = Arc::clone(&self.0);
2863                            let fut = async move {
2864                                <T as Msg>::channel_upgrade_cancel(&inner, request).await
2865                            };
2866                            Box::pin(fut)
2867                        }
2868                    }
2869                    let accept_compression_encodings = self.accept_compression_encodings;
2870                    let send_compression_encodings = self.send_compression_encodings;
2871                    let max_decoding_message_size = self.max_decoding_message_size;
2872                    let max_encoding_message_size = self.max_encoding_message_size;
2873                    let inner = self.inner.clone();
2874                    let fut = async move {
2875                        let method = ChannelUpgradeCancelSvc(inner);
2876                        let codec = tonic::codec::ProstCodec::default();
2877                        let mut grpc = tonic::server::Grpc::new(codec)
2878                            .apply_compression_config(
2879                                accept_compression_encodings,
2880                                send_compression_encodings,
2881                            )
2882                            .apply_max_message_size_config(
2883                                max_decoding_message_size,
2884                                max_encoding_message_size,
2885                            );
2886                        let res = grpc.unary(method, req).await;
2887                        Ok(res)
2888                    };
2889                    Box::pin(fut)
2890                }
2891                "/ibc.core.channel.v1.Msg/UpdateChannelParams" => {
2892                    #[allow(non_camel_case_types)]
2893                    struct UpdateChannelParamsSvc<T: Msg>(pub Arc<T>);
2894                    impl<T: Msg> tonic::server::UnaryService<super::MsgUpdateParams>
2895                    for UpdateChannelParamsSvc<T> {
2896                        type Response = super::MsgUpdateParamsResponse;
2897                        type Future = BoxFuture<
2898                            tonic::Response<Self::Response>,
2899                            tonic::Status,
2900                        >;
2901                        fn call(
2902                            &mut self,
2903                            request: tonic::Request<super::MsgUpdateParams>,
2904                        ) -> Self::Future {
2905                            let inner = Arc::clone(&self.0);
2906                            let fut = async move {
2907                                <T as Msg>::update_channel_params(&inner, request).await
2908                            };
2909                            Box::pin(fut)
2910                        }
2911                    }
2912                    let accept_compression_encodings = self.accept_compression_encodings;
2913                    let send_compression_encodings = self.send_compression_encodings;
2914                    let max_decoding_message_size = self.max_decoding_message_size;
2915                    let max_encoding_message_size = self.max_encoding_message_size;
2916                    let inner = self.inner.clone();
2917                    let fut = async move {
2918                        let method = UpdateChannelParamsSvc(inner);
2919                        let codec = tonic::codec::ProstCodec::default();
2920                        let mut grpc = tonic::server::Grpc::new(codec)
2921                            .apply_compression_config(
2922                                accept_compression_encodings,
2923                                send_compression_encodings,
2924                            )
2925                            .apply_max_message_size_config(
2926                                max_decoding_message_size,
2927                                max_encoding_message_size,
2928                            );
2929                        let res = grpc.unary(method, req).await;
2930                        Ok(res)
2931                    };
2932                    Box::pin(fut)
2933                }
2934                "/ibc.core.channel.v1.Msg/PruneAcknowledgements" => {
2935                    #[allow(non_camel_case_types)]
2936                    struct PruneAcknowledgementsSvc<T: Msg>(pub Arc<T>);
2937                    impl<
2938                        T: Msg,
2939                    > tonic::server::UnaryService<super::MsgPruneAcknowledgements>
2940                    for PruneAcknowledgementsSvc<T> {
2941                        type Response = super::MsgPruneAcknowledgementsResponse;
2942                        type Future = BoxFuture<
2943                            tonic::Response<Self::Response>,
2944                            tonic::Status,
2945                        >;
2946                        fn call(
2947                            &mut self,
2948                            request: tonic::Request<super::MsgPruneAcknowledgements>,
2949                        ) -> Self::Future {
2950                            let inner = Arc::clone(&self.0);
2951                            let fut = async move {
2952                                <T as Msg>::prune_acknowledgements(&inner, request).await
2953                            };
2954                            Box::pin(fut)
2955                        }
2956                    }
2957                    let accept_compression_encodings = self.accept_compression_encodings;
2958                    let send_compression_encodings = self.send_compression_encodings;
2959                    let max_decoding_message_size = self.max_decoding_message_size;
2960                    let max_encoding_message_size = self.max_encoding_message_size;
2961                    let inner = self.inner.clone();
2962                    let fut = async move {
2963                        let method = PruneAcknowledgementsSvc(inner);
2964                        let codec = tonic::codec::ProstCodec::default();
2965                        let mut grpc = tonic::server::Grpc::new(codec)
2966                            .apply_compression_config(
2967                                accept_compression_encodings,
2968                                send_compression_encodings,
2969                            )
2970                            .apply_max_message_size_config(
2971                                max_decoding_message_size,
2972                                max_encoding_message_size,
2973                            );
2974                        let res = grpc.unary(method, req).await;
2975                        Ok(res)
2976                    };
2977                    Box::pin(fut)
2978                }
2979                _ => {
2980                    Box::pin(async move {
2981                        let mut response = http::Response::new(
2982                            tonic::body::Body::default(),
2983                        );
2984                        let headers = response.headers_mut();
2985                        headers
2986                            .insert(
2987                                tonic::Status::GRPC_STATUS,
2988                                (tonic::Code::Unimplemented as i32).into(),
2989                            );
2990                        headers
2991                            .insert(
2992                                http::header::CONTENT_TYPE,
2993                                tonic::metadata::GRPC_CONTENT_TYPE,
2994                            );
2995                        Ok(response)
2996                    })
2997                }
2998            }
2999        }
3000    }
3001    impl<T> Clone for MsgServer<T> {
3002        fn clone(&self) -> Self {
3003            let inner = self.inner.clone();
3004            Self {
3005                inner,
3006                accept_compression_encodings: self.accept_compression_encodings,
3007                send_compression_encodings: self.send_compression_encodings,
3008                max_decoding_message_size: self.max_decoding_message_size,
3009                max_encoding_message_size: self.max_encoding_message_size,
3010            }
3011        }
3012    }
3013    /// Generated gRPC service name
3014    pub const SERVICE_NAME: &str = "ibc.core.channel.v1.Msg";
3015    impl<T> tonic::server::NamedService for MsgServer<T> {
3016        const NAME: &'static str = SERVICE_NAME;
3017    }
3018}
3019/// QueryChannelRequest is the request type for the Query/Channel RPC method
3020#[derive(Clone, PartialEq, ::prost::Message)]
3021pub struct QueryChannelRequest {
3022    /// port unique identifier
3023    #[prost(string, tag = "1")]
3024    pub port_id: ::prost::alloc::string::String,
3025    /// channel unique identifier
3026    #[prost(string, tag = "2")]
3027    pub channel_id: ::prost::alloc::string::String,
3028}
3029impl ::prost::Name for QueryChannelRequest {
3030    const NAME: &'static str = "QueryChannelRequest";
3031    const PACKAGE: &'static str = "ibc.core.channel.v1";
3032    fn full_name() -> ::prost::alloc::string::String {
3033        "ibc.core.channel.v1.QueryChannelRequest".into()
3034    }
3035    fn type_url() -> ::prost::alloc::string::String {
3036        "/ibc.core.channel.v1.QueryChannelRequest".into()
3037    }
3038}
3039/// QueryChannelResponse is the response type for the Query/Channel RPC method.
3040/// Besides the Channel end, it includes a proof and the height from which the
3041/// proof was retrieved.
3042#[derive(Clone, PartialEq, ::prost::Message)]
3043pub struct QueryChannelResponse {
3044    /// channel associated with the request identifiers
3045    #[prost(message, optional, tag = "1")]
3046    pub channel: ::core::option::Option<Channel>,
3047    /// merkle proof of existence
3048    #[prost(bytes = "vec", tag = "2")]
3049    pub proof: ::prost::alloc::vec::Vec<u8>,
3050    /// height at which the proof was retrieved
3051    #[prost(message, optional, tag = "3")]
3052    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
3053}
3054impl ::prost::Name for QueryChannelResponse {
3055    const NAME: &'static str = "QueryChannelResponse";
3056    const PACKAGE: &'static str = "ibc.core.channel.v1";
3057    fn full_name() -> ::prost::alloc::string::String {
3058        "ibc.core.channel.v1.QueryChannelResponse".into()
3059    }
3060    fn type_url() -> ::prost::alloc::string::String {
3061        "/ibc.core.channel.v1.QueryChannelResponse".into()
3062    }
3063}
3064/// QueryChannelsRequest is the request type for the Query/Channels RPC method
3065#[derive(Clone, PartialEq, ::prost::Message)]
3066pub struct QueryChannelsRequest {
3067    /// pagination request
3068    #[prost(message, optional, tag = "1")]
3069    pub pagination: ::core::option::Option<
3070        super::super::super::super::cosmos::base::query::v1beta1::PageRequest,
3071    >,
3072}
3073impl ::prost::Name for QueryChannelsRequest {
3074    const NAME: &'static str = "QueryChannelsRequest";
3075    const PACKAGE: &'static str = "ibc.core.channel.v1";
3076    fn full_name() -> ::prost::alloc::string::String {
3077        "ibc.core.channel.v1.QueryChannelsRequest".into()
3078    }
3079    fn type_url() -> ::prost::alloc::string::String {
3080        "/ibc.core.channel.v1.QueryChannelsRequest".into()
3081    }
3082}
3083/// QueryChannelsResponse is the response type for the Query/Channels RPC method.
3084#[derive(Clone, PartialEq, ::prost::Message)]
3085pub struct QueryChannelsResponse {
3086    /// list of stored channels of the chain.
3087    #[prost(message, repeated, tag = "1")]
3088    pub channels: ::prost::alloc::vec::Vec<IdentifiedChannel>,
3089    /// pagination response
3090    #[prost(message, optional, tag = "2")]
3091    pub pagination: ::core::option::Option<
3092        super::super::super::super::cosmos::base::query::v1beta1::PageResponse,
3093    >,
3094    /// query block height
3095    #[prost(message, optional, tag = "3")]
3096    pub height: ::core::option::Option<super::super::client::v1::Height>,
3097}
3098impl ::prost::Name for QueryChannelsResponse {
3099    const NAME: &'static str = "QueryChannelsResponse";
3100    const PACKAGE: &'static str = "ibc.core.channel.v1";
3101    fn full_name() -> ::prost::alloc::string::String {
3102        "ibc.core.channel.v1.QueryChannelsResponse".into()
3103    }
3104    fn type_url() -> ::prost::alloc::string::String {
3105        "/ibc.core.channel.v1.QueryChannelsResponse".into()
3106    }
3107}
3108/// QueryConnectionChannelsRequest is the request type for the
3109/// Query/QueryConnectionChannels RPC method
3110#[derive(Clone, PartialEq, ::prost::Message)]
3111pub struct QueryConnectionChannelsRequest {
3112    /// connection unique identifier
3113    #[prost(string, tag = "1")]
3114    pub connection: ::prost::alloc::string::String,
3115    /// pagination request
3116    #[prost(message, optional, tag = "2")]
3117    pub pagination: ::core::option::Option<
3118        super::super::super::super::cosmos::base::query::v1beta1::PageRequest,
3119    >,
3120}
3121impl ::prost::Name for QueryConnectionChannelsRequest {
3122    const NAME: &'static str = "QueryConnectionChannelsRequest";
3123    const PACKAGE: &'static str = "ibc.core.channel.v1";
3124    fn full_name() -> ::prost::alloc::string::String {
3125        "ibc.core.channel.v1.QueryConnectionChannelsRequest".into()
3126    }
3127    fn type_url() -> ::prost::alloc::string::String {
3128        "/ibc.core.channel.v1.QueryConnectionChannelsRequest".into()
3129    }
3130}
3131/// QueryConnectionChannelsResponse is the Response type for the
3132/// Query/QueryConnectionChannels RPC method
3133#[derive(Clone, PartialEq, ::prost::Message)]
3134pub struct QueryConnectionChannelsResponse {
3135    /// list of channels associated with a connection.
3136    #[prost(message, repeated, tag = "1")]
3137    pub channels: ::prost::alloc::vec::Vec<IdentifiedChannel>,
3138    /// pagination response
3139    #[prost(message, optional, tag = "2")]
3140    pub pagination: ::core::option::Option<
3141        super::super::super::super::cosmos::base::query::v1beta1::PageResponse,
3142    >,
3143    /// query block height
3144    #[prost(message, optional, tag = "3")]
3145    pub height: ::core::option::Option<super::super::client::v1::Height>,
3146}
3147impl ::prost::Name for QueryConnectionChannelsResponse {
3148    const NAME: &'static str = "QueryConnectionChannelsResponse";
3149    const PACKAGE: &'static str = "ibc.core.channel.v1";
3150    fn full_name() -> ::prost::alloc::string::String {
3151        "ibc.core.channel.v1.QueryConnectionChannelsResponse".into()
3152    }
3153    fn type_url() -> ::prost::alloc::string::String {
3154        "/ibc.core.channel.v1.QueryConnectionChannelsResponse".into()
3155    }
3156}
3157/// QueryChannelClientStateRequest is the request type for the Query/ClientState
3158/// RPC method
3159#[derive(Clone, PartialEq, ::prost::Message)]
3160pub struct QueryChannelClientStateRequest {
3161    /// port unique identifier
3162    #[prost(string, tag = "1")]
3163    pub port_id: ::prost::alloc::string::String,
3164    /// channel unique identifier
3165    #[prost(string, tag = "2")]
3166    pub channel_id: ::prost::alloc::string::String,
3167}
3168impl ::prost::Name for QueryChannelClientStateRequest {
3169    const NAME: &'static str = "QueryChannelClientStateRequest";
3170    const PACKAGE: &'static str = "ibc.core.channel.v1";
3171    fn full_name() -> ::prost::alloc::string::String {
3172        "ibc.core.channel.v1.QueryChannelClientStateRequest".into()
3173    }
3174    fn type_url() -> ::prost::alloc::string::String {
3175        "/ibc.core.channel.v1.QueryChannelClientStateRequest".into()
3176    }
3177}
3178/// QueryChannelClientStateResponse is the Response type for the
3179/// Query/QueryChannelClientState RPC method
3180#[derive(Clone, PartialEq, ::prost::Message)]
3181pub struct QueryChannelClientStateResponse {
3182    /// client state associated with the channel
3183    #[prost(message, optional, tag = "1")]
3184    pub identified_client_state: ::core::option::Option<
3185        super::super::client::v1::IdentifiedClientState,
3186    >,
3187    /// merkle proof of existence
3188    #[prost(bytes = "vec", tag = "2")]
3189    pub proof: ::prost::alloc::vec::Vec<u8>,
3190    /// height at which the proof was retrieved
3191    #[prost(message, optional, tag = "3")]
3192    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
3193}
3194impl ::prost::Name for QueryChannelClientStateResponse {
3195    const NAME: &'static str = "QueryChannelClientStateResponse";
3196    const PACKAGE: &'static str = "ibc.core.channel.v1";
3197    fn full_name() -> ::prost::alloc::string::String {
3198        "ibc.core.channel.v1.QueryChannelClientStateResponse".into()
3199    }
3200    fn type_url() -> ::prost::alloc::string::String {
3201        "/ibc.core.channel.v1.QueryChannelClientStateResponse".into()
3202    }
3203}
3204/// QueryChannelConsensusStateRequest is the request type for the
3205/// Query/ConsensusState RPC method
3206#[derive(Clone, PartialEq, ::prost::Message)]
3207pub struct QueryChannelConsensusStateRequest {
3208    /// port unique identifier
3209    #[prost(string, tag = "1")]
3210    pub port_id: ::prost::alloc::string::String,
3211    /// channel unique identifier
3212    #[prost(string, tag = "2")]
3213    pub channel_id: ::prost::alloc::string::String,
3214    /// revision number of the consensus state
3215    #[prost(uint64, tag = "3")]
3216    pub revision_number: u64,
3217    /// revision height of the consensus state
3218    #[prost(uint64, tag = "4")]
3219    pub revision_height: u64,
3220}
3221impl ::prost::Name for QueryChannelConsensusStateRequest {
3222    const NAME: &'static str = "QueryChannelConsensusStateRequest";
3223    const PACKAGE: &'static str = "ibc.core.channel.v1";
3224    fn full_name() -> ::prost::alloc::string::String {
3225        "ibc.core.channel.v1.QueryChannelConsensusStateRequest".into()
3226    }
3227    fn type_url() -> ::prost::alloc::string::String {
3228        "/ibc.core.channel.v1.QueryChannelConsensusStateRequest".into()
3229    }
3230}
3231/// QueryChannelClientStateResponse is the Response type for the
3232/// Query/QueryChannelClientState RPC method
3233#[derive(Clone, PartialEq, ::prost::Message)]
3234pub struct QueryChannelConsensusStateResponse {
3235    /// consensus state associated with the channel
3236    #[prost(message, optional, tag = "1")]
3237    pub consensus_state: ::core::option::Option<
3238        ::tendermint_proto::google::protobuf::Any,
3239    >,
3240    /// client ID associated with the consensus state
3241    #[prost(string, tag = "2")]
3242    pub client_id: ::prost::alloc::string::String,
3243    /// merkle proof of existence
3244    #[prost(bytes = "vec", tag = "3")]
3245    pub proof: ::prost::alloc::vec::Vec<u8>,
3246    /// height at which the proof was retrieved
3247    #[prost(message, optional, tag = "4")]
3248    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
3249}
3250impl ::prost::Name for QueryChannelConsensusStateResponse {
3251    const NAME: &'static str = "QueryChannelConsensusStateResponse";
3252    const PACKAGE: &'static str = "ibc.core.channel.v1";
3253    fn full_name() -> ::prost::alloc::string::String {
3254        "ibc.core.channel.v1.QueryChannelConsensusStateResponse".into()
3255    }
3256    fn type_url() -> ::prost::alloc::string::String {
3257        "/ibc.core.channel.v1.QueryChannelConsensusStateResponse".into()
3258    }
3259}
3260/// QueryPacketCommitmentRequest is the request type for the
3261/// Query/PacketCommitment RPC method
3262#[derive(Clone, PartialEq, ::prost::Message)]
3263pub struct QueryPacketCommitmentRequest {
3264    /// port unique identifier
3265    #[prost(string, tag = "1")]
3266    pub port_id: ::prost::alloc::string::String,
3267    /// channel unique identifier
3268    #[prost(string, tag = "2")]
3269    pub channel_id: ::prost::alloc::string::String,
3270    /// packet sequence
3271    #[prost(uint64, tag = "3")]
3272    pub sequence: u64,
3273}
3274impl ::prost::Name for QueryPacketCommitmentRequest {
3275    const NAME: &'static str = "QueryPacketCommitmentRequest";
3276    const PACKAGE: &'static str = "ibc.core.channel.v1";
3277    fn full_name() -> ::prost::alloc::string::String {
3278        "ibc.core.channel.v1.QueryPacketCommitmentRequest".into()
3279    }
3280    fn type_url() -> ::prost::alloc::string::String {
3281        "/ibc.core.channel.v1.QueryPacketCommitmentRequest".into()
3282    }
3283}
3284/// QueryPacketCommitmentResponse defines the client query response for a packet
3285/// which also includes a proof and the height from which the proof was
3286/// retrieved
3287#[derive(Clone, PartialEq, ::prost::Message)]
3288pub struct QueryPacketCommitmentResponse {
3289    /// packet associated with the request fields
3290    #[prost(bytes = "vec", tag = "1")]
3291    pub commitment: ::prost::alloc::vec::Vec<u8>,
3292    /// merkle proof of existence
3293    #[prost(bytes = "vec", tag = "2")]
3294    pub proof: ::prost::alloc::vec::Vec<u8>,
3295    /// height at which the proof was retrieved
3296    #[prost(message, optional, tag = "3")]
3297    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
3298}
3299impl ::prost::Name for QueryPacketCommitmentResponse {
3300    const NAME: &'static str = "QueryPacketCommitmentResponse";
3301    const PACKAGE: &'static str = "ibc.core.channel.v1";
3302    fn full_name() -> ::prost::alloc::string::String {
3303        "ibc.core.channel.v1.QueryPacketCommitmentResponse".into()
3304    }
3305    fn type_url() -> ::prost::alloc::string::String {
3306        "/ibc.core.channel.v1.QueryPacketCommitmentResponse".into()
3307    }
3308}
3309/// QueryPacketCommitmentsRequest is the request type for the
3310/// Query/QueryPacketCommitments RPC method
3311#[derive(Clone, PartialEq, ::prost::Message)]
3312pub struct QueryPacketCommitmentsRequest {
3313    /// port unique identifier
3314    #[prost(string, tag = "1")]
3315    pub port_id: ::prost::alloc::string::String,
3316    /// channel unique identifier
3317    #[prost(string, tag = "2")]
3318    pub channel_id: ::prost::alloc::string::String,
3319    /// pagination request
3320    #[prost(message, optional, tag = "3")]
3321    pub pagination: ::core::option::Option<
3322        super::super::super::super::cosmos::base::query::v1beta1::PageRequest,
3323    >,
3324}
3325impl ::prost::Name for QueryPacketCommitmentsRequest {
3326    const NAME: &'static str = "QueryPacketCommitmentsRequest";
3327    const PACKAGE: &'static str = "ibc.core.channel.v1";
3328    fn full_name() -> ::prost::alloc::string::String {
3329        "ibc.core.channel.v1.QueryPacketCommitmentsRequest".into()
3330    }
3331    fn type_url() -> ::prost::alloc::string::String {
3332        "/ibc.core.channel.v1.QueryPacketCommitmentsRequest".into()
3333    }
3334}
3335/// QueryPacketCommitmentsResponse is the request type for the
3336/// Query/QueryPacketCommitments RPC method
3337#[derive(Clone, PartialEq, ::prost::Message)]
3338pub struct QueryPacketCommitmentsResponse {
3339    #[prost(message, repeated, tag = "1")]
3340    pub commitments: ::prost::alloc::vec::Vec<PacketState>,
3341    /// pagination response
3342    #[prost(message, optional, tag = "2")]
3343    pub pagination: ::core::option::Option<
3344        super::super::super::super::cosmos::base::query::v1beta1::PageResponse,
3345    >,
3346    /// query block height
3347    #[prost(message, optional, tag = "3")]
3348    pub height: ::core::option::Option<super::super::client::v1::Height>,
3349}
3350impl ::prost::Name for QueryPacketCommitmentsResponse {
3351    const NAME: &'static str = "QueryPacketCommitmentsResponse";
3352    const PACKAGE: &'static str = "ibc.core.channel.v1";
3353    fn full_name() -> ::prost::alloc::string::String {
3354        "ibc.core.channel.v1.QueryPacketCommitmentsResponse".into()
3355    }
3356    fn type_url() -> ::prost::alloc::string::String {
3357        "/ibc.core.channel.v1.QueryPacketCommitmentsResponse".into()
3358    }
3359}
3360/// QueryPacketReceiptRequest is the request type for the
3361/// Query/PacketReceipt RPC method
3362#[derive(Clone, PartialEq, ::prost::Message)]
3363pub struct QueryPacketReceiptRequest {
3364    /// port unique identifier
3365    #[prost(string, tag = "1")]
3366    pub port_id: ::prost::alloc::string::String,
3367    /// channel unique identifier
3368    #[prost(string, tag = "2")]
3369    pub channel_id: ::prost::alloc::string::String,
3370    /// packet sequence
3371    #[prost(uint64, tag = "3")]
3372    pub sequence: u64,
3373}
3374impl ::prost::Name for QueryPacketReceiptRequest {
3375    const NAME: &'static str = "QueryPacketReceiptRequest";
3376    const PACKAGE: &'static str = "ibc.core.channel.v1";
3377    fn full_name() -> ::prost::alloc::string::String {
3378        "ibc.core.channel.v1.QueryPacketReceiptRequest".into()
3379    }
3380    fn type_url() -> ::prost::alloc::string::String {
3381        "/ibc.core.channel.v1.QueryPacketReceiptRequest".into()
3382    }
3383}
3384/// QueryPacketReceiptResponse defines the client query response for a packet
3385/// receipt which also includes a proof, and the height from which the proof was
3386/// retrieved
3387#[derive(Clone, PartialEq, ::prost::Message)]
3388pub struct QueryPacketReceiptResponse {
3389    /// success flag for if receipt exists
3390    #[prost(bool, tag = "2")]
3391    pub received: bool,
3392    /// merkle proof of existence
3393    #[prost(bytes = "vec", tag = "3")]
3394    pub proof: ::prost::alloc::vec::Vec<u8>,
3395    /// height at which the proof was retrieved
3396    #[prost(message, optional, tag = "4")]
3397    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
3398}
3399impl ::prost::Name for QueryPacketReceiptResponse {
3400    const NAME: &'static str = "QueryPacketReceiptResponse";
3401    const PACKAGE: &'static str = "ibc.core.channel.v1";
3402    fn full_name() -> ::prost::alloc::string::String {
3403        "ibc.core.channel.v1.QueryPacketReceiptResponse".into()
3404    }
3405    fn type_url() -> ::prost::alloc::string::String {
3406        "/ibc.core.channel.v1.QueryPacketReceiptResponse".into()
3407    }
3408}
3409/// QueryPacketAcknowledgementRequest is the request type for the
3410/// Query/PacketAcknowledgement RPC method
3411#[derive(Clone, PartialEq, ::prost::Message)]
3412pub struct QueryPacketAcknowledgementRequest {
3413    /// port unique identifier
3414    #[prost(string, tag = "1")]
3415    pub port_id: ::prost::alloc::string::String,
3416    /// channel unique identifier
3417    #[prost(string, tag = "2")]
3418    pub channel_id: ::prost::alloc::string::String,
3419    /// packet sequence
3420    #[prost(uint64, tag = "3")]
3421    pub sequence: u64,
3422}
3423impl ::prost::Name for QueryPacketAcknowledgementRequest {
3424    const NAME: &'static str = "QueryPacketAcknowledgementRequest";
3425    const PACKAGE: &'static str = "ibc.core.channel.v1";
3426    fn full_name() -> ::prost::alloc::string::String {
3427        "ibc.core.channel.v1.QueryPacketAcknowledgementRequest".into()
3428    }
3429    fn type_url() -> ::prost::alloc::string::String {
3430        "/ibc.core.channel.v1.QueryPacketAcknowledgementRequest".into()
3431    }
3432}
3433/// QueryPacketAcknowledgementResponse defines the client query response for a
3434/// packet which also includes a proof and the height from which the
3435/// proof was retrieved
3436#[derive(Clone, PartialEq, ::prost::Message)]
3437pub struct QueryPacketAcknowledgementResponse {
3438    /// packet associated with the request fields
3439    #[prost(bytes = "vec", tag = "1")]
3440    pub acknowledgement: ::prost::alloc::vec::Vec<u8>,
3441    /// merkle proof of existence
3442    #[prost(bytes = "vec", tag = "2")]
3443    pub proof: ::prost::alloc::vec::Vec<u8>,
3444    /// height at which the proof was retrieved
3445    #[prost(message, optional, tag = "3")]
3446    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
3447}
3448impl ::prost::Name for QueryPacketAcknowledgementResponse {
3449    const NAME: &'static str = "QueryPacketAcknowledgementResponse";
3450    const PACKAGE: &'static str = "ibc.core.channel.v1";
3451    fn full_name() -> ::prost::alloc::string::String {
3452        "ibc.core.channel.v1.QueryPacketAcknowledgementResponse".into()
3453    }
3454    fn type_url() -> ::prost::alloc::string::String {
3455        "/ibc.core.channel.v1.QueryPacketAcknowledgementResponse".into()
3456    }
3457}
3458/// QueryPacketAcknowledgementsRequest is the request type for the
3459/// Query/QueryPacketCommitments RPC method
3460#[derive(Clone, PartialEq, ::prost::Message)]
3461pub struct QueryPacketAcknowledgementsRequest {
3462    /// port unique identifier
3463    #[prost(string, tag = "1")]
3464    pub port_id: ::prost::alloc::string::String,
3465    /// channel unique identifier
3466    #[prost(string, tag = "2")]
3467    pub channel_id: ::prost::alloc::string::String,
3468    /// pagination request
3469    #[prost(message, optional, tag = "3")]
3470    pub pagination: ::core::option::Option<
3471        super::super::super::super::cosmos::base::query::v1beta1::PageRequest,
3472    >,
3473    /// list of packet sequences
3474    #[prost(uint64, repeated, tag = "4")]
3475    pub packet_commitment_sequences: ::prost::alloc::vec::Vec<u64>,
3476}
3477impl ::prost::Name for QueryPacketAcknowledgementsRequest {
3478    const NAME: &'static str = "QueryPacketAcknowledgementsRequest";
3479    const PACKAGE: &'static str = "ibc.core.channel.v1";
3480    fn full_name() -> ::prost::alloc::string::String {
3481        "ibc.core.channel.v1.QueryPacketAcknowledgementsRequest".into()
3482    }
3483    fn type_url() -> ::prost::alloc::string::String {
3484        "/ibc.core.channel.v1.QueryPacketAcknowledgementsRequest".into()
3485    }
3486}
3487/// QueryPacketAcknowledgemetsResponse is the request type for the
3488/// Query/QueryPacketAcknowledgements RPC method
3489#[derive(Clone, PartialEq, ::prost::Message)]
3490pub struct QueryPacketAcknowledgementsResponse {
3491    #[prost(message, repeated, tag = "1")]
3492    pub acknowledgements: ::prost::alloc::vec::Vec<PacketState>,
3493    /// pagination response
3494    #[prost(message, optional, tag = "2")]
3495    pub pagination: ::core::option::Option<
3496        super::super::super::super::cosmos::base::query::v1beta1::PageResponse,
3497    >,
3498    /// query block height
3499    #[prost(message, optional, tag = "3")]
3500    pub height: ::core::option::Option<super::super::client::v1::Height>,
3501}
3502impl ::prost::Name for QueryPacketAcknowledgementsResponse {
3503    const NAME: &'static str = "QueryPacketAcknowledgementsResponse";
3504    const PACKAGE: &'static str = "ibc.core.channel.v1";
3505    fn full_name() -> ::prost::alloc::string::String {
3506        "ibc.core.channel.v1.QueryPacketAcknowledgementsResponse".into()
3507    }
3508    fn type_url() -> ::prost::alloc::string::String {
3509        "/ibc.core.channel.v1.QueryPacketAcknowledgementsResponse".into()
3510    }
3511}
3512/// QueryUnreceivedPacketsRequest is the request type for the
3513/// Query/UnreceivedPackets RPC method
3514#[derive(Clone, PartialEq, ::prost::Message)]
3515pub struct QueryUnreceivedPacketsRequest {
3516    /// port unique identifier
3517    #[prost(string, tag = "1")]
3518    pub port_id: ::prost::alloc::string::String,
3519    /// channel unique identifier
3520    #[prost(string, tag = "2")]
3521    pub channel_id: ::prost::alloc::string::String,
3522    /// list of packet sequences
3523    #[prost(uint64, repeated, tag = "3")]
3524    pub packet_commitment_sequences: ::prost::alloc::vec::Vec<u64>,
3525}
3526impl ::prost::Name for QueryUnreceivedPacketsRequest {
3527    const NAME: &'static str = "QueryUnreceivedPacketsRequest";
3528    const PACKAGE: &'static str = "ibc.core.channel.v1";
3529    fn full_name() -> ::prost::alloc::string::String {
3530        "ibc.core.channel.v1.QueryUnreceivedPacketsRequest".into()
3531    }
3532    fn type_url() -> ::prost::alloc::string::String {
3533        "/ibc.core.channel.v1.QueryUnreceivedPacketsRequest".into()
3534    }
3535}
3536/// QueryUnreceivedPacketsResponse is the response type for the
3537/// Query/UnreceivedPacketCommitments RPC method
3538#[derive(Clone, PartialEq, ::prost::Message)]
3539pub struct QueryUnreceivedPacketsResponse {
3540    /// list of unreceived packet sequences
3541    #[prost(uint64, repeated, tag = "1")]
3542    pub sequences: ::prost::alloc::vec::Vec<u64>,
3543    /// query block height
3544    #[prost(message, optional, tag = "2")]
3545    pub height: ::core::option::Option<super::super::client::v1::Height>,
3546}
3547impl ::prost::Name for QueryUnreceivedPacketsResponse {
3548    const NAME: &'static str = "QueryUnreceivedPacketsResponse";
3549    const PACKAGE: &'static str = "ibc.core.channel.v1";
3550    fn full_name() -> ::prost::alloc::string::String {
3551        "ibc.core.channel.v1.QueryUnreceivedPacketsResponse".into()
3552    }
3553    fn type_url() -> ::prost::alloc::string::String {
3554        "/ibc.core.channel.v1.QueryUnreceivedPacketsResponse".into()
3555    }
3556}
3557/// QueryUnreceivedAcks is the request type for the
3558/// Query/UnreceivedAcks RPC method
3559#[derive(Clone, PartialEq, ::prost::Message)]
3560pub struct QueryUnreceivedAcksRequest {
3561    /// port unique identifier
3562    #[prost(string, tag = "1")]
3563    pub port_id: ::prost::alloc::string::String,
3564    /// channel unique identifier
3565    #[prost(string, tag = "2")]
3566    pub channel_id: ::prost::alloc::string::String,
3567    /// list of acknowledgement sequences
3568    #[prost(uint64, repeated, tag = "3")]
3569    pub packet_ack_sequences: ::prost::alloc::vec::Vec<u64>,
3570}
3571impl ::prost::Name for QueryUnreceivedAcksRequest {
3572    const NAME: &'static str = "QueryUnreceivedAcksRequest";
3573    const PACKAGE: &'static str = "ibc.core.channel.v1";
3574    fn full_name() -> ::prost::alloc::string::String {
3575        "ibc.core.channel.v1.QueryUnreceivedAcksRequest".into()
3576    }
3577    fn type_url() -> ::prost::alloc::string::String {
3578        "/ibc.core.channel.v1.QueryUnreceivedAcksRequest".into()
3579    }
3580}
3581/// QueryUnreceivedAcksResponse is the response type for the
3582/// Query/UnreceivedAcks RPC method
3583#[derive(Clone, PartialEq, ::prost::Message)]
3584pub struct QueryUnreceivedAcksResponse {
3585    /// list of unreceived acknowledgement sequences
3586    #[prost(uint64, repeated, tag = "1")]
3587    pub sequences: ::prost::alloc::vec::Vec<u64>,
3588    /// query block height
3589    #[prost(message, optional, tag = "2")]
3590    pub height: ::core::option::Option<super::super::client::v1::Height>,
3591}
3592impl ::prost::Name for QueryUnreceivedAcksResponse {
3593    const NAME: &'static str = "QueryUnreceivedAcksResponse";
3594    const PACKAGE: &'static str = "ibc.core.channel.v1";
3595    fn full_name() -> ::prost::alloc::string::String {
3596        "ibc.core.channel.v1.QueryUnreceivedAcksResponse".into()
3597    }
3598    fn type_url() -> ::prost::alloc::string::String {
3599        "/ibc.core.channel.v1.QueryUnreceivedAcksResponse".into()
3600    }
3601}
3602/// QueryNextSequenceReceiveRequest is the request type for the
3603/// Query/QueryNextSequenceReceiveRequest RPC method
3604#[derive(Clone, PartialEq, ::prost::Message)]
3605pub struct QueryNextSequenceReceiveRequest {
3606    /// port unique identifier
3607    #[prost(string, tag = "1")]
3608    pub port_id: ::prost::alloc::string::String,
3609    /// channel unique identifier
3610    #[prost(string, tag = "2")]
3611    pub channel_id: ::prost::alloc::string::String,
3612}
3613impl ::prost::Name for QueryNextSequenceReceiveRequest {
3614    const NAME: &'static str = "QueryNextSequenceReceiveRequest";
3615    const PACKAGE: &'static str = "ibc.core.channel.v1";
3616    fn full_name() -> ::prost::alloc::string::String {
3617        "ibc.core.channel.v1.QueryNextSequenceReceiveRequest".into()
3618    }
3619    fn type_url() -> ::prost::alloc::string::String {
3620        "/ibc.core.channel.v1.QueryNextSequenceReceiveRequest".into()
3621    }
3622}
3623/// QuerySequenceResponse is the response type for the
3624/// Query/QueryNextSequenceReceiveResponse RPC method
3625#[derive(Clone, PartialEq, ::prost::Message)]
3626pub struct QueryNextSequenceReceiveResponse {
3627    /// next sequence receive number
3628    #[prost(uint64, tag = "1")]
3629    pub next_sequence_receive: u64,
3630    /// merkle proof of existence
3631    #[prost(bytes = "vec", tag = "2")]
3632    pub proof: ::prost::alloc::vec::Vec<u8>,
3633    /// height at which the proof was retrieved
3634    #[prost(message, optional, tag = "3")]
3635    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
3636}
3637impl ::prost::Name for QueryNextSequenceReceiveResponse {
3638    const NAME: &'static str = "QueryNextSequenceReceiveResponse";
3639    const PACKAGE: &'static str = "ibc.core.channel.v1";
3640    fn full_name() -> ::prost::alloc::string::String {
3641        "ibc.core.channel.v1.QueryNextSequenceReceiveResponse".into()
3642    }
3643    fn type_url() -> ::prost::alloc::string::String {
3644        "/ibc.core.channel.v1.QueryNextSequenceReceiveResponse".into()
3645    }
3646}
3647/// QueryNextSequenceSendRequest is the request type for the
3648/// Query/QueryNextSequenceSend RPC method
3649#[derive(Clone, PartialEq, ::prost::Message)]
3650pub struct QueryNextSequenceSendRequest {
3651    /// port unique identifier
3652    #[prost(string, tag = "1")]
3653    pub port_id: ::prost::alloc::string::String,
3654    /// channel unique identifier
3655    #[prost(string, tag = "2")]
3656    pub channel_id: ::prost::alloc::string::String,
3657}
3658impl ::prost::Name for QueryNextSequenceSendRequest {
3659    const NAME: &'static str = "QueryNextSequenceSendRequest";
3660    const PACKAGE: &'static str = "ibc.core.channel.v1";
3661    fn full_name() -> ::prost::alloc::string::String {
3662        "ibc.core.channel.v1.QueryNextSequenceSendRequest".into()
3663    }
3664    fn type_url() -> ::prost::alloc::string::String {
3665        "/ibc.core.channel.v1.QueryNextSequenceSendRequest".into()
3666    }
3667}
3668/// QueryNextSequenceSendResponse is the request type for the
3669/// Query/QueryNextSequenceSend RPC method
3670#[derive(Clone, PartialEq, ::prost::Message)]
3671pub struct QueryNextSequenceSendResponse {
3672    /// next sequence send number
3673    #[prost(uint64, tag = "1")]
3674    pub next_sequence_send: u64,
3675    /// merkle proof of existence
3676    #[prost(bytes = "vec", tag = "2")]
3677    pub proof: ::prost::alloc::vec::Vec<u8>,
3678    /// height at which the proof was retrieved
3679    #[prost(message, optional, tag = "3")]
3680    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
3681}
3682impl ::prost::Name for QueryNextSequenceSendResponse {
3683    const NAME: &'static str = "QueryNextSequenceSendResponse";
3684    const PACKAGE: &'static str = "ibc.core.channel.v1";
3685    fn full_name() -> ::prost::alloc::string::String {
3686        "ibc.core.channel.v1.QueryNextSequenceSendResponse".into()
3687    }
3688    fn type_url() -> ::prost::alloc::string::String {
3689        "/ibc.core.channel.v1.QueryNextSequenceSendResponse".into()
3690    }
3691}
3692/// QueryUpgradeErrorRequest is the request type for the Query/QueryUpgradeError RPC method
3693#[derive(Clone, PartialEq, ::prost::Message)]
3694pub struct QueryUpgradeErrorRequest {
3695    #[prost(string, tag = "1")]
3696    pub port_id: ::prost::alloc::string::String,
3697    #[prost(string, tag = "2")]
3698    pub channel_id: ::prost::alloc::string::String,
3699}
3700impl ::prost::Name for QueryUpgradeErrorRequest {
3701    const NAME: &'static str = "QueryUpgradeErrorRequest";
3702    const PACKAGE: &'static str = "ibc.core.channel.v1";
3703    fn full_name() -> ::prost::alloc::string::String {
3704        "ibc.core.channel.v1.QueryUpgradeErrorRequest".into()
3705    }
3706    fn type_url() -> ::prost::alloc::string::String {
3707        "/ibc.core.channel.v1.QueryUpgradeErrorRequest".into()
3708    }
3709}
3710/// QueryUpgradeErrorResponse is the response type for the Query/QueryUpgradeError RPC method
3711#[derive(Clone, PartialEq, ::prost::Message)]
3712pub struct QueryUpgradeErrorResponse {
3713    #[prost(message, optional, tag = "1")]
3714    pub error_receipt: ::core::option::Option<ErrorReceipt>,
3715    /// merkle proof of existence
3716    #[prost(bytes = "vec", tag = "2")]
3717    pub proof: ::prost::alloc::vec::Vec<u8>,
3718    /// height at which the proof was retrieved
3719    #[prost(message, optional, tag = "3")]
3720    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
3721}
3722impl ::prost::Name for QueryUpgradeErrorResponse {
3723    const NAME: &'static str = "QueryUpgradeErrorResponse";
3724    const PACKAGE: &'static str = "ibc.core.channel.v1";
3725    fn full_name() -> ::prost::alloc::string::String {
3726        "ibc.core.channel.v1.QueryUpgradeErrorResponse".into()
3727    }
3728    fn type_url() -> ::prost::alloc::string::String {
3729        "/ibc.core.channel.v1.QueryUpgradeErrorResponse".into()
3730    }
3731}
3732/// QueryUpgradeRequest is the request type for the QueryUpgradeRequest RPC method
3733#[derive(Clone, PartialEq, ::prost::Message)]
3734pub struct QueryUpgradeRequest {
3735    #[prost(string, tag = "1")]
3736    pub port_id: ::prost::alloc::string::String,
3737    #[prost(string, tag = "2")]
3738    pub channel_id: ::prost::alloc::string::String,
3739}
3740impl ::prost::Name for QueryUpgradeRequest {
3741    const NAME: &'static str = "QueryUpgradeRequest";
3742    const PACKAGE: &'static str = "ibc.core.channel.v1";
3743    fn full_name() -> ::prost::alloc::string::String {
3744        "ibc.core.channel.v1.QueryUpgradeRequest".into()
3745    }
3746    fn type_url() -> ::prost::alloc::string::String {
3747        "/ibc.core.channel.v1.QueryUpgradeRequest".into()
3748    }
3749}
3750/// QueryUpgradeResponse is the response type for the QueryUpgradeResponse RPC method
3751#[derive(Clone, PartialEq, ::prost::Message)]
3752pub struct QueryUpgradeResponse {
3753    #[prost(message, optional, tag = "1")]
3754    pub upgrade: ::core::option::Option<Upgrade>,
3755    /// merkle proof of existence
3756    #[prost(bytes = "vec", tag = "2")]
3757    pub proof: ::prost::alloc::vec::Vec<u8>,
3758    /// height at which the proof was retrieved
3759    #[prost(message, optional, tag = "3")]
3760    pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
3761}
3762impl ::prost::Name for QueryUpgradeResponse {
3763    const NAME: &'static str = "QueryUpgradeResponse";
3764    const PACKAGE: &'static str = "ibc.core.channel.v1";
3765    fn full_name() -> ::prost::alloc::string::String {
3766        "ibc.core.channel.v1.QueryUpgradeResponse".into()
3767    }
3768    fn type_url() -> ::prost::alloc::string::String {
3769        "/ibc.core.channel.v1.QueryUpgradeResponse".into()
3770    }
3771}
3772/// QueryChannelParamsRequest is the request type for the Query/ChannelParams RPC method.
3773#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3774pub struct QueryChannelParamsRequest {}
3775impl ::prost::Name for QueryChannelParamsRequest {
3776    const NAME: &'static str = "QueryChannelParamsRequest";
3777    const PACKAGE: &'static str = "ibc.core.channel.v1";
3778    fn full_name() -> ::prost::alloc::string::String {
3779        "ibc.core.channel.v1.QueryChannelParamsRequest".into()
3780    }
3781    fn type_url() -> ::prost::alloc::string::String {
3782        "/ibc.core.channel.v1.QueryChannelParamsRequest".into()
3783    }
3784}
3785/// QueryChannelParamsResponse is the response type for the Query/ChannelParams RPC method.
3786#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3787pub struct QueryChannelParamsResponse {
3788    /// params defines the parameters of the module.
3789    #[prost(message, optional, tag = "1")]
3790    pub params: ::core::option::Option<Params>,
3791}
3792impl ::prost::Name for QueryChannelParamsResponse {
3793    const NAME: &'static str = "QueryChannelParamsResponse";
3794    const PACKAGE: &'static str = "ibc.core.channel.v1";
3795    fn full_name() -> ::prost::alloc::string::String {
3796        "ibc.core.channel.v1.QueryChannelParamsResponse".into()
3797    }
3798    fn type_url() -> ::prost::alloc::string::String {
3799        "/ibc.core.channel.v1.QueryChannelParamsResponse".into()
3800    }
3801}
3802/// Generated client implementations.
3803#[cfg(feature = "client")]
3804pub mod query_client {
3805    #![allow(
3806        unused_variables,
3807        dead_code,
3808        missing_docs,
3809        clippy::wildcard_imports,
3810        clippy::let_unit_value,
3811    )]
3812    use tonic::codegen::*;
3813    use tonic::codegen::http::Uri;
3814    /// Query provides defines the gRPC querier service
3815    #[derive(Debug, Clone)]
3816    pub struct QueryClient<T> {
3817        inner: tonic::client::Grpc<T>,
3818    }
3819    #[cfg(feature = "transport")]
3820    impl QueryClient<tonic::transport::Channel> {
3821        /// Attempt to create a new client by connecting to a given endpoint.
3822        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
3823        where
3824            D: TryInto<tonic::transport::Endpoint>,
3825            D::Error: Into<StdError>,
3826        {
3827            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
3828            Ok(Self::new(conn))
3829        }
3830    }
3831    impl<T> QueryClient<T>
3832    where
3833        T: tonic::client::GrpcService<tonic::body::Body>,
3834        T::Error: Into<StdError>,
3835        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
3836        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
3837    {
3838        pub fn new(inner: T) -> Self {
3839            let inner = tonic::client::Grpc::new(inner);
3840            Self { inner }
3841        }
3842        pub fn with_origin(inner: T, origin: Uri) -> Self {
3843            let inner = tonic::client::Grpc::with_origin(inner, origin);
3844            Self { inner }
3845        }
3846        pub fn with_interceptor<F>(
3847            inner: T,
3848            interceptor: F,
3849        ) -> QueryClient<InterceptedService<T, F>>
3850        where
3851            F: tonic::service::Interceptor,
3852            T::ResponseBody: Default,
3853            T: tonic::codegen::Service<
3854                http::Request<tonic::body::Body>,
3855                Response = http::Response<
3856                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
3857                >,
3858            >,
3859            <T as tonic::codegen::Service<
3860                http::Request<tonic::body::Body>,
3861            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
3862        {
3863            QueryClient::new(InterceptedService::new(inner, interceptor))
3864        }
3865        /// Compress requests with the given encoding.
3866        ///
3867        /// This requires the server to support it otherwise it might respond with an
3868        /// error.
3869        #[must_use]
3870        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
3871            self.inner = self.inner.send_compressed(encoding);
3872            self
3873        }
3874        /// Enable decompressing responses.
3875        #[must_use]
3876        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
3877            self.inner = self.inner.accept_compressed(encoding);
3878            self
3879        }
3880        /// Limits the maximum size of a decoded message.
3881        ///
3882        /// Default: `4MB`
3883        #[must_use]
3884        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
3885            self.inner = self.inner.max_decoding_message_size(limit);
3886            self
3887        }
3888        /// Limits the maximum size of an encoded message.
3889        ///
3890        /// Default: `usize::MAX`
3891        #[must_use]
3892        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
3893            self.inner = self.inner.max_encoding_message_size(limit);
3894            self
3895        }
3896        /// Channel queries an IBC Channel.
3897        pub async fn channel(
3898            &mut self,
3899            request: impl tonic::IntoRequest<super::QueryChannelRequest>,
3900        ) -> std::result::Result<
3901            tonic::Response<super::QueryChannelResponse>,
3902            tonic::Status,
3903        > {
3904            self.inner
3905                .ready()
3906                .await
3907                .map_err(|e| {
3908                    tonic::Status::unknown(
3909                        format!("Service was not ready: {}", e.into()),
3910                    )
3911                })?;
3912            let codec = tonic::codec::ProstCodec::default();
3913            let path = http::uri::PathAndQuery::from_static(
3914                "/ibc.core.channel.v1.Query/Channel",
3915            );
3916            let mut req = request.into_request();
3917            req.extensions_mut()
3918                .insert(GrpcMethod::new("ibc.core.channel.v1.Query", "Channel"));
3919            self.inner.unary(req, path, codec).await
3920        }
3921        /// Channels queries all the IBC channels of a chain.
3922        pub async fn channels(
3923            &mut self,
3924            request: impl tonic::IntoRequest<super::QueryChannelsRequest>,
3925        ) -> std::result::Result<
3926            tonic::Response<super::QueryChannelsResponse>,
3927            tonic::Status,
3928        > {
3929            self.inner
3930                .ready()
3931                .await
3932                .map_err(|e| {
3933                    tonic::Status::unknown(
3934                        format!("Service was not ready: {}", e.into()),
3935                    )
3936                })?;
3937            let codec = tonic::codec::ProstCodec::default();
3938            let path = http::uri::PathAndQuery::from_static(
3939                "/ibc.core.channel.v1.Query/Channels",
3940            );
3941            let mut req = request.into_request();
3942            req.extensions_mut()
3943                .insert(GrpcMethod::new("ibc.core.channel.v1.Query", "Channels"));
3944            self.inner.unary(req, path, codec).await
3945        }
3946        /// ConnectionChannels queries all the channels associated with a connection
3947        /// end.
3948        pub async fn connection_channels(
3949            &mut self,
3950            request: impl tonic::IntoRequest<super::QueryConnectionChannelsRequest>,
3951        ) -> std::result::Result<
3952            tonic::Response<super::QueryConnectionChannelsResponse>,
3953            tonic::Status,
3954        > {
3955            self.inner
3956                .ready()
3957                .await
3958                .map_err(|e| {
3959                    tonic::Status::unknown(
3960                        format!("Service was not ready: {}", e.into()),
3961                    )
3962                })?;
3963            let codec = tonic::codec::ProstCodec::default();
3964            let path = http::uri::PathAndQuery::from_static(
3965                "/ibc.core.channel.v1.Query/ConnectionChannels",
3966            );
3967            let mut req = request.into_request();
3968            req.extensions_mut()
3969                .insert(
3970                    GrpcMethod::new("ibc.core.channel.v1.Query", "ConnectionChannels"),
3971                );
3972            self.inner.unary(req, path, codec).await
3973        }
3974        /// ChannelClientState queries for the client state for the channel associated
3975        /// with the provided channel identifiers.
3976        pub async fn channel_client_state(
3977            &mut self,
3978            request: impl tonic::IntoRequest<super::QueryChannelClientStateRequest>,
3979        ) -> std::result::Result<
3980            tonic::Response<super::QueryChannelClientStateResponse>,
3981            tonic::Status,
3982        > {
3983            self.inner
3984                .ready()
3985                .await
3986                .map_err(|e| {
3987                    tonic::Status::unknown(
3988                        format!("Service was not ready: {}", e.into()),
3989                    )
3990                })?;
3991            let codec = tonic::codec::ProstCodec::default();
3992            let path = http::uri::PathAndQuery::from_static(
3993                "/ibc.core.channel.v1.Query/ChannelClientState",
3994            );
3995            let mut req = request.into_request();
3996            req.extensions_mut()
3997                .insert(
3998                    GrpcMethod::new("ibc.core.channel.v1.Query", "ChannelClientState"),
3999                );
4000            self.inner.unary(req, path, codec).await
4001        }
4002        /// ChannelConsensusState queries for the consensus state for the channel
4003        /// associated with the provided channel identifiers.
4004        pub async fn channel_consensus_state(
4005            &mut self,
4006            request: impl tonic::IntoRequest<super::QueryChannelConsensusStateRequest>,
4007        ) -> std::result::Result<
4008            tonic::Response<super::QueryChannelConsensusStateResponse>,
4009            tonic::Status,
4010        > {
4011            self.inner
4012                .ready()
4013                .await
4014                .map_err(|e| {
4015                    tonic::Status::unknown(
4016                        format!("Service was not ready: {}", e.into()),
4017                    )
4018                })?;
4019            let codec = tonic::codec::ProstCodec::default();
4020            let path = http::uri::PathAndQuery::from_static(
4021                "/ibc.core.channel.v1.Query/ChannelConsensusState",
4022            );
4023            let mut req = request.into_request();
4024            req.extensions_mut()
4025                .insert(
4026                    GrpcMethod::new("ibc.core.channel.v1.Query", "ChannelConsensusState"),
4027                );
4028            self.inner.unary(req, path, codec).await
4029        }
4030        /// PacketCommitment queries a stored packet commitment hash.
4031        pub async fn packet_commitment(
4032            &mut self,
4033            request: impl tonic::IntoRequest<super::QueryPacketCommitmentRequest>,
4034        ) -> std::result::Result<
4035            tonic::Response<super::QueryPacketCommitmentResponse>,
4036            tonic::Status,
4037        > {
4038            self.inner
4039                .ready()
4040                .await
4041                .map_err(|e| {
4042                    tonic::Status::unknown(
4043                        format!("Service was not ready: {}", e.into()),
4044                    )
4045                })?;
4046            let codec = tonic::codec::ProstCodec::default();
4047            let path = http::uri::PathAndQuery::from_static(
4048                "/ibc.core.channel.v1.Query/PacketCommitment",
4049            );
4050            let mut req = request.into_request();
4051            req.extensions_mut()
4052                .insert(
4053                    GrpcMethod::new("ibc.core.channel.v1.Query", "PacketCommitment"),
4054                );
4055            self.inner.unary(req, path, codec).await
4056        }
4057        /// PacketCommitments returns all the packet commitments hashes associated
4058        /// with a channel.
4059        pub async fn packet_commitments(
4060            &mut self,
4061            request: impl tonic::IntoRequest<super::QueryPacketCommitmentsRequest>,
4062        ) -> std::result::Result<
4063            tonic::Response<super::QueryPacketCommitmentsResponse>,
4064            tonic::Status,
4065        > {
4066            self.inner
4067                .ready()
4068                .await
4069                .map_err(|e| {
4070                    tonic::Status::unknown(
4071                        format!("Service was not ready: {}", e.into()),
4072                    )
4073                })?;
4074            let codec = tonic::codec::ProstCodec::default();
4075            let path = http::uri::PathAndQuery::from_static(
4076                "/ibc.core.channel.v1.Query/PacketCommitments",
4077            );
4078            let mut req = request.into_request();
4079            req.extensions_mut()
4080                .insert(
4081                    GrpcMethod::new("ibc.core.channel.v1.Query", "PacketCommitments"),
4082                );
4083            self.inner.unary(req, path, codec).await
4084        }
4085        /// PacketReceipt queries if a given packet sequence has been received on the
4086        /// queried chain
4087        pub async fn packet_receipt(
4088            &mut self,
4089            request: impl tonic::IntoRequest<super::QueryPacketReceiptRequest>,
4090        ) -> std::result::Result<
4091            tonic::Response<super::QueryPacketReceiptResponse>,
4092            tonic::Status,
4093        > {
4094            self.inner
4095                .ready()
4096                .await
4097                .map_err(|e| {
4098                    tonic::Status::unknown(
4099                        format!("Service was not ready: {}", e.into()),
4100                    )
4101                })?;
4102            let codec = tonic::codec::ProstCodec::default();
4103            let path = http::uri::PathAndQuery::from_static(
4104                "/ibc.core.channel.v1.Query/PacketReceipt",
4105            );
4106            let mut req = request.into_request();
4107            req.extensions_mut()
4108                .insert(GrpcMethod::new("ibc.core.channel.v1.Query", "PacketReceipt"));
4109            self.inner.unary(req, path, codec).await
4110        }
4111        /// PacketAcknowledgement queries a stored packet acknowledgement hash.
4112        pub async fn packet_acknowledgement(
4113            &mut self,
4114            request: impl tonic::IntoRequest<super::QueryPacketAcknowledgementRequest>,
4115        ) -> std::result::Result<
4116            tonic::Response<super::QueryPacketAcknowledgementResponse>,
4117            tonic::Status,
4118        > {
4119            self.inner
4120                .ready()
4121                .await
4122                .map_err(|e| {
4123                    tonic::Status::unknown(
4124                        format!("Service was not ready: {}", e.into()),
4125                    )
4126                })?;
4127            let codec = tonic::codec::ProstCodec::default();
4128            let path = http::uri::PathAndQuery::from_static(
4129                "/ibc.core.channel.v1.Query/PacketAcknowledgement",
4130            );
4131            let mut req = request.into_request();
4132            req.extensions_mut()
4133                .insert(
4134                    GrpcMethod::new("ibc.core.channel.v1.Query", "PacketAcknowledgement"),
4135                );
4136            self.inner.unary(req, path, codec).await
4137        }
4138        /// PacketAcknowledgements returns all the packet acknowledgements associated
4139        /// with a channel.
4140        pub async fn packet_acknowledgements(
4141            &mut self,
4142            request: impl tonic::IntoRequest<super::QueryPacketAcknowledgementsRequest>,
4143        ) -> std::result::Result<
4144            tonic::Response<super::QueryPacketAcknowledgementsResponse>,
4145            tonic::Status,
4146        > {
4147            self.inner
4148                .ready()
4149                .await
4150                .map_err(|e| {
4151                    tonic::Status::unknown(
4152                        format!("Service was not ready: {}", e.into()),
4153                    )
4154                })?;
4155            let codec = tonic::codec::ProstCodec::default();
4156            let path = http::uri::PathAndQuery::from_static(
4157                "/ibc.core.channel.v1.Query/PacketAcknowledgements",
4158            );
4159            let mut req = request.into_request();
4160            req.extensions_mut()
4161                .insert(
4162                    GrpcMethod::new(
4163                        "ibc.core.channel.v1.Query",
4164                        "PacketAcknowledgements",
4165                    ),
4166                );
4167            self.inner.unary(req, path, codec).await
4168        }
4169        /// UnreceivedPackets returns all the unreceived IBC packets associated with a
4170        /// channel and sequences.
4171        pub async fn unreceived_packets(
4172            &mut self,
4173            request: impl tonic::IntoRequest<super::QueryUnreceivedPacketsRequest>,
4174        ) -> std::result::Result<
4175            tonic::Response<super::QueryUnreceivedPacketsResponse>,
4176            tonic::Status,
4177        > {
4178            self.inner
4179                .ready()
4180                .await
4181                .map_err(|e| {
4182                    tonic::Status::unknown(
4183                        format!("Service was not ready: {}", e.into()),
4184                    )
4185                })?;
4186            let codec = tonic::codec::ProstCodec::default();
4187            let path = http::uri::PathAndQuery::from_static(
4188                "/ibc.core.channel.v1.Query/UnreceivedPackets",
4189            );
4190            let mut req = request.into_request();
4191            req.extensions_mut()
4192                .insert(
4193                    GrpcMethod::new("ibc.core.channel.v1.Query", "UnreceivedPackets"),
4194                );
4195            self.inner.unary(req, path, codec).await
4196        }
4197        /// UnreceivedAcks returns all the unreceived IBC acknowledgements associated
4198        /// with a channel and sequences.
4199        pub async fn unreceived_acks(
4200            &mut self,
4201            request: impl tonic::IntoRequest<super::QueryUnreceivedAcksRequest>,
4202        ) -> std::result::Result<
4203            tonic::Response<super::QueryUnreceivedAcksResponse>,
4204            tonic::Status,
4205        > {
4206            self.inner
4207                .ready()
4208                .await
4209                .map_err(|e| {
4210                    tonic::Status::unknown(
4211                        format!("Service was not ready: {}", e.into()),
4212                    )
4213                })?;
4214            let codec = tonic::codec::ProstCodec::default();
4215            let path = http::uri::PathAndQuery::from_static(
4216                "/ibc.core.channel.v1.Query/UnreceivedAcks",
4217            );
4218            let mut req = request.into_request();
4219            req.extensions_mut()
4220                .insert(GrpcMethod::new("ibc.core.channel.v1.Query", "UnreceivedAcks"));
4221            self.inner.unary(req, path, codec).await
4222        }
4223        /// NextSequenceReceive returns the next receive sequence for a given channel.
4224        pub async fn next_sequence_receive(
4225            &mut self,
4226            request: impl tonic::IntoRequest<super::QueryNextSequenceReceiveRequest>,
4227        ) -> std::result::Result<
4228            tonic::Response<super::QueryNextSequenceReceiveResponse>,
4229            tonic::Status,
4230        > {
4231            self.inner
4232                .ready()
4233                .await
4234                .map_err(|e| {
4235                    tonic::Status::unknown(
4236                        format!("Service was not ready: {}", e.into()),
4237                    )
4238                })?;
4239            let codec = tonic::codec::ProstCodec::default();
4240            let path = http::uri::PathAndQuery::from_static(
4241                "/ibc.core.channel.v1.Query/NextSequenceReceive",
4242            );
4243            let mut req = request.into_request();
4244            req.extensions_mut()
4245                .insert(
4246                    GrpcMethod::new("ibc.core.channel.v1.Query", "NextSequenceReceive"),
4247                );
4248            self.inner.unary(req, path, codec).await
4249        }
4250        /// NextSequenceSend returns the next send sequence for a given channel.
4251        pub async fn next_sequence_send(
4252            &mut self,
4253            request: impl tonic::IntoRequest<super::QueryNextSequenceSendRequest>,
4254        ) -> std::result::Result<
4255            tonic::Response<super::QueryNextSequenceSendResponse>,
4256            tonic::Status,
4257        > {
4258            self.inner
4259                .ready()
4260                .await
4261                .map_err(|e| {
4262                    tonic::Status::unknown(
4263                        format!("Service was not ready: {}", e.into()),
4264                    )
4265                })?;
4266            let codec = tonic::codec::ProstCodec::default();
4267            let path = http::uri::PathAndQuery::from_static(
4268                "/ibc.core.channel.v1.Query/NextSequenceSend",
4269            );
4270            let mut req = request.into_request();
4271            req.extensions_mut()
4272                .insert(
4273                    GrpcMethod::new("ibc.core.channel.v1.Query", "NextSequenceSend"),
4274                );
4275            self.inner.unary(req, path, codec).await
4276        }
4277        /// UpgradeError returns the error receipt if the upgrade handshake failed.
4278        pub async fn upgrade_error(
4279            &mut self,
4280            request: impl tonic::IntoRequest<super::QueryUpgradeErrorRequest>,
4281        ) -> std::result::Result<
4282            tonic::Response<super::QueryUpgradeErrorResponse>,
4283            tonic::Status,
4284        > {
4285            self.inner
4286                .ready()
4287                .await
4288                .map_err(|e| {
4289                    tonic::Status::unknown(
4290                        format!("Service was not ready: {}", e.into()),
4291                    )
4292                })?;
4293            let codec = tonic::codec::ProstCodec::default();
4294            let path = http::uri::PathAndQuery::from_static(
4295                "/ibc.core.channel.v1.Query/UpgradeError",
4296            );
4297            let mut req = request.into_request();
4298            req.extensions_mut()
4299                .insert(GrpcMethod::new("ibc.core.channel.v1.Query", "UpgradeError"));
4300            self.inner.unary(req, path, codec).await
4301        }
4302        /// Upgrade returns the upgrade for a given port and channel id.
4303        pub async fn upgrade(
4304            &mut self,
4305            request: impl tonic::IntoRequest<super::QueryUpgradeRequest>,
4306        ) -> std::result::Result<
4307            tonic::Response<super::QueryUpgradeResponse>,
4308            tonic::Status,
4309        > {
4310            self.inner
4311                .ready()
4312                .await
4313                .map_err(|e| {
4314                    tonic::Status::unknown(
4315                        format!("Service was not ready: {}", e.into()),
4316                    )
4317                })?;
4318            let codec = tonic::codec::ProstCodec::default();
4319            let path = http::uri::PathAndQuery::from_static(
4320                "/ibc.core.channel.v1.Query/Upgrade",
4321            );
4322            let mut req = request.into_request();
4323            req.extensions_mut()
4324                .insert(GrpcMethod::new("ibc.core.channel.v1.Query", "Upgrade"));
4325            self.inner.unary(req, path, codec).await
4326        }
4327        /// ChannelParams queries all parameters of the ibc channel submodule.
4328        pub async fn channel_params(
4329            &mut self,
4330            request: impl tonic::IntoRequest<super::QueryChannelParamsRequest>,
4331        ) -> std::result::Result<
4332            tonic::Response<super::QueryChannelParamsResponse>,
4333            tonic::Status,
4334        > {
4335            self.inner
4336                .ready()
4337                .await
4338                .map_err(|e| {
4339                    tonic::Status::unknown(
4340                        format!("Service was not ready: {}", e.into()),
4341                    )
4342                })?;
4343            let codec = tonic::codec::ProstCodec::default();
4344            let path = http::uri::PathAndQuery::from_static(
4345                "/ibc.core.channel.v1.Query/ChannelParams",
4346            );
4347            let mut req = request.into_request();
4348            req.extensions_mut()
4349                .insert(GrpcMethod::new("ibc.core.channel.v1.Query", "ChannelParams"));
4350            self.inner.unary(req, path, codec).await
4351        }
4352    }
4353}
4354/// Generated server implementations.
4355#[cfg(feature = "server")]
4356pub mod query_server {
4357    #![allow(
4358        unused_variables,
4359        dead_code,
4360        missing_docs,
4361        clippy::wildcard_imports,
4362        clippy::let_unit_value,
4363    )]
4364    use tonic::codegen::*;
4365    /// Generated trait containing gRPC methods that should be implemented for use with QueryServer.
4366    #[async_trait]
4367    pub trait Query: std::marker::Send + std::marker::Sync + 'static {
4368        /// Channel queries an IBC Channel.
4369        async fn channel(
4370            &self,
4371            request: tonic::Request<super::QueryChannelRequest>,
4372        ) -> std::result::Result<
4373            tonic::Response<super::QueryChannelResponse>,
4374            tonic::Status,
4375        >;
4376        /// Channels queries all the IBC channels of a chain.
4377        async fn channels(
4378            &self,
4379            request: tonic::Request<super::QueryChannelsRequest>,
4380        ) -> std::result::Result<
4381            tonic::Response<super::QueryChannelsResponse>,
4382            tonic::Status,
4383        >;
4384        /// ConnectionChannels queries all the channels associated with a connection
4385        /// end.
4386        async fn connection_channels(
4387            &self,
4388            request: tonic::Request<super::QueryConnectionChannelsRequest>,
4389        ) -> std::result::Result<
4390            tonic::Response<super::QueryConnectionChannelsResponse>,
4391            tonic::Status,
4392        >;
4393        /// ChannelClientState queries for the client state for the channel associated
4394        /// with the provided channel identifiers.
4395        async fn channel_client_state(
4396            &self,
4397            request: tonic::Request<super::QueryChannelClientStateRequest>,
4398        ) -> std::result::Result<
4399            tonic::Response<super::QueryChannelClientStateResponse>,
4400            tonic::Status,
4401        >;
4402        /// ChannelConsensusState queries for the consensus state for the channel
4403        /// associated with the provided channel identifiers.
4404        async fn channel_consensus_state(
4405            &self,
4406            request: tonic::Request<super::QueryChannelConsensusStateRequest>,
4407        ) -> std::result::Result<
4408            tonic::Response<super::QueryChannelConsensusStateResponse>,
4409            tonic::Status,
4410        >;
4411        /// PacketCommitment queries a stored packet commitment hash.
4412        async fn packet_commitment(
4413            &self,
4414            request: tonic::Request<super::QueryPacketCommitmentRequest>,
4415        ) -> std::result::Result<
4416            tonic::Response<super::QueryPacketCommitmentResponse>,
4417            tonic::Status,
4418        >;
4419        /// PacketCommitments returns all the packet commitments hashes associated
4420        /// with a channel.
4421        async fn packet_commitments(
4422            &self,
4423            request: tonic::Request<super::QueryPacketCommitmentsRequest>,
4424        ) -> std::result::Result<
4425            tonic::Response<super::QueryPacketCommitmentsResponse>,
4426            tonic::Status,
4427        >;
4428        /// PacketReceipt queries if a given packet sequence has been received on the
4429        /// queried chain
4430        async fn packet_receipt(
4431            &self,
4432            request: tonic::Request<super::QueryPacketReceiptRequest>,
4433        ) -> std::result::Result<
4434            tonic::Response<super::QueryPacketReceiptResponse>,
4435            tonic::Status,
4436        >;
4437        /// PacketAcknowledgement queries a stored packet acknowledgement hash.
4438        async fn packet_acknowledgement(
4439            &self,
4440            request: tonic::Request<super::QueryPacketAcknowledgementRequest>,
4441        ) -> std::result::Result<
4442            tonic::Response<super::QueryPacketAcknowledgementResponse>,
4443            tonic::Status,
4444        >;
4445        /// PacketAcknowledgements returns all the packet acknowledgements associated
4446        /// with a channel.
4447        async fn packet_acknowledgements(
4448            &self,
4449            request: tonic::Request<super::QueryPacketAcknowledgementsRequest>,
4450        ) -> std::result::Result<
4451            tonic::Response<super::QueryPacketAcknowledgementsResponse>,
4452            tonic::Status,
4453        >;
4454        /// UnreceivedPackets returns all the unreceived IBC packets associated with a
4455        /// channel and sequences.
4456        async fn unreceived_packets(
4457            &self,
4458            request: tonic::Request<super::QueryUnreceivedPacketsRequest>,
4459        ) -> std::result::Result<
4460            tonic::Response<super::QueryUnreceivedPacketsResponse>,
4461            tonic::Status,
4462        >;
4463        /// UnreceivedAcks returns all the unreceived IBC acknowledgements associated
4464        /// with a channel and sequences.
4465        async fn unreceived_acks(
4466            &self,
4467            request: tonic::Request<super::QueryUnreceivedAcksRequest>,
4468        ) -> std::result::Result<
4469            tonic::Response<super::QueryUnreceivedAcksResponse>,
4470            tonic::Status,
4471        >;
4472        /// NextSequenceReceive returns the next receive sequence for a given channel.
4473        async fn next_sequence_receive(
4474            &self,
4475            request: tonic::Request<super::QueryNextSequenceReceiveRequest>,
4476        ) -> std::result::Result<
4477            tonic::Response<super::QueryNextSequenceReceiveResponse>,
4478            tonic::Status,
4479        >;
4480        /// NextSequenceSend returns the next send sequence for a given channel.
4481        async fn next_sequence_send(
4482            &self,
4483            request: tonic::Request<super::QueryNextSequenceSendRequest>,
4484        ) -> std::result::Result<
4485            tonic::Response<super::QueryNextSequenceSendResponse>,
4486            tonic::Status,
4487        >;
4488        /// UpgradeError returns the error receipt if the upgrade handshake failed.
4489        async fn upgrade_error(
4490            &self,
4491            request: tonic::Request<super::QueryUpgradeErrorRequest>,
4492        ) -> std::result::Result<
4493            tonic::Response<super::QueryUpgradeErrorResponse>,
4494            tonic::Status,
4495        >;
4496        /// Upgrade returns the upgrade for a given port and channel id.
4497        async fn upgrade(
4498            &self,
4499            request: tonic::Request<super::QueryUpgradeRequest>,
4500        ) -> std::result::Result<
4501            tonic::Response<super::QueryUpgradeResponse>,
4502            tonic::Status,
4503        >;
4504        /// ChannelParams queries all parameters of the ibc channel submodule.
4505        async fn channel_params(
4506            &self,
4507            request: tonic::Request<super::QueryChannelParamsRequest>,
4508        ) -> std::result::Result<
4509            tonic::Response<super::QueryChannelParamsResponse>,
4510            tonic::Status,
4511        >;
4512    }
4513    /// Query provides defines the gRPC querier service
4514    #[derive(Debug)]
4515    pub struct QueryServer<T> {
4516        inner: Arc<T>,
4517        accept_compression_encodings: EnabledCompressionEncodings,
4518        send_compression_encodings: EnabledCompressionEncodings,
4519        max_decoding_message_size: Option<usize>,
4520        max_encoding_message_size: Option<usize>,
4521    }
4522    impl<T> QueryServer<T> {
4523        pub fn new(inner: T) -> Self {
4524            Self::from_arc(Arc::new(inner))
4525        }
4526        pub fn from_arc(inner: Arc<T>) -> Self {
4527            Self {
4528                inner,
4529                accept_compression_encodings: Default::default(),
4530                send_compression_encodings: Default::default(),
4531                max_decoding_message_size: None,
4532                max_encoding_message_size: None,
4533            }
4534        }
4535        pub fn with_interceptor<F>(
4536            inner: T,
4537            interceptor: F,
4538        ) -> InterceptedService<Self, F>
4539        where
4540            F: tonic::service::Interceptor,
4541        {
4542            InterceptedService::new(Self::new(inner), interceptor)
4543        }
4544        /// Enable decompressing requests with the given encoding.
4545        #[must_use]
4546        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
4547            self.accept_compression_encodings.enable(encoding);
4548            self
4549        }
4550        /// Compress responses with the given encoding, if the client supports it.
4551        #[must_use]
4552        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
4553            self.send_compression_encodings.enable(encoding);
4554            self
4555        }
4556        /// Limits the maximum size of a decoded message.
4557        ///
4558        /// Default: `4MB`
4559        #[must_use]
4560        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
4561            self.max_decoding_message_size = Some(limit);
4562            self
4563        }
4564        /// Limits the maximum size of an encoded message.
4565        ///
4566        /// Default: `usize::MAX`
4567        #[must_use]
4568        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
4569            self.max_encoding_message_size = Some(limit);
4570            self
4571        }
4572    }
4573    impl<T, B> tonic::codegen::Service<http::Request<B>> for QueryServer<T>
4574    where
4575        T: Query,
4576        B: Body + std::marker::Send + 'static,
4577        B::Error: Into<StdError> + std::marker::Send + 'static,
4578    {
4579        type Response = http::Response<tonic::body::Body>;
4580        type Error = std::convert::Infallible;
4581        type Future = BoxFuture<Self::Response, Self::Error>;
4582        fn poll_ready(
4583            &mut self,
4584            _cx: &mut Context<'_>,
4585        ) -> Poll<std::result::Result<(), Self::Error>> {
4586            Poll::Ready(Ok(()))
4587        }
4588        fn call(&mut self, req: http::Request<B>) -> Self::Future {
4589            match req.uri().path() {
4590                "/ibc.core.channel.v1.Query/Channel" => {
4591                    #[allow(non_camel_case_types)]
4592                    struct ChannelSvc<T: Query>(pub Arc<T>);
4593                    impl<
4594                        T: Query,
4595                    > tonic::server::UnaryService<super::QueryChannelRequest>
4596                    for ChannelSvc<T> {
4597                        type Response = super::QueryChannelResponse;
4598                        type Future = BoxFuture<
4599                            tonic::Response<Self::Response>,
4600                            tonic::Status,
4601                        >;
4602                        fn call(
4603                            &mut self,
4604                            request: tonic::Request<super::QueryChannelRequest>,
4605                        ) -> Self::Future {
4606                            let inner = Arc::clone(&self.0);
4607                            let fut = async move {
4608                                <T as Query>::channel(&inner, request).await
4609                            };
4610                            Box::pin(fut)
4611                        }
4612                    }
4613                    let accept_compression_encodings = self.accept_compression_encodings;
4614                    let send_compression_encodings = self.send_compression_encodings;
4615                    let max_decoding_message_size = self.max_decoding_message_size;
4616                    let max_encoding_message_size = self.max_encoding_message_size;
4617                    let inner = self.inner.clone();
4618                    let fut = async move {
4619                        let method = ChannelSvc(inner);
4620                        let codec = tonic::codec::ProstCodec::default();
4621                        let mut grpc = tonic::server::Grpc::new(codec)
4622                            .apply_compression_config(
4623                                accept_compression_encodings,
4624                                send_compression_encodings,
4625                            )
4626                            .apply_max_message_size_config(
4627                                max_decoding_message_size,
4628                                max_encoding_message_size,
4629                            );
4630                        let res = grpc.unary(method, req).await;
4631                        Ok(res)
4632                    };
4633                    Box::pin(fut)
4634                }
4635                "/ibc.core.channel.v1.Query/Channels" => {
4636                    #[allow(non_camel_case_types)]
4637                    struct ChannelsSvc<T: Query>(pub Arc<T>);
4638                    impl<
4639                        T: Query,
4640                    > tonic::server::UnaryService<super::QueryChannelsRequest>
4641                    for ChannelsSvc<T> {
4642                        type Response = super::QueryChannelsResponse;
4643                        type Future = BoxFuture<
4644                            tonic::Response<Self::Response>,
4645                            tonic::Status,
4646                        >;
4647                        fn call(
4648                            &mut self,
4649                            request: tonic::Request<super::QueryChannelsRequest>,
4650                        ) -> Self::Future {
4651                            let inner = Arc::clone(&self.0);
4652                            let fut = async move {
4653                                <T as Query>::channels(&inner, request).await
4654                            };
4655                            Box::pin(fut)
4656                        }
4657                    }
4658                    let accept_compression_encodings = self.accept_compression_encodings;
4659                    let send_compression_encodings = self.send_compression_encodings;
4660                    let max_decoding_message_size = self.max_decoding_message_size;
4661                    let max_encoding_message_size = self.max_encoding_message_size;
4662                    let inner = self.inner.clone();
4663                    let fut = async move {
4664                        let method = ChannelsSvc(inner);
4665                        let codec = tonic::codec::ProstCodec::default();
4666                        let mut grpc = tonic::server::Grpc::new(codec)
4667                            .apply_compression_config(
4668                                accept_compression_encodings,
4669                                send_compression_encodings,
4670                            )
4671                            .apply_max_message_size_config(
4672                                max_decoding_message_size,
4673                                max_encoding_message_size,
4674                            );
4675                        let res = grpc.unary(method, req).await;
4676                        Ok(res)
4677                    };
4678                    Box::pin(fut)
4679                }
4680                "/ibc.core.channel.v1.Query/ConnectionChannels" => {
4681                    #[allow(non_camel_case_types)]
4682                    struct ConnectionChannelsSvc<T: Query>(pub Arc<T>);
4683                    impl<
4684                        T: Query,
4685                    > tonic::server::UnaryService<super::QueryConnectionChannelsRequest>
4686                    for ConnectionChannelsSvc<T> {
4687                        type Response = super::QueryConnectionChannelsResponse;
4688                        type Future = BoxFuture<
4689                            tonic::Response<Self::Response>,
4690                            tonic::Status,
4691                        >;
4692                        fn call(
4693                            &mut self,
4694                            request: tonic::Request<
4695                                super::QueryConnectionChannelsRequest,
4696                            >,
4697                        ) -> Self::Future {
4698                            let inner = Arc::clone(&self.0);
4699                            let fut = async move {
4700                                <T as Query>::connection_channels(&inner, request).await
4701                            };
4702                            Box::pin(fut)
4703                        }
4704                    }
4705                    let accept_compression_encodings = self.accept_compression_encodings;
4706                    let send_compression_encodings = self.send_compression_encodings;
4707                    let max_decoding_message_size = self.max_decoding_message_size;
4708                    let max_encoding_message_size = self.max_encoding_message_size;
4709                    let inner = self.inner.clone();
4710                    let fut = async move {
4711                        let method = ConnectionChannelsSvc(inner);
4712                        let codec = tonic::codec::ProstCodec::default();
4713                        let mut grpc = tonic::server::Grpc::new(codec)
4714                            .apply_compression_config(
4715                                accept_compression_encodings,
4716                                send_compression_encodings,
4717                            )
4718                            .apply_max_message_size_config(
4719                                max_decoding_message_size,
4720                                max_encoding_message_size,
4721                            );
4722                        let res = grpc.unary(method, req).await;
4723                        Ok(res)
4724                    };
4725                    Box::pin(fut)
4726                }
4727                "/ibc.core.channel.v1.Query/ChannelClientState" => {
4728                    #[allow(non_camel_case_types)]
4729                    struct ChannelClientStateSvc<T: Query>(pub Arc<T>);
4730                    impl<
4731                        T: Query,
4732                    > tonic::server::UnaryService<super::QueryChannelClientStateRequest>
4733                    for ChannelClientStateSvc<T> {
4734                        type Response = super::QueryChannelClientStateResponse;
4735                        type Future = BoxFuture<
4736                            tonic::Response<Self::Response>,
4737                            tonic::Status,
4738                        >;
4739                        fn call(
4740                            &mut self,
4741                            request: tonic::Request<
4742                                super::QueryChannelClientStateRequest,
4743                            >,
4744                        ) -> Self::Future {
4745                            let inner = Arc::clone(&self.0);
4746                            let fut = async move {
4747                                <T as Query>::channel_client_state(&inner, request).await
4748                            };
4749                            Box::pin(fut)
4750                        }
4751                    }
4752                    let accept_compression_encodings = self.accept_compression_encodings;
4753                    let send_compression_encodings = self.send_compression_encodings;
4754                    let max_decoding_message_size = self.max_decoding_message_size;
4755                    let max_encoding_message_size = self.max_encoding_message_size;
4756                    let inner = self.inner.clone();
4757                    let fut = async move {
4758                        let method = ChannelClientStateSvc(inner);
4759                        let codec = tonic::codec::ProstCodec::default();
4760                        let mut grpc = tonic::server::Grpc::new(codec)
4761                            .apply_compression_config(
4762                                accept_compression_encodings,
4763                                send_compression_encodings,
4764                            )
4765                            .apply_max_message_size_config(
4766                                max_decoding_message_size,
4767                                max_encoding_message_size,
4768                            );
4769                        let res = grpc.unary(method, req).await;
4770                        Ok(res)
4771                    };
4772                    Box::pin(fut)
4773                }
4774                "/ibc.core.channel.v1.Query/ChannelConsensusState" => {
4775                    #[allow(non_camel_case_types)]
4776                    struct ChannelConsensusStateSvc<T: Query>(pub Arc<T>);
4777                    impl<
4778                        T: Query,
4779                    > tonic::server::UnaryService<
4780                        super::QueryChannelConsensusStateRequest,
4781                    > for ChannelConsensusStateSvc<T> {
4782                        type Response = super::QueryChannelConsensusStateResponse;
4783                        type Future = BoxFuture<
4784                            tonic::Response<Self::Response>,
4785                            tonic::Status,
4786                        >;
4787                        fn call(
4788                            &mut self,
4789                            request: tonic::Request<
4790                                super::QueryChannelConsensusStateRequest,
4791                            >,
4792                        ) -> Self::Future {
4793                            let inner = Arc::clone(&self.0);
4794                            let fut = async move {
4795                                <T as Query>::channel_consensus_state(&inner, request).await
4796                            };
4797                            Box::pin(fut)
4798                        }
4799                    }
4800                    let accept_compression_encodings = self.accept_compression_encodings;
4801                    let send_compression_encodings = self.send_compression_encodings;
4802                    let max_decoding_message_size = self.max_decoding_message_size;
4803                    let max_encoding_message_size = self.max_encoding_message_size;
4804                    let inner = self.inner.clone();
4805                    let fut = async move {
4806                        let method = ChannelConsensusStateSvc(inner);
4807                        let codec = tonic::codec::ProstCodec::default();
4808                        let mut grpc = tonic::server::Grpc::new(codec)
4809                            .apply_compression_config(
4810                                accept_compression_encodings,
4811                                send_compression_encodings,
4812                            )
4813                            .apply_max_message_size_config(
4814                                max_decoding_message_size,
4815                                max_encoding_message_size,
4816                            );
4817                        let res = grpc.unary(method, req).await;
4818                        Ok(res)
4819                    };
4820                    Box::pin(fut)
4821                }
4822                "/ibc.core.channel.v1.Query/PacketCommitment" => {
4823                    #[allow(non_camel_case_types)]
4824                    struct PacketCommitmentSvc<T: Query>(pub Arc<T>);
4825                    impl<
4826                        T: Query,
4827                    > tonic::server::UnaryService<super::QueryPacketCommitmentRequest>
4828                    for PacketCommitmentSvc<T> {
4829                        type Response = super::QueryPacketCommitmentResponse;
4830                        type Future = BoxFuture<
4831                            tonic::Response<Self::Response>,
4832                            tonic::Status,
4833                        >;
4834                        fn call(
4835                            &mut self,
4836                            request: tonic::Request<super::QueryPacketCommitmentRequest>,
4837                        ) -> Self::Future {
4838                            let inner = Arc::clone(&self.0);
4839                            let fut = async move {
4840                                <T as Query>::packet_commitment(&inner, request).await
4841                            };
4842                            Box::pin(fut)
4843                        }
4844                    }
4845                    let accept_compression_encodings = self.accept_compression_encodings;
4846                    let send_compression_encodings = self.send_compression_encodings;
4847                    let max_decoding_message_size = self.max_decoding_message_size;
4848                    let max_encoding_message_size = self.max_encoding_message_size;
4849                    let inner = self.inner.clone();
4850                    let fut = async move {
4851                        let method = PacketCommitmentSvc(inner);
4852                        let codec = tonic::codec::ProstCodec::default();
4853                        let mut grpc = tonic::server::Grpc::new(codec)
4854                            .apply_compression_config(
4855                                accept_compression_encodings,
4856                                send_compression_encodings,
4857                            )
4858                            .apply_max_message_size_config(
4859                                max_decoding_message_size,
4860                                max_encoding_message_size,
4861                            );
4862                        let res = grpc.unary(method, req).await;
4863                        Ok(res)
4864                    };
4865                    Box::pin(fut)
4866                }
4867                "/ibc.core.channel.v1.Query/PacketCommitments" => {
4868                    #[allow(non_camel_case_types)]
4869                    struct PacketCommitmentsSvc<T: Query>(pub Arc<T>);
4870                    impl<
4871                        T: Query,
4872                    > tonic::server::UnaryService<super::QueryPacketCommitmentsRequest>
4873                    for PacketCommitmentsSvc<T> {
4874                        type Response = super::QueryPacketCommitmentsResponse;
4875                        type Future = BoxFuture<
4876                            tonic::Response<Self::Response>,
4877                            tonic::Status,
4878                        >;
4879                        fn call(
4880                            &mut self,
4881                            request: tonic::Request<super::QueryPacketCommitmentsRequest>,
4882                        ) -> Self::Future {
4883                            let inner = Arc::clone(&self.0);
4884                            let fut = async move {
4885                                <T as Query>::packet_commitments(&inner, request).await
4886                            };
4887                            Box::pin(fut)
4888                        }
4889                    }
4890                    let accept_compression_encodings = self.accept_compression_encodings;
4891                    let send_compression_encodings = self.send_compression_encodings;
4892                    let max_decoding_message_size = self.max_decoding_message_size;
4893                    let max_encoding_message_size = self.max_encoding_message_size;
4894                    let inner = self.inner.clone();
4895                    let fut = async move {
4896                        let method = PacketCommitmentsSvc(inner);
4897                        let codec = tonic::codec::ProstCodec::default();
4898                        let mut grpc = tonic::server::Grpc::new(codec)
4899                            .apply_compression_config(
4900                                accept_compression_encodings,
4901                                send_compression_encodings,
4902                            )
4903                            .apply_max_message_size_config(
4904                                max_decoding_message_size,
4905                                max_encoding_message_size,
4906                            );
4907                        let res = grpc.unary(method, req).await;
4908                        Ok(res)
4909                    };
4910                    Box::pin(fut)
4911                }
4912                "/ibc.core.channel.v1.Query/PacketReceipt" => {
4913                    #[allow(non_camel_case_types)]
4914                    struct PacketReceiptSvc<T: Query>(pub Arc<T>);
4915                    impl<
4916                        T: Query,
4917                    > tonic::server::UnaryService<super::QueryPacketReceiptRequest>
4918                    for PacketReceiptSvc<T> {
4919                        type Response = super::QueryPacketReceiptResponse;
4920                        type Future = BoxFuture<
4921                            tonic::Response<Self::Response>,
4922                            tonic::Status,
4923                        >;
4924                        fn call(
4925                            &mut self,
4926                            request: tonic::Request<super::QueryPacketReceiptRequest>,
4927                        ) -> Self::Future {
4928                            let inner = Arc::clone(&self.0);
4929                            let fut = async move {
4930                                <T as Query>::packet_receipt(&inner, request).await
4931                            };
4932                            Box::pin(fut)
4933                        }
4934                    }
4935                    let accept_compression_encodings = self.accept_compression_encodings;
4936                    let send_compression_encodings = self.send_compression_encodings;
4937                    let max_decoding_message_size = self.max_decoding_message_size;
4938                    let max_encoding_message_size = self.max_encoding_message_size;
4939                    let inner = self.inner.clone();
4940                    let fut = async move {
4941                        let method = PacketReceiptSvc(inner);
4942                        let codec = tonic::codec::ProstCodec::default();
4943                        let mut grpc = tonic::server::Grpc::new(codec)
4944                            .apply_compression_config(
4945                                accept_compression_encodings,
4946                                send_compression_encodings,
4947                            )
4948                            .apply_max_message_size_config(
4949                                max_decoding_message_size,
4950                                max_encoding_message_size,
4951                            );
4952                        let res = grpc.unary(method, req).await;
4953                        Ok(res)
4954                    };
4955                    Box::pin(fut)
4956                }
4957                "/ibc.core.channel.v1.Query/PacketAcknowledgement" => {
4958                    #[allow(non_camel_case_types)]
4959                    struct PacketAcknowledgementSvc<T: Query>(pub Arc<T>);
4960                    impl<
4961                        T: Query,
4962                    > tonic::server::UnaryService<
4963                        super::QueryPacketAcknowledgementRequest,
4964                    > for PacketAcknowledgementSvc<T> {
4965                        type Response = super::QueryPacketAcknowledgementResponse;
4966                        type Future = BoxFuture<
4967                            tonic::Response<Self::Response>,
4968                            tonic::Status,
4969                        >;
4970                        fn call(
4971                            &mut self,
4972                            request: tonic::Request<
4973                                super::QueryPacketAcknowledgementRequest,
4974                            >,
4975                        ) -> Self::Future {
4976                            let inner = Arc::clone(&self.0);
4977                            let fut = async move {
4978                                <T as Query>::packet_acknowledgement(&inner, request).await
4979                            };
4980                            Box::pin(fut)
4981                        }
4982                    }
4983                    let accept_compression_encodings = self.accept_compression_encodings;
4984                    let send_compression_encodings = self.send_compression_encodings;
4985                    let max_decoding_message_size = self.max_decoding_message_size;
4986                    let max_encoding_message_size = self.max_encoding_message_size;
4987                    let inner = self.inner.clone();
4988                    let fut = async move {
4989                        let method = PacketAcknowledgementSvc(inner);
4990                        let codec = tonic::codec::ProstCodec::default();
4991                        let mut grpc = tonic::server::Grpc::new(codec)
4992                            .apply_compression_config(
4993                                accept_compression_encodings,
4994                                send_compression_encodings,
4995                            )
4996                            .apply_max_message_size_config(
4997                                max_decoding_message_size,
4998                                max_encoding_message_size,
4999                            );
5000                        let res = grpc.unary(method, req).await;
5001                        Ok(res)
5002                    };
5003                    Box::pin(fut)
5004                }
5005                "/ibc.core.channel.v1.Query/PacketAcknowledgements" => {
5006                    #[allow(non_camel_case_types)]
5007                    struct PacketAcknowledgementsSvc<T: Query>(pub Arc<T>);
5008                    impl<
5009                        T: Query,
5010                    > tonic::server::UnaryService<
5011                        super::QueryPacketAcknowledgementsRequest,
5012                    > for PacketAcknowledgementsSvc<T> {
5013                        type Response = super::QueryPacketAcknowledgementsResponse;
5014                        type Future = BoxFuture<
5015                            tonic::Response<Self::Response>,
5016                            tonic::Status,
5017                        >;
5018                        fn call(
5019                            &mut self,
5020                            request: tonic::Request<
5021                                super::QueryPacketAcknowledgementsRequest,
5022                            >,
5023                        ) -> Self::Future {
5024                            let inner = Arc::clone(&self.0);
5025                            let fut = async move {
5026                                <T as Query>::packet_acknowledgements(&inner, request).await
5027                            };
5028                            Box::pin(fut)
5029                        }
5030                    }
5031                    let accept_compression_encodings = self.accept_compression_encodings;
5032                    let send_compression_encodings = self.send_compression_encodings;
5033                    let max_decoding_message_size = self.max_decoding_message_size;
5034                    let max_encoding_message_size = self.max_encoding_message_size;
5035                    let inner = self.inner.clone();
5036                    let fut = async move {
5037                        let method = PacketAcknowledgementsSvc(inner);
5038                        let codec = tonic::codec::ProstCodec::default();
5039                        let mut grpc = tonic::server::Grpc::new(codec)
5040                            .apply_compression_config(
5041                                accept_compression_encodings,
5042                                send_compression_encodings,
5043                            )
5044                            .apply_max_message_size_config(
5045                                max_decoding_message_size,
5046                                max_encoding_message_size,
5047                            );
5048                        let res = grpc.unary(method, req).await;
5049                        Ok(res)
5050                    };
5051                    Box::pin(fut)
5052                }
5053                "/ibc.core.channel.v1.Query/UnreceivedPackets" => {
5054                    #[allow(non_camel_case_types)]
5055                    struct UnreceivedPacketsSvc<T: Query>(pub Arc<T>);
5056                    impl<
5057                        T: Query,
5058                    > tonic::server::UnaryService<super::QueryUnreceivedPacketsRequest>
5059                    for UnreceivedPacketsSvc<T> {
5060                        type Response = super::QueryUnreceivedPacketsResponse;
5061                        type Future = BoxFuture<
5062                            tonic::Response<Self::Response>,
5063                            tonic::Status,
5064                        >;
5065                        fn call(
5066                            &mut self,
5067                            request: tonic::Request<super::QueryUnreceivedPacketsRequest>,
5068                        ) -> Self::Future {
5069                            let inner = Arc::clone(&self.0);
5070                            let fut = async move {
5071                                <T as Query>::unreceived_packets(&inner, request).await
5072                            };
5073                            Box::pin(fut)
5074                        }
5075                    }
5076                    let accept_compression_encodings = self.accept_compression_encodings;
5077                    let send_compression_encodings = self.send_compression_encodings;
5078                    let max_decoding_message_size = self.max_decoding_message_size;
5079                    let max_encoding_message_size = self.max_encoding_message_size;
5080                    let inner = self.inner.clone();
5081                    let fut = async move {
5082                        let method = UnreceivedPacketsSvc(inner);
5083                        let codec = tonic::codec::ProstCodec::default();
5084                        let mut grpc = tonic::server::Grpc::new(codec)
5085                            .apply_compression_config(
5086                                accept_compression_encodings,
5087                                send_compression_encodings,
5088                            )
5089                            .apply_max_message_size_config(
5090                                max_decoding_message_size,
5091                                max_encoding_message_size,
5092                            );
5093                        let res = grpc.unary(method, req).await;
5094                        Ok(res)
5095                    };
5096                    Box::pin(fut)
5097                }
5098                "/ibc.core.channel.v1.Query/UnreceivedAcks" => {
5099                    #[allow(non_camel_case_types)]
5100                    struct UnreceivedAcksSvc<T: Query>(pub Arc<T>);
5101                    impl<
5102                        T: Query,
5103                    > tonic::server::UnaryService<super::QueryUnreceivedAcksRequest>
5104                    for UnreceivedAcksSvc<T> {
5105                        type Response = super::QueryUnreceivedAcksResponse;
5106                        type Future = BoxFuture<
5107                            tonic::Response<Self::Response>,
5108                            tonic::Status,
5109                        >;
5110                        fn call(
5111                            &mut self,
5112                            request: tonic::Request<super::QueryUnreceivedAcksRequest>,
5113                        ) -> Self::Future {
5114                            let inner = Arc::clone(&self.0);
5115                            let fut = async move {
5116                                <T as Query>::unreceived_acks(&inner, request).await
5117                            };
5118                            Box::pin(fut)
5119                        }
5120                    }
5121                    let accept_compression_encodings = self.accept_compression_encodings;
5122                    let send_compression_encodings = self.send_compression_encodings;
5123                    let max_decoding_message_size = self.max_decoding_message_size;
5124                    let max_encoding_message_size = self.max_encoding_message_size;
5125                    let inner = self.inner.clone();
5126                    let fut = async move {
5127                        let method = UnreceivedAcksSvc(inner);
5128                        let codec = tonic::codec::ProstCodec::default();
5129                        let mut grpc = tonic::server::Grpc::new(codec)
5130                            .apply_compression_config(
5131                                accept_compression_encodings,
5132                                send_compression_encodings,
5133                            )
5134                            .apply_max_message_size_config(
5135                                max_decoding_message_size,
5136                                max_encoding_message_size,
5137                            );
5138                        let res = grpc.unary(method, req).await;
5139                        Ok(res)
5140                    };
5141                    Box::pin(fut)
5142                }
5143                "/ibc.core.channel.v1.Query/NextSequenceReceive" => {
5144                    #[allow(non_camel_case_types)]
5145                    struct NextSequenceReceiveSvc<T: Query>(pub Arc<T>);
5146                    impl<
5147                        T: Query,
5148                    > tonic::server::UnaryService<super::QueryNextSequenceReceiveRequest>
5149                    for NextSequenceReceiveSvc<T> {
5150                        type Response = super::QueryNextSequenceReceiveResponse;
5151                        type Future = BoxFuture<
5152                            tonic::Response<Self::Response>,
5153                            tonic::Status,
5154                        >;
5155                        fn call(
5156                            &mut self,
5157                            request: tonic::Request<
5158                                super::QueryNextSequenceReceiveRequest,
5159                            >,
5160                        ) -> Self::Future {
5161                            let inner = Arc::clone(&self.0);
5162                            let fut = async move {
5163                                <T as Query>::next_sequence_receive(&inner, request).await
5164                            };
5165                            Box::pin(fut)
5166                        }
5167                    }
5168                    let accept_compression_encodings = self.accept_compression_encodings;
5169                    let send_compression_encodings = self.send_compression_encodings;
5170                    let max_decoding_message_size = self.max_decoding_message_size;
5171                    let max_encoding_message_size = self.max_encoding_message_size;
5172                    let inner = self.inner.clone();
5173                    let fut = async move {
5174                        let method = NextSequenceReceiveSvc(inner);
5175                        let codec = tonic::codec::ProstCodec::default();
5176                        let mut grpc = tonic::server::Grpc::new(codec)
5177                            .apply_compression_config(
5178                                accept_compression_encodings,
5179                                send_compression_encodings,
5180                            )
5181                            .apply_max_message_size_config(
5182                                max_decoding_message_size,
5183                                max_encoding_message_size,
5184                            );
5185                        let res = grpc.unary(method, req).await;
5186                        Ok(res)
5187                    };
5188                    Box::pin(fut)
5189                }
5190                "/ibc.core.channel.v1.Query/NextSequenceSend" => {
5191                    #[allow(non_camel_case_types)]
5192                    struct NextSequenceSendSvc<T: Query>(pub Arc<T>);
5193                    impl<
5194                        T: Query,
5195                    > tonic::server::UnaryService<super::QueryNextSequenceSendRequest>
5196                    for NextSequenceSendSvc<T> {
5197                        type Response = super::QueryNextSequenceSendResponse;
5198                        type Future = BoxFuture<
5199                            tonic::Response<Self::Response>,
5200                            tonic::Status,
5201                        >;
5202                        fn call(
5203                            &mut self,
5204                            request: tonic::Request<super::QueryNextSequenceSendRequest>,
5205                        ) -> Self::Future {
5206                            let inner = Arc::clone(&self.0);
5207                            let fut = async move {
5208                                <T as Query>::next_sequence_send(&inner, request).await
5209                            };
5210                            Box::pin(fut)
5211                        }
5212                    }
5213                    let accept_compression_encodings = self.accept_compression_encodings;
5214                    let send_compression_encodings = self.send_compression_encodings;
5215                    let max_decoding_message_size = self.max_decoding_message_size;
5216                    let max_encoding_message_size = self.max_encoding_message_size;
5217                    let inner = self.inner.clone();
5218                    let fut = async move {
5219                        let method = NextSequenceSendSvc(inner);
5220                        let codec = tonic::codec::ProstCodec::default();
5221                        let mut grpc = tonic::server::Grpc::new(codec)
5222                            .apply_compression_config(
5223                                accept_compression_encodings,
5224                                send_compression_encodings,
5225                            )
5226                            .apply_max_message_size_config(
5227                                max_decoding_message_size,
5228                                max_encoding_message_size,
5229                            );
5230                        let res = grpc.unary(method, req).await;
5231                        Ok(res)
5232                    };
5233                    Box::pin(fut)
5234                }
5235                "/ibc.core.channel.v1.Query/UpgradeError" => {
5236                    #[allow(non_camel_case_types)]
5237                    struct UpgradeErrorSvc<T: Query>(pub Arc<T>);
5238                    impl<
5239                        T: Query,
5240                    > tonic::server::UnaryService<super::QueryUpgradeErrorRequest>
5241                    for UpgradeErrorSvc<T> {
5242                        type Response = super::QueryUpgradeErrorResponse;
5243                        type Future = BoxFuture<
5244                            tonic::Response<Self::Response>,
5245                            tonic::Status,
5246                        >;
5247                        fn call(
5248                            &mut self,
5249                            request: tonic::Request<super::QueryUpgradeErrorRequest>,
5250                        ) -> Self::Future {
5251                            let inner = Arc::clone(&self.0);
5252                            let fut = async move {
5253                                <T as Query>::upgrade_error(&inner, request).await
5254                            };
5255                            Box::pin(fut)
5256                        }
5257                    }
5258                    let accept_compression_encodings = self.accept_compression_encodings;
5259                    let send_compression_encodings = self.send_compression_encodings;
5260                    let max_decoding_message_size = self.max_decoding_message_size;
5261                    let max_encoding_message_size = self.max_encoding_message_size;
5262                    let inner = self.inner.clone();
5263                    let fut = async move {
5264                        let method = UpgradeErrorSvc(inner);
5265                        let codec = tonic::codec::ProstCodec::default();
5266                        let mut grpc = tonic::server::Grpc::new(codec)
5267                            .apply_compression_config(
5268                                accept_compression_encodings,
5269                                send_compression_encodings,
5270                            )
5271                            .apply_max_message_size_config(
5272                                max_decoding_message_size,
5273                                max_encoding_message_size,
5274                            );
5275                        let res = grpc.unary(method, req).await;
5276                        Ok(res)
5277                    };
5278                    Box::pin(fut)
5279                }
5280                "/ibc.core.channel.v1.Query/Upgrade" => {
5281                    #[allow(non_camel_case_types)]
5282                    struct UpgradeSvc<T: Query>(pub Arc<T>);
5283                    impl<
5284                        T: Query,
5285                    > tonic::server::UnaryService<super::QueryUpgradeRequest>
5286                    for UpgradeSvc<T> {
5287                        type Response = super::QueryUpgradeResponse;
5288                        type Future = BoxFuture<
5289                            tonic::Response<Self::Response>,
5290                            tonic::Status,
5291                        >;
5292                        fn call(
5293                            &mut self,
5294                            request: tonic::Request<super::QueryUpgradeRequest>,
5295                        ) -> Self::Future {
5296                            let inner = Arc::clone(&self.0);
5297                            let fut = async move {
5298                                <T as Query>::upgrade(&inner, request).await
5299                            };
5300                            Box::pin(fut)
5301                        }
5302                    }
5303                    let accept_compression_encodings = self.accept_compression_encodings;
5304                    let send_compression_encodings = self.send_compression_encodings;
5305                    let max_decoding_message_size = self.max_decoding_message_size;
5306                    let max_encoding_message_size = self.max_encoding_message_size;
5307                    let inner = self.inner.clone();
5308                    let fut = async move {
5309                        let method = UpgradeSvc(inner);
5310                        let codec = tonic::codec::ProstCodec::default();
5311                        let mut grpc = tonic::server::Grpc::new(codec)
5312                            .apply_compression_config(
5313                                accept_compression_encodings,
5314                                send_compression_encodings,
5315                            )
5316                            .apply_max_message_size_config(
5317                                max_decoding_message_size,
5318                                max_encoding_message_size,
5319                            );
5320                        let res = grpc.unary(method, req).await;
5321                        Ok(res)
5322                    };
5323                    Box::pin(fut)
5324                }
5325                "/ibc.core.channel.v1.Query/ChannelParams" => {
5326                    #[allow(non_camel_case_types)]
5327                    struct ChannelParamsSvc<T: Query>(pub Arc<T>);
5328                    impl<
5329                        T: Query,
5330                    > tonic::server::UnaryService<super::QueryChannelParamsRequest>
5331                    for ChannelParamsSvc<T> {
5332                        type Response = super::QueryChannelParamsResponse;
5333                        type Future = BoxFuture<
5334                            tonic::Response<Self::Response>,
5335                            tonic::Status,
5336                        >;
5337                        fn call(
5338                            &mut self,
5339                            request: tonic::Request<super::QueryChannelParamsRequest>,
5340                        ) -> Self::Future {
5341                            let inner = Arc::clone(&self.0);
5342                            let fut = async move {
5343                                <T as Query>::channel_params(&inner, request).await
5344                            };
5345                            Box::pin(fut)
5346                        }
5347                    }
5348                    let accept_compression_encodings = self.accept_compression_encodings;
5349                    let send_compression_encodings = self.send_compression_encodings;
5350                    let max_decoding_message_size = self.max_decoding_message_size;
5351                    let max_encoding_message_size = self.max_encoding_message_size;
5352                    let inner = self.inner.clone();
5353                    let fut = async move {
5354                        let method = ChannelParamsSvc(inner);
5355                        let codec = tonic::codec::ProstCodec::default();
5356                        let mut grpc = tonic::server::Grpc::new(codec)
5357                            .apply_compression_config(
5358                                accept_compression_encodings,
5359                                send_compression_encodings,
5360                            )
5361                            .apply_max_message_size_config(
5362                                max_decoding_message_size,
5363                                max_encoding_message_size,
5364                            );
5365                        let res = grpc.unary(method, req).await;
5366                        Ok(res)
5367                    };
5368                    Box::pin(fut)
5369                }
5370                _ => {
5371                    Box::pin(async move {
5372                        let mut response = http::Response::new(
5373                            tonic::body::Body::default(),
5374                        );
5375                        let headers = response.headers_mut();
5376                        headers
5377                            .insert(
5378                                tonic::Status::GRPC_STATUS,
5379                                (tonic::Code::Unimplemented as i32).into(),
5380                            );
5381                        headers
5382                            .insert(
5383                                http::header::CONTENT_TYPE,
5384                                tonic::metadata::GRPC_CONTENT_TYPE,
5385                            );
5386                        Ok(response)
5387                    })
5388                }
5389            }
5390        }
5391    }
5392    impl<T> Clone for QueryServer<T> {
5393        fn clone(&self) -> Self {
5394            let inner = self.inner.clone();
5395            Self {
5396                inner,
5397                accept_compression_encodings: self.accept_compression_encodings,
5398                send_compression_encodings: self.send_compression_encodings,
5399                max_decoding_message_size: self.max_decoding_message_size,
5400                max_encoding_message_size: self.max_encoding_message_size,
5401            }
5402        }
5403    }
5404    /// Generated gRPC service name
5405    pub const SERVICE_NAME: &str = "ibc.core.channel.v1.Query";
5406    impl<T> tonic::server::NamedService for QueryServer<T> {
5407        const NAME: &'static str = SERVICE_NAME;
5408    }
5409}