1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Deserialize)]
7#[serde(rename_all = "camelCase")]
8pub struct WalletBalance {
9 pub list: Vec<AccountBalance>,
11}
12
13#[derive(Debug, Clone, Deserialize)]
15#[serde(rename_all = "camelCase")]
16pub struct AccountBalance {
17 pub account_type: String,
19 #[serde(default)]
21 pub account_l_t_v: String,
22 #[serde(default)]
24 pub account_i_m_rate: String,
25 #[serde(default)]
27 pub account_m_m_rate: String,
28 #[serde(default)]
30 pub total_equity: String,
31 #[serde(default)]
33 pub total_wallet_balance: String,
34 #[serde(default)]
36 pub total_margin_balance: String,
37 #[serde(default)]
39 pub total_available_balance: String,
40 #[serde(default)]
42 pub total_perp_u_p_l: String,
43 #[serde(default)]
45 pub total_initial_margin: String,
46 #[serde(default)]
48 pub total_maintenance_margin: String,
49 #[serde(default)]
51 pub coin: Vec<CoinBalance>,
52}
53
54#[derive(Debug, Clone, Deserialize)]
56#[serde(rename_all = "camelCase")]
57pub struct CoinBalance {
58 pub coin: String,
60 #[serde(default)]
62 pub equity: String,
63 #[serde(default)]
65 pub usd_value: String,
66 #[serde(default)]
68 pub wallet_balance: String,
69 #[serde(default)]
71 pub free: String,
72 #[serde(default)]
74 pub locked: String,
75 #[serde(default)]
77 pub available_to_withdraw: String,
78 #[serde(default)]
80 pub available_to_borrow: String,
81 #[serde(default)]
83 pub borrow_amount: String,
84 #[serde(default)]
86 pub accrued_interest: String,
87 #[serde(default)]
89 pub total_order_i_m: String,
90 #[serde(default)]
92 pub total_position_i_m: String,
93 #[serde(default)]
95 pub total_position_m_m: String,
96 #[serde(default)]
98 pub unrealised_pnl: String,
99 #[serde(default)]
101 pub cum_realised_pnl: String,
102}
103
104#[derive(Debug, Clone, Deserialize)]
106#[serde(rename_all = "camelCase")]
107pub struct AccountInfo {
108 #[serde(default)]
110 pub unified_margin_status: i32,
111 #[serde(default)]
113 pub margin_mode: String,
114 #[serde(default)]
116 pub dcp_status: String,
117 #[serde(default)]
119 pub time_window: i32,
120 #[serde(default)]
122 pub smp_group: i32,
123 #[serde(default)]
125 pub is_master_trader: bool,
126 #[serde(default)]
128 pub spot_hedging_status: String,
129 #[serde(default)]
131 pub updated_time: String,
132}
133
134#[derive(Debug, Clone, Deserialize)]
136#[serde(rename_all = "camelCase")]
137pub struct FeeRates {
138 pub category: String,
140 pub list: Vec<FeeRate>,
142}
143
144#[derive(Debug, Clone, Deserialize)]
146#[serde(rename_all = "camelCase")]
147pub struct FeeRate {
148 pub symbol: String,
150 #[serde(default)]
152 pub base_coin: String,
153 pub taker_fee_rate: String,
155 pub maker_fee_rate: String,
157}
158
159#[derive(Debug, Clone, Deserialize)]
161#[serde(rename_all = "camelCase")]
162pub struct TransactionLogs {
163 pub list: Vec<TransactionLog>,
165 #[serde(default)]
167 pub next_page_cursor: String,
168}
169
170#[derive(Debug, Clone, Deserialize)]
172#[serde(rename_all = "camelCase")]
173pub struct TransactionLog {
174 pub id: String,
176 #[serde(default)]
178 pub symbol: String,
179 pub category: String,
181 #[serde(default)]
183 pub side: String,
184 pub transaction_time: String,
186 #[serde(rename = "type")]
188 pub tx_type: String,
189 #[serde(default)]
191 pub qty: String,
192 #[serde(default)]
194 pub size: String,
195 pub currency: String,
197 #[serde(default)]
199 pub trade_price: String,
200 #[serde(default)]
202 pub funding: String,
203 #[serde(default)]
205 pub fee: String,
206 #[serde(default)]
208 pub cash_flow: String,
209 pub change: String,
211 pub cash_balance: String,
213}
214
215#[derive(Debug, Clone, Serialize)]
217#[serde(rename_all = "camelCase")]
218pub struct SetMarginModeParams {
219 pub set_margin_mode: String,
221}
222
223#[derive(Debug, Clone, Deserialize)]
225#[serde(rename_all = "camelCase")]
226pub struct CollateralInfo {
227 pub list: Vec<Collateral>,
229}
230
231#[derive(Debug, Clone, Deserialize)]
233#[serde(rename_all = "camelCase")]
234pub struct Collateral {
235 pub currency: String,
237 #[serde(default)]
239 pub hourly_borrow_rate: String,
240 #[serde(default)]
242 pub max_borrowing_amount: String,
243 #[serde(default)]
245 pub free_borrowing_amount: String,
246 #[serde(default)]
248 pub free_borrow_limit: String,
249 #[serde(default)]
251 pub borrow_usable_switch: bool,
252 #[serde(default)]
254 pub collateral_switch: bool,
255 #[serde(default)]
257 pub collateral_ratio: String,
258}
259
260#[derive(Debug, Clone, Deserialize)]
262#[serde(rename_all = "camelCase")]
263pub struct BorrowHistory {
264 pub list: Vec<BorrowRecord>,
266 #[serde(default)]
268 pub next_page_cursor: String,
269}
270
271#[derive(Debug, Clone, Deserialize)]
273#[serde(rename_all = "camelCase")]
274pub struct BorrowRecord {
275 pub currency: String,
277 pub created_time: String,
279 #[serde(default)]
281 pub borrow_cost: String,
282 #[serde(default)]
284 pub hourly_borrow_rate: String,
285 #[serde(default)]
287 pub interest_bearing_borrow_size: String,
288 #[serde(default)]
290 pub cost_exemption: String,
291}