Skip to main content

bybit_api/models/
crypto_loan.rs

1//! Crypto loan models.
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct AdjustLtvParams {
8    pub currency: String,
9    pub amount: String,
10    pub direction: i32,
11}
12
13pub type AdjustLtvResponse = serde_json::Value;
14
15pub type GetAdjustmentHistoryResponse = serde_json::Value;
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(rename_all = "camelCase")]
19pub struct AdjustmentHistoryItem {
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub collateral_currency: Option<String>,
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub adjust_id: Option<i64>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub adjust_time: Option<i64>,
26    #[serde(rename = "preLTV", skip_serializing_if = "Option::is_none")]
27    pub pre_ltv: Option<String>,
28    #[serde(rename = "afterLTV", skip_serializing_if = "Option::is_none")]
29    pub after_ltv: Option<String>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub direction: Option<i32>,
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub amount: Option<String>,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub status: Option<i32>,
36}
37
38pub type GetCollateralDataResponse = serde_json::Value;
39
40#[derive(Debug, Clone, Serialize, Deserialize)]
41#[serde(rename_all = "camelCase")]
42pub struct CurrencyLiquidationConfig {
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub currency: Option<String>,
45    #[serde(skip_serializing_if = "Option::is_none")]
46    pub liquidation_order: Option<i32>,
47}
48
49#[derive(Debug, Clone, Serialize, Deserialize)]
50#[serde(rename_all = "camelCase")]
51pub struct CollateralRatioConfig {
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub currencies: Option<String>,
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub collateral_ratio_list: Option<Vec<CollateralRatioTier>>,
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize)]
59#[serde(rename_all = "camelCase")]
60pub struct CollateralRatioTier {
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub min_value: Option<String>,
63    #[serde(skip_serializing_if = "Option::is_none")]
64    pub max_value: Option<String>,
65    #[serde(skip_serializing_if = "Option::is_none")]
66    pub collateral_ratio: Option<String>,
67}
68
69pub type GetLoanableDataResponse = serde_json::Value;
70
71#[derive(Debug, Clone, Serialize, Deserialize)]
72#[serde(rename_all = "camelCase")]
73pub struct LoanableDataItem {
74    #[serde(skip_serializing_if = "Option::is_none")]
75    pub currency: Option<String>,
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub vip_level: Option<String>,
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub flexible_borrowable: Option<bool>,
80    #[serde(skip_serializing_if = "Option::is_none")]
81    pub flexible_borrowing_accuracy: Option<i32>,
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub min_flexible_borrowing_amount: Option<String>,
84    #[serde(skip_serializing_if = "Option::is_none")]
85    pub flexible_annualized_interest_rate: Option<String>,
86    #[serde(skip_serializing_if = "Option::is_none")]
87    pub fixed_borrowable: Option<bool>,
88    #[serde(skip_serializing_if = "Option::is_none")]
89    pub fixed_borrowing_accuracy: Option<i32>,
90    #[serde(skip_serializing_if = "Option::is_none")]
91    pub min_fixed_borrowing_amount: Option<String>,
92    #[serde(skip_serializing_if = "Option::is_none")]
93    pub max_borrowing_amount: Option<String>,
94    #[serde(
95        rename = "annualizedInterestRate7D",
96        skip_serializing_if = "Option::is_none"
97    )]
98    pub annualized_interest_rate7_d: Option<String>,
99    #[serde(
100        rename = "annualizedInterestRate14D",
101        skip_serializing_if = "Option::is_none"
102    )]
103    pub annualized_interest_rate14_d: Option<String>,
104    #[serde(
105        rename = "annualizedInterestRate30D",
106        skip_serializing_if = "Option::is_none"
107    )]
108    pub annualized_interest_rate30_d: Option<String>,
109    #[serde(
110        rename = "annualizedInterestRate60D",
111        skip_serializing_if = "Option::is_none"
112    )]
113    pub annualized_interest_rate60_d: Option<String>,
114    #[serde(
115        rename = "annualizedInterestRate90D",
116        skip_serializing_if = "Option::is_none"
117    )]
118    pub annualized_interest_rate90_d: Option<String>,
119    #[serde(
120        rename = "annualizedInterestRate180D",
121        skip_serializing_if = "Option::is_none"
122    )]
123    pub annualized_interest_rate180_d: Option<String>,
124}
125
126pub type GetMaxCollateralAmountResponse = serde_json::Value;
127
128#[derive(Debug, Clone, Serialize, Deserialize)]
129#[serde(rename_all = "camelCase")]
130pub struct CalculateMaxLoanParams {
131    pub currency: String,
132    pub collateral_list: Vec<CollateralInput>,
133}
134
135#[derive(Debug, Clone, Serialize, Deserialize)]
136#[serde(rename_all = "camelCase")]
137pub struct CollateralInput {
138    pub ccy: String,
139    pub amount: String,
140}
141
142pub type CalculateMaxLoanResponse = serde_json::Value;
143
144pub type GetLoanPositionResponse = serde_json::Value;
145
146#[derive(Debug, Clone, Serialize, Deserialize)]
147#[serde(rename_all = "camelCase")]
148pub struct BorrowItem {
149    #[serde(skip_serializing_if = "Option::is_none")]
150    pub loan_currency: Option<String>,
151    #[serde(skip_serializing_if = "Option::is_none")]
152    pub flexible_total_debt: Option<String>,
153    #[serde(
154        rename = "flexibleTotalDebtUSD",
155        skip_serializing_if = "Option::is_none"
156    )]
157    pub flexible_total_debt_usd: Option<String>,
158    #[serde(skip_serializing_if = "Option::is_none")]
159    pub flexible_hourly_interest_rate: Option<String>,
160    #[serde(skip_serializing_if = "Option::is_none")]
161    pub fixed_total_debt: Option<String>,
162    #[serde(rename = "fixedTotalDebtUSD", skip_serializing_if = "Option::is_none")]
163    pub fixed_total_debt_usd: Option<String>,
164}
165
166#[derive(Debug, Clone, Serialize, Deserialize)]
167#[serde(rename_all = "camelCase")]
168pub struct SupplyItem {
169    #[serde(skip_serializing_if = "Option::is_none")]
170    pub currency: Option<String>,
171    #[serde(skip_serializing_if = "Option::is_none")]
172    pub amount: Option<String>,
173    #[serde(rename = "amountUSD", skip_serializing_if = "Option::is_none")]
174    pub amount_usd: Option<String>,
175}
176
177#[derive(Debug, Clone, Serialize, Deserialize)]
178#[serde(rename_all = "camelCase")]
179pub struct CollateralItem {
180    #[serde(skip_serializing_if = "Option::is_none")]
181    pub currency: Option<String>,
182    #[serde(skip_serializing_if = "Option::is_none")]
183    pub amount: Option<String>,
184    #[serde(rename = "amountUSD", skip_serializing_if = "Option::is_none")]
185    pub amount_usd: Option<String>,
186    #[serde(skip_serializing_if = "Option::is_none")]
187    pub col_res: Option<String>,
188}
189
190#[derive(Debug, Clone, Serialize, Deserialize)]
191#[serde(rename_all = "camelCase")]
192pub struct CancelFixedBorrowOrderParams {
193    pub order_id: String,
194}
195
196pub type CancelFixedBorrowOrderResponse = serde_json::Value;
197
198pub type GetFixedBorrowOrderQuoteResponse = serde_json::Value;
199
200#[derive(Debug, Clone, Serialize, Deserialize)]
201#[serde(rename_all = "camelCase")]
202pub struct CreateFixedBorrowParams {
203    pub order_currency: String,
204    pub order_amount: String,
205    pub annual_rate: String,
206    pub term: String,
207    #[serde(skip_serializing_if = "Option::is_none")]
208    pub auto_repay: Option<String>,
209    pub collateral_list: Vec<CollateralInput>,
210    #[serde(skip_serializing_if = "Option::is_none")]
211    pub repay_type: Option<String>,
212}
213
214pub type FixedBorrowResponse = serde_json::Value;
215
216#[derive(Debug, Clone, Serialize, Deserialize)]
217#[serde(rename_all = "camelCase")]
218pub struct FullyRepayFixedLoanParams {
219    pub loan_id: String,
220    pub loan_currency: String,
221}
222
223pub type CryptoLoanFixedFullyRepayResponse = serde_json::Value;
224
225#[derive(Debug, Clone, Serialize, Deserialize)]
226#[serde(rename_all = "camelCase")]
227pub struct RenewFixedLoanParams {
228    pub loan_id: String,
229    pub collateral_list: Vec<CollateralInput>,
230}
231
232#[derive(Debug, Clone, Serialize, Deserialize)]
233#[serde(rename_all = "camelCase")]
234pub struct BorrowQuote {
235    #[serde(skip_serializing_if = "Option::is_none")]
236    pub order_currency: Option<String>,
237    #[serde(skip_serializing_if = "Option::is_none")]
238    pub term: Option<i32>,
239    #[serde(skip_serializing_if = "Option::is_none")]
240    pub annual_rate: Option<String>,
241    #[serde(skip_serializing_if = "Option::is_none")]
242    pub qty: Option<String>,
243}
244
245#[derive(Debug, Clone, Serialize, Deserialize)]
246#[serde(rename_all = "camelCase")]
247pub struct FixedBorrowRequest {
248    pub order_currency: String,
249    pub order_amount: String,
250    pub annual_rate: String,
251    pub term: String,
252    #[serde(skip_serializing_if = "Option::is_none")]
253    pub auto_repay: Option<String>,
254    pub collateral_list: Vec<crate::models::account::Collateral>,
255    #[serde(skip_serializing_if = "Option::is_none")]
256    pub repay_type: Option<String>,
257}
258
259pub type CreateFixedBorrowResponse = serde_json::Value;
260
261pub type FullyRepayFixedLoanResponse = CryptoLoanFixedFullyRepayResult;
262
263#[derive(Debug, Clone, Serialize, Deserialize)]
264#[serde(rename_all = "camelCase")]
265pub struct CryptoLoanFixedFullyRepayResult {
266    #[serde(skip_serializing_if = "Option::is_none")]
267    pub repay_id: Option<String>,
268}
269
270pub type PostCryptoLoanFixedRepayCollateralResponse = CryptoLoanFixedRepayCollateralResult;
271
272#[derive(Debug, Clone, Serialize, Deserialize)]
273#[serde(rename_all = "camelCase")]
274pub struct CryptoLoanFixedRepayCollateralResult {
275    #[serde(skip_serializing_if = "Option::is_none")]
276    pub repay_id: Option<String>,
277}
278
279#[derive(Debug, Clone, Serialize, Deserialize)]
280#[serde(rename_all = "camelCase")]
281pub struct PostCryptoLoanFixedRepayCollateralParams {
282    pub loan_id: i64,
283    pub loan_currency: String,
284    pub collateral_coin: String,
285    pub amount: String,
286}
287
288pub type PostCryptoLoanFixedSupplyOrderCancelResponse = serde_json::Value;
289
290#[derive(Debug, Clone, Serialize, Deserialize)]
291#[serde(rename_all = "camelCase")]
292pub struct PostCryptoLoanFixedSupplyOrderCancelParams {
293    pub order_id: String,
294    #[serde(skip_serializing_if = "Option::is_none")]
295    pub refunded_account: Option<i32>,
296}
297
298pub type GetCryptoLoanFixedSupplyOrderQuoteResponse = GetCryptoLoanFixedSupplyOrderQuoteResult;
299
300#[derive(Debug, Clone, Serialize, Deserialize)]
301#[serde(rename_all = "camelCase")]
302pub struct GetCryptoLoanFixedSupplyOrderQuoteResult {
303    #[serde(skip_serializing_if = "Option::is_none")]
304    pub list: Option<Vec<GetCryptoLoanFixedSupplyOrderQuoteListItem>>,
305}
306
307#[derive(Debug, Clone, Serialize, Deserialize)]
308#[serde(rename_all = "camelCase")]
309pub struct GetCryptoLoanFixedSupplyOrderQuoteListItem {
310    #[serde(skip_serializing_if = "Option::is_none")]
311    pub order_currency: Option<String>,
312    #[serde(skip_serializing_if = "Option::is_none")]
313    pub term: Option<i32>,
314    #[serde(skip_serializing_if = "Option::is_none")]
315    pub annual_rate: Option<String>,
316    #[serde(skip_serializing_if = "Option::is_none")]
317    pub qty: Option<String>,
318}
319
320#[derive(Debug, Clone, Serialize, Deserialize)]
321#[serde(rename_all = "camelCase")]
322pub struct PostCryptoLoanFixedSupplyParams {
323    pub order_currency: String,
324    pub order_amount: String,
325    pub annual_rate: String,
326    pub term: String,
327    #[serde(skip_serializing_if = "Option::is_none")]
328    pub available_source: Option<i32>,
329}
330
331pub type GetCryptoLoanFlexibleBorrowHistoryResponse = CryptoLoanFlexibleBorrowHistoryResult;
332
333#[derive(Debug, Clone, Serialize, Deserialize)]
334#[serde(rename_all = "camelCase")]
335pub struct CryptoLoanFlexibleBorrowHistoryResult {
336    #[serde(skip_serializing_if = "Option::is_none")]
337    pub list: Option<Vec<CryptoLoanFlexibleBorrowHistoryItem>>,
338    #[serde(skip_serializing_if = "Option::is_none")]
339    pub next_page_cursor: Option<String>,
340}
341
342#[derive(Debug, Clone, Serialize, Deserialize)]
343#[serde(rename_all = "camelCase")]
344pub struct CryptoLoanFlexibleBorrowHistoryItem {
345    #[serde(skip_serializing_if = "Option::is_none")]
346    pub order_id: Option<String>,
347    #[serde(skip_serializing_if = "Option::is_none")]
348    pub loan_currency: Option<String>,
349    #[serde(skip_serializing_if = "Option::is_none")]
350    pub loan_amount: Option<String>,
351    #[serde(skip_serializing_if = "Option::is_none")]
352    pub borrow_time: Option<i64>,
353    #[serde(skip_serializing_if = "Option::is_none")]
354    pub status: Option<i32>,
355}
356
357#[derive(Debug, Clone, Serialize, Deserialize)]
358#[serde(rename_all = "camelCase")]
359pub struct FlexibleBorrowRequest {
360    pub loan_currency: String,
361    pub loan_amount: String,
362    pub collateral_list: Vec<CollateralItem>,
363}
364
365pub type PostCryptoLoanFlexibleBorrowResponse = serde_json::Value;
366
367#[derive(Debug, Clone, Serialize, Deserialize)]
368#[serde(rename_all = "camelCase")]
369pub struct PostCryptoLoanFlexibleBorrowParams {
370    pub loan_currency: String,
371    pub loan_amount: String,
372    pub collateral_list: Vec<CollateralItem>,
373}
374
375pub type PostCryptoLoanFlexibleRepayCollateralResponse = CryptoLoanFlexibleRepayCollateralResult;
376
377#[derive(Debug, Clone, Serialize, Deserialize)]
378#[serde(rename_all = "camelCase")]
379pub struct CryptoLoanFlexibleRepayCollateralResult {
380    #[serde(skip_serializing_if = "Option::is_none")]
381    pub repay_id: Option<String>,
382}
383
384#[derive(Debug, Clone, Serialize, Deserialize)]
385#[serde(rename_all = "camelCase")]
386pub struct PostCryptoLoanFlexibleRepayCollateralParams {
387    pub loan_currency: String,
388    pub collateral_coin: String,
389    pub amount: String,
390}
391
392#[derive(Debug, Clone, Serialize, Deserialize)]
393#[serde(rename_all = "camelCase")]
394pub struct PostCryptoLoanFlexibleRepayParams {
395    pub loan_currency: String,
396    pub amount: String,
397}
398
399pub type GetCryptoLoanFlexibleRepaymentHistoryResponse = CryptoLoanFlexibleRepaymentHistoryResult;
400
401#[derive(Debug, Clone, Serialize, Deserialize)]
402#[serde(rename_all = "camelCase")]
403pub struct CryptoLoanFlexibleRepaymentHistoryResult {
404    #[serde(skip_serializing_if = "Option::is_none")]
405    pub list: Option<Vec<CryptoLoanFlexibleRepaymentHistoryItem>>,
406    #[serde(skip_serializing_if = "Option::is_none")]
407    pub next_page_cursor: Option<String>,
408}
409
410#[derive(Debug, Clone, Serialize, Deserialize)]
411#[serde(rename_all = "camelCase")]
412pub struct CryptoLoanFlexibleRepaymentHistoryItem {
413    #[serde(skip_serializing_if = "Option::is_none")]
414    pub repay_id: Option<String>,
415    #[serde(skip_serializing_if = "Option::is_none")]
416    pub loan_currency: Option<String>,
417    #[serde(skip_serializing_if = "Option::is_none")]
418    pub repay_amount: Option<String>,
419    #[serde(skip_serializing_if = "Option::is_none")]
420    pub principal_amount: Option<String>,
421    #[serde(skip_serializing_if = "Option::is_none")]
422    pub interest_amount: Option<String>,
423    #[serde(skip_serializing_if = "Option::is_none")]
424    pub repay_time: Option<i64>,
425    #[serde(skip_serializing_if = "Option::is_none")]
426    pub repay_type: Option<i32>,
427    #[serde(skip_serializing_if = "Option::is_none")]
428    pub status: Option<i32>,
429}