1use serde::{Deserialize, Serialize};
17use ustr::Ustr;
18
19use crate::{enums::Exchange, parse::deserialize_uppercase};
20
21#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct TardisBookUpdateRecord {
24 pub exchange: Exchange,
26 #[serde(deserialize_with = "deserialize_uppercase")]
28 pub symbol: Ustr,
29 pub timestamp: u64,
31 pub local_timestamp: u64,
33 pub is_snapshot: bool,
35 pub side: String,
37 pub price: f64,
39 pub amount: f64,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
45pub struct TardisOrderBookSnapshot5Record {
46 pub exchange: Exchange,
48 #[serde(deserialize_with = "deserialize_uppercase")]
50 pub symbol: Ustr,
51 pub timestamp: u64,
53 pub local_timestamp: u64,
55 pub asks_0_price: Option<f64>,
57 pub asks_0_amount: Option<f64>,
59 pub bids_0_price: Option<f64>,
61 pub bids_0_amount: Option<f64>,
63 pub asks_1_price: Option<f64>,
65 pub asks_1_amount: Option<f64>,
67 pub bids_1_price: Option<f64>,
69 pub bids_1_amount: Option<f64>,
71 pub asks_2_price: Option<f64>,
73 pub asks_2_amount: Option<f64>,
75 pub bids_2_price: Option<f64>,
77 pub bids_2_amount: Option<f64>,
79 pub asks_3_price: Option<f64>,
81 pub asks_3_amount: Option<f64>,
83 pub bids_3_price: Option<f64>,
85 pub bids_3_amount: Option<f64>,
87 pub asks_4_price: Option<f64>,
89 pub asks_4_amount: Option<f64>,
91 pub bids_4_price: Option<f64>,
93 pub bids_4_amount: Option<f64>,
95}
96
97#[derive(Debug, Clone, Serialize, Deserialize)]
99pub struct TardisOrderBookSnapshot25Record {
100 pub exchange: Exchange,
102 #[serde(deserialize_with = "deserialize_uppercase")]
104 pub symbol: Ustr,
105 pub timestamp: u64,
107 pub local_timestamp: u64,
109
110 pub asks_0_price: Option<f64>,
111 pub asks_0_amount: Option<f64>,
112 pub bids_0_price: Option<f64>,
113 pub bids_0_amount: Option<f64>,
114
115 pub asks_1_price: Option<f64>,
116 pub asks_1_amount: Option<f64>,
117 pub bids_1_price: Option<f64>,
118 pub bids_1_amount: Option<f64>,
119
120 pub asks_2_price: Option<f64>,
121 pub asks_2_amount: Option<f64>,
122 pub bids_2_price: Option<f64>,
123 pub bids_2_amount: Option<f64>,
124
125 pub asks_3_price: Option<f64>,
126 pub asks_3_amount: Option<f64>,
127 pub bids_3_price: Option<f64>,
128 pub bids_3_amount: Option<f64>,
129
130 pub asks_4_price: Option<f64>,
131 pub asks_4_amount: Option<f64>,
132 pub bids_4_price: Option<f64>,
133 pub bids_4_amount: Option<f64>,
134
135 pub asks_5_price: Option<f64>,
136 pub asks_5_amount: Option<f64>,
137 pub bids_5_price: Option<f64>,
138 pub bids_5_amount: Option<f64>,
139
140 pub asks_6_price: Option<f64>,
141 pub asks_6_amount: Option<f64>,
142 pub bids_6_price: Option<f64>,
143 pub bids_6_amount: Option<f64>,
144
145 pub asks_7_price: Option<f64>,
146 pub asks_7_amount: Option<f64>,
147 pub bids_7_price: Option<f64>,
148 pub bids_7_amount: Option<f64>,
149
150 pub asks_8_price: Option<f64>,
151 pub asks_8_amount: Option<f64>,
152 pub bids_8_price: Option<f64>,
153 pub bids_8_amount: Option<f64>,
154
155 pub asks_9_price: Option<f64>,
156 pub asks_9_amount: Option<f64>,
157 pub bids_9_price: Option<f64>,
158 pub bids_9_amount: Option<f64>,
159
160 pub asks_10_price: Option<f64>,
161 pub asks_10_amount: Option<f64>,
162 pub bids_10_price: Option<f64>,
163 pub bids_10_amount: Option<f64>,
164
165 pub asks_11_price: Option<f64>,
166 pub asks_11_amount: Option<f64>,
167 pub bids_11_price: Option<f64>,
168 pub bids_11_amount: Option<f64>,
169
170 pub asks_12_price: Option<f64>,
171 pub asks_12_amount: Option<f64>,
172 pub bids_12_price: Option<f64>,
173 pub bids_12_amount: Option<f64>,
174
175 pub asks_13_price: Option<f64>,
176 pub asks_13_amount: Option<f64>,
177 pub bids_13_price: Option<f64>,
178 pub bids_13_amount: Option<f64>,
179
180 pub asks_14_price: Option<f64>,
181 pub asks_14_amount: Option<f64>,
182 pub bids_14_price: Option<f64>,
183 pub bids_14_amount: Option<f64>,
184
185 pub asks_15_price: Option<f64>,
186 pub asks_15_amount: Option<f64>,
187 pub bids_15_price: Option<f64>,
188 pub bids_15_amount: Option<f64>,
189
190 pub asks_16_price: Option<f64>,
191 pub asks_16_amount: Option<f64>,
192 pub bids_16_price: Option<f64>,
193 pub bids_16_amount: Option<f64>,
194
195 pub asks_17_price: Option<f64>,
196 pub asks_17_amount: Option<f64>,
197 pub bids_17_price: Option<f64>,
198 pub bids_17_amount: Option<f64>,
199
200 pub asks_18_price: Option<f64>,
201 pub asks_18_amount: Option<f64>,
202 pub bids_18_price: Option<f64>,
203 pub bids_18_amount: Option<f64>,
204
205 pub asks_19_price: Option<f64>,
206 pub asks_19_amount: Option<f64>,
207 pub bids_19_price: Option<f64>,
208 pub bids_19_amount: Option<f64>,
209
210 pub asks_20_price: Option<f64>,
211 pub asks_20_amount: Option<f64>,
212 pub bids_20_price: Option<f64>,
213 pub bids_20_amount: Option<f64>,
214
215 pub asks_21_price: Option<f64>,
216 pub asks_21_amount: Option<f64>,
217 pub bids_21_price: Option<f64>,
218 pub bids_21_amount: Option<f64>,
219
220 pub asks_22_price: Option<f64>,
221 pub asks_22_amount: Option<f64>,
222 pub bids_22_price: Option<f64>,
223 pub bids_22_amount: Option<f64>,
224
225 pub asks_23_price: Option<f64>,
226 pub asks_23_amount: Option<f64>,
227 pub bids_23_price: Option<f64>,
228 pub bids_23_amount: Option<f64>,
229
230 pub asks_24_price: Option<f64>,
231 pub asks_24_amount: Option<f64>,
232 pub bids_24_price: Option<f64>,
233 pub bids_24_amount: Option<f64>,
234}
235
236#[derive(Debug, Clone, Serialize, Deserialize)]
238pub struct TardisQuoteRecord {
239 pub exchange: Exchange,
241 #[serde(deserialize_with = "deserialize_uppercase")]
243 pub symbol: Ustr,
244 pub timestamp: u64,
246 pub local_timestamp: u64,
248 pub ask_amount: Option<f64>,
250 pub ask_price: Option<f64>,
252 pub bid_price: Option<f64>,
254 pub bid_amount: Option<f64>,
256}
257
258#[derive(Debug, Clone, Serialize, Deserialize)]
260pub struct TardisTradeRecord {
261 pub exchange: Exchange,
263 #[serde(deserialize_with = "deserialize_uppercase")]
265 pub symbol: Ustr,
266 pub timestamp: u64,
268 pub local_timestamp: u64,
270 pub id: String,
272 pub side: String,
274 pub price: f64,
276 pub amount: f64,
278}