1use serde::Deserialize;
2
3use crate::model::{InstType, NumberString, PositionSide, RestRow, TradeMode};
4
5pub type VipInterestAccrued = RestRow;
7
8pub type VipInterestDeducted = RestRow;
10
11pub type VipLoanOrder = RestRow;
13
14pub type FixedLoanBorrowingLimit = RestRow;
16
17pub type FixedLoanBorrowingQuote = RestRow;
19
20pub type FixedLoanBorrowingOrder = RestRow;
22
23pub type SpotBorrowRepayResult = RestRow;
25
26pub type SetAutoRepayResult = RestRow;
28
29pub type SpotBorrowRepayHistory = RestRow;
31
32pub type SetAutoEarnResult = RestRow;
34
35#[derive(Debug, Clone, Deserialize)]
37#[serde(rename_all = "camelCase")]
38#[non_exhaustive]
39pub struct AccountBalance {
40 #[serde(default)]
42 pub total_eq: NumberString,
43 #[serde(default)]
45 pub adj_eq: NumberString,
46 #[serde(default)]
48 pub details: Vec<BalanceDetail>,
49 #[serde(default)]
51 pub u_time: NumberString,
52}
53
54#[derive(Debug, Clone, Deserialize)]
56#[serde(rename_all = "camelCase")]
57#[non_exhaustive]
58pub struct BalanceDetail {
59 pub ccy: String,
61 #[serde(default)]
63 pub eq: NumberString,
64 #[serde(default)]
66 pub cash_bal: NumberString,
67 #[serde(default)]
69 pub avail_bal: NumberString,
70 #[serde(default)]
72 pub frozen_bal: NumberString,
73}
74
75#[derive(Debug, Clone, Deserialize)]
77#[serde(rename_all = "camelCase")]
78#[non_exhaustive]
79pub struct Position {
80 pub inst_type: InstType,
82 pub inst_id: String,
84 #[serde(default)]
86 pub pos_id: String,
87 pub pos_side: PositionSide,
89 pub mgn_mode: TradeMode,
91 #[serde(default)]
93 pub pos: NumberString,
94 #[serde(default)]
96 pub avg_px: NumberString,
97 #[serde(default)]
99 pub upl: NumberString,
100 #[serde(default)]
102 pub lever: NumberString,
103 #[serde(default)]
105 pub liq_px: NumberString,
106}
107
108#[derive(Debug, Clone, Deserialize)]
110#[serde(rename_all = "camelCase")]
111#[non_exhaustive]
112pub struct PositionRisk {
113 #[serde(default)]
115 pub adj_eq: NumberString,
116 #[serde(default)]
118 pub bal_data: Vec<BalanceDetail>,
119 #[serde(default)]
121 pub pos_data: Vec<Position>,
122 #[serde(default)]
124 pub ts: NumberString,
125}
126
127#[derive(Debug, Clone, Deserialize)]
129#[serde(rename_all = "camelCase")]
130#[non_exhaustive]
131pub struct AccountConfig {
132 #[serde(default)]
134 pub uid: String,
135 #[serde(default)]
137 pub acct_lv: String,
138 #[serde(default)]
140 pub pos_mode: String,
141 #[serde(default)]
143 pub greeks_type: String,
144 #[serde(default)]
146 pub auto_loan: bool,
147}
148
149#[derive(Debug, Clone, Deserialize)]
151#[serde(rename_all = "camelCase")]
152#[non_exhaustive]
153pub struct AccountBill {
154 #[serde(default)]
156 pub bill_id: String,
157 #[serde(default)]
159 pub inst_type: String,
160 #[serde(default)]
162 pub inst_id: String,
163 #[serde(default)]
165 pub ccy: String,
166 #[serde(default)]
168 pub mgn_mode: String,
169 #[serde(rename = "type", default)]
171 pub bill_type: String,
172 #[serde(default)]
174 pub sub_type: String,
175 #[serde(default)]
177 pub sz: NumberString,
178 #[serde(default)]
180 pub bal: NumberString,
181 #[serde(default)]
183 pub ts: NumberString,
184}
185
186#[derive(Debug, Clone, Deserialize)]
188#[serde(rename_all = "camelCase")]
189#[non_exhaustive]
190pub struct SetPositionModeResult {
191 #[serde(default)]
193 pub pos_mode: String,
194}
195
196#[derive(Debug, Clone, Deserialize)]
198#[serde(rename_all = "camelCase")]
199#[non_exhaustive]
200pub struct LeverageInfo {
201 #[serde(default)]
203 pub inst_id: String,
204 pub mgn_mode: TradeMode,
206 pub pos_side: PositionSide,
208 #[serde(default)]
210 pub lever: NumberString,
211}
212
213#[derive(Debug, Clone, Deserialize)]
215#[serde(rename_all = "camelCase")]
216#[non_exhaustive]
217pub struct MaxOrderSize {
218 pub inst_id: String,
220 #[serde(default)]
222 pub max_buy: NumberString,
223 #[serde(default)]
225 pub max_sell: NumberString,
226}
227
228#[derive(Debug, Clone, Deserialize)]
230#[serde(rename_all = "camelCase")]
231#[non_exhaustive]
232pub struct MaxAvailableSize {
233 pub inst_id: String,
235 #[serde(default)]
237 pub avail_buy: NumberString,
238 #[serde(default)]
240 pub avail_sell: NumberString,
241}
242
243#[derive(Debug, Clone, Deserialize)]
245#[serde(rename_all = "camelCase")]
246#[non_exhaustive]
247pub struct FeeRate {
248 pub inst_type: InstType,
250 #[serde(default)]
252 pub inst_id: String,
253 #[serde(default)]
255 pub category: String,
256 #[serde(default)]
258 pub maker: NumberString,
259 #[serde(default)]
261 pub taker: NumberString,
262 #[serde(default)]
264 pub ts: NumberString,
265}
266
267#[derive(Debug, Clone, Deserialize)]
269#[serde(rename_all = "camelCase")]
270#[non_exhaustive]
271pub struct MaxWithdrawal {
272 pub ccy: String,
274 #[serde(default)]
276 pub max_wd: NumberString,
277 #[serde(default)]
279 pub max_wd_ex: NumberString,
280}
281
282#[derive(Debug, Clone, Deserialize)]
284#[serde(rename_all = "camelCase")]
285#[non_exhaustive]
286pub struct PositionHistory {
287 pub inst_type: InstType,
289 pub inst_id: String,
291 #[serde(default)]
293 pub pos_id: String,
294 pub mgn_mode: TradeMode,
296 #[serde(rename = "type", default)]
298 pub close_type: String,
299 #[serde(default)]
301 pub realized_pnl: NumberString,
302 #[serde(default)]
304 pub c_time: NumberString,
305 #[serde(default)]
307 pub u_time: NumberString,
308}
309
310#[derive(Debug, Clone, Deserialize)]
312#[serde(rename_all = "camelCase")]
313#[non_exhaustive]
314pub struct RiskState {
315 #[serde(default)]
317 pub at_risk: String,
318 #[serde(default)]
320 pub ts: NumberString,
321}
322
323#[derive(Debug, Clone, Deserialize)]
325#[serde(rename_all = "camelCase")]
326#[non_exhaustive]
327pub struct AdjustMarginResult {
328 #[serde(default)]
330 pub inst_id: String,
331 #[serde(default)]
333 pub pos_side: String,
334 #[serde(default)]
336 pub amt: NumberString,
337 #[serde(rename = "type", default)]
339 pub adjustment_type: String,
340}
341
342#[derive(Debug, Clone, Deserialize)]
344#[serde(rename_all = "camelCase")]
345#[non_exhaustive]
346pub struct AccountInstrument {
347 #[serde(default)]
349 pub inst_type: String,
350 #[serde(default)]
352 pub inst_id: String,
353 #[serde(default)]
355 pub uly: String,
356 #[serde(default)]
358 pub inst_family: String,
359 #[serde(default)]
361 pub base_ccy: String,
362 #[serde(default)]
364 pub quote_ccy: String,
365 #[serde(default)]
367 pub settle_ccy: String,
368}
369
370#[derive(Debug, Clone, Deserialize)]
372#[serde(rename_all = "camelCase")]
373#[non_exhaustive]
374pub struct MaxLoan {
375 #[serde(default)]
377 pub inst_id: String,
378 #[serde(default)]
380 pub mgn_mode: String,
381 #[serde(default)]
383 pub mgn_ccy: String,
384 #[serde(default)]
386 pub max_loan: NumberString,
387}
388
389#[derive(Debug, Clone, Deserialize)]
391#[serde(rename_all = "camelCase")]
392#[non_exhaustive]
393pub struct InterestAccrued {
394 #[serde(default)]
396 pub inst_id: String,
397 #[serde(default)]
399 pub ccy: String,
400 #[serde(default)]
402 pub mgn_mode: String,
403 #[serde(default)]
405 pub interest: NumberString,
406 #[serde(default)]
408 pub interest_rate: NumberString,
409 #[serde(default)]
411 pub liab: NumberString,
412 #[serde(default)]
414 pub ts: NumberString,
415}
416
417#[derive(Debug, Clone, Deserialize)]
419#[serde(rename_all = "camelCase")]
420#[non_exhaustive]
421pub struct InterestRate {
422 #[serde(default)]
424 pub ccy: String,
425 #[serde(default)]
427 pub interest_rate: NumberString,
428}
429
430#[derive(Debug, Clone, Deserialize)]
432#[serde(rename_all = "camelCase")]
433#[non_exhaustive]
434pub struct SetGreeksResult {
435 #[serde(default)]
437 pub greeks_type: String,
438}
439
440#[derive(Debug, Clone, Deserialize)]
442#[serde(rename_all = "camelCase")]
443#[non_exhaustive]
444pub struct SetIsolatedModeResult {
445 #[serde(default)]
447 pub iso_mode: String,
448 #[serde(rename = "type", default)]
450 pub mode_type: String,
451}
452
453#[derive(Debug, Clone, Deserialize)]
455#[serde(rename_all = "camelCase")]
456#[non_exhaustive]
457pub struct BorrowRepayResult {
458 #[serde(default)]
460 pub ccy: String,
461 #[serde(default)]
463 pub side: String,
464 #[serde(default)]
466 pub amt: NumberString,
467 #[serde(default)]
469 pub ord_id: String,
470}
471
472#[derive(Debug, Clone, Deserialize)]
474#[serde(rename_all = "camelCase")]
475#[non_exhaustive]
476pub struct BorrowRepayHistory {
477 #[serde(default)]
479 pub ccy: String,
480 #[serde(default)]
482 pub side: String,
483 #[serde(default)]
485 pub amt: NumberString,
486 #[serde(default)]
488 pub ord_id: String,
489 #[serde(default)]
491 pub state: String,
492 #[serde(default)]
494 pub ts: NumberString,
495}
496
497#[derive(Debug, Clone, Deserialize)]
499#[serde(rename_all = "camelCase")]
500#[non_exhaustive]
501pub struct InterestLimit {
502 #[serde(default)]
504 pub ccy: String,
505 #[serde(default)]
507 pub rate: NumberString,
508 #[serde(default)]
510 pub loan_quota: NumberString,
511 #[serde(default)]
513 pub used_loan: NumberString,
514}
515
516#[derive(Debug, Clone, Deserialize)]
518#[serde(rename_all = "camelCase")]
519#[non_exhaustive]
520pub struct SimulatedMargin {
521 #[serde(default)]
523 pub imr: NumberString,
524 #[serde(default)]
526 pub mmr: NumberString,
527 #[serde(default)]
529 pub mr: NumberString,
530 #[serde(default)]
532 pub notional_usd: NumberString,
533 #[serde(default)]
535 pub details: Vec<SimulatedMarginDetail>,
536}
537
538#[derive(Debug, Clone, Deserialize)]
540#[serde(rename_all = "camelCase")]
541#[non_exhaustive]
542pub struct SimulatedMarginDetail {
543 #[serde(default)]
545 pub inst_id: String,
546 #[serde(default)]
548 pub pos: NumberString,
549 #[serde(default)]
551 pub imr: NumberString,
552 #[serde(default)]
554 pub mmr: NumberString,
555 #[serde(default)]
557 pub upl: NumberString,
558}
559
560#[derive(Debug, Clone, Deserialize)]
562#[serde(rename_all = "camelCase")]
563#[non_exhaustive]
564pub struct Greek {
565 #[serde(default)]
567 pub ccy: String,
568 #[serde(rename = "deltaBS", default)]
570 pub delta_bs: NumberString,
571 #[serde(rename = "deltaPA", default)]
573 pub delta_pa: NumberString,
574 #[serde(rename = "gammaBS", default)]
576 pub gamma_bs: NumberString,
577 #[serde(rename = "thetaBS", default)]
579 pub theta_bs: NumberString,
580 #[serde(rename = "vegaBS", default)]
582 pub vega_bs: NumberString,
583}
584
585#[derive(Debug, Clone, Deserialize)]
587#[serde(rename_all = "camelCase")]
588#[non_exhaustive]
589pub struct AccountPositionTier {
590 #[serde(default)]
592 pub inst_type: String,
593 #[serde(default)]
595 pub uly: String,
596 #[serde(default)]
598 pub inst_family: String,
599 #[serde(default)]
601 pub pos_type: String,
602 #[serde(default)]
604 pub min_sz: NumberString,
605 #[serde(default)]
607 pub max_sz: NumberString,
608}
609
610#[derive(Debug, Clone, Deserialize)]
612#[serde(rename_all = "camelCase")]
613#[non_exhaustive]
614pub struct SetRiskOffsetTypeResult {
615 #[serde(rename = "type", default)]
617 pub risk_offset_type: String,
618}
619
620#[derive(Debug, Clone, Deserialize)]
622#[serde(rename_all = "camelCase")]
623#[non_exhaustive]
624pub struct SetAutoLoanResult {
625 #[serde(default)]
627 pub auto_loan: String,
628}
629
630#[derive(Debug, Clone, Deserialize)]
632#[serde(rename_all = "camelCase")]
633#[non_exhaustive]
634pub struct SetAccountLevelResult {
635 #[serde(default)]
637 pub acct_lv: String,
638}
639
640#[derive(Debug, Clone, Deserialize)]
642#[serde(rename_all = "camelCase")]
643#[non_exhaustive]
644pub struct ActivateOptionResult {
645 #[serde(default)]
647 pub result: String,
648}
649
650#[derive(Debug, Clone, Deserialize)]
652#[serde(rename_all = "camelCase")]
653#[non_exhaustive]
654pub struct PositionBuilderResult {
655 #[serde(default)]
657 pub acct_lv: String,
658 #[serde(default)]
660 pub adj_eq: NumberString,
661 #[serde(default)]
663 pub imr: NumberString,
664 #[serde(default)]
666 pub mmr: NumberString,
667 #[serde(default)]
669 pub mr: NumberString,
670 #[serde(default)]
672 pub pos_data: Vec<PositionBuilderPosition>,
673 #[serde(default)]
675 pub asset_data: Vec<PositionBuilderAsset>,
676}
677
678#[derive(Debug, Clone, Deserialize)]
680#[serde(rename_all = "camelCase")]
681#[non_exhaustive]
682pub struct PositionBuilderPosition {
683 #[serde(default)]
685 pub inst_type: String,
686 #[serde(default)]
688 pub inst_id: String,
689 #[serde(default)]
691 pub pos: NumberString,
692 #[serde(default)]
694 pub avg_px: NumberString,
695 #[serde(default)]
697 pub upl: NumberString,
698}
699
700#[derive(Debug, Clone, Deserialize)]
702#[serde(rename_all = "camelCase")]
703#[non_exhaustive]
704pub struct PositionBuilderAsset {
705 #[serde(default)]
707 pub ccy: String,
708 #[serde(default)]
710 pub eq: NumberString,
711}