midgard_rs/types/
swap_interval.rs

1use chrono::{DateTime, Utc};
2use rust_decimal::Decimal;
3use serde::{Deserialize, Serialize};
4use serde_aux::prelude::*;
5use serde_with::formats::Flexible;
6use serde_with::TimestampSeconds;
7
8/*
9
10*** Swap Interval Scheme ***
11
12{
13		"averageSlip": "0.5609422343856906",
14		"endTime": "1707782400",
15		"runePriceUSD": "5.417852169697646",
16		"startTime": "1707696000",
17		"synthMintAverageSlip": "0.49173673528559003",
18		"synthMintCount": "3449",
19		"synthMintFees": "45112553937",
20		"synthMintVolume": "265277256225952",
21		"synthRedeemAverageSlip": "0.7669039145907474",
22		"synthRedeemCount": "2810",
23		"synthRedeemFees": "101863630733",
24		"synthRedeemVolume": "302558513849561",
25		"toAssetAverageSlip": "1.150107991360691",
26		"toAssetCount": "926",
27		"toAssetFees": "65720423962",
28		"toAssetVolume": "125269292031867",
29		"toRuneAverageSlip": "0.27019041365725543",
30		"toRuneCount": "3046",
31		"toRuneFees": "11119515286",
32		"toRuneVolume": "114062146103572",
33		"totalCount": "10231",
34		"totalFees": "223816123918",
35		"totalVolume": "807167208210952"
36}
37
38*/
39
40#[serde_with::serde_as]
41#[derive(Debug, Serialize, Deserialize, Clone, Default)]
42pub struct SwapInterval {
43	#[serde(rename = "averageSlip", with = "rust_decimal::serde::str")]
44	average_slip: Decimal,
45
46	#[serde_as(as = "TimestampSeconds<String, Flexible>")]
47	#[serde(rename = "endTime")]
48	end_time: DateTime<Utc>,
49
50	#[serde(rename = "runePriceUSD", with = "rust_decimal::serde::str")]
51	rune_price_usd: Decimal,
52
53	#[serde_as(as = "TimestampSeconds<String, Flexible>")]
54	#[serde(rename = "startTime")]
55	start_time: DateTime<Utc>,
56
57	#[serde(rename = "synthMintAverageSlip", with = "rust_decimal::serde::str")]
58	synth_mint_average_slip: Decimal,
59
60	#[serde(rename = "synthMintCount", deserialize_with = "deserialize_number_from_string")]
61	synth_mint_count: u64,
62
63	#[serde(rename = "synthMintFees", deserialize_with = "deserialize_number_from_string")]
64	synth_mint_fees: u64,
65
66	#[serde(rename = "synthMintVolume", deserialize_with = "deserialize_number_from_string")]
67	synth_mint_volume: u64,
68
69	#[serde(rename = "synthRedeemAverageSlip", with = "rust_decimal::serde::str")]
70	synth_redeem_average_slip: Decimal,
71
72	#[serde(rename = "synthRedeemCount", deserialize_with = "deserialize_number_from_string")]
73	synth_redeem_count: u64,
74
75	#[serde(rename = "synthRedeemFees", deserialize_with = "deserialize_number_from_string")]
76	synth_redeem_fees: u64,
77
78	#[serde(rename = "synthRedeemVolume", deserialize_with = "deserialize_number_from_string")]
79	synth_redeem_volume: u64,
80
81	#[serde(rename = "toAssetAverageSlip", with = "rust_decimal::serde::str")]
82	to_asset_average_slip: Decimal,
83
84	#[serde(rename = "toAssetCount", deserialize_with = "deserialize_number_from_string")]
85	to_asset_count: u64,
86
87	#[serde(rename = "toAssetFees", deserialize_with = "deserialize_number_from_string")]
88	to_asset_fees: u64,
89
90	#[serde(rename = "toAssetVolume", deserialize_with = "deserialize_number_from_string")]
91	to_asset_volume: u64,
92
93	#[serde(rename = "toAssetVolumeUSD", deserialize_with = "deserialize_option_number_from_string")]
94	to_asset_volume_usd: Option<u64>,
95
96	#[serde(rename = "toRuneAverageSlip", with = "rust_decimal::serde::str")]
97	to_rune_average_slip: Decimal,
98
99	#[serde(rename = "toRuneCount", deserialize_with = "deserialize_number_from_string")]
100	to_rune_count: u64,
101
102	#[serde(rename = "toRuneFees", deserialize_with = "deserialize_number_from_string")]
103	to_rune_fees: u64,
104
105	#[serde(rename = "toRuneVolume", deserialize_with = "deserialize_number_from_string")]
106	to_rune_volume: u64,
107
108	#[serde(rename = "toRuneVolumeUSD", deserialize_with = "deserialize_option_number_from_string")]
109	to_rune_volume_usd: Option<u64>,
110
111	#[serde(rename = "totalCount", deserialize_with = "deserialize_number_from_string")]
112	total_count: u64,
113
114	#[serde(rename = "totalFees", deserialize_with = "deserialize_number_from_string")]
115	total_fees: u64,
116
117	#[serde(rename = "totalVolume", deserialize_with = "deserialize_number_from_string")]
118	total_volume: u64,
119
120	#[serde(rename = "totalVolumeUSD", deserialize_with = "deserialize_option_number_from_string")]
121	total_volume_usd: Option<u64>,
122}
123
124impl SwapInterval {
125	#[must_use]
126	pub const fn get_average_slip(&self) -> &Decimal {
127		&self.average_slip
128	}
129
130	#[must_use]
131	pub const fn get_end_time(&self) -> &DateTime<Utc> {
132		&self.end_time
133	}
134
135	#[must_use]
136	pub const fn get_rune_price_usd(&self) -> &Decimal {
137		&self.rune_price_usd
138	}
139
140	#[must_use]
141	pub const fn get_start_time(&self) -> &DateTime<Utc> {
142		&self.start_time
143	}
144
145	#[must_use]
146	pub const fn get_synth_mint_average_slip(&self) -> &Decimal {
147		&self.synth_mint_average_slip
148	}
149
150	#[must_use]
151	pub const fn get_synth_mint_count(&self) -> &u64 {
152		&self.synth_mint_count
153	}
154
155	#[must_use]
156	pub const fn get_synth_mint_fees(&self) -> &u64 {
157		&self.synth_mint_fees
158	}
159
160	#[must_use]
161	pub const fn get_synth_mint_volume(&self) -> &u64 {
162		&self.synth_mint_volume
163	}
164
165	#[must_use]
166	pub const fn get_synth_redeem_average_slip(&self) -> &Decimal {
167		&self.synth_redeem_average_slip
168	}
169
170	#[must_use]
171	pub const fn get_synth_redeem_count(&self) -> &u64 {
172		&self.synth_redeem_count
173	}
174
175	#[must_use]
176	pub const fn get_synth_redeem_fees(&self) -> &u64 {
177		&self.synth_redeem_fees
178	}
179
180	#[must_use]
181	pub const fn get_synth_redeem_volume(&self) -> &u64 {
182		&self.synth_redeem_volume
183	}
184
185	#[must_use]
186	pub const fn get_to_asset_average_slip(&self) -> &Decimal {
187		&self.to_asset_average_slip
188	}
189
190	#[must_use]
191	pub const fn get_to_asset_count(&self) -> &u64 {
192		&self.to_asset_count
193	}
194
195	#[must_use]
196	pub const fn get_to_asset_fees(&self) -> &u64 {
197		&self.to_asset_fees
198	}
199
200	#[must_use]
201	pub const fn get_to_asset_volume(&self) -> &u64 {
202		&self.to_asset_volume
203	}
204
205	#[must_use]
206	pub const fn get_to_asset_volume_usd(&self) -> &Option<u64> {
207		&self.to_asset_volume_usd
208	}
209
210	#[must_use]
211	pub const fn get_to_rune_average_slip(&self) -> &Decimal {
212		&self.to_rune_average_slip
213	}
214
215	#[must_use]
216	pub const fn get_to_rune_count(&self) -> &u64 {
217		&self.to_rune_count
218	}
219
220	#[must_use]
221	pub const fn get_to_rune_fees(&self) -> &u64 {
222		&self.to_rune_fees
223	}
224
225	#[must_use]
226	pub const fn get_to_rune_volume(&self) -> &u64 {
227		&self.to_rune_volume
228	}
229
230	#[must_use]
231	pub const fn get_to_rune_volume_usd(&self) -> &Option<u64> {
232		&self.to_rune_volume_usd
233	}
234
235	#[must_use]
236	pub const fn get_total_count(&self) -> &u64 {
237		&self.total_count
238	}
239
240	#[must_use]
241	pub const fn get_total_fees(&self) -> &u64 {
242		&self.total_fees
243	}
244
245	#[must_use]
246	pub const fn get_total_volume(&self) -> &u64 {
247		&self.total_volume
248	}
249
250	#[must_use]
251	pub const fn get_total_volume_usd(&self) -> &Option<u64> {
252		&self.total_volume_usd
253	}
254}