Skip to main content

bybit_api/models/
spot_margin.rs

1use serde::{Deserialize, Serialize};
2
3use crate::models::crypto_loan::CollateralRatioTier;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct GetHistoricalInterestRateResponse {
8    #[serde(skip_serializing_if = "Option::is_none")]
9    pub list: Option<Vec<InterestRateRecord>>,
10}
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
13#[serde(rename_all = "camelCase")]
14pub struct InterestRateRecord {
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub timestamp: Option<i64>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub currency: Option<String>,
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub hourly_borrow_rate: Option<String>,
21    #[serde(skip_serializing_if = "Option::is_none")]
22    pub vip_level: Option<String>,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
26#[serde(rename_all = "camelCase")]
27pub struct GetPositionTiersResponse {
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub list: Option<Vec<PositionTierItem>>,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
33#[serde(rename_all = "camelCase")]
34pub struct PositionTierItem {
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub currency: Option<String>,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub position_tiers_ratio_list: Option<Vec<PositionTierRatio>>,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize)]
42#[serde(rename_all = "camelCase")]
43pub struct PositionTierRatio {
44    #[serde(skip_serializing_if = "Option::is_none")]
45    pub tier: Option<String>,
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub borrow_limit: Option<String>,
48    #[serde(rename = "positionMMR", skip_serializing_if = "Option::is_none")]
49    pub position_mmr: Option<String>,
50    #[serde(rename = "positionIMR", skip_serializing_if = "Option::is_none")]
51    pub position_imr: Option<String>,
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub max_leverage: Option<String>,
54}
55
56#[derive(Debug, Clone, Serialize, Deserialize)]
57#[serde(rename_all = "camelCase")]
58pub struct GetTieredCollateralRatioResponse {
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub list: Option<Vec<CollateralTierItem>>,
61}
62
63#[derive(Debug, Clone, Serialize, Deserialize)]
64#[serde(rename_all = "camelCase")]
65pub struct CollateralTierItem {
66    #[serde(skip_serializing_if = "Option::is_none")]
67    pub currency: Option<String>,
68    #[serde(skip_serializing_if = "Option::is_none")]
69    pub collateral_ratio_list: Option<Vec<CollateralRatioTier>>,
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize)]
73#[serde(rename_all = "camelCase")]
74pub struct GetVipMarginDataResponse {
75    #[serde(skip_serializing_if = "Option::is_none")]
76    pub vip_coin_list: Option<Vec<VipCoinGroup>>,
77}
78
79#[derive(Debug, Clone, Serialize, Deserialize)]
80#[serde(rename_all = "camelCase")]
81pub struct VipCoinGroup {
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub vip_level: Option<String>,
84    #[serde(skip_serializing_if = "Option::is_none")]
85    pub list: Option<Vec<VipCoinDetail>>,
86}
87
88#[derive(Debug, Clone, Serialize, Deserialize)]
89#[serde(rename_all = "camelCase")]
90pub struct VipCoinDetail {
91    #[serde(skip_serializing_if = "Option::is_none")]
92    pub borrowable: Option<bool>,
93    #[serde(skip_serializing_if = "Option::is_none")]
94    pub collateral_ratio: Option<String>,
95    #[serde(skip_serializing_if = "Option::is_none")]
96    pub currency: Option<String>,
97    #[serde(skip_serializing_if = "Option::is_none")]
98    pub hourly_borrow_rate: Option<String>,
99    #[serde(skip_serializing_if = "Option::is_none")]
100    pub liquidation_order: Option<String>,
101    #[serde(skip_serializing_if = "Option::is_none")]
102    pub margin_collateral: Option<bool>,
103    #[serde(skip_serializing_if = "Option::is_none")]
104    pub max_borrowing_amount: Option<String>,
105}