#![allow(deprecated)]
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::prelude::*;
use crate::Binary;
use crate::Empty;
macro_rules! impl_response_constructor {
( $response:ty, $( $field: ident : $t: ty),* ) => {
impl $response {
#[doc(hidden)]
#[allow(dead_code)]
pub fn new($( $field: $t),*) -> Self {
Self { $( $field ),* }
}
}
};
}
mod bank;
mod distribution;
mod ibc;
mod query_response;
mod staking;
mod wasm;
pub use bank::*;
pub use distribution::*;
pub use ibc::*;
pub use staking::*;
pub use wasm::*;
#[non_exhaustive]
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryRequest<C = Empty> {
Bank(BankQuery),
Custom(C),
#[cfg(feature = "staking")]
Staking(StakingQuery),
#[cfg(feature = "cosmwasm_1_3")]
Distribution(DistributionQuery),
#[cfg(feature = "stargate")]
#[deprecated = "Please use the GrpcQuery instead"]
Stargate {
path: String,
data: Binary,
},
#[cfg(feature = "stargate")]
Ibc(IbcQuery),
Wasm(WasmQuery),
#[cfg(feature = "cosmwasm_2_0")]
Grpc(GrpcQuery),
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
pub struct GrpcQuery {
pub path: String,
pub data: Binary,
}
pub trait CustomQuery: Serialize + Clone {}
impl CustomQuery for Empty {}
impl<C: CustomQuery> From<BankQuery> for QueryRequest<C> {
fn from(msg: BankQuery) -> Self {
QueryRequest::Bank(msg)
}
}
impl<C: CustomQuery> From<C> for QueryRequest<C> {
fn from(msg: C) -> Self {
QueryRequest::Custom(msg)
}
}
#[cfg(feature = "staking")]
impl<C: CustomQuery> From<StakingQuery> for QueryRequest<C> {
fn from(msg: StakingQuery) -> Self {
QueryRequest::Staking(msg)
}
}
impl<C: CustomQuery> From<WasmQuery> for QueryRequest<C> {
fn from(msg: WasmQuery) -> Self {
QueryRequest::Wasm(msg)
}
}
#[cfg(feature = "cosmwasm_2_0")]
impl<C: CustomQuery> From<GrpcQuery> for QueryRequest<C> {
fn from(msg: GrpcQuery) -> Self {
QueryRequest::Grpc(msg)
}
}
#[cfg(feature = "stargate")]
impl<C: CustomQuery> From<IbcQuery> for QueryRequest<C> {
fn from(msg: IbcQuery) -> Self {
QueryRequest::Ibc(msg)
}
}
#[cfg(feature = "cosmwasm_1_3")]
impl<C: CustomQuery> From<DistributionQuery> for QueryRequest<C> {
fn from(msg: DistributionQuery) -> Self {
QueryRequest::Distribution(msg)
}
}