jk_cosmwasm_std/query/
mod.rs1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4#[cfg(feature = "stargate")]
5use crate::Binary;
6use crate::Empty;
7
8mod bank;
9mod ibc;
10mod staking;
11mod stargate;
12mod wasm;
13
14pub use bank::{AllBalanceResponse, BalanceResponse, BankQuery};
15#[cfg(feature = "stargate")]
16pub use ibc::{ChannelResponse, IbcQuery, ListChannelsResponse, PortIdResponse};
17#[cfg(feature = "staking")]
18pub use staking::{
19 AllDelegationsResponse, AllValidatorsResponse, BondedDenomResponse, Delegation,
20 DelegationResponse, FullDelegation, StakingQuery, Validator, ValidatorResponse,
21};
22#[cfg(feature = "stargate")]
23pub use stargate::StargateResponse;
24pub use wasm::WasmQuery;
25
26#[non_exhaustive]
27#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
28#[serde(rename_all = "snake_case")]
29pub enum QueryRequest<C: CustomQuery> {
30 Bank(BankQuery),
31 Custom(C),
32 #[cfg(feature = "staking")]
33 Staking(StakingQuery),
34 #[cfg(feature = "stargate")]
38 Stargate {
39 path: String,
42 data: Binary,
44 },
45 #[cfg(feature = "stargate")]
46 Ibc(IbcQuery),
47 Wasm(WasmQuery),
48}
49
50pub trait CustomQuery: Serialize {}
70
71impl CustomQuery for Empty {}
72
73impl<C: CustomQuery> From<BankQuery> for QueryRequest<C> {
74 fn from(msg: BankQuery) -> Self {
75 QueryRequest::Bank(msg)
76 }
77}
78
79impl<C: CustomQuery> From<C> for QueryRequest<C> {
80 fn from(msg: C) -> Self {
81 QueryRequest::Custom(msg)
82 }
83}
84
85#[cfg(feature = "staking")]
86impl<C: CustomQuery> From<StakingQuery> for QueryRequest<C> {
87 fn from(msg: StakingQuery) -> Self {
88 QueryRequest::Staking(msg)
89 }
90}
91
92impl<C: CustomQuery> From<WasmQuery> for QueryRequest<C> {
93 fn from(msg: WasmQuery) -> Self {
94 QueryRequest::Wasm(msg)
95 }
96}
97
98#[cfg(feature = "stargate")]
99impl<C: CustomQuery> From<IbcQuery> for QueryRequest<C> {
100 fn from(msg: IbcQuery) -> Self {
101 QueryRequest::Ibc(msg)
102 }
103}