1use serde::Deserialize;
2
3use crate::{
4 NumberString,
5 model::{OrderSide, OrderState, OrderType, PositionSide, TradeMode},
6};
7
8mod advanced;
9mod algo;
10
11pub use advanced::*;
12pub use algo::*;
13
14#[derive(Debug, Clone, Deserialize)]
16#[serde(rename_all = "camelCase")]
17#[non_exhaustive]
18pub struct PlaceOrderResult {
19 #[serde(default)]
21 pub ord_id: String,
22 #[serde(default)]
24 pub cl_ord_id: String,
25 #[serde(default)]
27 pub tag: String,
28 pub s_code: String,
30 #[serde(default)]
32 pub s_msg: String,
33 #[serde(default)]
35 pub sub_code: String,
36 #[serde(default)]
38 pub ts: NumberString,
39}
40
41#[derive(Debug, Clone, Deserialize)]
43#[serde(rename_all = "camelCase")]
44#[non_exhaustive]
45pub struct CancelOrderResult {
46 #[serde(default)]
48 pub ord_id: String,
49 #[serde(default)]
51 pub cl_ord_id: String,
52 pub s_code: String,
54 #[serde(default)]
56 pub s_msg: String,
57 #[serde(default)]
59 pub ts: NumberString,
60}
61
62#[derive(Debug, Clone, Deserialize)]
64#[serde(rename_all = "camelCase")]
65#[non_exhaustive]
66pub struct AmendOrderResult {
67 #[serde(default)]
69 pub ord_id: String,
70 #[serde(default)]
72 pub cl_ord_id: String,
73 #[serde(default)]
75 pub req_id: String,
76 pub s_code: String,
78 #[serde(default)]
80 pub s_msg: String,
81 #[serde(default)]
83 pub sub_code: String,
84 #[serde(default)]
86 pub ts: NumberString,
87}
88
89#[derive(Debug, Clone, Deserialize)]
91#[serde(rename_all = "camelCase")]
92#[non_exhaustive]
93pub struct ClosePositionResult {
94 #[serde(default)]
96 pub inst_id: String,
97 #[serde(default)]
99 pub pos_side: String,
100 #[serde(default)]
102 pub cl_ord_id: String,
103 #[serde(default)]
105 pub tag: String,
106}
107
108#[derive(Debug, Clone, Deserialize)]
110#[serde(rename_all = "camelCase")]
111#[non_exhaustive]
112pub struct OrderAttachAlgoOrder {
113 #[serde(default)]
115 pub attach_algo_id: String,
116 #[serde(default)]
118 pub attach_algo_cl_ord_id: String,
119 #[serde(default)]
121 pub tp_ord_kind: String,
122 #[serde(default)]
124 pub tp_trigger_px: NumberString,
125 #[serde(default)]
127 pub tp_trigger_ratio: NumberString,
128 #[serde(default)]
130 pub tp_trigger_px_type: String,
131 #[serde(default)]
133 pub tp_ord_px: NumberString,
134 #[serde(default)]
136 pub sl_trigger_px: NumberString,
137 #[serde(default)]
139 pub sl_trigger_ratio: NumberString,
140 #[serde(default)]
142 pub sl_trigger_px_type: String,
143 #[serde(default)]
145 pub sl_ord_px: NumberString,
146 #[serde(default)]
148 pub sz: NumberString,
149 #[serde(default)]
151 pub amend_px_on_trigger_type: String,
152 #[serde(default)]
154 pub callback_ratio: NumberString,
155 #[serde(default)]
157 pub callback_spread: NumberString,
158 #[serde(default)]
160 pub active_px: NumberString,
161 #[serde(default)]
163 pub fail_code: String,
164 #[serde(default)]
166 pub fail_reason: String,
167}
168
169#[derive(Debug, Clone, Deserialize)]
171#[serde(rename_all = "camelCase")]
172#[non_exhaustive]
173pub struct OrderLinkedAlgoOrder {
174 #[serde(default)]
176 pub algo_id: String,
177}
178
179#[derive(Debug, Clone, Deserialize)]
181#[serde(rename_all = "camelCase")]
182#[non_exhaustive]
183pub struct Order {
184 #[serde(default)]
186 pub inst_type: String,
187 pub inst_id: String,
189 #[serde(default)]
191 pub tgt_ccy: String,
192 #[serde(default)]
194 pub ccy: String,
195 pub ord_id: String,
197 #[serde(default)]
199 pub cl_ord_id: String,
200 #[serde(default)]
202 pub tag: String,
203 #[serde(default)]
205 pub px: NumberString,
206 #[serde(default)]
208 pub px_usd: NumberString,
209 #[serde(default)]
211 pub px_vol: NumberString,
212 #[serde(default)]
214 pub px_type: String,
215 #[serde(default)]
217 pub sz: NumberString,
218 #[serde(default)]
220 pub pnl: NumberString,
221 pub ord_type: OrderType,
223 pub side: OrderSide,
225 pub pos_side: PositionSide,
227 pub td_mode: TradeMode,
229 #[serde(default)]
231 pub acc_fill_sz: NumberString,
232 #[serde(default)]
234 pub fill_px: NumberString,
235 #[serde(default)]
237 pub trade_id: String,
238 #[serde(default)]
240 pub fill_sz: NumberString,
241 #[serde(default)]
243 pub fill_time: NumberString,
244 #[serde(default)]
246 pub avg_px: NumberString,
247 pub state: OrderState,
249 #[serde(default)]
251 pub stp_id: String,
252 #[serde(default)]
254 pub stp_mode: String,
255 #[serde(default)]
257 pub lever: NumberString,
258 #[serde(default)]
260 pub attach_algo_cl_ord_id: String,
261 #[serde(default)]
263 pub tp_trigger_px: NumberString,
264 #[serde(default)]
266 pub tp_trigger_px_type: String,
267 #[serde(default)]
269 pub tp_ord_px: NumberString,
270 #[serde(default)]
272 pub sl_trigger_px: NumberString,
273 #[serde(default)]
275 pub sl_trigger_px_type: String,
276 #[serde(default)]
278 pub sl_ord_px: NumberString,
279 #[serde(default)]
281 pub attach_algo_ords: Vec<OrderAttachAlgoOrder>,
282 #[serde(default)]
284 pub linked_algo_ord: Option<OrderLinkedAlgoOrder>,
285 #[serde(default)]
287 pub fee_ccy: String,
288 #[serde(default)]
290 pub fee: NumberString,
291 #[serde(default)]
293 pub rebate_ccy: String,
294 #[serde(default)]
296 pub rebate: NumberString,
297 #[serde(default)]
299 pub source: String,
300 #[serde(default)]
302 pub category: String,
303 #[serde(default)]
305 pub reduce_only: String,
306 #[serde(default)]
308 pub is_tp_limit: String,
309 #[serde(default)]
311 pub cancel_source: String,
312 #[serde(default)]
314 pub cancel_source_reason: String,
315 #[serde(default)]
317 pub quick_mgn_type: String,
318 #[serde(default)]
320 pub algo_cl_ord_id: String,
321 #[serde(default)]
323 pub algo_id: String,
324 #[serde(default)]
326 pub u_time: NumberString,
327 #[serde(default)]
329 pub c_time: NumberString,
330 #[serde(default)]
332 pub trade_quote_ccy: String,
333 #[serde(default)]
335 pub outcome: String,
336}
337
338#[derive(Debug, Clone, Deserialize)]
340#[serde(rename_all = "camelCase")]
341#[non_exhaustive]
342pub struct Fill {
343 #[serde(default)]
345 pub inst_type: String,
346 pub inst_id: String,
348 #[serde(default)]
350 pub trade_id: String,
351 #[serde(default)]
353 pub ord_id: String,
354 #[serde(default)]
356 pub cl_ord_id: String,
357 #[serde(default)]
359 pub bill_id: String,
360 #[serde(default)]
362 pub sub_type: String,
363 #[serde(default)]
365 pub tag: String,
366 #[serde(default)]
368 pub fill_px: NumberString,
369 #[serde(default)]
371 pub fill_sz: NumberString,
372 #[serde(default)]
374 pub fill_idx_px: NumberString,
375 #[serde(default)]
377 pub fill_pnl: NumberString,
378 #[serde(default)]
380 pub fill_px_vol: NumberString,
381 #[serde(default)]
383 pub fill_px_usd: NumberString,
384 #[serde(default)]
386 pub fill_mark_vol: NumberString,
387 #[serde(default)]
389 pub fill_fwd_px: NumberString,
390 #[serde(default)]
392 pub fill_mark_px: NumberString,
393 pub side: OrderSide,
395 #[serde(default)]
397 pub pos_side: String,
398 #[serde(default)]
400 pub exec_type: String,
401 #[serde(default)]
406 pub ord_type: Option<OrderType>,
407 #[serde(default)]
409 pub fee_ccy: String,
410 #[serde(default)]
412 pub fee: NumberString,
413 #[serde(default)]
415 pub fee_rate: NumberString,
416 #[serde(default)]
418 pub ts: NumberString,
419 #[serde(default)]
421 pub fill_time: NumberString,
422 #[serde(default)]
424 pub trade_quote_ccy: String,
425}
426
427#[derive(Debug, Clone, Deserialize)]
433#[serde(rename_all = "camelCase")]
434#[non_exhaustive]
435pub struct FillHistory {
436 #[serde(default)]
438 pub inst_type: String,
439 pub inst_id: String,
441 #[serde(default)]
443 pub trade_id: String,
444 #[serde(default)]
446 pub ord_id: String,
447 #[serde(default)]
449 pub cl_ord_id: String,
450 #[serde(default)]
452 pub bill_id: String,
453 #[serde(default)]
455 pub sub_type: String,
456 #[serde(default)]
458 pub tag: String,
459 #[serde(default)]
461 pub fill_px: NumberString,
462 #[serde(default)]
464 pub fill_sz: NumberString,
465 #[serde(default)]
467 pub fill_idx_px: NumberString,
468 #[serde(default)]
470 pub fill_pnl: NumberString,
471 #[serde(default)]
473 pub fill_px_vol: NumberString,
474 #[serde(default)]
476 pub fill_px_usd: NumberString,
477 #[serde(default)]
479 pub fill_mark_vol: NumberString,
480 #[serde(default)]
482 pub fill_fwd_px: NumberString,
483 #[serde(default)]
485 pub fill_mark_px: NumberString,
486 pub side: OrderSide,
488 #[serde(default)]
490 pub pos_side: String,
491 #[serde(default)]
493 pub exec_type: String,
494 #[serde(default)]
496 pub fee_ccy: String,
497 #[serde(default)]
499 pub fee: NumberString,
500 #[serde(default)]
502 pub fee_rate: NumberString,
503 #[serde(default)]
505 pub fill_time: NumberString,
506 #[serde(default)]
508 pub ts: NumberString,
509 #[serde(default)]
511 pub trade_quote_ccy: String,
512}