elys_std/types/elys/
amm.rs

1use elys_std_deriv::CosmwasmExt;
2#[allow(clippy::derive_partial_eq_without_eq)]
3#[derive(
4    Clone,
5    PartialEq,
6    Eq,
7    ::prost::Message,
8    ::serde::Serialize,
9    ::serde::Deserialize,
10    ::schemars::JsonSchema,
11    CosmwasmExt,
12)]
13#[proto_message(type_url = "/elys.amm.LegacyPoolAsset")]
14pub struct LegacyPoolAsset {
15    #[prost(message, optional, tag = "1")]
16    pub token: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
17    #[prost(string, tag = "2")]
18    pub weight: ::prost::alloc::string::String,
19}
20#[allow(clippy::derive_partial_eq_without_eq)]
21#[derive(
22    Clone,
23    PartialEq,
24    Eq,
25    ::prost::Message,
26    ::serde::Serialize,
27    ::serde::Deserialize,
28    ::schemars::JsonSchema,
29    CosmwasmExt,
30)]
31#[proto_message(type_url = "/elys.amm.PoolAsset")]
32pub struct PoolAsset {
33    #[prost(message, optional, tag = "1")]
34    pub token: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
35    #[prost(string, tag = "2")]
36    pub weight: ::prost::alloc::string::String,
37    #[prost(string, tag = "3")]
38    pub external_liquidity_ratio: ::prost::alloc::string::String,
39}
40#[allow(clippy::derive_partial_eq_without_eq)]
41#[derive(
42    Clone,
43    PartialEq,
44    Eq,
45    ::prost::Message,
46    ::serde::Serialize,
47    ::serde::Deserialize,
48    ::schemars::JsonSchema,
49    CosmwasmExt,
50)]
51#[proto_message(type_url = "/elys.amm.DenomLiquidity")]
52pub struct DenomLiquidity {
53    #[prost(string, tag = "1")]
54    pub denom: ::prost::alloc::string::String,
55    #[prost(string, tag = "2")]
56    pub liquidity: ::prost::alloc::string::String,
57}
58#[allow(clippy::derive_partial_eq_without_eq)]
59#[derive(
60    Clone,
61    PartialEq,
62    Eq,
63    ::prost::Message,
64    ::serde::Serialize,
65    ::serde::Deserialize,
66    ::schemars::JsonSchema,
67    CosmwasmExt,
68)]
69#[proto_message(type_url = "/elys.amm.Params")]
70pub struct Params {
71    #[prost(string, tag = "1")]
72    pub pool_creation_fee: ::prost::alloc::string::String,
73    /// default 1 week: 604,800
74    #[prost(uint64, tag = "2")]
75    #[serde(
76        serialize_with = "crate::serde::as_str::serialize",
77        deserialize_with = "crate::serde::as_str::deserialize"
78    )]
79    pub slippage_track_duration: u64,
80    #[prost(string, repeated, tag = "3")]
81    pub base_assets: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
82    #[prost(string, tag = "4")]
83    pub weight_breaking_fee_exponent: ::prost::alloc::string::String,
84    #[prost(string, tag = "5")]
85    pub weight_breaking_fee_multiplier: ::prost::alloc::string::String,
86    #[prost(string, tag = "6")]
87    pub weight_breaking_fee_portion: ::prost::alloc::string::String,
88    #[prost(string, tag = "7")]
89    pub weight_recovery_fee_portion: ::prost::alloc::string::String,
90    #[prost(string, tag = "8")]
91    pub threshold_weight_difference: ::prost::alloc::string::String,
92    #[prost(string, repeated, tag = "9")]
93    pub allowed_pool_creators: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
94    #[prost(string, tag = "10")]
95    pub threshold_weight_difference_swap_fee: ::prost::alloc::string::String,
96    #[prost(uint64, tag = "11")]
97    #[serde(
98        serialize_with = "crate::serde::as_str::serialize",
99        deserialize_with = "crate::serde::as_str::deserialize"
100    )]
101    pub lp_lockup_duration: u64,
102    #[prost(string, tag = "12")]
103    pub min_slippage: ::prost::alloc::string::String,
104    #[prost(string, repeated, tag = "13")]
105    pub allowed_upfront_swap_makers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
106}
107#[allow(clippy::derive_partial_eq_without_eq)]
108#[derive(
109    Clone,
110    PartialEq,
111    Eq,
112    ::prost::Message,
113    ::serde::Serialize,
114    ::serde::Deserialize,
115    ::schemars::JsonSchema,
116    CosmwasmExt,
117)]
118#[proto_message(type_url = "/elys.amm.LegacyPoolParams")]
119pub struct LegacyPoolParams {
120    #[prost(string, tag = "1")]
121    pub swap_fee: ::prost::alloc::string::String,
122    #[prost(string, tag = "2")]
123    pub exit_fee: ::prost::alloc::string::String,
124    #[prost(bool, tag = "3")]
125    pub use_oracle: bool,
126    #[prost(string, tag = "4")]
127    pub weight_breaking_fee_multiplier: ::prost::alloc::string::String,
128    #[prost(string, tag = "5")]
129    pub weight_breaking_fee_exponent: ::prost::alloc::string::String,
130    #[prost(string, tag = "6")]
131    pub weight_recovery_fee_portion: ::prost::alloc::string::String,
132    #[prost(string, tag = "7")]
133    pub threshold_weight_difference: ::prost::alloc::string::String,
134    #[prost(string, tag = "8")]
135    pub weight_breaking_fee_portion: ::prost::alloc::string::String,
136    /// denom for fee collection
137    #[prost(string, tag = "9")]
138    pub fee_denom: ::prost::alloc::string::String,
139}
140#[allow(clippy::derive_partial_eq_without_eq)]
141#[derive(
142    Clone,
143    PartialEq,
144    Eq,
145    ::prost::Message,
146    ::serde::Serialize,
147    ::serde::Deserialize,
148    ::schemars::JsonSchema,
149    CosmwasmExt,
150)]
151#[proto_message(type_url = "/elys.amm.PoolParams")]
152pub struct PoolParams {
153    #[prost(string, tag = "1")]
154    pub swap_fee: ::prost::alloc::string::String,
155    #[prost(bool, tag = "2")]
156    pub use_oracle: bool,
157    /// denom for fee collection
158    #[prost(string, tag = "3")]
159    pub fee_denom: ::prost::alloc::string::String,
160}
161#[allow(clippy::derive_partial_eq_without_eq)]
162#[derive(
163    Clone,
164    PartialEq,
165    Eq,
166    ::prost::Message,
167    ::serde::Serialize,
168    ::serde::Deserialize,
169    ::schemars::JsonSchema,
170    CosmwasmExt,
171)]
172#[proto_message(type_url = "/elys.amm.LegacyPool")]
173pub struct LegacyPool {
174    #[prost(uint64, tag = "1")]
175    #[serde(alias = "poolID")]
176    #[serde(
177        serialize_with = "crate::serde::as_str::serialize",
178        deserialize_with = "crate::serde::as_str::deserialize"
179    )]
180    pub pool_id: u64,
181    #[prost(string, tag = "2")]
182    pub address: ::prost::alloc::string::String,
183    #[prost(message, optional, tag = "3")]
184    pub pool_params: ::core::option::Option<LegacyPoolParams>,
185    #[prost(message, optional, tag = "4")]
186    pub total_shares: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
187    #[prost(message, repeated, tag = "5")]
188    pub pool_assets: ::prost::alloc::vec::Vec<PoolAsset>,
189    #[prost(string, tag = "6")]
190    pub total_weight: ::prost::alloc::string::String,
191    #[prost(string, tag = "7")]
192    pub rebalance_treasury: ::prost::alloc::string::String,
193}
194#[allow(clippy::derive_partial_eq_without_eq)]
195#[derive(
196    Clone,
197    PartialEq,
198    Eq,
199    ::prost::Message,
200    ::serde::Serialize,
201    ::serde::Deserialize,
202    ::schemars::JsonSchema,
203    CosmwasmExt,
204)]
205#[proto_message(type_url = "/elys.amm.Pool")]
206pub struct Pool {
207    #[prost(uint64, tag = "1")]
208    #[serde(alias = "poolID")]
209    #[serde(
210        serialize_with = "crate::serde::as_str::serialize",
211        deserialize_with = "crate::serde::as_str::deserialize"
212    )]
213    pub pool_id: u64,
214    #[prost(string, tag = "2")]
215    pub address: ::prost::alloc::string::String,
216    #[prost(message, optional, tag = "3")]
217    pub pool_params: ::core::option::Option<PoolParams>,
218    #[prost(message, optional, tag = "4")]
219    pub total_shares: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
220    #[prost(message, repeated, tag = "5")]
221    pub pool_assets: ::prost::alloc::vec::Vec<PoolAsset>,
222    #[prost(string, tag = "6")]
223    pub total_weight: ::prost::alloc::string::String,
224    #[prost(string, tag = "7")]
225    pub rebalance_treasury: ::prost::alloc::string::String,
226}
227#[allow(clippy::derive_partial_eq_without_eq)]
228#[derive(
229    Clone,
230    PartialEq,
231    Eq,
232    ::prost::Message,
233    ::serde::Serialize,
234    ::serde::Deserialize,
235    ::schemars::JsonSchema,
236    CosmwasmExt,
237)]
238#[proto_message(type_url = "/elys.amm.PoolExtraInfo")]
239pub struct PoolExtraInfo {
240    #[prost(string, tag = "1")]
241    pub tvl: ::prost::alloc::string::String,
242    #[prost(string, tag = "2")]
243    pub lp_token_price: ::prost::alloc::string::String,
244    #[prost(string, tag = "3")]
245    pub lp_saved_apr: ::prost::alloc::string::String,
246}
247#[allow(clippy::derive_partial_eq_without_eq)]
248#[derive(
249    Clone,
250    PartialEq,
251    Eq,
252    ::prost::Message,
253    ::serde::Serialize,
254    ::serde::Deserialize,
255    ::schemars::JsonSchema,
256    CosmwasmExt,
257)]
258#[proto_message(type_url = "/elys.amm.OraclePoolSlippageTrack")]
259pub struct OraclePoolSlippageTrack {
260    #[prost(uint64, tag = "1")]
261    #[serde(alias = "poolID")]
262    #[serde(
263        serialize_with = "crate::serde::as_str::serialize",
264        deserialize_with = "crate::serde::as_str::deserialize"
265    )]
266    pub pool_id: u64,
267    #[prost(uint64, tag = "2")]
268    #[serde(
269        serialize_with = "crate::serde::as_str::serialize",
270        deserialize_with = "crate::serde::as_str::deserialize"
271    )]
272    pub timestamp: u64,
273    #[prost(message, repeated, tag = "3")]
274    pub tracked: ::prost::alloc::vec::Vec<super::super::cosmos::base::v1beta1::Coin>,
275}
276#[allow(clippy::derive_partial_eq_without_eq)]
277#[derive(
278    Clone,
279    PartialEq,
280    Eq,
281    ::prost::Message,
282    ::serde::Serialize,
283    ::serde::Deserialize,
284    ::schemars::JsonSchema,
285    CosmwasmExt,
286)]
287#[proto_message(type_url = "/elys.amm.WeightBreakingSlippage")]
288pub struct WeightBreakingSlippage {
289    #[prost(uint64, tag = "1")]
290    #[serde(alias = "poolID")]
291    #[serde(
292        serialize_with = "crate::serde::as_str::serialize",
293        deserialize_with = "crate::serde::as_str::deserialize"
294    )]
295    pub pool_id: u64,
296    #[prost(string, tag = "2")]
297    pub date: ::prost::alloc::string::String,
298    #[prost(string, tag = "3")]
299    pub amount: ::prost::alloc::string::String,
300}
301/// GenesisState defines the amm module's genesis state.
302#[allow(clippy::derive_partial_eq_without_eq)]
303#[derive(
304    Clone,
305    PartialEq,
306    Eq,
307    ::prost::Message,
308    ::serde::Serialize,
309    ::serde::Deserialize,
310    ::schemars::JsonSchema,
311    CosmwasmExt,
312)]
313#[proto_message(type_url = "/elys.amm.GenesisState")]
314pub struct GenesisState {
315    #[prost(message, optional, tag = "1")]
316    pub params: ::core::option::Option<Params>,
317    #[prost(message, repeated, tag = "2")]
318    pub pool_list: ::prost::alloc::vec::Vec<Pool>,
319    #[prost(message, repeated, tag = "3")]
320    pub denom_liquidity_list: ::prost::alloc::vec::Vec<DenomLiquidity>,
321    #[prost(message, repeated, tag = "4")]
322    pub slippage_tracks: ::prost::alloc::vec::Vec<OraclePoolSlippageTrack>,
323}
324#[allow(clippy::derive_partial_eq_without_eq)]
325#[derive(
326    Clone,
327    PartialEq,
328    Eq,
329    ::prost::Message,
330    ::serde::Serialize,
331    ::serde::Deserialize,
332    ::schemars::JsonSchema,
333    CosmwasmExt,
334)]
335#[proto_message(type_url = "/elys.amm.SwapAmountInRoute")]
336pub struct SwapAmountInRoute {
337    #[prost(uint64, tag = "1")]
338    #[serde(alias = "poolID")]
339    #[serde(
340        serialize_with = "crate::serde::as_str::serialize",
341        deserialize_with = "crate::serde::as_str::deserialize"
342    )]
343    pub pool_id: u64,
344    #[prost(string, tag = "2")]
345    pub token_out_denom: ::prost::alloc::string::String,
346}
347#[allow(clippy::derive_partial_eq_without_eq)]
348#[derive(
349    Clone,
350    PartialEq,
351    Eq,
352    ::prost::Message,
353    ::serde::Serialize,
354    ::serde::Deserialize,
355    ::schemars::JsonSchema,
356    CosmwasmExt,
357)]
358#[proto_message(type_url = "/elys.amm.SwapAmountOutRoute")]
359pub struct SwapAmountOutRoute {
360    #[prost(uint64, tag = "1")]
361    #[serde(alias = "poolID")]
362    #[serde(
363        serialize_with = "crate::serde::as_str::serialize",
364        deserialize_with = "crate::serde::as_str::deserialize"
365    )]
366    pub pool_id: u64,
367    #[prost(string, tag = "2")]
368    pub token_in_denom: ::prost::alloc::string::String,
369}
370#[allow(clippy::derive_partial_eq_without_eq)]
371#[derive(
372    Clone,
373    PartialEq,
374    Eq,
375    ::prost::Message,
376    ::serde::Serialize,
377    ::serde::Deserialize,
378    ::schemars::JsonSchema,
379    CosmwasmExt,
380)]
381#[proto_message(type_url = "/elys.amm.ProposalCreateBalancerPool")]
382pub struct ProposalCreateBalancerPool {
383    #[prost(string, tag = "1")]
384    pub title: ::prost::alloc::string::String,
385    #[prost(string, tag = "2")]
386    pub description: ::prost::alloc::string::String,
387    #[prost(message, optional, tag = "3")]
388    pub pool_params: ::core::option::Option<PoolParams>,
389    #[prost(message, repeated, tag = "4")]
390    pub pool_assets: ::prost::alloc::vec::Vec<PoolAsset>,
391}
392#[allow(clippy::derive_partial_eq_without_eq)]
393#[derive(
394    Clone,
395    PartialEq,
396    Eq,
397    ::prost::Message,
398    ::serde::Serialize,
399    ::serde::Deserialize,
400    ::schemars::JsonSchema,
401    CosmwasmExt,
402)]
403#[proto_message(type_url = "/elys.amm.ProposalUpdatePoolParams")]
404pub struct ProposalUpdatePoolParams {
405    #[prost(string, tag = "1")]
406    pub title: ::prost::alloc::string::String,
407    #[prost(string, tag = "2")]
408    pub description: ::prost::alloc::string::String,
409    #[prost(uint64, tag = "3")]
410    #[serde(alias = "poolID")]
411    #[serde(
412        serialize_with = "crate::serde::as_str::serialize",
413        deserialize_with = "crate::serde::as_str::deserialize"
414    )]
415    pub pool_id: u64,
416    #[prost(message, optional, tag = "4")]
417    pub pool_params: ::core::option::Option<PoolParams>,
418}
419/// QueryParamsRequest is request type for the Query/Params RPC method.
420#[allow(clippy::derive_partial_eq_without_eq)]
421#[derive(
422    Clone,
423    PartialEq,
424    Eq,
425    ::prost::Message,
426    ::serde::Serialize,
427    ::serde::Deserialize,
428    ::schemars::JsonSchema,
429    CosmwasmExt,
430)]
431#[proto_message(type_url = "/elys.amm.QueryParamsRequest")]
432#[proto_query(path = "/elys.amm.Query/Params", response_type = QueryParamsResponse)]
433pub struct QueryParamsRequest {}
434/// QueryParamsResponse is response type for the Query/Params RPC method.
435#[allow(clippy::derive_partial_eq_without_eq)]
436#[derive(
437    Clone,
438    PartialEq,
439    Eq,
440    ::prost::Message,
441    ::serde::Serialize,
442    ::serde::Deserialize,
443    ::schemars::JsonSchema,
444    CosmwasmExt,
445)]
446#[proto_message(type_url = "/elys.amm.QueryParamsResponse")]
447pub struct QueryParamsResponse {
448    /// params holds all the parameters of this module.
449    #[prost(message, optional, tag = "1")]
450    pub params: ::core::option::Option<Params>,
451}
452#[allow(clippy::derive_partial_eq_without_eq)]
453#[derive(
454    Clone,
455    PartialEq,
456    Eq,
457    ::prost::Message,
458    ::serde::Serialize,
459    ::serde::Deserialize,
460    ::schemars::JsonSchema,
461    CosmwasmExt,
462)]
463#[proto_message(type_url = "/elys.amm.QueryGetPoolRequest")]
464#[proto_query(path = "/elys.amm.Query/Pool", response_type = QueryGetPoolResponse)]
465pub struct QueryGetPoolRequest {
466    #[prost(uint64, tag = "1")]
467    #[serde(alias = "poolID")]
468    #[serde(
469        serialize_with = "crate::serde::as_str::serialize",
470        deserialize_with = "crate::serde::as_str::deserialize"
471    )]
472    pub pool_id: u64,
473    #[prost(uint64, tag = "2")]
474    #[serde(
475        serialize_with = "crate::serde::as_str::serialize",
476        deserialize_with = "crate::serde::as_str::deserialize"
477    )]
478    pub days: u64,
479}
480#[allow(clippy::derive_partial_eq_without_eq)]
481#[derive(
482    Clone,
483    PartialEq,
484    Eq,
485    ::prost::Message,
486    ::serde::Serialize,
487    ::serde::Deserialize,
488    ::schemars::JsonSchema,
489    CosmwasmExt,
490)]
491#[proto_message(type_url = "/elys.amm.QueryGetPoolResponse")]
492pub struct QueryGetPoolResponse {
493    #[prost(message, optional, tag = "1")]
494    pub pool: ::core::option::Option<Pool>,
495    #[prost(message, optional, tag = "2")]
496    pub extra_info: ::core::option::Option<PoolExtraInfo>,
497}
498#[allow(clippy::derive_partial_eq_without_eq)]
499#[derive(
500    Clone,
501    PartialEq,
502    Eq,
503    ::prost::Message,
504    ::serde::Serialize,
505    ::serde::Deserialize,
506    ::schemars::JsonSchema,
507    CosmwasmExt,
508)]
509#[proto_message(type_url = "/elys.amm.QueryAllPoolRequest")]
510#[proto_query(path = "/elys.amm.Query/PoolAll", response_type = QueryAllPoolResponse)]
511pub struct QueryAllPoolRequest {
512    #[prost(uint64, tag = "1")]
513    #[serde(
514        serialize_with = "crate::serde::as_str::serialize",
515        deserialize_with = "crate::serde::as_str::deserialize"
516    )]
517    pub days: u64,
518    #[prost(message, optional, tag = "2")]
519    pub pagination: ::core::option::Option<super::super::cosmos::base::query::v1beta1::PageRequest>,
520}
521#[allow(clippy::derive_partial_eq_without_eq)]
522#[derive(
523    Clone,
524    PartialEq,
525    Eq,
526    ::prost::Message,
527    ::serde::Serialize,
528    ::serde::Deserialize,
529    ::schemars::JsonSchema,
530    CosmwasmExt,
531)]
532#[proto_message(type_url = "/elys.amm.QueryAllPoolResponse")]
533pub struct QueryAllPoolResponse {
534    #[prost(message, repeated, tag = "1")]
535    pub pool: ::prost::alloc::vec::Vec<Pool>,
536    #[prost(message, repeated, tag = "2")]
537    pub extra_infos: ::prost::alloc::vec::Vec<PoolExtraInfo>,
538    #[prost(message, optional, tag = "3")]
539    pub pagination:
540        ::core::option::Option<super::super::cosmos::base::query::v1beta1::PageResponse>,
541}
542#[allow(clippy::derive_partial_eq_without_eq)]
543#[derive(
544    Clone,
545    PartialEq,
546    Eq,
547    ::prost::Message,
548    ::serde::Serialize,
549    ::serde::Deserialize,
550    ::schemars::JsonSchema,
551    CosmwasmExt,
552)]
553#[proto_message(type_url = "/elys.amm.QueryGetDenomLiquidityRequest")]
554#[proto_query(
555    path = "/elys.amm.Query/DenomLiquidity",
556    response_type = QueryGetDenomLiquidityResponse
557)]
558pub struct QueryGetDenomLiquidityRequest {
559    #[prost(string, tag = "1")]
560    pub denom: ::prost::alloc::string::String,
561}
562#[allow(clippy::derive_partial_eq_without_eq)]
563#[derive(
564    Clone,
565    PartialEq,
566    Eq,
567    ::prost::Message,
568    ::serde::Serialize,
569    ::serde::Deserialize,
570    ::schemars::JsonSchema,
571    CosmwasmExt,
572)]
573#[proto_message(type_url = "/elys.amm.QueryGetDenomLiquidityResponse")]
574pub struct QueryGetDenomLiquidityResponse {
575    #[prost(message, optional, tag = "1")]
576    pub denom_liquidity: ::core::option::Option<DenomLiquidity>,
577}
578#[allow(clippy::derive_partial_eq_without_eq)]
579#[derive(
580    Clone,
581    PartialEq,
582    Eq,
583    ::prost::Message,
584    ::serde::Serialize,
585    ::serde::Deserialize,
586    ::schemars::JsonSchema,
587    CosmwasmExt,
588)]
589#[proto_message(type_url = "/elys.amm.QueryAllDenomLiquidityRequest")]
590#[proto_query(
591    path = "/elys.amm.Query/DenomLiquidityAll",
592    response_type = QueryAllDenomLiquidityResponse
593)]
594pub struct QueryAllDenomLiquidityRequest {
595    #[prost(message, optional, tag = "1")]
596    pub pagination: ::core::option::Option<super::super::cosmos::base::query::v1beta1::PageRequest>,
597}
598#[allow(clippy::derive_partial_eq_without_eq)]
599#[derive(
600    Clone,
601    PartialEq,
602    Eq,
603    ::prost::Message,
604    ::serde::Serialize,
605    ::serde::Deserialize,
606    ::schemars::JsonSchema,
607    CosmwasmExt,
608)]
609#[proto_message(type_url = "/elys.amm.QueryAllDenomLiquidityResponse")]
610pub struct QueryAllDenomLiquidityResponse {
611    #[prost(message, repeated, tag = "1")]
612    pub denom_liquidity: ::prost::alloc::vec::Vec<DenomLiquidity>,
613    #[prost(message, optional, tag = "2")]
614    pub pagination:
615        ::core::option::Option<super::super::cosmos::base::query::v1beta1::PageResponse>,
616}
617#[allow(clippy::derive_partial_eq_without_eq)]
618#[derive(
619    Clone,
620    PartialEq,
621    Eq,
622    ::prost::Message,
623    ::serde::Serialize,
624    ::serde::Deserialize,
625    ::schemars::JsonSchema,
626    CosmwasmExt,
627)]
628#[proto_message(type_url = "/elys.amm.QuerySwapEstimationRequest")]
629#[proto_query(
630    path = "/elys.amm.Query/SwapEstimation",
631    response_type = QuerySwapEstimationResponse
632)]
633pub struct QuerySwapEstimationRequest {
634    #[prost(message, repeated, tag = "1")]
635    pub routes: ::prost::alloc::vec::Vec<SwapAmountInRoute>,
636    #[prost(message, optional, tag = "2")]
637    pub token_in: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
638    #[prost(string, tag = "3")]
639    pub discount: ::prost::alloc::string::String,
640}
641#[allow(clippy::derive_partial_eq_without_eq)]
642#[derive(
643    Clone,
644    PartialEq,
645    Eq,
646    ::prost::Message,
647    ::serde::Serialize,
648    ::serde::Deserialize,
649    ::schemars::JsonSchema,
650    CosmwasmExt,
651)]
652#[proto_message(type_url = "/elys.amm.QuerySwapEstimationExactAmountOutRequest")]
653#[proto_query(
654    path = "/elys.amm.Query/SwapEstimationExactAmountOut",
655    response_type = QuerySwapEstimationExactAmountOutResponse
656)]
657pub struct QuerySwapEstimationExactAmountOutRequest {
658    #[prost(message, repeated, tag = "1")]
659    pub routes: ::prost::alloc::vec::Vec<SwapAmountOutRoute>,
660    #[prost(message, optional, tag = "2")]
661    pub token_out: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
662    #[prost(string, tag = "3")]
663    pub discount: ::prost::alloc::string::String,
664}
665#[allow(clippy::derive_partial_eq_without_eq)]
666#[derive(
667    Clone,
668    PartialEq,
669    Eq,
670    ::prost::Message,
671    ::serde::Serialize,
672    ::serde::Deserialize,
673    ::schemars::JsonSchema,
674    CosmwasmExt,
675)]
676#[proto_message(type_url = "/elys.amm.QueryJoinPoolEstimationRequest")]
677#[proto_query(
678    path = "/elys.amm.Query/JoinPoolEstimation",
679    response_type = QueryJoinPoolEstimationResponse
680)]
681pub struct QueryJoinPoolEstimationRequest {
682    #[prost(uint64, tag = "1")]
683    #[serde(alias = "poolID")]
684    #[serde(
685        serialize_with = "crate::serde::as_str::serialize",
686        deserialize_with = "crate::serde::as_str::deserialize"
687    )]
688    pub pool_id: u64,
689    #[prost(message, repeated, tag = "2")]
690    pub amounts_in: ::prost::alloc::vec::Vec<super::super::cosmos::base::v1beta1::Coin>,
691}
692#[allow(clippy::derive_partial_eq_without_eq)]
693#[derive(
694    Clone,
695    PartialEq,
696    Eq,
697    ::prost::Message,
698    ::serde::Serialize,
699    ::serde::Deserialize,
700    ::schemars::JsonSchema,
701    CosmwasmExt,
702)]
703#[proto_message(type_url = "/elys.amm.QueryJoinPoolEstimationResponse")]
704pub struct QueryJoinPoolEstimationResponse {
705    #[prost(message, optional, tag = "1")]
706    pub share_amount_out: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
707    #[prost(message, repeated, tag = "2")]
708    pub amounts_in: ::prost::alloc::vec::Vec<super::super::cosmos::base::v1beta1::Coin>,
709    #[prost(string, tag = "3")]
710    pub slippage: ::prost::alloc::string::String,
711    #[prost(string, tag = "4")]
712    pub weight_balance_ratio: ::prost::alloc::string::String,
713    #[prost(string, tag = "5")]
714    pub swap_fee: ::prost::alloc::string::String,
715    #[prost(string, tag = "6")]
716    pub taker_fee: ::prost::alloc::string::String,
717}
718#[allow(clippy::derive_partial_eq_without_eq)]
719#[derive(
720    Clone,
721    PartialEq,
722    Eq,
723    ::prost::Message,
724    ::serde::Serialize,
725    ::serde::Deserialize,
726    ::schemars::JsonSchema,
727    CosmwasmExt,
728)]
729#[proto_message(type_url = "/elys.amm.QueryExitPoolEstimationRequest")]
730#[proto_query(
731    path = "/elys.amm.Query/ExitPoolEstimation",
732    response_type = QueryExitPoolEstimationResponse
733)]
734pub struct QueryExitPoolEstimationRequest {
735    #[prost(uint64, tag = "1")]
736    #[serde(alias = "poolID")]
737    #[serde(
738        serialize_with = "crate::serde::as_str::serialize",
739        deserialize_with = "crate::serde::as_str::deserialize"
740    )]
741    pub pool_id: u64,
742    #[prost(string, tag = "2")]
743    pub share_amount_in: ::prost::alloc::string::String,
744    #[prost(string, tag = "3")]
745    pub token_out_denom: ::prost::alloc::string::String,
746}
747#[allow(clippy::derive_partial_eq_without_eq)]
748#[derive(
749    Clone,
750    PartialEq,
751    Eq,
752    ::prost::Message,
753    ::serde::Serialize,
754    ::serde::Deserialize,
755    ::schemars::JsonSchema,
756    CosmwasmExt,
757)]
758#[proto_message(type_url = "/elys.amm.QueryExitPoolEstimationResponse")]
759pub struct QueryExitPoolEstimationResponse {
760    #[prost(message, repeated, tag = "1")]
761    pub amounts_out: ::prost::alloc::vec::Vec<super::super::cosmos::base::v1beta1::Coin>,
762    #[prost(string, tag = "2")]
763    pub weight_balance_ratio: ::prost::alloc::string::String,
764    #[prost(string, tag = "3")]
765    pub slippage: ::prost::alloc::string::String,
766    #[prost(string, tag = "4")]
767    pub swap_fee: ::prost::alloc::string::String,
768    #[prost(string, tag = "5")]
769    pub taker_fee: ::prost::alloc::string::String,
770}
771#[allow(clippy::derive_partial_eq_without_eq)]
772#[derive(
773    Clone,
774    PartialEq,
775    Eq,
776    ::prost::Message,
777    ::serde::Serialize,
778    ::serde::Deserialize,
779    ::schemars::JsonSchema,
780    CosmwasmExt,
781)]
782#[proto_message(type_url = "/elys.amm.QuerySwapEstimationResponse")]
783pub struct QuerySwapEstimationResponse {
784    #[prost(string, tag = "1")]
785    pub spot_price: ::prost::alloc::string::String,
786    #[prost(message, optional, tag = "2")]
787    pub token_out: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
788    #[prost(string, tag = "3")]
789    pub swap_fee: ::prost::alloc::string::String,
790    #[prost(string, tag = "4")]
791    pub discount: ::prost::alloc::string::String,
792    #[prost(message, optional, tag = "5")]
793    pub available_liquidity: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
794    #[prost(string, tag = "6")]
795    pub slippage: ::prost::alloc::string::String,
796    #[prost(string, tag = "7")]
797    pub weight_balance_ratio: ::prost::alloc::string::String,
798}
799#[allow(clippy::derive_partial_eq_without_eq)]
800#[derive(
801    Clone,
802    PartialEq,
803    Eq,
804    ::prost::Message,
805    ::serde::Serialize,
806    ::serde::Deserialize,
807    ::schemars::JsonSchema,
808    CosmwasmExt,
809)]
810#[proto_message(type_url = "/elys.amm.QuerySwapEstimationExactAmountOutResponse")]
811pub struct QuerySwapEstimationExactAmountOutResponse {
812    #[prost(string, tag = "1")]
813    pub spot_price: ::prost::alloc::string::String,
814    #[prost(message, optional, tag = "2")]
815    pub token_in: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
816    #[prost(string, tag = "3")]
817    pub swap_fee: ::prost::alloc::string::String,
818    #[prost(string, tag = "4")]
819    pub discount: ::prost::alloc::string::String,
820    #[prost(message, optional, tag = "5")]
821    pub available_liquidity: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
822    #[prost(string, tag = "6")]
823    pub slippage: ::prost::alloc::string::String,
824    #[prost(string, tag = "7")]
825    pub weight_balance_ratio: ::prost::alloc::string::String,
826}
827#[allow(clippy::derive_partial_eq_without_eq)]
828#[derive(
829    Clone,
830    PartialEq,
831    Eq,
832    ::prost::Message,
833    ::serde::Serialize,
834    ::serde::Deserialize,
835    ::schemars::JsonSchema,
836    CosmwasmExt,
837)]
838#[proto_message(type_url = "/elys.amm.QuerySlippageTrackRequest")]
839#[proto_query(
840    path = "/elys.amm.Query/SlippageTrack",
841    response_type = QuerySlippageTrackResponse
842)]
843pub struct QuerySlippageTrackRequest {
844    #[prost(uint64, tag = "1")]
845    #[serde(alias = "poolID")]
846    #[serde(
847        serialize_with = "crate::serde::as_str::serialize",
848        deserialize_with = "crate::serde::as_str::deserialize"
849    )]
850    pub pool_id: u64,
851}
852#[allow(clippy::derive_partial_eq_without_eq)]
853#[derive(
854    Clone,
855    PartialEq,
856    Eq,
857    ::prost::Message,
858    ::serde::Serialize,
859    ::serde::Deserialize,
860    ::schemars::JsonSchema,
861    CosmwasmExt,
862)]
863#[proto_message(type_url = "/elys.amm.QuerySlippageTrackResponse")]
864pub struct QuerySlippageTrackResponse {
865    #[prost(message, optional, tag = "1")]
866    pub track: ::core::option::Option<OraclePoolSlippageTrack>,
867}
868#[allow(clippy::derive_partial_eq_without_eq)]
869#[derive(
870    Clone,
871    PartialEq,
872    Eq,
873    ::prost::Message,
874    ::serde::Serialize,
875    ::serde::Deserialize,
876    ::schemars::JsonSchema,
877    CosmwasmExt,
878)]
879#[proto_message(type_url = "/elys.amm.QuerySlippageTrackAllRequest")]
880#[proto_query(
881    path = "/elys.amm.Query/SlippageTrackAll",
882    response_type = QuerySlippageTrackAllResponse
883)]
884pub struct QuerySlippageTrackAllRequest {}
885#[allow(clippy::derive_partial_eq_without_eq)]
886#[derive(
887    Clone,
888    PartialEq,
889    Eq,
890    ::prost::Message,
891    ::serde::Serialize,
892    ::serde::Deserialize,
893    ::schemars::JsonSchema,
894    CosmwasmExt,
895)]
896#[proto_message(type_url = "/elys.amm.QuerySlippageTrackAllResponse")]
897pub struct QuerySlippageTrackAllResponse {
898    #[prost(message, repeated, tag = "1")]
899    pub tracks: ::prost::alloc::vec::Vec<OraclePoolSlippageTrack>,
900}
901#[allow(clippy::derive_partial_eq_without_eq)]
902#[derive(
903    Clone,
904    PartialEq,
905    Eq,
906    ::prost::Message,
907    ::serde::Serialize,
908    ::serde::Deserialize,
909    ::schemars::JsonSchema,
910    CosmwasmExt,
911)]
912#[proto_message(type_url = "/elys.amm.QueryBalanceRequest")]
913#[proto_query(path = "/elys.amm.Query/Balance", response_type = QueryBalanceResponse)]
914pub struct QueryBalanceRequest {
915    #[prost(string, tag = "1")]
916    pub address: ::prost::alloc::string::String,
917    #[prost(string, tag = "2")]
918    pub denom: ::prost::alloc::string::String,
919}
920#[allow(clippy::derive_partial_eq_without_eq)]
921#[derive(
922    Clone,
923    PartialEq,
924    Eq,
925    ::prost::Message,
926    ::serde::Serialize,
927    ::serde::Deserialize,
928    ::schemars::JsonSchema,
929    CosmwasmExt,
930)]
931#[proto_message(type_url = "/elys.amm.QueryBalanceResponse")]
932pub struct QueryBalanceResponse {
933    #[prost(message, optional, tag = "1")]
934    pub balance: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
935}
936#[allow(clippy::derive_partial_eq_without_eq)]
937#[derive(
938    Clone,
939    PartialEq,
940    Eq,
941    ::prost::Message,
942    ::serde::Serialize,
943    ::serde::Deserialize,
944    ::schemars::JsonSchema,
945    CosmwasmExt,
946)]
947#[proto_message(type_url = "/elys.amm.QueryInRouteByDenomRequest")]
948#[proto_query(
949    path = "/elys.amm.Query/InRouteByDenom",
950    response_type = QueryInRouteByDenomResponse
951)]
952pub struct QueryInRouteByDenomRequest {
953    #[prost(string, tag = "1")]
954    pub denom_in: ::prost::alloc::string::String,
955    #[prost(string, tag = "2")]
956    pub denom_out: ::prost::alloc::string::String,
957}
958#[allow(clippy::derive_partial_eq_without_eq)]
959#[derive(
960    Clone,
961    PartialEq,
962    Eq,
963    ::prost::Message,
964    ::serde::Serialize,
965    ::serde::Deserialize,
966    ::schemars::JsonSchema,
967    CosmwasmExt,
968)]
969#[proto_message(type_url = "/elys.amm.QueryInRouteByDenomResponse")]
970pub struct QueryInRouteByDenomResponse {
971    #[prost(message, repeated, tag = "1")]
972    pub in_route: ::prost::alloc::vec::Vec<SwapAmountInRoute>,
973}
974#[allow(clippy::derive_partial_eq_without_eq)]
975#[derive(
976    Clone,
977    PartialEq,
978    Eq,
979    ::prost::Message,
980    ::serde::Serialize,
981    ::serde::Deserialize,
982    ::schemars::JsonSchema,
983    CosmwasmExt,
984)]
985#[proto_message(type_url = "/elys.amm.QueryOutRouteByDenomRequest")]
986#[proto_query(
987    path = "/elys.amm.Query/OutRouteByDenom",
988    response_type = QueryOutRouteByDenomResponse
989)]
990pub struct QueryOutRouteByDenomRequest {
991    #[prost(string, tag = "1")]
992    pub denom_out: ::prost::alloc::string::String,
993    #[prost(string, tag = "2")]
994    pub denom_in: ::prost::alloc::string::String,
995}
996#[allow(clippy::derive_partial_eq_without_eq)]
997#[derive(
998    Clone,
999    PartialEq,
1000    Eq,
1001    ::prost::Message,
1002    ::serde::Serialize,
1003    ::serde::Deserialize,
1004    ::schemars::JsonSchema,
1005    CosmwasmExt,
1006)]
1007#[proto_message(type_url = "/elys.amm.QueryOutRouteByDenomResponse")]
1008pub struct QueryOutRouteByDenomResponse {
1009    #[prost(message, repeated, tag = "1")]
1010    pub out_route: ::prost::alloc::vec::Vec<SwapAmountOutRoute>,
1011}
1012#[allow(clippy::derive_partial_eq_without_eq)]
1013#[derive(
1014    Clone,
1015    PartialEq,
1016    Eq,
1017    ::prost::Message,
1018    ::serde::Serialize,
1019    ::serde::Deserialize,
1020    ::schemars::JsonSchema,
1021    CosmwasmExt,
1022)]
1023#[proto_message(type_url = "/elys.amm.QuerySwapEstimationByDenomRequest")]
1024#[proto_query(
1025    path = "/elys.amm.Query/SwapEstimationByDenom",
1026    response_type = QuerySwapEstimationByDenomResponse
1027)]
1028pub struct QuerySwapEstimationByDenomRequest {
1029    #[prost(message, optional, tag = "1")]
1030    pub amount: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
1031    #[prost(string, tag = "2")]
1032    pub denom_in: ::prost::alloc::string::String,
1033    #[prost(string, tag = "3")]
1034    pub denom_out: ::prost::alloc::string::String,
1035    #[prost(string, tag = "4")]
1036    pub address: ::prost::alloc::string::String,
1037}
1038#[allow(clippy::derive_partial_eq_without_eq)]
1039#[derive(
1040    Clone,
1041    PartialEq,
1042    Eq,
1043    ::prost::Message,
1044    ::serde::Serialize,
1045    ::serde::Deserialize,
1046    ::schemars::JsonSchema,
1047    CosmwasmExt,
1048)]
1049#[proto_message(type_url = "/elys.amm.QuerySwapEstimationByDenomResponse")]
1050pub struct QuerySwapEstimationByDenomResponse {
1051    #[prost(message, repeated, tag = "1")]
1052    pub in_route: ::prost::alloc::vec::Vec<SwapAmountInRoute>,
1053    #[prost(message, repeated, tag = "2")]
1054    pub out_route: ::prost::alloc::vec::Vec<SwapAmountOutRoute>,
1055    #[prost(string, tag = "3")]
1056    pub spot_price: ::prost::alloc::string::String,
1057    #[prost(message, optional, tag = "4")]
1058    pub amount: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
1059    #[prost(string, tag = "5")]
1060    pub swap_fee: ::prost::alloc::string::String,
1061    #[prost(string, tag = "6")]
1062    pub discount: ::prost::alloc::string::String,
1063    #[prost(message, optional, tag = "7")]
1064    pub available_liquidity: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
1065    #[prost(string, tag = "8")]
1066    pub weight_balance_ratio: ::prost::alloc::string::String,
1067    #[prost(string, tag = "9")]
1068    pub slippage: ::prost::alloc::string::String,
1069    #[prost(string, tag = "10")]
1070    pub price_impact: ::prost::alloc::string::String,
1071}
1072#[allow(clippy::derive_partial_eq_without_eq)]
1073#[derive(
1074    Clone,
1075    PartialEq,
1076    Eq,
1077    ::prost::Message,
1078    ::serde::Serialize,
1079    ::serde::Deserialize,
1080    ::schemars::JsonSchema,
1081    CosmwasmExt,
1082)]
1083#[proto_message(type_url = "/elys.amm.QueryAMMPriceRequest")]
1084pub struct QueryAmmPriceRequest {
1085    #[prost(message, optional, tag = "1")]
1086    pub token_in: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
1087    #[prost(string, tag = "2")]
1088    pub discount: ::prost::alloc::string::String,
1089}
1090#[allow(clippy::derive_partial_eq_without_eq)]
1091#[derive(
1092    Clone,
1093    PartialEq,
1094    Eq,
1095    ::prost::Message,
1096    ::serde::Serialize,
1097    ::serde::Deserialize,
1098    ::schemars::JsonSchema,
1099    CosmwasmExt,
1100)]
1101#[proto_message(type_url = "/elys.amm.QueryWeightAndSlippageFeeRequest")]
1102#[proto_query(
1103    path = "/elys.amm.Query/WeightAndSlippageFee",
1104    response_type = QueryWeightAndSlippageFeeResponse
1105)]
1106pub struct QueryWeightAndSlippageFeeRequest {
1107    #[prost(uint64, tag = "1")]
1108    #[serde(alias = "poolID")]
1109    #[serde(
1110        serialize_with = "crate::serde::as_str::serialize",
1111        deserialize_with = "crate::serde::as_str::deserialize"
1112    )]
1113    pub pool_id: u64,
1114    #[prost(string, tag = "2")]
1115    pub date: ::prost::alloc::string::String,
1116}
1117#[allow(clippy::derive_partial_eq_without_eq)]
1118#[derive(
1119    Clone,
1120    PartialEq,
1121    Eq,
1122    ::prost::Message,
1123    ::serde::Serialize,
1124    ::serde::Deserialize,
1125    ::schemars::JsonSchema,
1126    CosmwasmExt,
1127)]
1128#[proto_message(type_url = "/elys.amm.QueryWeightAndSlippageFeeResponse")]
1129pub struct QueryWeightAndSlippageFeeResponse {
1130    #[prost(string, tag = "1")]
1131    pub value: ::prost::alloc::string::String,
1132}
1133#[allow(clippy::derive_partial_eq_without_eq)]
1134#[derive(
1135    Clone,
1136    PartialEq,
1137    Eq,
1138    ::prost::Message,
1139    ::serde::Serialize,
1140    ::serde::Deserialize,
1141    ::schemars::JsonSchema,
1142    CosmwasmExt,
1143)]
1144#[proto_message(type_url = "/elys.amm.MsgCreatePool")]
1145pub struct MsgCreatePool {
1146    #[prost(string, tag = "1")]
1147    pub sender: ::prost::alloc::string::String,
1148    #[prost(message, optional, tag = "2")]
1149    pub pool_params: ::core::option::Option<PoolParams>,
1150    #[prost(message, repeated, tag = "3")]
1151    pub pool_assets: ::prost::alloc::vec::Vec<PoolAsset>,
1152}
1153#[allow(clippy::derive_partial_eq_without_eq)]
1154#[derive(
1155    Clone,
1156    PartialEq,
1157    Eq,
1158    ::prost::Message,
1159    ::serde::Serialize,
1160    ::serde::Deserialize,
1161    ::schemars::JsonSchema,
1162    CosmwasmExt,
1163)]
1164#[proto_message(type_url = "/elys.amm.MsgCreatePoolResponse")]
1165pub struct MsgCreatePoolResponse {
1166    #[prost(uint64, tag = "1")]
1167    #[serde(alias = "poolID")]
1168    #[serde(
1169        serialize_with = "crate::serde::as_str::serialize",
1170        deserialize_with = "crate::serde::as_str::deserialize"
1171    )]
1172    pub pool_id: u64,
1173}
1174#[allow(clippy::derive_partial_eq_without_eq)]
1175#[derive(
1176    Clone,
1177    PartialEq,
1178    Eq,
1179    ::prost::Message,
1180    ::serde::Serialize,
1181    ::serde::Deserialize,
1182    ::schemars::JsonSchema,
1183    CosmwasmExt,
1184)]
1185#[proto_message(type_url = "/elys.amm.MsgJoinPool")]
1186pub struct MsgJoinPool {
1187    #[prost(string, tag = "1")]
1188    pub sender: ::prost::alloc::string::String,
1189    #[prost(uint64, tag = "2")]
1190    #[serde(alias = "poolID")]
1191    #[serde(
1192        serialize_with = "crate::serde::as_str::serialize",
1193        deserialize_with = "crate::serde::as_str::deserialize"
1194    )]
1195    pub pool_id: u64,
1196    #[prost(message, repeated, tag = "3")]
1197    pub max_amounts_in: ::prost::alloc::vec::Vec<super::super::cosmos::base::v1beta1::Coin>,
1198    #[prost(string, tag = "4")]
1199    pub share_amount_out: ::prost::alloc::string::String,
1200}
1201#[allow(clippy::derive_partial_eq_without_eq)]
1202#[derive(
1203    Clone,
1204    PartialEq,
1205    Eq,
1206    ::prost::Message,
1207    ::serde::Serialize,
1208    ::serde::Deserialize,
1209    ::schemars::JsonSchema,
1210    CosmwasmExt,
1211)]
1212#[proto_message(type_url = "/elys.amm.MsgJoinPoolResponse")]
1213pub struct MsgJoinPoolResponse {
1214    #[prost(string, tag = "1")]
1215    pub share_amount_out: ::prost::alloc::string::String,
1216    #[prost(message, repeated, tag = "2")]
1217    pub token_in: ::prost::alloc::vec::Vec<super::super::cosmos::base::v1beta1::Coin>,
1218}
1219#[allow(clippy::derive_partial_eq_without_eq)]
1220#[derive(
1221    Clone,
1222    PartialEq,
1223    Eq,
1224    ::prost::Message,
1225    ::serde::Serialize,
1226    ::serde::Deserialize,
1227    ::schemars::JsonSchema,
1228    CosmwasmExt,
1229)]
1230#[proto_message(type_url = "/elys.amm.MsgExitPool")]
1231pub struct MsgExitPool {
1232    #[prost(string, tag = "1")]
1233    pub sender: ::prost::alloc::string::String,
1234    #[prost(uint64, tag = "2")]
1235    #[serde(alias = "poolID")]
1236    #[serde(
1237        serialize_with = "crate::serde::as_str::serialize",
1238        deserialize_with = "crate::serde::as_str::deserialize"
1239    )]
1240    pub pool_id: u64,
1241    #[prost(message, repeated, tag = "3")]
1242    pub min_amounts_out: ::prost::alloc::vec::Vec<super::super::cosmos::base::v1beta1::Coin>,
1243    #[prost(string, tag = "4")]
1244    pub share_amount_in: ::prost::alloc::string::String,
1245    #[prost(string, tag = "5")]
1246    pub token_out_denom: ::prost::alloc::string::String,
1247}
1248#[allow(clippy::derive_partial_eq_without_eq)]
1249#[derive(
1250    Clone,
1251    PartialEq,
1252    Eq,
1253    ::prost::Message,
1254    ::serde::Serialize,
1255    ::serde::Deserialize,
1256    ::schemars::JsonSchema,
1257    CosmwasmExt,
1258)]
1259#[proto_message(type_url = "/elys.amm.MsgExitPoolResponse")]
1260pub struct MsgExitPoolResponse {
1261    #[prost(message, repeated, tag = "1")]
1262    pub token_out: ::prost::alloc::vec::Vec<super::super::cosmos::base::v1beta1::Coin>,
1263    #[prost(string, tag = "2")]
1264    pub weight_balance_ratio: ::prost::alloc::string::String,
1265    #[prost(string, tag = "3")]
1266    pub slippage: ::prost::alloc::string::String,
1267    #[prost(string, tag = "4")]
1268    pub swap_fee: ::prost::alloc::string::String,
1269}
1270#[allow(clippy::derive_partial_eq_without_eq)]
1271#[derive(
1272    Clone,
1273    PartialEq,
1274    Eq,
1275    ::prost::Message,
1276    ::serde::Serialize,
1277    ::serde::Deserialize,
1278    ::schemars::JsonSchema,
1279    CosmwasmExt,
1280)]
1281#[proto_message(type_url = "/elys.amm.MsgUpFrontSwapExactAmountIn")]
1282pub struct MsgUpFrontSwapExactAmountIn {
1283    #[prost(string, tag = "1")]
1284    pub sender: ::prost::alloc::string::String,
1285    #[prost(message, repeated, tag = "2")]
1286    pub routes: ::prost::alloc::vec::Vec<SwapAmountInRoute>,
1287    #[prost(message, optional, tag = "3")]
1288    pub token_in: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
1289    #[prost(string, tag = "4")]
1290    pub token_out_min_amount: ::prost::alloc::string::String,
1291}
1292#[allow(clippy::derive_partial_eq_without_eq)]
1293#[derive(
1294    Clone,
1295    PartialEq,
1296    Eq,
1297    ::prost::Message,
1298    ::serde::Serialize,
1299    ::serde::Deserialize,
1300    ::schemars::JsonSchema,
1301    CosmwasmExt,
1302)]
1303#[proto_message(type_url = "/elys.amm.MsgUpFrontSwapExactAmountInResponse")]
1304pub struct MsgUpFrontSwapExactAmountInResponse {
1305    #[prost(string, tag = "1")]
1306    pub token_out_amount: ::prost::alloc::string::String,
1307    #[prost(string, tag = "2")]
1308    pub swap_fee: ::prost::alloc::string::String,
1309    #[prost(string, tag = "3")]
1310    pub discount: ::prost::alloc::string::String,
1311}
1312#[allow(clippy::derive_partial_eq_without_eq)]
1313#[derive(
1314    Clone,
1315    PartialEq,
1316    Eq,
1317    ::prost::Message,
1318    ::serde::Serialize,
1319    ::serde::Deserialize,
1320    ::schemars::JsonSchema,
1321    CosmwasmExt,
1322)]
1323#[proto_message(type_url = "/elys.amm.MsgSwapExactAmountIn")]
1324pub struct MsgSwapExactAmountIn {
1325    #[prost(string, tag = "1")]
1326    pub sender: ::prost::alloc::string::String,
1327    #[prost(message, repeated, tag = "2")]
1328    pub routes: ::prost::alloc::vec::Vec<SwapAmountInRoute>,
1329    #[prost(message, optional, tag = "3")]
1330    pub token_in: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
1331    #[prost(string, tag = "4")]
1332    pub token_out_min_amount: ::prost::alloc::string::String,
1333    #[prost(string, tag = "5")]
1334    pub recipient: ::prost::alloc::string::String,
1335}
1336#[allow(clippy::derive_partial_eq_without_eq)]
1337#[derive(
1338    Clone,
1339    PartialEq,
1340    Eq,
1341    ::prost::Message,
1342    ::serde::Serialize,
1343    ::serde::Deserialize,
1344    ::schemars::JsonSchema,
1345    CosmwasmExt,
1346)]
1347#[proto_message(type_url = "/elys.amm.MsgSwapExactAmountInResponse")]
1348pub struct MsgSwapExactAmountInResponse {
1349    #[prost(string, tag = "1")]
1350    pub token_out_amount: ::prost::alloc::string::String,
1351    #[prost(string, tag = "2")]
1352    pub swap_fee: ::prost::alloc::string::String,
1353    #[prost(string, tag = "3")]
1354    pub discount: ::prost::alloc::string::String,
1355    #[prost(string, tag = "4")]
1356    pub recipient: ::prost::alloc::string::String,
1357}
1358#[allow(clippy::derive_partial_eq_without_eq)]
1359#[derive(
1360    Clone,
1361    PartialEq,
1362    Eq,
1363    ::prost::Message,
1364    ::serde::Serialize,
1365    ::serde::Deserialize,
1366    ::schemars::JsonSchema,
1367    CosmwasmExt,
1368)]
1369#[proto_message(type_url = "/elys.amm.MsgSwapExactAmountOut")]
1370pub struct MsgSwapExactAmountOut {
1371    #[prost(string, tag = "1")]
1372    pub sender: ::prost::alloc::string::String,
1373    #[prost(message, repeated, tag = "2")]
1374    pub routes: ::prost::alloc::vec::Vec<SwapAmountOutRoute>,
1375    #[prost(message, optional, tag = "3")]
1376    pub token_out: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
1377    #[prost(string, tag = "4")]
1378    pub token_in_max_amount: ::prost::alloc::string::String,
1379    #[prost(string, tag = "5")]
1380    pub recipient: ::prost::alloc::string::String,
1381}
1382#[allow(clippy::derive_partial_eq_without_eq)]
1383#[derive(
1384    Clone,
1385    PartialEq,
1386    Eq,
1387    ::prost::Message,
1388    ::serde::Serialize,
1389    ::serde::Deserialize,
1390    ::schemars::JsonSchema,
1391    CosmwasmExt,
1392)]
1393#[proto_message(type_url = "/elys.amm.MsgSwapExactAmountOutResponse")]
1394pub struct MsgSwapExactAmountOutResponse {
1395    #[prost(string, tag = "1")]
1396    pub token_in_amount: ::prost::alloc::string::String,
1397    #[prost(string, tag = "2")]
1398    pub swap_fee: ::prost::alloc::string::String,
1399    #[prost(string, tag = "3")]
1400    pub discount: ::prost::alloc::string::String,
1401    #[prost(string, tag = "4")]
1402    pub recipient: ::prost::alloc::string::String,
1403}
1404#[allow(clippy::derive_partial_eq_without_eq)]
1405#[derive(
1406    Clone,
1407    PartialEq,
1408    Eq,
1409    ::prost::Message,
1410    ::serde::Serialize,
1411    ::serde::Deserialize,
1412    ::schemars::JsonSchema,
1413    CosmwasmExt,
1414)]
1415#[proto_message(type_url = "/elys.amm.MsgFeedMultipleExternalLiquidity")]
1416pub struct MsgFeedMultipleExternalLiquidity {
1417    #[prost(string, tag = "1")]
1418    pub sender: ::prost::alloc::string::String,
1419    #[prost(message, repeated, tag = "2")]
1420    pub liquidity: ::prost::alloc::vec::Vec<ExternalLiquidity>,
1421}
1422#[allow(clippy::derive_partial_eq_without_eq)]
1423#[derive(
1424    Clone,
1425    PartialEq,
1426    Eq,
1427    ::prost::Message,
1428    ::serde::Serialize,
1429    ::serde::Deserialize,
1430    ::schemars::JsonSchema,
1431    CosmwasmExt,
1432)]
1433#[proto_message(type_url = "/elys.amm.MsgFeedMultipleExternalLiquidityResponse")]
1434pub struct MsgFeedMultipleExternalLiquidityResponse {}
1435#[allow(clippy::derive_partial_eq_without_eq)]
1436#[derive(
1437    Clone,
1438    PartialEq,
1439    Eq,
1440    ::prost::Message,
1441    ::serde::Serialize,
1442    ::serde::Deserialize,
1443    ::schemars::JsonSchema,
1444    CosmwasmExt,
1445)]
1446#[proto_message(type_url = "/elys.amm.AssetAmountDepth")]
1447pub struct AssetAmountDepth {
1448    #[prost(string, tag = "1")]
1449    pub asset: ::prost::alloc::string::String,
1450    #[prost(string, tag = "2")]
1451    pub amount: ::prost::alloc::string::String,
1452    #[prost(string, tag = "3")]
1453    pub depth: ::prost::alloc::string::String,
1454}
1455/// ExternalLiquidity defines price, volume, and time information for an exchange
1456/// rate.
1457#[allow(clippy::derive_partial_eq_without_eq)]
1458#[derive(
1459    Clone,
1460    PartialEq,
1461    Eq,
1462    ::prost::Message,
1463    ::serde::Serialize,
1464    ::serde::Deserialize,
1465    ::schemars::JsonSchema,
1466    CosmwasmExt,
1467)]
1468#[proto_message(type_url = "/elys.amm.ExternalLiquidity")]
1469pub struct ExternalLiquidity {
1470    #[prost(uint64, tag = "1")]
1471    #[serde(alias = "poolID")]
1472    #[serde(
1473        serialize_with = "crate::serde::as_str::serialize",
1474        deserialize_with = "crate::serde::as_str::deserialize"
1475    )]
1476    pub pool_id: u64,
1477    #[prost(message, repeated, tag = "2")]
1478    pub amount_depth_info: ::prost::alloc::vec::Vec<AssetAmountDepth>,
1479}
1480#[allow(clippy::derive_partial_eq_without_eq)]
1481#[derive(
1482    Clone,
1483    PartialEq,
1484    Eq,
1485    ::prost::Message,
1486    ::serde::Serialize,
1487    ::serde::Deserialize,
1488    ::schemars::JsonSchema,
1489    CosmwasmExt,
1490)]
1491#[proto_message(type_url = "/elys.amm.MsgSwapByDenom")]
1492pub struct MsgSwapByDenom {
1493    #[prost(string, tag = "1")]
1494    pub sender: ::prost::alloc::string::String,
1495    #[prost(message, optional, tag = "2")]
1496    pub amount: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
1497    #[prost(message, optional, tag = "3")]
1498    pub min_amount: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
1499    #[prost(message, optional, tag = "4")]
1500    pub max_amount: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
1501    #[prost(string, tag = "5")]
1502    pub denom_in: ::prost::alloc::string::String,
1503    #[prost(string, tag = "6")]
1504    pub denom_out: ::prost::alloc::string::String,
1505    #[prost(string, tag = "7")]
1506    pub recipient: ::prost::alloc::string::String,
1507}
1508#[allow(clippy::derive_partial_eq_without_eq)]
1509#[derive(
1510    Clone,
1511    PartialEq,
1512    Eq,
1513    ::prost::Message,
1514    ::serde::Serialize,
1515    ::serde::Deserialize,
1516    ::schemars::JsonSchema,
1517    CosmwasmExt,
1518)]
1519#[proto_message(type_url = "/elys.amm.MsgSwapByDenomResponse")]
1520pub struct MsgSwapByDenomResponse {
1521    #[prost(message, optional, tag = "1")]
1522    pub amount: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
1523    #[prost(message, repeated, tag = "2")]
1524    pub in_route: ::prost::alloc::vec::Vec<SwapAmountInRoute>,
1525    #[prost(message, repeated, tag = "3")]
1526    pub out_route: ::prost::alloc::vec::Vec<SwapAmountOutRoute>,
1527    #[prost(string, tag = "4")]
1528    pub spot_price: ::prost::alloc::string::String,
1529    #[prost(string, tag = "5")]
1530    pub swap_fee: ::prost::alloc::string::String,
1531    #[prost(string, tag = "6")]
1532    pub discount: ::prost::alloc::string::String,
1533    #[prost(string, tag = "7")]
1534    pub recipient: ::prost::alloc::string::String,
1535    #[prost(string, tag = "8")]
1536    pub slippage: ::prost::alloc::string::String,
1537    #[prost(string, tag = "9")]
1538    pub weight_bonus: ::prost::alloc::string::String,
1539}
1540#[allow(clippy::derive_partial_eq_without_eq)]
1541#[derive(
1542    Clone,
1543    PartialEq,
1544    Eq,
1545    ::prost::Message,
1546    ::serde::Serialize,
1547    ::serde::Deserialize,
1548    ::schemars::JsonSchema,
1549    CosmwasmExt,
1550)]
1551#[proto_message(type_url = "/elys.amm.MsgUpdatePoolParams")]
1552pub struct MsgUpdatePoolParams {
1553    #[prost(string, tag = "1")]
1554    pub authority: ::prost::alloc::string::String,
1555    #[prost(uint64, tag = "2")]
1556    #[serde(alias = "poolID")]
1557    #[serde(
1558        serialize_with = "crate::serde::as_str::serialize",
1559        deserialize_with = "crate::serde::as_str::deserialize"
1560    )]
1561    pub pool_id: u64,
1562    #[prost(message, optional, tag = "3")]
1563    pub pool_params: ::core::option::Option<PoolParams>,
1564}
1565#[allow(clippy::derive_partial_eq_without_eq)]
1566#[derive(
1567    Clone,
1568    PartialEq,
1569    Eq,
1570    ::prost::Message,
1571    ::serde::Serialize,
1572    ::serde::Deserialize,
1573    ::schemars::JsonSchema,
1574    CosmwasmExt,
1575)]
1576#[proto_message(type_url = "/elys.amm.MsgUpdatePoolParamsResponse")]
1577pub struct MsgUpdatePoolParamsResponse {
1578    #[prost(uint64, tag = "1")]
1579    #[serde(alias = "poolID")]
1580    #[serde(
1581        serialize_with = "crate::serde::as_str::serialize",
1582        deserialize_with = "crate::serde::as_str::deserialize"
1583    )]
1584    pub pool_id: u64,
1585    #[prost(message, optional, tag = "2")]
1586    pub pool_params: ::core::option::Option<PoolParams>,
1587}
1588#[allow(clippy::derive_partial_eq_without_eq)]
1589#[derive(
1590    Clone,
1591    PartialEq,
1592    Eq,
1593    ::prost::Message,
1594    ::serde::Serialize,
1595    ::serde::Deserialize,
1596    ::schemars::JsonSchema,
1597    CosmwasmExt,
1598)]
1599#[proto_message(type_url = "/elys.amm.MsgUpdateParams")]
1600pub struct MsgUpdateParams {
1601    #[prost(string, tag = "1")]
1602    pub authority: ::prost::alloc::string::String,
1603    #[prost(message, optional, tag = "2")]
1604    pub params: ::core::option::Option<Params>,
1605}
1606#[allow(clippy::derive_partial_eq_without_eq)]
1607#[derive(
1608    Clone,
1609    PartialEq,
1610    Eq,
1611    ::prost::Message,
1612    ::serde::Serialize,
1613    ::serde::Deserialize,
1614    ::schemars::JsonSchema,
1615    CosmwasmExt,
1616)]
1617#[proto_message(type_url = "/elys.amm.MsgUpdateParamsResponse")]
1618pub struct MsgUpdateParamsResponse {}
1619#[allow(clippy::derive_partial_eq_without_eq)]
1620#[derive(
1621    Clone,
1622    PartialEq,
1623    Eq,
1624    ::prost::Message,
1625    ::serde::Serialize,
1626    ::serde::Deserialize,
1627    ::schemars::JsonSchema,
1628    CosmwasmExt,
1629)]
1630#[proto_message(type_url = "/elys.amm.QueryEarnPoolRequest")]
1631pub struct QueryEarnPoolRequest {
1632    #[prost(uint64, repeated, tag = "1")]
1633    #[serde(alias = "poolIDs")]
1634    #[serde(
1635        serialize_with = "crate::serde::as_str_vec::serialize",
1636        deserialize_with = "crate::serde::as_str_vec::deserialize"
1637    )]
1638    pub pool_ids: ::prost::alloc::vec::Vec<u64>,
1639    #[prost(enumeration = "FilterType", tag = "2")]
1640    #[serde(
1641        serialize_with = "crate::serde::as_str::serialize",
1642        deserialize_with = "crate::serde::as_str::deserialize"
1643    )]
1644    pub filter_type: i32,
1645    #[prost(message, optional, tag = "3")]
1646    pub pagination: ::core::option::Option<super::super::cosmos::base::query::v1beta1::PageRequest>,
1647}
1648#[allow(clippy::derive_partial_eq_without_eq)]
1649#[derive(
1650    Clone,
1651    PartialEq,
1652    Eq,
1653    ::prost::Message,
1654    ::serde::Serialize,
1655    ::serde::Deserialize,
1656    ::schemars::JsonSchema,
1657    CosmwasmExt,
1658)]
1659#[proto_message(type_url = "/elys.amm.EarnPool")]
1660pub struct EarnPool {
1661    #[prost(uint64, tag = "1")]
1662    #[serde(alias = "poolID")]
1663    #[serde(
1664        serialize_with = "crate::serde::as_str::serialize",
1665        deserialize_with = "crate::serde::as_str::deserialize"
1666    )]
1667    pub pool_id: u64,
1668    #[prost(message, repeated, tag = "2")]
1669    pub assets: ::prost::alloc::vec::Vec<PoolAsset>,
1670    #[prost(string, tag = "3")]
1671    pub pool_ratio: ::prost::alloc::string::String,
1672    #[prost(string, tag = "4")]
1673    pub rewards_apr: ::prost::alloc::string::String,
1674    #[prost(string, tag = "5")]
1675    pub borrow_apr: ::prost::alloc::string::String,
1676    #[prost(string, tag = "6")]
1677    pub leverage_lp: ::prost::alloc::string::String,
1678    #[prost(string, tag = "7")]
1679    pub perpetual: ::prost::alloc::string::String,
1680    #[prost(string, tag = "8")]
1681    pub tvl: ::prost::alloc::string::String,
1682    #[prost(string, tag = "9")]
1683    pub lp_token_price: ::prost::alloc::string::String,
1684    #[prost(string, tag = "10")]
1685    pub rewards_usd: ::prost::alloc::string::String,
1686    #[prost(message, repeated, tag = "11")]
1687    pub reward_coins: ::prost::alloc::vec::Vec<super::super::cosmos::base::v1beta1::Coin>,
1688    #[prost(message, optional, tag = "12")]
1689    pub total_shares: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
1690    #[prost(string, tag = "13")]
1691    pub swap_fee: ::prost::alloc::string::String,
1692    #[prost(string, tag = "14")]
1693    pub fee_denom: ::prost::alloc::string::String,
1694    #[prost(bool, tag = "15")]
1695    pub use_oracle: bool,
1696    #[prost(bool, tag = "16")]
1697    pub is_leveragelp: bool,
1698}
1699#[allow(clippy::derive_partial_eq_without_eq)]
1700#[derive(
1701    Clone,
1702    PartialEq,
1703    Eq,
1704    ::prost::Message,
1705    ::serde::Serialize,
1706    ::serde::Deserialize,
1707    ::schemars::JsonSchema,
1708    CosmwasmExt,
1709)]
1710#[proto_message(type_url = "/elys.amm.QueryEarnPoolResponse")]
1711pub struct QueryEarnPoolResponse {
1712    #[prost(message, repeated, tag = "1")]
1713    pub pools: ::prost::alloc::vec::Vec<EarnPool>,
1714}
1715#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1716#[repr(i32)]
1717#[derive(::serde::Serialize, ::serde::Deserialize, ::schemars::JsonSchema)]
1718pub enum FilterType {
1719    FilterAll = 0,
1720    FilterPerpetual = 1,
1721    FilterFixedWeight = 2,
1722    FilterDynamicWeight = 3,
1723    FilterLeverage = 4,
1724}
1725impl FilterType {
1726    /// String value of the enum field names used in the ProtoBuf definition.
1727    ///
1728    /// The values are not transformed in any way and thus are considered stable
1729    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1730    pub fn as_str_name(&self) -> &'static str {
1731        match self {
1732            FilterType::FilterAll => "FILTER_ALL",
1733            FilterType::FilterPerpetual => "FILTER_PERPETUAL",
1734            FilterType::FilterFixedWeight => "FILTER_FIXED_WEIGHT",
1735            FilterType::FilterDynamicWeight => "FILTER_DYNAMIC_WEIGHT",
1736            FilterType::FilterLeverage => "FILTER_LEVERAGE",
1737        }
1738    }
1739    /// Creates an enum from field names used in the ProtoBuf definition.
1740    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1741        match value {
1742            "FILTER_ALL" => Some(Self::FilterAll),
1743            "FILTER_PERPETUAL" => Some(Self::FilterPerpetual),
1744            "FILTER_FIXED_WEIGHT" => Some(Self::FilterFixedWeight),
1745            "FILTER_DYNAMIC_WEIGHT" => Some(Self::FilterDynamicWeight),
1746            "FILTER_LEVERAGE" => Some(Self::FilterLeverage),
1747            _ => None,
1748        }
1749    }
1750}
1751pub struct AmmQuerier<'a, Q: cosmwasm_std::CustomQuery> {
1752    querier: &'a cosmwasm_std::QuerierWrapper<'a, Q>,
1753}
1754impl<'a, Q: cosmwasm_std::CustomQuery> AmmQuerier<'a, Q> {
1755    pub fn new(querier: &'a cosmwasm_std::QuerierWrapper<'a, Q>) -> Self {
1756        Self { querier }
1757    }
1758    pub fn params(&self) -> Result<QueryParamsResponse, cosmwasm_std::StdError> {
1759        QueryParamsRequest {}.query(self.querier)
1760    }
1761    pub fn pool(
1762        &self,
1763        pool_id: u64,
1764        days: u64,
1765    ) -> Result<QueryGetPoolResponse, cosmwasm_std::StdError> {
1766        QueryGetPoolRequest { pool_id, days }.query(self.querier)
1767    }
1768    pub fn pool_all(
1769        &self,
1770        days: u64,
1771        pagination: ::core::option::Option<super::super::cosmos::base::query::v1beta1::PageRequest>,
1772    ) -> Result<QueryAllPoolResponse, cosmwasm_std::StdError> {
1773        QueryAllPoolRequest { days, pagination }.query(self.querier)
1774    }
1775    pub fn denom_liquidity(
1776        &self,
1777        denom: ::prost::alloc::string::String,
1778    ) -> Result<QueryGetDenomLiquidityResponse, cosmwasm_std::StdError> {
1779        QueryGetDenomLiquidityRequest { denom }.query(self.querier)
1780    }
1781    pub fn denom_liquidity_all(
1782        &self,
1783        pagination: ::core::option::Option<super::super::cosmos::base::query::v1beta1::PageRequest>,
1784    ) -> Result<QueryAllDenomLiquidityResponse, cosmwasm_std::StdError> {
1785        QueryAllDenomLiquidityRequest { pagination }.query(self.querier)
1786    }
1787    pub fn swap_estimation(
1788        &self,
1789        routes: ::prost::alloc::vec::Vec<SwapAmountInRoute>,
1790        token_in: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
1791        discount: ::prost::alloc::string::String,
1792    ) -> Result<QuerySwapEstimationResponse, cosmwasm_std::StdError> {
1793        QuerySwapEstimationRequest {
1794            routes,
1795            token_in,
1796            discount,
1797        }
1798        .query(self.querier)
1799    }
1800    pub fn swap_estimation_exact_amount_out(
1801        &self,
1802        routes: ::prost::alloc::vec::Vec<SwapAmountOutRoute>,
1803        token_out: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
1804        discount: ::prost::alloc::string::String,
1805    ) -> Result<QuerySwapEstimationExactAmountOutResponse, cosmwasm_std::StdError> {
1806        QuerySwapEstimationExactAmountOutRequest {
1807            routes,
1808            token_out,
1809            discount,
1810        }
1811        .query(self.querier)
1812    }
1813    pub fn join_pool_estimation(
1814        &self,
1815        pool_id: u64,
1816        amounts_in: ::prost::alloc::vec::Vec<super::super::cosmos::base::v1beta1::Coin>,
1817    ) -> Result<QueryJoinPoolEstimationResponse, cosmwasm_std::StdError> {
1818        QueryJoinPoolEstimationRequest {
1819            pool_id,
1820            amounts_in,
1821        }
1822        .query(self.querier)
1823    }
1824    pub fn exit_pool_estimation(
1825        &self,
1826        pool_id: u64,
1827        share_amount_in: ::prost::alloc::string::String,
1828        token_out_denom: ::prost::alloc::string::String,
1829    ) -> Result<QueryExitPoolEstimationResponse, cosmwasm_std::StdError> {
1830        QueryExitPoolEstimationRequest {
1831            pool_id,
1832            share_amount_in,
1833            token_out_denom,
1834        }
1835        .query(self.querier)
1836    }
1837    pub fn slippage_track(
1838        &self,
1839        pool_id: u64,
1840    ) -> Result<QuerySlippageTrackResponse, cosmwasm_std::StdError> {
1841        QuerySlippageTrackRequest { pool_id }.query(self.querier)
1842    }
1843    pub fn slippage_track_all(
1844        &self,
1845    ) -> Result<QuerySlippageTrackAllResponse, cosmwasm_std::StdError> {
1846        QuerySlippageTrackAllRequest {}.query(self.querier)
1847    }
1848    pub fn balance(
1849        &self,
1850        address: ::prost::alloc::string::String,
1851        denom: ::prost::alloc::string::String,
1852    ) -> Result<QueryBalanceResponse, cosmwasm_std::StdError> {
1853        QueryBalanceRequest { address, denom }.query(self.querier)
1854    }
1855    pub fn in_route_by_denom(
1856        &self,
1857        denom_in: ::prost::alloc::string::String,
1858        denom_out: ::prost::alloc::string::String,
1859    ) -> Result<QueryInRouteByDenomResponse, cosmwasm_std::StdError> {
1860        QueryInRouteByDenomRequest {
1861            denom_in,
1862            denom_out,
1863        }
1864        .query(self.querier)
1865    }
1866    pub fn out_route_by_denom(
1867        &self,
1868        denom_out: ::prost::alloc::string::String,
1869        denom_in: ::prost::alloc::string::String,
1870    ) -> Result<QueryOutRouteByDenomResponse, cosmwasm_std::StdError> {
1871        QueryOutRouteByDenomRequest {
1872            denom_out,
1873            denom_in,
1874        }
1875        .query(self.querier)
1876    }
1877    pub fn swap_estimation_by_denom(
1878        &self,
1879        amount: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
1880        denom_in: ::prost::alloc::string::String,
1881        denom_out: ::prost::alloc::string::String,
1882        address: ::prost::alloc::string::String,
1883    ) -> Result<QuerySwapEstimationByDenomResponse, cosmwasm_std::StdError> {
1884        QuerySwapEstimationByDenomRequest {
1885            amount,
1886            denom_in,
1887            denom_out,
1888            address,
1889        }
1890        .query(self.querier)
1891    }
1892    pub fn weight_and_slippage_fee(
1893        &self,
1894        pool_id: u64,
1895        date: ::prost::alloc::string::String,
1896    ) -> Result<QueryWeightAndSlippageFeeResponse, cosmwasm_std::StdError> {
1897        QueryWeightAndSlippageFeeRequest { pool_id, date }.query(self.querier)
1898    }
1899}