/// Tx is the standard type used for broadcasting transactions. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Tx { /// body is the processable content of the transaction #[prost(message, optional, tag = "1")] pub body: ::core::option::Option, /// auth_info is the authorization related content of the transaction, /// specifically signers, signer modes and fee #[prost(message, optional, tag = "2")] pub auth_info: ::core::option::Option, /// signatures is a list of signatures that matches the length and order of /// AuthInfo's signer_infos to allow connecting signature meta information like /// public key and signing mode by position. #[prost(bytes = "vec", repeated, tag = "3")] pub signatures: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec>, } /// TxRaw is a variant of Tx that pins the signer's exact binary representation /// of body and auth_info. This is used for signing, broadcasting and /// verification. The binary `serialize(tx: TxRaw)` is stored in Tendermint and /// the hash `sha256(serialize(tx: TxRaw))` becomes the "txhash", commonly used /// as the transaction ID. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TxRaw { /// body_bytes is a protobuf serialization of a TxBody that matches the /// representation in SignDoc. #[prost(bytes = "vec", tag = "1")] pub body_bytes: ::prost::alloc::vec::Vec, /// auth_info_bytes is a protobuf serialization of an AuthInfo that matches the /// representation in SignDoc. #[prost(bytes = "vec", tag = "2")] pub auth_info_bytes: ::prost::alloc::vec::Vec, /// signatures is a list of signatures that matches the length and order of /// AuthInfo's signer_infos to allow connecting signature meta information like /// public key and signing mode by position. #[prost(bytes = "vec", repeated, tag = "3")] pub signatures: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec>, } /// SignDoc is the type used for generating sign bytes for SIGN_MODE_DIRECT. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct SignDoc { /// body_bytes is protobuf serialization of a TxBody that matches the /// representation in TxRaw. #[prost(bytes = "vec", tag = "1")] pub body_bytes: ::prost::alloc::vec::Vec, /// auth_info_bytes is a protobuf serialization of an AuthInfo that matches the /// representation in TxRaw. #[prost(bytes = "vec", tag = "2")] pub auth_info_bytes: ::prost::alloc::vec::Vec, /// chain_id is the unique identifier of the chain this transaction targets. /// It prevents signed transactions from being used on another chain by an /// attacker #[prost(string, tag = "3")] pub chain_id: ::prost::alloc::string::String, /// account_number is the account number of the account in state #[prost(uint64, tag = "4")] pub account_number: u64, } /// SignDocDirectAux is the type used for generating sign bytes for /// SIGN_MODE_DIRECT_AUX. /// /// Since: cosmos-sdk 0.46 #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct SignDocDirectAux { /// body_bytes is protobuf serialization of a TxBody that matches the /// representation in TxRaw. #[prost(bytes = "vec", tag = "1")] pub body_bytes: ::prost::alloc::vec::Vec, /// public_key is the public key of the signing account. #[prost(message, optional, tag = "2")] pub public_key: ::core::option::Option<::prost_types::Any>, /// chain_id is the identifier of the chain this transaction targets. /// It prevents signed transactions from being used on another chain by an /// attacker. #[prost(string, tag = "3")] pub chain_id: ::prost::alloc::string::String, /// account_number is the account number of the account in state. #[prost(uint64, tag = "4")] pub account_number: u64, /// sequence is the sequence number of the signing account. #[prost(uint64, tag = "5")] pub sequence: u64, /// Tip is the optional tip used for transactions fees paid in another denom. /// It should be left empty if the signer is not the tipper for this /// transaction. /// /// This field is ignored if the chain didn't enable tips, i.e. didn't add the /// `TipDecorator` in its posthandler. #[prost(message, optional, tag = "6")] pub tip: ::core::option::Option, } /// TxBody is the body of a transaction that all signers sign over. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TxBody { /// messages is a list of messages to be executed. The required signers of /// those messages define the number and order of elements in AuthInfo's /// signer_infos and Tx's signatures. Each required signer address is added to /// the list only the first time it occurs. /// By convention, the first required signer (usually from the first message) /// is referred to as the primary signer and pays the fee for the whole /// transaction. #[prost(message, repeated, tag = "1")] pub messages: ::prost::alloc::vec::Vec<::prost_types::Any>, /// memo is any arbitrary note/comment to be added to the transaction. /// WARNING: in clients, any publicly exposed text should not be called memo, /// but should be called `note` instead (see ). #[prost(string, tag = "2")] pub memo: ::prost::alloc::string::String, /// timeout is the block height after which this transaction will not /// be processed by the chain #[prost(uint64, tag = "3")] pub timeout_height: u64, /// extension_options are arbitrary options that can be added by chains /// when the default options are not sufficient. If any of these are present /// and can't be handled, the transaction will be rejected #[prost(message, repeated, tag = "1023")] pub extension_options: ::prost::alloc::vec::Vec<::prost_types::Any>, /// extension_options are arbitrary options that can be added by chains /// when the default options are not sufficient. If any of these are present /// and can't be handled, they will be ignored #[prost(message, repeated, tag = "2047")] pub non_critical_extension_options: ::prost::alloc::vec::Vec<::prost_types::Any>, } /// AuthInfo describes the fee and signer modes that are used to sign a /// transaction. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct AuthInfo { /// signer_infos defines the signing modes for the required signers. The number /// and order of elements must match the required signers from TxBody's /// messages. The first element is the primary signer and the one which pays /// the fee. #[prost(message, repeated, tag = "1")] pub signer_infos: ::prost::alloc::vec::Vec, /// Fee is the fee and gas limit for the transaction. The first signer is the /// primary signer and the one which pays the fee. The fee can be calculated /// based on the cost of evaluating the body and doing signature verification /// of the signers. This can be estimated via simulation. #[prost(message, optional, tag = "2")] pub fee: ::core::option::Option, /// Tip is the optional tip used for transactions fees paid in another denom. /// /// This field is ignored if the chain didn't enable tips, i.e. didn't add the /// `TipDecorator` in its posthandler. /// /// Since: cosmos-sdk 0.46 #[prost(message, optional, tag = "3")] pub tip: ::core::option::Option, } /// SignerInfo describes the public key and signing mode of a single top-level /// signer. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct SignerInfo { /// public_key is the public key of the signer. It is optional for accounts /// that already exist in state. If unset, the verifier can use the required \ /// signer address for this position and lookup the public key. #[prost(message, optional, tag = "1")] pub public_key: ::core::option::Option<::prost_types::Any>, /// mode_info describes the signing mode of the signer and is a nested /// structure to support nested multisig pubkey's #[prost(message, optional, tag = "2")] pub mode_info: ::core::option::Option, /// sequence is the sequence of the account, which describes the /// number of committed transactions signed by a given address. It is used to /// prevent replay attacks. #[prost(uint64, tag = "3")] pub sequence: u64, } /// ModeInfo describes the signing mode of a single or nested multisig signer. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ModeInfo { /// sum is the oneof that specifies whether this represents a single or nested /// multisig signer #[prost(oneof = "mode_info::Sum", tags = "1, 2")] pub sum: ::core::option::Option, } /// Nested message and enum types in `ModeInfo`. pub mod mode_info { /// Single is the mode info for a single signer. It is structured as a message /// to allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the /// future #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Single { /// mode is the signing mode of the single signer #[prost(enumeration = "super::super::signing::v1beta1::SignMode", tag = "1")] pub mode: i32, } /// Multi is the mode info for a multisig public key #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Multi { /// bitarray specifies which keys within the multisig are signing #[prost(message, optional, tag = "1")] pub bitarray: ::core::option::Option, /// mode_infos is the corresponding modes of the signers of the multisig /// which could include nested multisig public keys #[prost(message, repeated, tag = "2")] pub mode_infos: ::prost::alloc::vec::Vec, } /// sum is the oneof that specifies whether this represents a single or nested /// multisig signer #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Oneof)] pub enum Sum { /// single represents a single signer #[prost(message, tag = "1")] Single(Single), /// multi represents a nested multisig signer #[prost(message, tag = "2")] Multi(Multi), } } /// Fee includes the amount of coins paid in fees and the maximum /// gas to be used by the transaction. The ratio yields an effective "gasprice", /// which must be above some miminum to be accepted into the mempool. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Fee { /// amount is the amount of coins to be paid as a fee #[prost(message, repeated, tag = "1")] pub amount: ::prost::alloc::vec::Vec, /// gas_limit is the maximum gas that can be used in transaction processing /// before an out of gas error occurs #[prost(uint64, tag = "2")] pub gas_limit: u64, /// if unset, the first signer is responsible for paying the fees. If set, the specified account must pay the fees. /// the payer must be a tx signer (and thus have signed this field in AuthInfo). /// setting this field does *not* change the ordering of required signers for the transaction. #[prost(string, tag = "3")] pub payer: ::prost::alloc::string::String, /// if set, the fee payer (either the first signer or the value of the payer field) requests that a fee grant be used /// to pay fees instead of the fee payer's own balance. If an appropriate fee grant does not exist or the chain does /// not support fee grants, this will fail #[prost(string, tag = "4")] pub granter: ::prost::alloc::string::String, } /// Tip is the tip used for meta-transactions. /// /// Since: cosmos-sdk 0.46 #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Tip { /// amount is the amount of the tip #[prost(message, repeated, tag = "1")] pub amount: ::prost::alloc::vec::Vec, /// tipper is the address of the account paying for the tip #[prost(string, tag = "2")] pub tipper: ::prost::alloc::string::String, } /// AuxSignerData is the intermediary format that an auxiliary signer (e.g. a /// tipper) builds and sends to the fee payer (who will build and broadcast the /// actual tx). AuxSignerData is not a valid tx in itself, and will be rejected /// by the node if sent directly as-is. /// /// Since: cosmos-sdk 0.46 #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct AuxSignerData { /// address is the bech32-encoded address of the auxiliary signer. If using /// AuxSignerData across different chains, the bech32 prefix of the target /// chain (where the final transaction is broadcasted) should be used. #[prost(string, tag = "1")] pub address: ::prost::alloc::string::String, /// sign_doc is the SIGN_MODE_DIRECT_AUX sign doc that the auxiliary signer /// signs. Note: we use the same sign doc even if we're signing with /// LEGACY_AMINO_JSON. #[prost(message, optional, tag = "2")] pub sign_doc: ::core::option::Option, /// mode is the signing mode of the single signer. #[prost(enumeration = "super::signing::v1beta1::SignMode", tag = "3")] pub mode: i32, /// sig is the signature of the sign doc. #[prost(bytes = "vec", tag = "4")] pub sig: ::prost::alloc::vec::Vec, } /// GetTxsEventRequest is the request type for the Service.TxsByEvents /// RPC method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct GetTxsEventRequest { /// events is the list of transaction event type. #[prost(string, repeated, tag = "1")] pub events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, /// pagination defines a pagination for the request. /// Deprecated post v0.46.x: use page and limit instead. #[deprecated] #[prost(message, optional, tag = "2")] pub pagination: ::core::option::Option, #[prost(enumeration = "OrderBy", tag = "3")] pub order_by: i32, /// page is the page number to query, starts at 1. If not provided, will default to first page. #[prost(uint64, tag = "4")] pub page: u64, /// limit is the total number of results to be returned in the result page. /// If left empty it will default to a value to be set by each app. #[prost(uint64, tag = "5")] pub limit: u64, } /// GetTxsEventResponse is the response type for the Service.TxsByEvents /// RPC method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct GetTxsEventResponse { /// txs is the list of queried transactions. #[prost(message, repeated, tag = "1")] pub txs: ::prost::alloc::vec::Vec, /// tx_responses is the list of queried TxResponses. #[prost(message, repeated, tag = "2")] pub tx_responses: ::prost::alloc::vec::Vec, /// pagination defines a pagination for the response. /// Deprecated post v0.46.x: use total instead. #[deprecated] #[prost(message, optional, tag = "3")] pub pagination: ::core::option::Option, /// total is total number of results available #[prost(uint64, tag = "4")] pub total: u64, } /// BroadcastTxRequest is the request type for the Service.BroadcastTxRequest /// RPC method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct BroadcastTxRequest { /// tx_bytes is the raw transaction. #[prost(bytes = "vec", tag = "1")] pub tx_bytes: ::prost::alloc::vec::Vec, #[prost(enumeration = "BroadcastMode", tag = "2")] pub mode: i32, } /// BroadcastTxResponse is the response type for the /// Service.BroadcastTx method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct BroadcastTxResponse { /// tx_response is the queried TxResponses. #[prost(message, optional, tag = "1")] pub tx_response: ::core::option::Option, } /// SimulateRequest is the request type for the Service.Simulate /// RPC method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct SimulateRequest { /// tx is the transaction to simulate. /// Deprecated. Send raw tx bytes instead. #[deprecated] #[prost(message, optional, tag = "1")] pub tx: ::core::option::Option, /// tx_bytes is the raw transaction. /// /// Since: cosmos-sdk 0.43 #[prost(bytes = "vec", tag = "2")] pub tx_bytes: ::prost::alloc::vec::Vec, } /// SimulateResponse is the response type for the /// Service.SimulateRPC method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct SimulateResponse { /// gas_info is the information about gas used in the simulation. #[prost(message, optional, tag = "1")] pub gas_info: ::core::option::Option, /// result is the result of the simulation. #[prost(message, optional, tag = "2")] pub result: ::core::option::Option, } /// GetTxRequest is the request type for the Service.GetTx /// RPC method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct GetTxRequest { /// hash is the tx hash to query, encoded as a hex string. #[prost(string, tag = "1")] pub hash: ::prost::alloc::string::String, } /// GetTxResponse is the response type for the Service.GetTx method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct GetTxResponse { /// tx is the queried transaction. #[prost(message, optional, tag = "1")] pub tx: ::core::option::Option, /// tx_response is the queried TxResponses. #[prost(message, optional, tag = "2")] pub tx_response: ::core::option::Option, } /// GetBlockWithTxsRequest is the request type for the Service.GetBlockWithTxs /// RPC method. /// /// Since: cosmos-sdk 0.45.2 #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct GetBlockWithTxsRequest { /// height is the height of the block to query. #[prost(int64, tag = "1")] pub height: i64, /// pagination defines a pagination for the request. #[prost(message, optional, tag = "2")] pub pagination: ::core::option::Option, } /// GetBlockWithTxsResponse is the response type for the Service.GetBlockWithTxs method. /// /// Since: cosmos-sdk 0.45.2 #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct GetBlockWithTxsResponse { /// txs are the transactions in the block. #[prost(message, repeated, tag = "1")] pub txs: ::prost::alloc::vec::Vec, #[prost(message, optional, tag = "2")] pub block_id: ::core::option::Option<::tendermint_proto::types::BlockId>, #[prost(message, optional, tag = "3")] pub block: ::core::option::Option<::tendermint_proto::types::Block>, /// pagination defines a pagination for the response. #[prost(message, optional, tag = "4")] pub pagination: ::core::option::Option, } /// TxDecodeRequest is the request type for the Service.TxDecode /// RPC method. /// /// Since: cosmos-sdk 0.47 #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TxDecodeRequest { /// tx_bytes is the raw transaction. #[prost(bytes = "vec", tag = "1")] pub tx_bytes: ::prost::alloc::vec::Vec, } /// TxDecodeResponse is the response type for the /// Service.TxDecode method. /// /// Since: cosmos-sdk 0.47 #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TxDecodeResponse { /// tx is the decoded transaction. #[prost(message, optional, tag = "1")] pub tx: ::core::option::Option, } /// TxEncodeRequest is the request type for the Service.TxEncode /// RPC method. /// /// Since: cosmos-sdk 0.47 #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TxEncodeRequest { /// tx is the transaction to encode. #[prost(message, optional, tag = "1")] pub tx: ::core::option::Option, } /// TxEncodeResponse is the response type for the /// Service.TxEncode method. /// /// Since: cosmos-sdk 0.47 #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TxEncodeResponse { /// tx_bytes is the encoded transaction bytes. #[prost(bytes = "vec", tag = "1")] pub tx_bytes: ::prost::alloc::vec::Vec, } /// TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino /// RPC method. /// /// Since: cosmos-sdk 0.47 #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TxEncodeAminoRequest { #[prost(string, tag = "1")] pub amino_json: ::prost::alloc::string::String, } /// TxEncodeAminoResponse is the response type for the Service.TxEncodeAmino /// RPC method. /// /// Since: cosmos-sdk 0.47 #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TxEncodeAminoResponse { #[prost(bytes = "vec", tag = "1")] pub amino_binary: ::prost::alloc::vec::Vec, } /// TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino /// RPC method. /// /// Since: cosmos-sdk 0.47 #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TxDecodeAminoRequest { #[prost(bytes = "vec", tag = "1")] pub amino_binary: ::prost::alloc::vec::Vec, } /// TxDecodeAminoResponse is the response type for the Service.TxDecodeAmino /// RPC method. /// /// Since: cosmos-sdk 0.47 #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TxDecodeAminoResponse { #[prost(string, tag = "1")] pub amino_json: ::prost::alloc::string::String, } /// OrderBy defines the sorting order #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] pub enum OrderBy { /// ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults to ASC in this case. Unspecified = 0, /// ORDER_BY_ASC defines ascending order Asc = 1, /// ORDER_BY_DESC defines descending order Desc = 2, } impl OrderBy { /// String value of the enum field names used in the ProtoBuf definition. /// /// The values are not transformed in any way and thus are considered stable /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { OrderBy::Unspecified => "ORDER_BY_UNSPECIFIED", OrderBy::Asc => "ORDER_BY_ASC", OrderBy::Desc => "ORDER_BY_DESC", } } /// Creates an enum from field names used in the ProtoBuf definition. pub fn from_str_name(value: &str) -> ::core::option::Option { match value { "ORDER_BY_UNSPECIFIED" => Some(Self::Unspecified), "ORDER_BY_ASC" => Some(Self::Asc), "ORDER_BY_DESC" => Some(Self::Desc), _ => None, } } } /// BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC method. #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] pub enum BroadcastMode { /// zero-value for mode ordering Unspecified = 0, /// DEPRECATED: use BROADCAST_MODE_SYNC instead, /// BROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x onwards. Block = 1, /// BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits for /// a CheckTx execution response only. Sync = 2, /// BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client returns /// immediately. Async = 3, } impl BroadcastMode { /// String value of the enum field names used in the ProtoBuf definition. /// /// The values are not transformed in any way and thus are considered stable /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { BroadcastMode::Unspecified => "BROADCAST_MODE_UNSPECIFIED", BroadcastMode::Block => "BROADCAST_MODE_BLOCK", BroadcastMode::Sync => "BROADCAST_MODE_SYNC", BroadcastMode::Async => "BROADCAST_MODE_ASYNC", } } /// Creates an enum from field names used in the ProtoBuf definition. pub fn from_str_name(value: &str) -> ::core::option::Option { match value { "BROADCAST_MODE_UNSPECIFIED" => Some(Self::Unspecified), "BROADCAST_MODE_BLOCK" => Some(Self::Block), "BROADCAST_MODE_SYNC" => Some(Self::Sync), "BROADCAST_MODE_ASYNC" => Some(Self::Async), _ => None, } } } /// Generated client implementations. #[cfg(feature = "grpc")] #[cfg_attr(docsrs, doc(cfg(feature = "grpc")))] pub mod service_client { #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] use tonic::codegen::http::Uri; use tonic::codegen::*; /// Service defines a gRPC service for interacting with transactions. #[derive(Debug, Clone)] pub struct ServiceClient { inner: tonic::client::Grpc, } #[cfg(feature = "grpc-transport")] #[cfg_attr(docsrs, doc(cfg(feature = "grpc-transport")))] impl ServiceClient { /// Attempt to create a new client by connecting to a given endpoint. pub async fn connect(dst: D) -> Result where D: std::convert::TryInto, D::Error: Into, { let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; Ok(Self::new(conn)) } } impl ServiceClient where T: tonic::client::GrpcService, T::Error: Into, T::ResponseBody: Body + Send + 'static, ::Error: Into + Send, { pub fn new(inner: T) -> Self { let inner = tonic::client::Grpc::new(inner); Self { inner } } pub fn with_origin(inner: T, origin: Uri) -> Self { let inner = tonic::client::Grpc::with_origin(inner, origin); Self { inner } } pub fn with_interceptor( inner: T, interceptor: F, ) -> ServiceClient> where F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< http::Request, Response = http::Response< >::ResponseBody, >, >, >>::Error: Into + Send + Sync, { ServiceClient::new(InterceptedService::new(inner, interceptor)) } /// Compress requests with the given encoding. /// /// This requires the server to support it otherwise it might respond with an /// error. #[must_use] pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self { self.inner = self.inner.send_compressed(encoding); self } /// Enable decompressing responses. #[must_use] pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self { self.inner = self.inner.accept_compressed(encoding); self } /// Simulate simulates executing a transaction for estimating gas usage. pub async fn simulate( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/cosmos.tx.v1beta1.Service/Simulate"); self.inner.unary(request.into_request(), path, codec).await } /// GetTx fetches a tx by hash. pub async fn get_tx( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/cosmos.tx.v1beta1.Service/GetTx"); self.inner.unary(request.into_request(), path, codec).await } /// BroadcastTx broadcast transaction. pub async fn broadcast_tx( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/cosmos.tx.v1beta1.Service/BroadcastTx"); self.inner.unary(request.into_request(), path, codec).await } /// GetTxsEvent fetches txs by event. pub async fn get_txs_event( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/cosmos.tx.v1beta1.Service/GetTxsEvent"); self.inner.unary(request.into_request(), path, codec).await } /// GetBlockWithTxs fetches a block with decoded txs. /// /// Since: cosmos-sdk 0.45.2 pub async fn get_block_with_txs( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/cosmos.tx.v1beta1.Service/GetBlockWithTxs"); self.inner.unary(request.into_request(), path, codec).await } /// TxDecode decodes the transaction. /// /// Since: cosmos-sdk 0.47 pub async fn tx_decode( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/cosmos.tx.v1beta1.Service/TxDecode"); self.inner.unary(request.into_request(), path, codec).await } /// TxEncode encodes the transaction. /// /// Since: cosmos-sdk 0.47 pub async fn tx_encode( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/cosmos.tx.v1beta1.Service/TxEncode"); self.inner.unary(request.into_request(), path, codec).await } /// TxEncodeAmino encodes an Amino transaction from JSON to encoded bytes. /// /// Since: cosmos-sdk 0.47 pub async fn tx_encode_amino( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/cosmos.tx.v1beta1.Service/TxEncodeAmino"); self.inner.unary(request.into_request(), path, codec).await } /// TxDecodeAmino decodes an Amino transaction from encoded bytes to JSON. /// /// Since: cosmos-sdk 0.47 pub async fn tx_decode_amino( &mut self, request: impl tonic::IntoRequest, ) -> Result, tonic::Status> { self.inner.ready().await.map_err(|e| { tonic::Status::new( tonic::Code::Unknown, format!("Service was not ready: {}", e.into()), ) })?; let codec = tonic::codec::ProstCodec::default(); let path = http::uri::PathAndQuery::from_static("/cosmos.tx.v1beta1.Service/TxDecodeAmino"); self.inner.unary(request.into_request(), path, codec).await } } } /// Generated server implementations. #[cfg(feature = "grpc")] #[cfg_attr(docsrs, doc(cfg(feature = "grpc")))] pub mod service_server { #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] use tonic::codegen::*; /// Generated trait containing gRPC methods that should be implemented for use with ServiceServer. #[async_trait] pub trait Service: Send + Sync + 'static { /// Simulate simulates executing a transaction for estimating gas usage. async fn simulate( &self, request: tonic::Request, ) -> Result, tonic::Status>; /// GetTx fetches a tx by hash. async fn get_tx( &self, request: tonic::Request, ) -> Result, tonic::Status>; /// BroadcastTx broadcast transaction. async fn broadcast_tx( &self, request: tonic::Request, ) -> Result, tonic::Status>; /// GetTxsEvent fetches txs by event. async fn get_txs_event( &self, request: tonic::Request, ) -> Result, tonic::Status>; /// GetBlockWithTxs fetches a block with decoded txs. /// /// Since: cosmos-sdk 0.45.2 async fn get_block_with_txs( &self, request: tonic::Request, ) -> Result, tonic::Status>; /// TxDecode decodes the transaction. /// /// Since: cosmos-sdk 0.47 async fn tx_decode( &self, request: tonic::Request, ) -> Result, tonic::Status>; /// TxEncode encodes the transaction. /// /// Since: cosmos-sdk 0.47 async fn tx_encode( &self, request: tonic::Request, ) -> Result, tonic::Status>; /// TxEncodeAmino encodes an Amino transaction from JSON to encoded bytes. /// /// Since: cosmos-sdk 0.47 async fn tx_encode_amino( &self, request: tonic::Request, ) -> Result, tonic::Status>; /// TxDecodeAmino decodes an Amino transaction from encoded bytes to JSON. /// /// Since: cosmos-sdk 0.47 async fn tx_decode_amino( &self, request: tonic::Request, ) -> Result, tonic::Status>; } /// Service defines a gRPC service for interacting with transactions. #[derive(Debug)] pub struct ServiceServer { inner: _Inner, accept_compression_encodings: EnabledCompressionEncodings, send_compression_encodings: EnabledCompressionEncodings, } struct _Inner(Arc); impl ServiceServer { pub fn new(inner: T) -> Self { Self::from_arc(Arc::new(inner)) } pub fn from_arc(inner: Arc) -> Self { let inner = _Inner(inner); Self { inner, accept_compression_encodings: Default::default(), send_compression_encodings: Default::default(), } } pub fn with_interceptor(inner: T, interceptor: F) -> InterceptedService where F: tonic::service::Interceptor, { InterceptedService::new(Self::new(inner), interceptor) } /// Enable decompressing requests with the given encoding. #[must_use] pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self { self.accept_compression_encodings.enable(encoding); self } /// Compress responses with the given encoding, if the client supports it. #[must_use] pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self { self.send_compression_encodings.enable(encoding); self } } impl tonic::codegen::Service> for ServiceServer where T: Service, B: Body + Send + 'static, B::Error: Into + Send + 'static, { type Response = http::Response; type Error = std::convert::Infallible; type Future = BoxFuture; fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll> { Poll::Ready(Ok(())) } fn call(&mut self, req: http::Request) -> Self::Future { let inner = self.inner.clone(); match req.uri().path() { "/cosmos.tx.v1beta1.Service/Simulate" => { #[allow(non_camel_case_types)] struct SimulateSvc(pub Arc); impl tonic::server::UnaryService for SimulateSvc { type Response = super::SimulateResponse; type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = self.0.clone(); let fut = async move { (*inner).simulate(request).await }; Box::pin(fut) } } let accept_compression_encodings = self.accept_compression_encodings; let send_compression_encodings = self.send_compression_encodings; let inner = self.inner.clone(); let fut = async move { let inner = inner.0; let method = SimulateSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec).apply_compression_config( accept_compression_encodings, send_compression_encodings, ); let res = grpc.unary(method, req).await; Ok(res) }; Box::pin(fut) } "/cosmos.tx.v1beta1.Service/GetTx" => { #[allow(non_camel_case_types)] struct GetTxSvc(pub Arc); impl tonic::server::UnaryService for GetTxSvc { type Response = super::GetTxResponse; type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = self.0.clone(); let fut = async move { (*inner).get_tx(request).await }; Box::pin(fut) } } let accept_compression_encodings = self.accept_compression_encodings; let send_compression_encodings = self.send_compression_encodings; let inner = self.inner.clone(); let fut = async move { let inner = inner.0; let method = GetTxSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec).apply_compression_config( accept_compression_encodings, send_compression_encodings, ); let res = grpc.unary(method, req).await; Ok(res) }; Box::pin(fut) } "/cosmos.tx.v1beta1.Service/BroadcastTx" => { #[allow(non_camel_case_types)] struct BroadcastTxSvc(pub Arc); impl tonic::server::UnaryService for BroadcastTxSvc { type Response = super::BroadcastTxResponse; type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = self.0.clone(); let fut = async move { (*inner).broadcast_tx(request).await }; Box::pin(fut) } } let accept_compression_encodings = self.accept_compression_encodings; let send_compression_encodings = self.send_compression_encodings; let inner = self.inner.clone(); let fut = async move { let inner = inner.0; let method = BroadcastTxSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec).apply_compression_config( accept_compression_encodings, send_compression_encodings, ); let res = grpc.unary(method, req).await; Ok(res) }; Box::pin(fut) } "/cosmos.tx.v1beta1.Service/GetTxsEvent" => { #[allow(non_camel_case_types)] struct GetTxsEventSvc(pub Arc); impl tonic::server::UnaryService for GetTxsEventSvc { type Response = super::GetTxsEventResponse; type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = self.0.clone(); let fut = async move { (*inner).get_txs_event(request).await }; Box::pin(fut) } } let accept_compression_encodings = self.accept_compression_encodings; let send_compression_encodings = self.send_compression_encodings; let inner = self.inner.clone(); let fut = async move { let inner = inner.0; let method = GetTxsEventSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec).apply_compression_config( accept_compression_encodings, send_compression_encodings, ); let res = grpc.unary(method, req).await; Ok(res) }; Box::pin(fut) } "/cosmos.tx.v1beta1.Service/GetBlockWithTxs" => { #[allow(non_camel_case_types)] struct GetBlockWithTxsSvc(pub Arc); impl tonic::server::UnaryService for GetBlockWithTxsSvc { type Response = super::GetBlockWithTxsResponse; type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = self.0.clone(); let fut = async move { (*inner).get_block_with_txs(request).await }; Box::pin(fut) } } let accept_compression_encodings = self.accept_compression_encodings; let send_compression_encodings = self.send_compression_encodings; let inner = self.inner.clone(); let fut = async move { let inner = inner.0; let method = GetBlockWithTxsSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec).apply_compression_config( accept_compression_encodings, send_compression_encodings, ); let res = grpc.unary(method, req).await; Ok(res) }; Box::pin(fut) } "/cosmos.tx.v1beta1.Service/TxDecode" => { #[allow(non_camel_case_types)] struct TxDecodeSvc(pub Arc); impl tonic::server::UnaryService for TxDecodeSvc { type Response = super::TxDecodeResponse; type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = self.0.clone(); let fut = async move { (*inner).tx_decode(request).await }; Box::pin(fut) } } let accept_compression_encodings = self.accept_compression_encodings; let send_compression_encodings = self.send_compression_encodings; let inner = self.inner.clone(); let fut = async move { let inner = inner.0; let method = TxDecodeSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec).apply_compression_config( accept_compression_encodings, send_compression_encodings, ); let res = grpc.unary(method, req).await; Ok(res) }; Box::pin(fut) } "/cosmos.tx.v1beta1.Service/TxEncode" => { #[allow(non_camel_case_types)] struct TxEncodeSvc(pub Arc); impl tonic::server::UnaryService for TxEncodeSvc { type Response = super::TxEncodeResponse; type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = self.0.clone(); let fut = async move { (*inner).tx_encode(request).await }; Box::pin(fut) } } let accept_compression_encodings = self.accept_compression_encodings; let send_compression_encodings = self.send_compression_encodings; let inner = self.inner.clone(); let fut = async move { let inner = inner.0; let method = TxEncodeSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec).apply_compression_config( accept_compression_encodings, send_compression_encodings, ); let res = grpc.unary(method, req).await; Ok(res) }; Box::pin(fut) } "/cosmos.tx.v1beta1.Service/TxEncodeAmino" => { #[allow(non_camel_case_types)] struct TxEncodeAminoSvc(pub Arc); impl tonic::server::UnaryService for TxEncodeAminoSvc { type Response = super::TxEncodeAminoResponse; type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = self.0.clone(); let fut = async move { (*inner).tx_encode_amino(request).await }; Box::pin(fut) } } let accept_compression_encodings = self.accept_compression_encodings; let send_compression_encodings = self.send_compression_encodings; let inner = self.inner.clone(); let fut = async move { let inner = inner.0; let method = TxEncodeAminoSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec).apply_compression_config( accept_compression_encodings, send_compression_encodings, ); let res = grpc.unary(method, req).await; Ok(res) }; Box::pin(fut) } "/cosmos.tx.v1beta1.Service/TxDecodeAmino" => { #[allow(non_camel_case_types)] struct TxDecodeAminoSvc(pub Arc); impl tonic::server::UnaryService for TxDecodeAminoSvc { type Response = super::TxDecodeAminoResponse; type Future = BoxFuture, tonic::Status>; fn call( &mut self, request: tonic::Request, ) -> Self::Future { let inner = self.0.clone(); let fut = async move { (*inner).tx_decode_amino(request).await }; Box::pin(fut) } } let accept_compression_encodings = self.accept_compression_encodings; let send_compression_encodings = self.send_compression_encodings; let inner = self.inner.clone(); let fut = async move { let inner = inner.0; let method = TxDecodeAminoSvc(inner); let codec = tonic::codec::ProstCodec::default(); let mut grpc = tonic::server::Grpc::new(codec).apply_compression_config( accept_compression_encodings, send_compression_encodings, ); let res = grpc.unary(method, req).await; Ok(res) }; Box::pin(fut) } _ => Box::pin(async move { Ok(http::Response::builder() .status(200) .header("grpc-status", "12") .header("content-type", "application/grpc") .body(empty_body()) .unwrap()) }), } } } impl Clone for ServiceServer { fn clone(&self) -> Self { let inner = self.inner.clone(); Self { inner, accept_compression_encodings: self.accept_compression_encodings, send_compression_encodings: self.send_compression_encodings, } } } impl Clone for _Inner { fn clone(&self) -> Self { Self(self.0.clone()) } } impl std::fmt::Debug for _Inner { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "{:?}", self.0) } } impl tonic::server::NamedService for ServiceServer { const NAME: &'static str = "cosmos.tx.v1beta1.Service"; } }