1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4use cosmwasm_std::{Coin, Decimal, QueryRequest, Uint128};
5
6#[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#[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
23impl Into<QueryRequest<TerraQueryWrapper>> for TerraQueryWrapper {
25 fn into(self) -> QueryRequest<TerraQueryWrapper> {
26 QueryRequest::Custom(self)
27 }
28}
29
30#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
32pub struct SwapResponse {
33 pub receive: Coin,
34}
35
36#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
38pub struct TaxRateResponse {
39 pub rate: Decimal,
40}
41#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
43pub struct TaxCapResponse {
44 pub cap: Uint128,
45}