prov_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::{ContractInfoResponse, WasmQuery};
25
26#[non_exhaustive]
27#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
28#[serde(rename_all = "snake_case")]
29pub enum QueryRequest<C> {
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 + Clone {}
70impl CustomQuery for Empty {}
74
75impl<C: CustomQuery> From<BankQuery> for QueryRequest<C> {
76 fn from(msg: BankQuery) -> Self {
77 QueryRequest::Bank(msg)
78 }
79}
80
81impl<C: CustomQuery> From<C> for QueryRequest<C> {
82 fn from(msg: C) -> Self {
83 QueryRequest::Custom(msg)
84 }
85}
86
87#[cfg(feature = "staking")]
88impl<C: CustomQuery> From<StakingQuery> for QueryRequest<C> {
89 fn from(msg: StakingQuery) -> Self {
90 QueryRequest::Staking(msg)
91 }
92}
93
94impl<C: CustomQuery> From<WasmQuery> for QueryRequest<C> {
95 fn from(msg: WasmQuery) -> Self {
96 QueryRequest::Wasm(msg)
97 }
98}
99
100#[cfg(feature = "stargate")]
101impl<C: CustomQuery> From<IbcQuery> for QueryRequest<C> {
102 fn from(msg: IbcQuery) -> Self {
103 QueryRequest::Ibc(msg)
104 }
105}