cyber_std/
query.rs

1use cosmwasm_std::{CustomQuery, QueryRequest};
2use cosmwasm_schema::{cw_serde, QueryResponses};
3#[allow(unused_imports)]
4use crate::query_res::*;
5use crate::tokenfactory::query::TokenFactoryQuery;
6
7#[cw_serde]
8#[derive(QueryResponses)]
9#[query_responses(nested)]
10#[serde(untagged)]
11pub enum CyberQuery {
12    Rank(RankQuery),
13    Graph(GraphQuery),
14    DMN(DMNQuery),
15    Grid(GridQuery),
16    Bandwidth(BandwidthQuery),
17    Liquidity(LiquidityQuery),
18    TokenFactory(TokenFactoryQuery)
19}
20
21#[cw_serde]
22#[derive(QueryResponses)]
23pub enum RankQuery {
24    #[returns(ParticleRankResponse)]
25    ParticleRank { particle: String },
26}
27#[cw_serde]
28#[derive(QueryResponses)]
29pub enum GraphQuery {
30    #[returns(GraphStatsResponse)]
31    GraphStats {},
32}
33#[cw_serde]
34#[derive(QueryResponses)]
35pub enum DMNQuery {
36    #[returns(ThoughtResponse)]
37    Thought { program: String, name: String },
38    #[returns(ThoughtStatsResponse)]
39    ThoughtStats { program: String, name: String },
40    #[returns(ThoughtsFeesResponse)]
41    ThoughtsFees {},
42}
43#[cw_serde]
44#[derive(QueryResponses)]
45pub enum GridQuery {
46    #[returns(RoutesResponse)]
47    SourceRoutes { source: String },
48    #[returns(RoutedEnergyResponse)]
49    SourceRoutedEnergy { source: String },
50    #[returns(RoutedEnergyResponse)]
51    DestinationRoutedEnergy { destination: String },
52    #[returns(RouteResponse)]
53    Route { source: String, destination: String },
54}
55#[cw_serde]
56#[derive(QueryResponses)]
57pub enum BandwidthQuery {
58    #[returns(BandwidthPriceResponse)]
59    BandwidthPrice {},
60    #[returns(BandwidthLoadResponse)]
61    BandwidthLoad {},
62    #[returns(TotalBandwidthResponse)]
63    TotalBandwidth {},
64    #[returns(NeuronBandwidthResponse)]
65    NeuronBandwidth { neuron: String },
66}
67#[cw_serde]
68#[derive(QueryResponses)]
69pub enum LiquidityQuery {
70    // TODO remove this queries
71    #[returns(PoolParamsResponse)]
72    PoolParams { pool_id: u64 },
73    #[returns(PoolLiquidityResponse)]
74    PoolLiquidity { pool_id: u64 },
75    #[returns(PoolSupplyResponse)]
76    PoolSupply { pool_id: u64 },
77    #[returns(PoolPriceResponse)]
78    PoolPrice { pool_id: u64 },
79    #[returns(PoolAddressResponse)]
80    PoolAddress { pool_id: u64 },
81}
82
83impl CustomQuery for CyberQuery {}
84
85impl From<RankQuery> for QueryRequest<CyberQuery> {
86    fn from(msg: RankQuery) -> Self {
87        QueryRequest::Custom(CyberQuery::Rank(msg))
88    }
89}
90
91
92impl From<GraphQuery> for QueryRequest<CyberQuery> {
93    fn from(msg: GraphQuery) -> Self {
94        QueryRequest::Custom(CyberQuery::Graph(msg))
95    }
96}
97
98impl From<DMNQuery> for QueryRequest<CyberQuery> {
99    fn from(msg: DMNQuery) -> Self {
100        QueryRequest::Custom(CyberQuery::DMN(msg))
101    }
102}
103
104impl From<GridQuery> for QueryRequest<CyberQuery> {
105    fn from(msg: GridQuery) -> Self {
106        QueryRequest::Custom(CyberQuery::Grid(msg))
107    }
108}
109
110impl From<BandwidthQuery> for QueryRequest<CyberQuery> {
111    fn from(msg: BandwidthQuery) -> Self {
112        QueryRequest::Custom(CyberQuery::Bandwidth(msg))
113    }
114}
115
116impl From<LiquidityQuery> for QueryRequest<CyberQuery> {
117    fn from(msg: LiquidityQuery) -> Self {
118        QueryRequest::Custom(CyberQuery::Liquidity(msg))
119    }
120}
121impl From<TokenFactoryQuery> for QueryRequest<CyberQuery> {
122    fn from(msg: TokenFactoryQuery) -> Self {
123        QueryRequest::Custom(CyberQuery::TokenFactory(msg))
124    }
125}
126
127impl CyberQuery {
128    pub fn particle_rank(particle: String) -> Self {
129        Self::Rank(RankQuery::ParticleRank { particle })
130    }
131
132    pub fn graph_stats() -> Self {
133        Self::Graph(GraphQuery::GraphStats {})
134    }
135
136    pub fn thought(program: String, name: String) -> Self {
137        Self::DMN(DMNQuery::Thought { program, name })
138    }
139
140    pub fn thought_stats(program: String, name: String) -> Self {
141        Self::DMN(DMNQuery::ThoughtStats { program, name })
142    }
143
144    pub fn thoughts_fees() -> Self {
145        Self::DMN(DMNQuery::ThoughtsFees {})
146    }
147
148    pub fn source_routes(source: String) -> Self {
149        Self::Grid(GridQuery::SourceRoutes { source })
150    }
151
152    pub fn source_routed_energy(source: String) -> Self {
153        Self::Grid(GridQuery::SourceRoutedEnergy { source })
154    }
155
156    pub fn destination_routed_energy(destination: String) -> Self {
157        Self::Grid(GridQuery::DestinationRoutedEnergy { destination })
158    }
159
160    pub fn route(source: String, destination: String) -> Self {
161        Self::Grid(GridQuery::Route { source, destination })
162    }
163
164    pub fn bandwidth_price() -> Self {
165        Self::Bandwidth(BandwidthQuery::BandwidthPrice {})
166    }
167
168    pub fn bandwidth_load() -> Self {
169        Self::Bandwidth(BandwidthQuery::BandwidthLoad {})
170    }
171
172    pub fn bandwidth_total() -> Self {
173        Self::Bandwidth(BandwidthQuery::TotalBandwidth {})
174    }
175
176    pub fn neuron_bandwidth(neuron: String) -> Self {
177        Self::Bandwidth(BandwidthQuery::NeuronBandwidth { neuron })
178    }
179
180    pub fn pool_params(pool_id: u64) -> Self {
181        Self::Liquidity(LiquidityQuery::PoolParams { pool_id })
182    }
183
184    pub fn pool_liquidity(pool_id: u64) -> Self {
185        Self::Liquidity(LiquidityQuery::PoolLiquidity { pool_id })
186    }
187
188    pub fn pool_supply(pool_id: u64) -> Self {
189        Self::Liquidity(LiquidityQuery::PoolSupply { pool_id })
190    }
191
192    pub fn pool_price(pool_id: u64) -> Self {
193        Self::Liquidity(LiquidityQuery::PoolPrice { pool_id })
194    }
195
196    pub fn pool_address(pool_id: u64) -> Self {
197        Self::Liquidity(LiquidityQuery::PoolAddress { pool_id })
198    }
199
200    pub fn full_denom(creator_addr: String, subdenom: String) -> Self {
201        Self::TokenFactory(TokenFactoryQuery::FullDenom { creator_addr, subdenom })
202    }
203
204    pub fn denom_metadata(denom: String) -> Self {
205        Self::TokenFactory(TokenFactoryQuery::Metadata { denom })
206    }
207
208    pub fn denom_admin(denom: String) -> Self {
209        Self::TokenFactory(TokenFactoryQuery::Admin { denom })
210    }
211
212    pub fn denoms_by_creator(creator: String) -> Self {
213        Self::TokenFactory(TokenFactoryQuery::DenomsByCreator { creator })
214    }
215
216    pub fn denom_creation_fee() -> Self {
217        Self::TokenFactory(TokenFactoryQuery::Params { })
218    }
219}