1#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct MsgUpdateParams {
5 #[prost(string, tag = "1")]
7 pub authority: ::prost::alloc::string::String,
8 #[prost(message, optional, tag = "2")]
10 pub params: ::core::option::Option<super::super::v1::ConsumerParams>,
11}
12impl ::prost::Name for MsgUpdateParams {
13 const NAME: &'static str = "MsgUpdateParams";
14 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
15 fn full_name() -> ::prost::alloc::string::String {
16 "interchain_security.ccv.consumer.v1.MsgUpdateParams".into()
17 }
18 fn type_url() -> ::prost::alloc::string::String {
19 "/interchain_security.ccv.consumer.v1.MsgUpdateParams".into()
20 }
21}
22#[derive(Clone, Copy, PartialEq, ::prost::Message)]
23pub struct MsgUpdateParamsResponse {}
24impl ::prost::Name for MsgUpdateParamsResponse {
25 const NAME: &'static str = "MsgUpdateParamsResponse";
26 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
27 fn full_name() -> ::prost::alloc::string::String {
28 "interchain_security.ccv.consumer.v1.MsgUpdateParamsResponse".into()
29 }
30 fn type_url() -> ::prost::alloc::string::String {
31 "/interchain_security.ccv.consumer.v1.MsgUpdateParamsResponse".into()
32 }
33}
34#[cfg(feature = "client")]
36pub mod msg_client {
37 #![allow(
38 unused_variables,
39 dead_code,
40 missing_docs,
41 clippy::wildcard_imports,
42 clippy::let_unit_value,
43 )]
44 use tonic::codegen::*;
45 use tonic::codegen::http::Uri;
46 #[derive(Debug, Clone)]
48 pub struct MsgClient<T> {
49 inner: tonic::client::Grpc<T>,
50 }
51 #[cfg(feature = "transport")]
52 impl MsgClient<tonic::transport::Channel> {
53 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
55 where
56 D: TryInto<tonic::transport::Endpoint>,
57 D::Error: Into<StdError>,
58 {
59 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
60 Ok(Self::new(conn))
61 }
62 }
63 impl<T> MsgClient<T>
64 where
65 T: tonic::client::GrpcService<tonic::body::Body>,
66 T::Error: Into<StdError>,
67 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
68 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
69 {
70 pub fn new(inner: T) -> Self {
71 let inner = tonic::client::Grpc::new(inner);
72 Self { inner }
73 }
74 pub fn with_origin(inner: T, origin: Uri) -> Self {
75 let inner = tonic::client::Grpc::with_origin(inner, origin);
76 Self { inner }
77 }
78 pub fn with_interceptor<F>(
79 inner: T,
80 interceptor: F,
81 ) -> MsgClient<InterceptedService<T, F>>
82 where
83 F: tonic::service::Interceptor,
84 T::ResponseBody: Default,
85 T: tonic::codegen::Service<
86 http::Request<tonic::body::Body>,
87 Response = http::Response<
88 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
89 >,
90 >,
91 <T as tonic::codegen::Service<
92 http::Request<tonic::body::Body>,
93 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
94 {
95 MsgClient::new(InterceptedService::new(inner, interceptor))
96 }
97 #[must_use]
102 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
103 self.inner = self.inner.send_compressed(encoding);
104 self
105 }
106 #[must_use]
108 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
109 self.inner = self.inner.accept_compressed(encoding);
110 self
111 }
112 #[must_use]
116 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
117 self.inner = self.inner.max_decoding_message_size(limit);
118 self
119 }
120 #[must_use]
124 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
125 self.inner = self.inner.max_encoding_message_size(limit);
126 self
127 }
128 pub async fn update_params(
129 &mut self,
130 request: impl tonic::IntoRequest<super::MsgUpdateParams>,
131 ) -> std::result::Result<
132 tonic::Response<super::MsgUpdateParamsResponse>,
133 tonic::Status,
134 > {
135 self.inner
136 .ready()
137 .await
138 .map_err(|e| {
139 tonic::Status::unknown(
140 format!("Service was not ready: {}", e.into()),
141 )
142 })?;
143 let codec = tonic::codec::ProstCodec::default();
144 let path = http::uri::PathAndQuery::from_static(
145 "/interchain_security.ccv.consumer.v1.Msg/UpdateParams",
146 );
147 let mut req = request.into_request();
148 req.extensions_mut()
149 .insert(
150 GrpcMethod::new(
151 "interchain_security.ccv.consumer.v1.Msg",
152 "UpdateParams",
153 ),
154 );
155 self.inner.unary(req, path, codec).await
156 }
157 }
158}
159#[cfg(feature = "server")]
161pub mod msg_server {
162 #![allow(
163 unused_variables,
164 dead_code,
165 missing_docs,
166 clippy::wildcard_imports,
167 clippy::let_unit_value,
168 )]
169 use tonic::codegen::*;
170 #[async_trait]
172 pub trait Msg: std::marker::Send + std::marker::Sync + 'static {
173 async fn update_params(
174 &self,
175 request: tonic::Request<super::MsgUpdateParams>,
176 ) -> std::result::Result<
177 tonic::Response<super::MsgUpdateParamsResponse>,
178 tonic::Status,
179 >;
180 }
181 #[derive(Debug)]
183 pub struct MsgServer<T> {
184 inner: Arc<T>,
185 accept_compression_encodings: EnabledCompressionEncodings,
186 send_compression_encodings: EnabledCompressionEncodings,
187 max_decoding_message_size: Option<usize>,
188 max_encoding_message_size: Option<usize>,
189 }
190 impl<T> MsgServer<T> {
191 pub fn new(inner: T) -> Self {
192 Self::from_arc(Arc::new(inner))
193 }
194 pub fn from_arc(inner: Arc<T>) -> Self {
195 Self {
196 inner,
197 accept_compression_encodings: Default::default(),
198 send_compression_encodings: Default::default(),
199 max_decoding_message_size: None,
200 max_encoding_message_size: None,
201 }
202 }
203 pub fn with_interceptor<F>(
204 inner: T,
205 interceptor: F,
206 ) -> InterceptedService<Self, F>
207 where
208 F: tonic::service::Interceptor,
209 {
210 InterceptedService::new(Self::new(inner), interceptor)
211 }
212 #[must_use]
214 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
215 self.accept_compression_encodings.enable(encoding);
216 self
217 }
218 #[must_use]
220 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
221 self.send_compression_encodings.enable(encoding);
222 self
223 }
224 #[must_use]
228 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
229 self.max_decoding_message_size = Some(limit);
230 self
231 }
232 #[must_use]
236 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
237 self.max_encoding_message_size = Some(limit);
238 self
239 }
240 }
241 impl<T, B> tonic::codegen::Service<http::Request<B>> for MsgServer<T>
242 where
243 T: Msg,
244 B: Body + std::marker::Send + 'static,
245 B::Error: Into<StdError> + std::marker::Send + 'static,
246 {
247 type Response = http::Response<tonic::body::Body>;
248 type Error = std::convert::Infallible;
249 type Future = BoxFuture<Self::Response, Self::Error>;
250 fn poll_ready(
251 &mut self,
252 _cx: &mut Context<'_>,
253 ) -> Poll<std::result::Result<(), Self::Error>> {
254 Poll::Ready(Ok(()))
255 }
256 fn call(&mut self, req: http::Request<B>) -> Self::Future {
257 match req.uri().path() {
258 "/interchain_security.ccv.consumer.v1.Msg/UpdateParams" => {
259 #[allow(non_camel_case_types)]
260 struct UpdateParamsSvc<T: Msg>(pub Arc<T>);
261 impl<T: Msg> tonic::server::UnaryService<super::MsgUpdateParams>
262 for UpdateParamsSvc<T> {
263 type Response = super::MsgUpdateParamsResponse;
264 type Future = BoxFuture<
265 tonic::Response<Self::Response>,
266 tonic::Status,
267 >;
268 fn call(
269 &mut self,
270 request: tonic::Request<super::MsgUpdateParams>,
271 ) -> Self::Future {
272 let inner = Arc::clone(&self.0);
273 let fut = async move {
274 <T as Msg>::update_params(&inner, request).await
275 };
276 Box::pin(fut)
277 }
278 }
279 let accept_compression_encodings = self.accept_compression_encodings;
280 let send_compression_encodings = self.send_compression_encodings;
281 let max_decoding_message_size = self.max_decoding_message_size;
282 let max_encoding_message_size = self.max_encoding_message_size;
283 let inner = self.inner.clone();
284 let fut = async move {
285 let method = UpdateParamsSvc(inner);
286 let codec = tonic::codec::ProstCodec::default();
287 let mut grpc = tonic::server::Grpc::new(codec)
288 .apply_compression_config(
289 accept_compression_encodings,
290 send_compression_encodings,
291 )
292 .apply_max_message_size_config(
293 max_decoding_message_size,
294 max_encoding_message_size,
295 );
296 let res = grpc.unary(method, req).await;
297 Ok(res)
298 };
299 Box::pin(fut)
300 }
301 _ => {
302 Box::pin(async move {
303 let mut response = http::Response::new(
304 tonic::body::Body::default(),
305 );
306 let headers = response.headers_mut();
307 headers
308 .insert(
309 tonic::Status::GRPC_STATUS,
310 (tonic::Code::Unimplemented as i32).into(),
311 );
312 headers
313 .insert(
314 http::header::CONTENT_TYPE,
315 tonic::metadata::GRPC_CONTENT_TYPE,
316 );
317 Ok(response)
318 })
319 }
320 }
321 }
322 }
323 impl<T> Clone for MsgServer<T> {
324 fn clone(&self) -> Self {
325 let inner = self.inner.clone();
326 Self {
327 inner,
328 accept_compression_encodings: self.accept_compression_encodings,
329 send_compression_encodings: self.send_compression_encodings,
330 max_decoding_message_size: self.max_decoding_message_size,
331 max_encoding_message_size: self.max_encoding_message_size,
332 }
333 }
334 }
335 pub const SERVICE_NAME: &str = "interchain_security.ccv.consumer.v1.Msg";
337 impl<T> tonic::server::NamedService for MsgServer<T> {
338 const NAME: &'static str = SERVICE_NAME;
339 }
340}
341#[derive(Clone, PartialEq, ::prost::Message)]
348pub struct CrossChainValidator {
349 #[prost(bytes = "vec", tag = "1")]
350 pub address: ::prost::alloc::vec::Vec<u8>,
351 #[prost(int64, tag = "2")]
352 pub power: i64,
353 #[prost(message, optional, tag = "3")]
355 pub pubkey: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
356 #[deprecated]
359 #[prost(bool, tag = "4")]
360 pub opted_out: bool,
361}
362impl ::prost::Name for CrossChainValidator {
363 const NAME: &'static str = "CrossChainValidator";
364 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
365 fn full_name() -> ::prost::alloc::string::String {
366 "interchain_security.ccv.consumer.v1.CrossChainValidator".into()
367 }
368 fn type_url() -> ::prost::alloc::string::String {
369 "/interchain_security.ccv.consumer.v1.CrossChainValidator".into()
370 }
371}
372#[derive(Clone, Copy, PartialEq, ::prost::Message)]
377pub struct SlashRecord {
378 #[prost(bool, tag = "1")]
379 pub waiting_on_reply: bool,
380 #[prost(message, optional, tag = "2")]
381 pub send_time: ::core::option::Option<
382 ::tendermint_proto::google::protobuf::Timestamp,
383 >,
384}
385impl ::prost::Name for SlashRecord {
386 const NAME: &'static str = "SlashRecord";
387 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
388 fn full_name() -> ::prost::alloc::string::String {
389 "interchain_security.ccv.consumer.v1.SlashRecord".into()
390 }
391 fn type_url() -> ::prost::alloc::string::String {
392 "/interchain_security.ccv.consumer.v1.SlashRecord".into()
393 }
394}
395#[derive(Clone, PartialEq, ::prost::Message)]
397pub struct NextFeeDistributionEstimate {
398 #[prost(int64, tag = "1")]
400 pub current_height: i64,
401 #[prost(int64, tag = "2")]
403 pub last_height: i64,
404 #[prost(int64, tag = "3")]
406 pub next_height: i64,
407 #[prost(string, tag = "4")]
409 pub distribution_fraction: ::prost::alloc::string::String,
410 #[prost(string, tag = "5")]
412 pub total: ::prost::alloc::string::String,
413 #[prost(string, tag = "6")]
415 pub to_provider: ::prost::alloc::string::String,
416 #[prost(string, tag = "7")]
418 pub to_consumer: ::prost::alloc::string::String,
419}
420impl ::prost::Name for NextFeeDistributionEstimate {
421 const NAME: &'static str = "NextFeeDistributionEstimate";
422 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
423 fn full_name() -> ::prost::alloc::string::String {
424 "interchain_security.ccv.consumer.v1.NextFeeDistributionEstimate".into()
425 }
426 fn type_url() -> ::prost::alloc::string::String {
427 "/interchain_security.ccv.consumer.v1.NextFeeDistributionEstimate".into()
428 }
429}
430#[derive(Clone, Copy, PartialEq, ::prost::Message)]
431pub struct QueryNextFeeDistributionEstimateRequest {}
432impl ::prost::Name for QueryNextFeeDistributionEstimateRequest {
433 const NAME: &'static str = "QueryNextFeeDistributionEstimateRequest";
434 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
435 fn full_name() -> ::prost::alloc::string::String {
436 "interchain_security.ccv.consumer.v1.QueryNextFeeDistributionEstimateRequest"
437 .into()
438 }
439 fn type_url() -> ::prost::alloc::string::String {
440 "/interchain_security.ccv.consumer.v1.QueryNextFeeDistributionEstimateRequest"
441 .into()
442 }
443}
444#[derive(Clone, PartialEq, ::prost::Message)]
445pub struct QueryNextFeeDistributionEstimateResponse {
446 #[prost(message, optional, tag = "1")]
447 pub data: ::core::option::Option<NextFeeDistributionEstimate>,
448}
449impl ::prost::Name for QueryNextFeeDistributionEstimateResponse {
450 const NAME: &'static str = "QueryNextFeeDistributionEstimateResponse";
451 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
452 fn full_name() -> ::prost::alloc::string::String {
453 "interchain_security.ccv.consumer.v1.QueryNextFeeDistributionEstimateResponse"
454 .into()
455 }
456 fn type_url() -> ::prost::alloc::string::String {
457 "/interchain_security.ccv.consumer.v1.QueryNextFeeDistributionEstimateResponse"
458 .into()
459 }
460}
461#[derive(Clone, Copy, PartialEq, ::prost::Message)]
462pub struct QueryParamsRequest {}
463impl ::prost::Name for QueryParamsRequest {
464 const NAME: &'static str = "QueryParamsRequest";
465 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
466 fn full_name() -> ::prost::alloc::string::String {
467 "interchain_security.ccv.consumer.v1.QueryParamsRequest".into()
468 }
469 fn type_url() -> ::prost::alloc::string::String {
470 "/interchain_security.ccv.consumer.v1.QueryParamsRequest".into()
471 }
472}
473#[derive(Clone, PartialEq, ::prost::Message)]
475pub struct QueryParamsResponse {
476 #[prost(message, optional, tag = "1")]
478 pub params: ::core::option::Option<super::super::v1::ConsumerParams>,
479}
480impl ::prost::Name for QueryParamsResponse {
481 const NAME: &'static str = "QueryParamsResponse";
482 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
483 fn full_name() -> ::prost::alloc::string::String {
484 "interchain_security.ccv.consumer.v1.QueryParamsResponse".into()
485 }
486 fn type_url() -> ::prost::alloc::string::String {
487 "/interchain_security.ccv.consumer.v1.QueryParamsResponse".into()
488 }
489}
490#[derive(Clone, Copy, PartialEq, ::prost::Message)]
491pub struct QueryProviderInfoRequest {}
492impl ::prost::Name for QueryProviderInfoRequest {
493 const NAME: &'static str = "QueryProviderInfoRequest";
494 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
495 fn full_name() -> ::prost::alloc::string::String {
496 "interchain_security.ccv.consumer.v1.QueryProviderInfoRequest".into()
497 }
498 fn type_url() -> ::prost::alloc::string::String {
499 "/interchain_security.ccv.consumer.v1.QueryProviderInfoRequest".into()
500 }
501}
502#[derive(Clone, PartialEq, ::prost::Message)]
503pub struct QueryProviderInfoResponse {
504 #[prost(message, optional, tag = "1")]
505 pub consumer: ::core::option::Option<ChainInfo>,
506 #[prost(message, optional, tag = "2")]
507 pub provider: ::core::option::Option<ChainInfo>,
508}
509impl ::prost::Name for QueryProviderInfoResponse {
510 const NAME: &'static str = "QueryProviderInfoResponse";
511 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
512 fn full_name() -> ::prost::alloc::string::String {
513 "interchain_security.ccv.consumer.v1.QueryProviderInfoResponse".into()
514 }
515 fn type_url() -> ::prost::alloc::string::String {
516 "/interchain_security.ccv.consumer.v1.QueryProviderInfoResponse".into()
517 }
518}
519#[derive(Clone, Copy, PartialEq, ::prost::Message)]
520pub struct QueryThrottleStateRequest {}
521impl ::prost::Name for QueryThrottleStateRequest {
522 const NAME: &'static str = "QueryThrottleStateRequest";
523 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
524 fn full_name() -> ::prost::alloc::string::String {
525 "interchain_security.ccv.consumer.v1.QueryThrottleStateRequest".into()
526 }
527 fn type_url() -> ::prost::alloc::string::String {
528 "/interchain_security.ccv.consumer.v1.QueryThrottleStateRequest".into()
529 }
530}
531#[derive(Clone, PartialEq, ::prost::Message)]
532pub struct QueryThrottleStateResponse {
533 #[prost(message, optional, tag = "1")]
534 pub slash_record: ::core::option::Option<SlashRecord>,
535 #[prost(message, repeated, tag = "2")]
536 pub packet_data_queue: ::prost::alloc::vec::Vec<
537 super::super::v1::ConsumerPacketData,
538 >,
539}
540impl ::prost::Name for QueryThrottleStateResponse {
541 const NAME: &'static str = "QueryThrottleStateResponse";
542 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
543 fn full_name() -> ::prost::alloc::string::String {
544 "interchain_security.ccv.consumer.v1.QueryThrottleStateResponse".into()
545 }
546 fn type_url() -> ::prost::alloc::string::String {
547 "/interchain_security.ccv.consumer.v1.QueryThrottleStateResponse".into()
548 }
549}
550#[derive(Clone, PartialEq, ::prost::Message)]
551pub struct ChainInfo {
552 #[prost(string, tag = "1")]
553 pub chain_id: ::prost::alloc::string::String,
554 #[prost(string, tag = "2")]
555 pub client_id: ::prost::alloc::string::String,
556 #[prost(string, tag = "3")]
557 pub connection_id: ::prost::alloc::string::String,
558 #[prost(string, tag = "4")]
559 pub channel_id: ::prost::alloc::string::String,
560}
561impl ::prost::Name for ChainInfo {
562 const NAME: &'static str = "ChainInfo";
563 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
564 fn full_name() -> ::prost::alloc::string::String {
565 "interchain_security.ccv.consumer.v1.ChainInfo".into()
566 }
567 fn type_url() -> ::prost::alloc::string::String {
568 "/interchain_security.ccv.consumer.v1.ChainInfo".into()
569 }
570}
571#[cfg(feature = "client")]
573pub mod query_client {
574 #![allow(
575 unused_variables,
576 dead_code,
577 missing_docs,
578 clippy::wildcard_imports,
579 clippy::let_unit_value,
580 )]
581 use tonic::codegen::*;
582 use tonic::codegen::http::Uri;
583 #[derive(Debug, Clone)]
584 pub struct QueryClient<T> {
585 inner: tonic::client::Grpc<T>,
586 }
587 #[cfg(feature = "transport")]
588 impl QueryClient<tonic::transport::Channel> {
589 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
591 where
592 D: TryInto<tonic::transport::Endpoint>,
593 D::Error: Into<StdError>,
594 {
595 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
596 Ok(Self::new(conn))
597 }
598 }
599 impl<T> QueryClient<T>
600 where
601 T: tonic::client::GrpcService<tonic::body::Body>,
602 T::Error: Into<StdError>,
603 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
604 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
605 {
606 pub fn new(inner: T) -> Self {
607 let inner = tonic::client::Grpc::new(inner);
608 Self { inner }
609 }
610 pub fn with_origin(inner: T, origin: Uri) -> Self {
611 let inner = tonic::client::Grpc::with_origin(inner, origin);
612 Self { inner }
613 }
614 pub fn with_interceptor<F>(
615 inner: T,
616 interceptor: F,
617 ) -> QueryClient<InterceptedService<T, F>>
618 where
619 F: tonic::service::Interceptor,
620 T::ResponseBody: Default,
621 T: tonic::codegen::Service<
622 http::Request<tonic::body::Body>,
623 Response = http::Response<
624 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
625 >,
626 >,
627 <T as tonic::codegen::Service<
628 http::Request<tonic::body::Body>,
629 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
630 {
631 QueryClient::new(InterceptedService::new(inner, interceptor))
632 }
633 #[must_use]
638 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
639 self.inner = self.inner.send_compressed(encoding);
640 self
641 }
642 #[must_use]
644 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
645 self.inner = self.inner.accept_compressed(encoding);
646 self
647 }
648 #[must_use]
652 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
653 self.inner = self.inner.max_decoding_message_size(limit);
654 self
655 }
656 #[must_use]
660 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
661 self.inner = self.inner.max_encoding_message_size(limit);
662 self
663 }
664 pub async fn query_next_fee_distribution(
667 &mut self,
668 request: impl tonic::IntoRequest<
669 super::QueryNextFeeDistributionEstimateRequest,
670 >,
671 ) -> std::result::Result<
672 tonic::Response<super::QueryNextFeeDistributionEstimateResponse>,
673 tonic::Status,
674 > {
675 self.inner
676 .ready()
677 .await
678 .map_err(|e| {
679 tonic::Status::unknown(
680 format!("Service was not ready: {}", e.into()),
681 )
682 })?;
683 let codec = tonic::codec::ProstCodec::default();
684 let path = http::uri::PathAndQuery::from_static(
685 "/interchain_security.ccv.consumer.v1.Query/QueryNextFeeDistribution",
686 );
687 let mut req = request.into_request();
688 req.extensions_mut()
689 .insert(
690 GrpcMethod::new(
691 "interchain_security.ccv.consumer.v1.Query",
692 "QueryNextFeeDistribution",
693 ),
694 );
695 self.inner.unary(req, path, codec).await
696 }
697 pub async fn query_params(
699 &mut self,
700 request: impl tonic::IntoRequest<super::QueryParamsRequest>,
701 ) -> std::result::Result<
702 tonic::Response<super::QueryParamsResponse>,
703 tonic::Status,
704 > {
705 self.inner
706 .ready()
707 .await
708 .map_err(|e| {
709 tonic::Status::unknown(
710 format!("Service was not ready: {}", e.into()),
711 )
712 })?;
713 let codec = tonic::codec::ProstCodec::default();
714 let path = http::uri::PathAndQuery::from_static(
715 "/interchain_security.ccv.consumer.v1.Query/QueryParams",
716 );
717 let mut req = request.into_request();
718 req.extensions_mut()
719 .insert(
720 GrpcMethod::new(
721 "interchain_security.ccv.consumer.v1.Query",
722 "QueryParams",
723 ),
724 );
725 self.inner.unary(req, path, codec).await
726 }
727 pub async fn query_provider_info(
728 &mut self,
729 request: impl tonic::IntoRequest<super::QueryProviderInfoRequest>,
730 ) -> std::result::Result<
731 tonic::Response<super::QueryProviderInfoResponse>,
732 tonic::Status,
733 > {
734 self.inner
735 .ready()
736 .await
737 .map_err(|e| {
738 tonic::Status::unknown(
739 format!("Service was not ready: {}", e.into()),
740 )
741 })?;
742 let codec = tonic::codec::ProstCodec::default();
743 let path = http::uri::PathAndQuery::from_static(
744 "/interchain_security.ccv.consumer.v1.Query/QueryProviderInfo",
745 );
746 let mut req = request.into_request();
747 req.extensions_mut()
748 .insert(
749 GrpcMethod::new(
750 "interchain_security.ccv.consumer.v1.Query",
751 "QueryProviderInfo",
752 ),
753 );
754 self.inner.unary(req, path, codec).await
755 }
756 pub async fn query_throttle_state(
758 &mut self,
759 request: impl tonic::IntoRequest<super::QueryThrottleStateRequest>,
760 ) -> std::result::Result<
761 tonic::Response<super::QueryThrottleStateResponse>,
762 tonic::Status,
763 > {
764 self.inner
765 .ready()
766 .await
767 .map_err(|e| {
768 tonic::Status::unknown(
769 format!("Service was not ready: {}", e.into()),
770 )
771 })?;
772 let codec = tonic::codec::ProstCodec::default();
773 let path = http::uri::PathAndQuery::from_static(
774 "/interchain_security.ccv.consumer.v1.Query/QueryThrottleState",
775 );
776 let mut req = request.into_request();
777 req.extensions_mut()
778 .insert(
779 GrpcMethod::new(
780 "interchain_security.ccv.consumer.v1.Query",
781 "QueryThrottleState",
782 ),
783 );
784 self.inner.unary(req, path, codec).await
785 }
786 }
787}
788#[cfg(feature = "server")]
790pub mod query_server {
791 #![allow(
792 unused_variables,
793 dead_code,
794 missing_docs,
795 clippy::wildcard_imports,
796 clippy::let_unit_value,
797 )]
798 use tonic::codegen::*;
799 #[async_trait]
801 pub trait Query: std::marker::Send + std::marker::Sync + 'static {
802 async fn query_next_fee_distribution(
805 &self,
806 request: tonic::Request<super::QueryNextFeeDistributionEstimateRequest>,
807 ) -> std::result::Result<
808 tonic::Response<super::QueryNextFeeDistributionEstimateResponse>,
809 tonic::Status,
810 >;
811 async fn query_params(
813 &self,
814 request: tonic::Request<super::QueryParamsRequest>,
815 ) -> std::result::Result<
816 tonic::Response<super::QueryParamsResponse>,
817 tonic::Status,
818 >;
819 async fn query_provider_info(
820 &self,
821 request: tonic::Request<super::QueryProviderInfoRequest>,
822 ) -> std::result::Result<
823 tonic::Response<super::QueryProviderInfoResponse>,
824 tonic::Status,
825 >;
826 async fn query_throttle_state(
828 &self,
829 request: tonic::Request<super::QueryThrottleStateRequest>,
830 ) -> std::result::Result<
831 tonic::Response<super::QueryThrottleStateResponse>,
832 tonic::Status,
833 >;
834 }
835 #[derive(Debug)]
836 pub struct QueryServer<T> {
837 inner: Arc<T>,
838 accept_compression_encodings: EnabledCompressionEncodings,
839 send_compression_encodings: EnabledCompressionEncodings,
840 max_decoding_message_size: Option<usize>,
841 max_encoding_message_size: Option<usize>,
842 }
843 impl<T> QueryServer<T> {
844 pub fn new(inner: T) -> Self {
845 Self::from_arc(Arc::new(inner))
846 }
847 pub fn from_arc(inner: Arc<T>) -> Self {
848 Self {
849 inner,
850 accept_compression_encodings: Default::default(),
851 send_compression_encodings: Default::default(),
852 max_decoding_message_size: None,
853 max_encoding_message_size: None,
854 }
855 }
856 pub fn with_interceptor<F>(
857 inner: T,
858 interceptor: F,
859 ) -> InterceptedService<Self, F>
860 where
861 F: tonic::service::Interceptor,
862 {
863 InterceptedService::new(Self::new(inner), interceptor)
864 }
865 #[must_use]
867 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
868 self.accept_compression_encodings.enable(encoding);
869 self
870 }
871 #[must_use]
873 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
874 self.send_compression_encodings.enable(encoding);
875 self
876 }
877 #[must_use]
881 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
882 self.max_decoding_message_size = Some(limit);
883 self
884 }
885 #[must_use]
889 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
890 self.max_encoding_message_size = Some(limit);
891 self
892 }
893 }
894 impl<T, B> tonic::codegen::Service<http::Request<B>> for QueryServer<T>
895 where
896 T: Query,
897 B: Body + std::marker::Send + 'static,
898 B::Error: Into<StdError> + std::marker::Send + 'static,
899 {
900 type Response = http::Response<tonic::body::Body>;
901 type Error = std::convert::Infallible;
902 type Future = BoxFuture<Self::Response, Self::Error>;
903 fn poll_ready(
904 &mut self,
905 _cx: &mut Context<'_>,
906 ) -> Poll<std::result::Result<(), Self::Error>> {
907 Poll::Ready(Ok(()))
908 }
909 fn call(&mut self, req: http::Request<B>) -> Self::Future {
910 match req.uri().path() {
911 "/interchain_security.ccv.consumer.v1.Query/QueryNextFeeDistribution" => {
912 #[allow(non_camel_case_types)]
913 struct QueryNextFeeDistributionSvc<T: Query>(pub Arc<T>);
914 impl<
915 T: Query,
916 > tonic::server::UnaryService<
917 super::QueryNextFeeDistributionEstimateRequest,
918 > for QueryNextFeeDistributionSvc<T> {
919 type Response = super::QueryNextFeeDistributionEstimateResponse;
920 type Future = BoxFuture<
921 tonic::Response<Self::Response>,
922 tonic::Status,
923 >;
924 fn call(
925 &mut self,
926 request: tonic::Request<
927 super::QueryNextFeeDistributionEstimateRequest,
928 >,
929 ) -> Self::Future {
930 let inner = Arc::clone(&self.0);
931 let fut = async move {
932 <T as Query>::query_next_fee_distribution(&inner, request)
933 .await
934 };
935 Box::pin(fut)
936 }
937 }
938 let accept_compression_encodings = self.accept_compression_encodings;
939 let send_compression_encodings = self.send_compression_encodings;
940 let max_decoding_message_size = self.max_decoding_message_size;
941 let max_encoding_message_size = self.max_encoding_message_size;
942 let inner = self.inner.clone();
943 let fut = async move {
944 let method = QueryNextFeeDistributionSvc(inner);
945 let codec = tonic::codec::ProstCodec::default();
946 let mut grpc = tonic::server::Grpc::new(codec)
947 .apply_compression_config(
948 accept_compression_encodings,
949 send_compression_encodings,
950 )
951 .apply_max_message_size_config(
952 max_decoding_message_size,
953 max_encoding_message_size,
954 );
955 let res = grpc.unary(method, req).await;
956 Ok(res)
957 };
958 Box::pin(fut)
959 }
960 "/interchain_security.ccv.consumer.v1.Query/QueryParams" => {
961 #[allow(non_camel_case_types)]
962 struct QueryParamsSvc<T: Query>(pub Arc<T>);
963 impl<T: Query> tonic::server::UnaryService<super::QueryParamsRequest>
964 for QueryParamsSvc<T> {
965 type Response = super::QueryParamsResponse;
966 type Future = BoxFuture<
967 tonic::Response<Self::Response>,
968 tonic::Status,
969 >;
970 fn call(
971 &mut self,
972 request: tonic::Request<super::QueryParamsRequest>,
973 ) -> Self::Future {
974 let inner = Arc::clone(&self.0);
975 let fut = async move {
976 <T as Query>::query_params(&inner, request).await
977 };
978 Box::pin(fut)
979 }
980 }
981 let accept_compression_encodings = self.accept_compression_encodings;
982 let send_compression_encodings = self.send_compression_encodings;
983 let max_decoding_message_size = self.max_decoding_message_size;
984 let max_encoding_message_size = self.max_encoding_message_size;
985 let inner = self.inner.clone();
986 let fut = async move {
987 let method = QueryParamsSvc(inner);
988 let codec = tonic::codec::ProstCodec::default();
989 let mut grpc = tonic::server::Grpc::new(codec)
990 .apply_compression_config(
991 accept_compression_encodings,
992 send_compression_encodings,
993 )
994 .apply_max_message_size_config(
995 max_decoding_message_size,
996 max_encoding_message_size,
997 );
998 let res = grpc.unary(method, req).await;
999 Ok(res)
1000 };
1001 Box::pin(fut)
1002 }
1003 "/interchain_security.ccv.consumer.v1.Query/QueryProviderInfo" => {
1004 #[allow(non_camel_case_types)]
1005 struct QueryProviderInfoSvc<T: Query>(pub Arc<T>);
1006 impl<
1007 T: Query,
1008 > tonic::server::UnaryService<super::QueryProviderInfoRequest>
1009 for QueryProviderInfoSvc<T> {
1010 type Response = super::QueryProviderInfoResponse;
1011 type Future = BoxFuture<
1012 tonic::Response<Self::Response>,
1013 tonic::Status,
1014 >;
1015 fn call(
1016 &mut self,
1017 request: tonic::Request<super::QueryProviderInfoRequest>,
1018 ) -> Self::Future {
1019 let inner = Arc::clone(&self.0);
1020 let fut = async move {
1021 <T as Query>::query_provider_info(&inner, request).await
1022 };
1023 Box::pin(fut)
1024 }
1025 }
1026 let accept_compression_encodings = self.accept_compression_encodings;
1027 let send_compression_encodings = self.send_compression_encodings;
1028 let max_decoding_message_size = self.max_decoding_message_size;
1029 let max_encoding_message_size = self.max_encoding_message_size;
1030 let inner = self.inner.clone();
1031 let fut = async move {
1032 let method = QueryProviderInfoSvc(inner);
1033 let codec = tonic::codec::ProstCodec::default();
1034 let mut grpc = tonic::server::Grpc::new(codec)
1035 .apply_compression_config(
1036 accept_compression_encodings,
1037 send_compression_encodings,
1038 )
1039 .apply_max_message_size_config(
1040 max_decoding_message_size,
1041 max_encoding_message_size,
1042 );
1043 let res = grpc.unary(method, req).await;
1044 Ok(res)
1045 };
1046 Box::pin(fut)
1047 }
1048 "/interchain_security.ccv.consumer.v1.Query/QueryThrottleState" => {
1049 #[allow(non_camel_case_types)]
1050 struct QueryThrottleStateSvc<T: Query>(pub Arc<T>);
1051 impl<
1052 T: Query,
1053 > tonic::server::UnaryService<super::QueryThrottleStateRequest>
1054 for QueryThrottleStateSvc<T> {
1055 type Response = super::QueryThrottleStateResponse;
1056 type Future = BoxFuture<
1057 tonic::Response<Self::Response>,
1058 tonic::Status,
1059 >;
1060 fn call(
1061 &mut self,
1062 request: tonic::Request<super::QueryThrottleStateRequest>,
1063 ) -> Self::Future {
1064 let inner = Arc::clone(&self.0);
1065 let fut = async move {
1066 <T as Query>::query_throttle_state(&inner, request).await
1067 };
1068 Box::pin(fut)
1069 }
1070 }
1071 let accept_compression_encodings = self.accept_compression_encodings;
1072 let send_compression_encodings = self.send_compression_encodings;
1073 let max_decoding_message_size = self.max_decoding_message_size;
1074 let max_encoding_message_size = self.max_encoding_message_size;
1075 let inner = self.inner.clone();
1076 let fut = async move {
1077 let method = QueryThrottleStateSvc(inner);
1078 let codec = tonic::codec::ProstCodec::default();
1079 let mut grpc = tonic::server::Grpc::new(codec)
1080 .apply_compression_config(
1081 accept_compression_encodings,
1082 send_compression_encodings,
1083 )
1084 .apply_max_message_size_config(
1085 max_decoding_message_size,
1086 max_encoding_message_size,
1087 );
1088 let res = grpc.unary(method, req).await;
1089 Ok(res)
1090 };
1091 Box::pin(fut)
1092 }
1093 _ => {
1094 Box::pin(async move {
1095 let mut response = http::Response::new(
1096 tonic::body::Body::default(),
1097 );
1098 let headers = response.headers_mut();
1099 headers
1100 .insert(
1101 tonic::Status::GRPC_STATUS,
1102 (tonic::Code::Unimplemented as i32).into(),
1103 );
1104 headers
1105 .insert(
1106 http::header::CONTENT_TYPE,
1107 tonic::metadata::GRPC_CONTENT_TYPE,
1108 );
1109 Ok(response)
1110 })
1111 }
1112 }
1113 }
1114 }
1115 impl<T> Clone for QueryServer<T> {
1116 fn clone(&self) -> Self {
1117 let inner = self.inner.clone();
1118 Self {
1119 inner,
1120 accept_compression_encodings: self.accept_compression_encodings,
1121 send_compression_encodings: self.send_compression_encodings,
1122 max_decoding_message_size: self.max_decoding_message_size,
1123 max_encoding_message_size: self.max_encoding_message_size,
1124 }
1125 }
1126 }
1127 pub const SERVICE_NAME: &str = "interchain_security.ccv.consumer.v1.Query";
1129 impl<T> tonic::server::NamedService for QueryServer<T> {
1130 const NAME: &'static str = SERVICE_NAME;
1131 }
1132}
1133#[derive(Clone, PartialEq, ::prost::Message)]
1138pub struct GenesisState {
1139 #[prost(message, optional, tag = "1")]
1141 pub params: ::core::option::Option<super::super::v1::ConsumerParams>,
1142 #[prost(string, tag = "2")]
1144 pub provider_client_id: ::prost::alloc::string::String,
1145 #[prost(string, tag = "3")]
1147 pub provider_channel_id: ::prost::alloc::string::String,
1148 #[prost(bool, tag = "4")]
1150 pub new_chain: bool,
1151 #[deprecated]
1153 #[prost(message, optional, tag = "5")]
1154 pub provider_client_state: ::core::option::Option<
1155 super::super::super::super::ibc::lightclients::tendermint::v1::ClientState,
1156 >,
1157 #[deprecated]
1159 #[prost(message, optional, tag = "6")]
1160 pub provider_consensus_state: ::core::option::Option<
1161 super::super::super::super::ibc::lightclients::tendermint::v1::ConsensusState,
1162 >,
1163 #[prost(message, repeated, tag = "7")]
1165 pub maturing_packets: ::prost::alloc::vec::Vec<MaturingVscPacket>,
1166 #[deprecated]
1168 #[prost(message, repeated, tag = "8")]
1169 pub initial_val_set: ::prost::alloc::vec::Vec<
1170 ::tendermint_proto::abci::ValidatorUpdate,
1171 >,
1172 #[prost(message, repeated, tag = "9")]
1174 pub height_to_valset_update_id: ::prost::alloc::vec::Vec<HeightToValsetUpdateId>,
1175 #[prost(message, repeated, tag = "10")]
1177 pub outstanding_downtime_slashing: ::prost::alloc::vec::Vec<OutstandingDowntime>,
1178 #[prost(message, optional, tag = "11")]
1180 pub pending_consumer_packets: ::core::option::Option<ConsumerPacketDataList>,
1181 #[prost(message, optional, tag = "12")]
1183 pub last_transmission_block_height: ::core::option::Option<
1184 LastTransmissionBlockHeight,
1185 >,
1186 #[prost(bool, tag = "13")]
1188 pub pre_ccv: bool,
1189 #[prost(message, optional, tag = "14")]
1190 pub provider: ::core::option::Option<super::super::v1::ProviderInfo>,
1191}
1192impl ::prost::Name for GenesisState {
1193 const NAME: &'static str = "GenesisState";
1194 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
1195 fn full_name() -> ::prost::alloc::string::String {
1196 "interchain_security.ccv.consumer.v1.GenesisState".into()
1197 }
1198 fn type_url() -> ::prost::alloc::string::String {
1199 "/interchain_security.ccv.consumer.v1.GenesisState".into()
1200 }
1201}
1202#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1205pub struct HeightToValsetUpdateId {
1206 #[prost(uint64, tag = "1")]
1207 pub height: u64,
1208 #[prost(uint64, tag = "2")]
1209 pub valset_update_id: u64,
1210}
1211impl ::prost::Name for HeightToValsetUpdateId {
1212 const NAME: &'static str = "HeightToValsetUpdateID";
1213 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
1214 fn full_name() -> ::prost::alloc::string::String {
1215 "interchain_security.ccv.consumer.v1.HeightToValsetUpdateID".into()
1216 }
1217 fn type_url() -> ::prost::alloc::string::String {
1218 "/interchain_security.ccv.consumer.v1.HeightToValsetUpdateID".into()
1219 }
1220}
1221#[derive(Clone, PartialEq, ::prost::Message)]
1225pub struct OutstandingDowntime {
1226 #[prost(string, tag = "1")]
1227 pub validator_consensus_address: ::prost::alloc::string::String,
1228}
1229impl ::prost::Name for OutstandingDowntime {
1230 const NAME: &'static str = "OutstandingDowntime";
1231 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
1232 fn full_name() -> ::prost::alloc::string::String {
1233 "interchain_security.ccv.consumer.v1.OutstandingDowntime".into()
1234 }
1235 fn type_url() -> ::prost::alloc::string::String {
1236 "/interchain_security.ccv.consumer.v1.OutstandingDowntime".into()
1237 }
1238}
1239#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1243pub struct LastTransmissionBlockHeight {
1244 #[prost(int64, tag = "1")]
1245 pub height: i64,
1246}
1247impl ::prost::Name for LastTransmissionBlockHeight {
1248 const NAME: &'static str = "LastTransmissionBlockHeight";
1249 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
1250 fn full_name() -> ::prost::alloc::string::String {
1251 "interchain_security.ccv.consumer.v1.LastTransmissionBlockHeight".into()
1252 }
1253 fn type_url() -> ::prost::alloc::string::String {
1254 "/interchain_security.ccv.consumer.v1.LastTransmissionBlockHeight".into()
1255 }
1256}
1257#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1261pub struct MaturingVscPacket {
1262 #[prost(uint64, tag = "1")]
1263 pub vsc_id: u64,
1264 #[prost(message, optional, tag = "2")]
1265 pub maturity_time: ::core::option::Option<
1266 ::tendermint_proto::google::protobuf::Timestamp,
1267 >,
1268}
1269impl ::prost::Name for MaturingVscPacket {
1270 const NAME: &'static str = "MaturingVSCPacket";
1271 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
1272 fn full_name() -> ::prost::alloc::string::String {
1273 "interchain_security.ccv.consumer.v1.MaturingVSCPacket".into()
1274 }
1275 fn type_url() -> ::prost::alloc::string::String {
1276 "/interchain_security.ccv.consumer.v1.MaturingVSCPacket".into()
1277 }
1278}
1279#[derive(Clone, PartialEq, ::prost::Message)]
1284pub struct ConsumerPacketDataList {
1285 #[prost(message, repeated, tag = "1")]
1286 pub list: ::prost::alloc::vec::Vec<super::super::v1::ConsumerPacketData>,
1287}
1288impl ::prost::Name for ConsumerPacketDataList {
1289 const NAME: &'static str = "ConsumerPacketDataList";
1290 const PACKAGE: &'static str = "interchain_security.ccv.consumer.v1";
1291 fn full_name() -> ::prost::alloc::string::String {
1292 "interchain_security.ccv.consumer.v1.ConsumerPacketDataList".into()
1293 }
1294 fn type_url() -> ::prost::alloc::string::String {
1295 "/interchain_security.ccv.consumer.v1.ConsumerPacketDataList".into()
1296 }
1297}