terra_bindings/
query.rs

1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4use cosmwasm_std::{Coin, Decimal, QueryRequest, Uint128};
5
6/// TerraQueryWrapper is an override of QueryRequest::Custom to access Terra-specific modules
7#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
8#[serde(rename_all = "snake_case")]
9pub struct TerraQueryWrapper {
10    pub route: String,
11    pub query_data: TerraQuery,
12}
13
14/// TerraQuery is defines avaliable query datas
15#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
16#[serde(rename_all = "snake_case")]
17pub enum TerraQuery {
18    Swap { offer_coin: Coin, ask_denom: String },
19    TaxRate {},
20    TaxCap { denom: String },
21}
22
23// This is a simpler way to making queries
24impl Into<QueryRequest<TerraQueryWrapper>> for TerraQueryWrapper {
25    fn into(self) -> QueryRequest<TerraQueryWrapper> {
26        QueryRequest::Custom(self)
27    }
28}
29
30/// SwapResponse is data format returned from SwapRequest::Simulate query
31#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
32pub struct SwapResponse {
33    pub receive: Coin,
34}
35
36/// TaxRateResponse is data format returned from TreasuryRequest::TaxRate query
37#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
38pub struct TaxRateResponse {
39    pub rate: Decimal,
40}
41/// TaxCapResponse is data format returned from TreasuryRequest::TaxCap query
42#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
43pub struct TaxCapResponse {
44    pub cap: Uint128,
45}