use crate::bindings::dex::types::{
DepositRecord, LimitOrderTranche, LimitOrderTrancheUser, LimitOrderType, MultiHopRoute, Params,
Pool, PoolMetadata, PoolReserves, PrecDec, TickLiquidity,
};
use crate::bindings::query::{PageRequest, PageResponse};
use cosmwasm_std::{Coin, Int128};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum DexQuery {
Params {},
LimitOrderTrancheUser {
address: String,
tranche_key: String,
},
LimitOrderTrancheUserAll { pagination: Option<PageRequest> },
LimitOrderTrancheUserAllByAddress {
address: String,
pagination: Option<PageRequest>,
},
LimitOrderTranche {
pair_id: String,
tick_index: i64,
token_in: String,
tranche_key: String,
},
LimitOrderTrancheAll {
pair_id: String,
token_in: String,
pagination: Option<PageRequest>,
},
UserDepositAll {
address: String,
include_pool_data: bool,
pagination: Option<PageRequest>,
},
TickLiquidityAll {
pair_id: String,
token_in: String,
pagination: Option<PageRequest>,
},
InactiveLimitOrderTranche {
pair_id: String,
tick_index: i64,
token_in: String,
tranche_key: String,
},
InactiveLimitOrderTrancheAll { pagination: Option<PageRequest> },
PoolReservesAll {
pair_id: String,
token_in: String,
pagination: Option<PageRequest>,
},
PoolReserves {
pair_id: String,
token_in: String,
tick_index: i64,
fee: u64,
},
EstimateMultiHopSwap {
creator: String,
receiver: String,
routes: Vec<MultiHopRoute>,
amount_in: Int128,
exit_limit_price: PrecDec,
pick_best_route: bool,
},
EstimatePlaceLimitOrder {
creator: String,
receiver: String,
token_in: String,
token_out: String,
tick_index_in_to_out: i64,
amount_in: Int128,
order_type: LimitOrderType,
expiration_time: Option<u64>,
max_amount_out: Option<Int128>,
},
Pool {
pair_id: String,
tick_index: i64,
fee: u64,
},
#[serde(rename = "pool_by_id")]
PoolByID { pool_id: u64 },
PoolMetadata { id: u64 },
PoolMetadataAll { pagination: Option<PageRequest> },
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct ParamsResponse {
pub params: Params,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct LimitOrderTrancheUserResponse {
pub limit_order_tranche_user: Option<LimitOrderTrancheUser>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct AllLimitOrderTrancheUserResponse {
#[serde(default)]
pub limit_order_tranche_user: Vec<LimitOrderTrancheUser>,
pub pagination: Option<PageResponse>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema, Default)]
#[serde(rename_all = "snake_case")]
pub struct AllUserLimitOrdersResponse {
#[serde(default)]
pub limit_orders: Vec<LimitOrderTrancheUser>,
pub pagination: Option<PageResponse>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct LimitOrderTrancheResponse {
pub limit_order_tranche: Option<LimitOrderTranche>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema, Default)]
#[serde(rename_all = "snake_case")]
pub struct AllLimitOrderTrancheResponse {
#[serde(default)]
pub limit_order_tranche: Vec<LimitOrderTranche>,
pub pagination: Option<PageResponse>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema, Default)]
#[serde(rename_all = "snake_case")]
pub struct AllUserDepositsResponse {
#[serde(default)]
pub deposits: Vec<DepositRecord>,
pub pagination: Option<PageResponse>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct AllTickLiquidityResponse {
pub tick_liquidity: Vec<TickLiquidity>,
pub pagination: Option<PageResponse>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct InactiveLimitOrderTrancheResponse {
pub inactive_limit_order_tranche: LimitOrderTranche,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct AllInactiveLimitOrderTrancheResponse {
pub inactive_limit_order_tranche: Vec<LimitOrderTranche>,
pub pagination: Option<PageResponse>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct AllPoolReservesResponse {
pub pool_reserves: Vec<PoolReserves>,
pub pagination: Option<PageResponse>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct PoolReservesResponse {
pub pool_reserves: PoolReserves,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct EstimateMultiHopSwapResponse {
pub coin_out: Coin,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct EstimatePlaceLimitOrderResponse {
pub total_in_coin: Coin,
pub swap_in_coin: Coin,
pub swap_out_coin: Coin,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct PoolResponse {
pub pool: Pool,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct PoolMetadataResponse {
pub pool_metadata: PoolMetadata,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct AllPoolMetadataResponse {
pub pool_metadata: Vec<PoolMetadata>,
pub pagination: Option<PageResponse>,
}