1use serde::{Deserialize, Serialize};
17use ustr::Ustr;
18
19use crate::{
20 enums::Exchange,
21 parse::{deserialize_trade_id, deserialize_uppercase},
22};
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
26pub struct TardisBookUpdateRecord {
27 pub exchange: Exchange,
29 #[serde(deserialize_with = "deserialize_uppercase")]
31 pub symbol: Ustr,
32 pub timestamp: u64,
34 pub local_timestamp: u64,
36 pub is_snapshot: bool,
38 pub side: String,
40 pub price: f64,
42 pub amount: f64,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
48pub struct TardisOrderBookSnapshot5Record {
49 pub exchange: Exchange,
51 #[serde(deserialize_with = "deserialize_uppercase")]
53 pub symbol: Ustr,
54 pub timestamp: u64,
56 pub local_timestamp: u64,
58 pub asks_0_price: Option<f64>,
60 pub asks_0_amount: Option<f64>,
62 pub bids_0_price: Option<f64>,
64 pub bids_0_amount: Option<f64>,
66 pub asks_1_price: Option<f64>,
68 pub asks_1_amount: Option<f64>,
70 pub bids_1_price: Option<f64>,
72 pub bids_1_amount: Option<f64>,
74 pub asks_2_price: Option<f64>,
76 pub asks_2_amount: Option<f64>,
78 pub bids_2_price: Option<f64>,
80 pub bids_2_amount: Option<f64>,
82 pub asks_3_price: Option<f64>,
84 pub asks_3_amount: Option<f64>,
86 pub bids_3_price: Option<f64>,
88 pub bids_3_amount: Option<f64>,
90 pub asks_4_price: Option<f64>,
92 pub asks_4_amount: Option<f64>,
94 pub bids_4_price: Option<f64>,
96 pub bids_4_amount: Option<f64>,
98}
99
100#[derive(Debug, Clone, Serialize, Deserialize)]
102pub struct TardisOrderBookSnapshot25Record {
103 pub exchange: Exchange,
105 #[serde(deserialize_with = "deserialize_uppercase")]
107 pub symbol: Ustr,
108 pub timestamp: u64,
110 pub local_timestamp: u64,
112
113 pub asks_0_price: Option<f64>,
114 pub asks_0_amount: Option<f64>,
115 pub bids_0_price: Option<f64>,
116 pub bids_0_amount: Option<f64>,
117
118 pub asks_1_price: Option<f64>,
119 pub asks_1_amount: Option<f64>,
120 pub bids_1_price: Option<f64>,
121 pub bids_1_amount: Option<f64>,
122
123 pub asks_2_price: Option<f64>,
124 pub asks_2_amount: Option<f64>,
125 pub bids_2_price: Option<f64>,
126 pub bids_2_amount: Option<f64>,
127
128 pub asks_3_price: Option<f64>,
129 pub asks_3_amount: Option<f64>,
130 pub bids_3_price: Option<f64>,
131 pub bids_3_amount: Option<f64>,
132
133 pub asks_4_price: Option<f64>,
134 pub asks_4_amount: Option<f64>,
135 pub bids_4_price: Option<f64>,
136 pub bids_4_amount: Option<f64>,
137
138 pub asks_5_price: Option<f64>,
139 pub asks_5_amount: Option<f64>,
140 pub bids_5_price: Option<f64>,
141 pub bids_5_amount: Option<f64>,
142
143 pub asks_6_price: Option<f64>,
144 pub asks_6_amount: Option<f64>,
145 pub bids_6_price: Option<f64>,
146 pub bids_6_amount: Option<f64>,
147
148 pub asks_7_price: Option<f64>,
149 pub asks_7_amount: Option<f64>,
150 pub bids_7_price: Option<f64>,
151 pub bids_7_amount: Option<f64>,
152
153 pub asks_8_price: Option<f64>,
154 pub asks_8_amount: Option<f64>,
155 pub bids_8_price: Option<f64>,
156 pub bids_8_amount: Option<f64>,
157
158 pub asks_9_price: Option<f64>,
159 pub asks_9_amount: Option<f64>,
160 pub bids_9_price: Option<f64>,
161 pub bids_9_amount: Option<f64>,
162
163 pub asks_10_price: Option<f64>,
164 pub asks_10_amount: Option<f64>,
165 pub bids_10_price: Option<f64>,
166 pub bids_10_amount: Option<f64>,
167
168 pub asks_11_price: Option<f64>,
169 pub asks_11_amount: Option<f64>,
170 pub bids_11_price: Option<f64>,
171 pub bids_11_amount: Option<f64>,
172
173 pub asks_12_price: Option<f64>,
174 pub asks_12_amount: Option<f64>,
175 pub bids_12_price: Option<f64>,
176 pub bids_12_amount: Option<f64>,
177
178 pub asks_13_price: Option<f64>,
179 pub asks_13_amount: Option<f64>,
180 pub bids_13_price: Option<f64>,
181 pub bids_13_amount: Option<f64>,
182
183 pub asks_14_price: Option<f64>,
184 pub asks_14_amount: Option<f64>,
185 pub bids_14_price: Option<f64>,
186 pub bids_14_amount: Option<f64>,
187
188 pub asks_15_price: Option<f64>,
189 pub asks_15_amount: Option<f64>,
190 pub bids_15_price: Option<f64>,
191 pub bids_15_amount: Option<f64>,
192
193 pub asks_16_price: Option<f64>,
194 pub asks_16_amount: Option<f64>,
195 pub bids_16_price: Option<f64>,
196 pub bids_16_amount: Option<f64>,
197
198 pub asks_17_price: Option<f64>,
199 pub asks_17_amount: Option<f64>,
200 pub bids_17_price: Option<f64>,
201 pub bids_17_amount: Option<f64>,
202
203 pub asks_18_price: Option<f64>,
204 pub asks_18_amount: Option<f64>,
205 pub bids_18_price: Option<f64>,
206 pub bids_18_amount: Option<f64>,
207
208 pub asks_19_price: Option<f64>,
209 pub asks_19_amount: Option<f64>,
210 pub bids_19_price: Option<f64>,
211 pub bids_19_amount: Option<f64>,
212
213 pub asks_20_price: Option<f64>,
214 pub asks_20_amount: Option<f64>,
215 pub bids_20_price: Option<f64>,
216 pub bids_20_amount: Option<f64>,
217
218 pub asks_21_price: Option<f64>,
219 pub asks_21_amount: Option<f64>,
220 pub bids_21_price: Option<f64>,
221 pub bids_21_amount: Option<f64>,
222
223 pub asks_22_price: Option<f64>,
224 pub asks_22_amount: Option<f64>,
225 pub bids_22_price: Option<f64>,
226 pub bids_22_amount: Option<f64>,
227
228 pub asks_23_price: Option<f64>,
229 pub asks_23_amount: Option<f64>,
230 pub bids_23_price: Option<f64>,
231 pub bids_23_amount: Option<f64>,
232
233 pub asks_24_price: Option<f64>,
234 pub asks_24_amount: Option<f64>,
235 pub bids_24_price: Option<f64>,
236 pub bids_24_amount: Option<f64>,
237}
238
239#[derive(Debug, Clone, Serialize, Deserialize)]
241pub struct TardisQuoteRecord {
242 pub exchange: Exchange,
244 #[serde(deserialize_with = "deserialize_uppercase")]
246 pub symbol: Ustr,
247 pub timestamp: u64,
249 pub local_timestamp: u64,
251 pub ask_amount: Option<f64>,
253 pub ask_price: Option<f64>,
255 pub bid_price: Option<f64>,
257 pub bid_amount: Option<f64>,
259}
260
261#[derive(Debug, Clone, Serialize, Deserialize)]
263pub struct TardisTradeRecord {
264 pub exchange: Exchange,
266 #[serde(deserialize_with = "deserialize_uppercase")]
268 pub symbol: Ustr,
269 pub timestamp: u64,
271 pub local_timestamp: u64,
273 #[serde(deserialize_with = "deserialize_trade_id")]
275 pub id: String,
276 pub side: String,
278 pub price: f64,
280 pub amount: f64,
282}