1use cosmwasm_std::{Uint128, Decimal};
2use cosmwasm_schema::QueryResponses;
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6use crate::swap_linked_list::{LinkedList, NodeWithId};
7
8#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
9#[serde(rename_all = "snake_case")]
10pub enum AssetInfo {
11 Token { contract_addr: String },
12 NativeToken { denom: String },
13}
14
15#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
16pub struct Asset {
17 pub info: AssetInfo,
18 pub amount: Uint128,
19}
20
21#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema, QueryResponses)]
22#[serde(rename_all = "snake_case")]
23pub enum QueryMsg {
24 #[returns(RewardsResponse)]
26 ClaimableOf { address: String },
27 #[returns(ConfigResponse)]
29 ConfigInfo {},
30 #[returns(StatusResponse)]
32 StatusInfo {},
33 #[returns(OrderBookResponse)]
35 OrderBook {},
36 #[returns(OrderInfoOfResponse)]
38 OrderInfoOf { address: String },
39 #[returns(SimulationResponse)]
41 Simulation { offer_asset: Asset },
42 #[returns(ReverseSimulationResponse)]
45 ReverseSimulation { ask_asset: Asset },
46}
47
48#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
49pub struct ConfigResponse {
50 pub admin: String,
52 pub pause_admin: String,
54 pub bond_denom: String,
56 pub liquid_token_addr: String,
58 pub staking_manager_addr: String,
60 pub treasury_contract_addr: String,
62 pub team_wallet_addr: String,
64 pub swap_fee_percentage: u16,
66 pub team_percentage: u16,
68 pub liquidity_min: Uint128,
70 pub contract_state: bool,
72}
73
74#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
75pub struct StatusResponse {
76 pub issued: Uint128,
78 pub claims: Uint128,
80 pub balance: Uint128,
82 pub unclaimed_balance: Uint128,
84 pub ratio: Decimal,
86 pub liquidity: Uint128,
88}
89
90#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
91pub struct OrderInfoOfResponse {
92 pub issued: Uint128,
94 pub native: Uint128,
96 pub height: u64,
98 pub node_id: u64,
100 pub last_deposit: Uint128,
102}
103
104#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
105pub struct OrderBookResponse {
106 pub state: LinkedList,
107 pub queue: Vec<NodeWithId>,
108}
109
110#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)]
111pub struct RewardsResponse {
112 pub staked_token: Uint128,
113 pub native_token: Uint128,
114}
115
116#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
118pub struct SimulationResponse {
119 pub return_amount: Uint128,
120 pub spread_amount: Uint128,
121 pub commission_amount: Uint128,
122}
123
124#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
126pub struct ReverseSimulationResponse {
127 pub offer_amount: Uint128,
128 pub spread_amount: Uint128,
129 pub commission_amount: Uint128,
130}