injective_cosmwasm/
query.rs

1use cosmwasm_std::{Addr, CustomQuery};
2use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4
5use injective_math::FPDecimal;
6
7use crate::oracle::{
8    types::{OracleHistoryOptions, OracleInfo, OracleType},
9    volatility::TradeHistoryOptions,
10};
11use crate::route::InjectiveRoute;
12use crate::{
13    exchange::{
14        cancel::CancellationStrategy,
15        order::OrderSide,
16        types::{MarketId, SubaccountId},
17    },
18    oracle::types::ScalingOptions,
19};
20
21#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
22#[serde(rename_all = "snake_case")]
23pub struct InjectiveQueryWrapper {
24    pub route: InjectiveRoute,
25    pub query_data: InjectiveQuery,
26}
27
28/// InjectiveQuery is an override of QueryRequest::Custom to access Injective-specific modules
29#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
30#[serde(rename_all = "snake_case")]
31pub enum InjectiveQuery {
32    // Exchange
33    ExchangeParams {},
34    SubaccountDeposit {
35        subaccount_id: SubaccountId,
36        denom: String,
37    },
38    SpotMarket {
39        market_id: MarketId,
40    },
41    TraderSpotOrders {
42        market_id: MarketId,
43        subaccount_id: SubaccountId,
44    },
45    TraderSpotOrdersToCancelUpToAmount {
46        market_id: MarketId,
47        subaccount_id: SubaccountId,
48        base_amount: FPDecimal,
49        quote_amount: FPDecimal,
50        strategy: CancellationStrategy,
51        reference_price: Option<FPDecimal>,
52    },
53    TraderDerivativeOrdersToCancelUpToAmount {
54        market_id: MarketId,
55        subaccount_id: SubaccountId,
56        quote_amount: FPDecimal,
57        strategy: CancellationStrategy,
58        reference_price: Option<FPDecimal>,
59    },
60    DerivativeMarket {
61        market_id: MarketId,
62    },
63    SubaccountPositions {
64        subaccount_id: SubaccountId,
65    },
66    SubaccountPositionInMarket {
67        market_id: MarketId,
68        subaccount_id: SubaccountId,
69    },
70    SubaccountEffectivePositionInMarket {
71        market_id: MarketId,
72        subaccount_id: SubaccountId,
73    },
74    TraderDerivativeOrders {
75        market_id: MarketId,
76        subaccount_id: SubaccountId,
77    },
78    TraderTransientSpotOrders {
79        market_id: MarketId,
80        subaccount_id: SubaccountId,
81    },
82    TraderTransientDerivativeOrders {
83        market_id: MarketId,
84        subaccount_id: SubaccountId,
85    },
86    PerpetualMarketInfo {
87        market_id: MarketId,
88    },
89    PerpetualMarketFunding {
90        market_id: MarketId,
91    },
92    // Make sure you are aware of the potential to run out of gas when using this query
93    MarketVolatility {
94        market_id: MarketId,
95        trade_history_options: TradeHistoryOptions,
96    },
97    SpotMarketMidPriceAndTob {
98        market_id: MarketId,
99    },
100    SpotOrderbook {
101        market_id: MarketId,
102        limit: u64,
103        order_side: OrderSide,
104        limit_cumulative_quantity: Option<FPDecimal>,
105        limit_cumulative_notional: Option<FPDecimal>,
106    },
107    DerivativeOrderbook {
108        market_id: MarketId,
109        limit: u64,
110        limit_cumulative_notional: Option<FPDecimal>,
111    },
112    DerivativeMarketMidPriceAndTob {
113        market_id: MarketId,
114    },
115    AggregateMarketVolume {
116        market_id: MarketId,
117    },
118    AggregateAccountVolume {
119        account: String,
120    },
121    MarketAtomicExecutionFeeMultiplier {
122        market_id: MarketId,
123    },
124    // Staking
125    StakedAmount {
126        delegator_address: Addr,
127        max_delegations: u16,
128    },
129    // Oracle
130    OracleVolatility {
131        base_info: Option<OracleInfo>,
132        quote_info: Option<OracleInfo>,
133        oracle_history_options: Option<OracleHistoryOptions>,
134    },
135    OraclePrice {
136        oracle_type: OracleType,
137        base: String,
138        quote: String,
139        scaling_options: Option<ScalingOptions>,
140    },
141    PythPrice {
142        price_id: String,
143    },
144    TokenFactoryDenomTotalSupply {
145        denom: String,
146    },
147    TokenFactoryDenomCreationFee {},
148    // Wasmx
149    WasmxRegisteredContractInfo {
150        contract_address: String,
151    },
152}
153
154impl CustomQuery for InjectiveQueryWrapper {}