1use 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}