Skip to main content

rust_okx/api/account/responses/
borrowing.rs

1use serde::Deserialize;
2
3use crate::model::NumberString;
4
5/// Maximum loan amount available for an instrument or currency.
6#[derive(Debug, Clone, Deserialize)]
7#[serde(rename_all = "camelCase")]
8#[non_exhaustive]
9pub struct MaxLoan {
10    /// Instrument ID.
11    #[serde(default)]
12    pub inst_id: String,
13    /// Margin mode.
14    #[serde(default)]
15    pub mgn_mode: String,
16    /// Margin currency.
17    #[serde(default)]
18    pub mgn_ccy: String,
19    /// Maximum loan amount.
20    #[serde(default)]
21    pub max_loan: NumberString,
22}
23
24/// Interest accrued by account borrowing.
25#[derive(Debug, Clone, Deserialize)]
26#[serde(rename_all = "camelCase")]
27#[non_exhaustive]
28pub struct InterestAccrued {
29    /// Instrument ID.
30    #[serde(default)]
31    pub inst_id: String,
32    /// Currency.
33    #[serde(default)]
34    pub ccy: String,
35    /// Margin mode.
36    #[serde(default)]
37    pub mgn_mode: String,
38    /// Accrued interest.
39    #[serde(default)]
40    pub interest: NumberString,
41    /// Interest rate.
42    #[serde(default)]
43    pub interest_rate: NumberString,
44    /// Liability.
45    #[serde(default)]
46    pub liab: NumberString,
47    /// Timestamp (Unix milliseconds).
48    #[serde(default)]
49    pub ts: NumberString,
50}
51
52/// Account borrowing interest rate.
53#[derive(Debug, Clone, Deserialize)]
54#[serde(rename_all = "camelCase")]
55#[non_exhaustive]
56pub struct InterestRate {
57    /// Currency.
58    #[serde(default)]
59    pub ccy: String,
60    /// Interest rate.
61    #[serde(default)]
62    pub interest_rate: NumberString,
63}
64
65/// Result of a borrow/repay request.
66#[derive(Debug, Clone, Deserialize)]
67#[serde(rename_all = "camelCase")]
68#[non_exhaustive]
69pub struct BorrowRepayResult {
70    /// Currency.
71    #[serde(default)]
72    pub ccy: String,
73    /// Borrow or repay side.
74    #[serde(default)]
75    pub side: String,
76    /// Requested amount.
77    #[serde(default)]
78    pub amt: NumberString,
79    /// OKX borrow/repay order ID.
80    #[serde(default)]
81    pub ord_id: String,
82}
83
84/// Borrow/repay history row.
85#[derive(Debug, Clone, Deserialize)]
86#[serde(rename_all = "camelCase")]
87#[non_exhaustive]
88pub struct BorrowRepayHistory {
89    /// Currency.
90    #[serde(default)]
91    pub ccy: String,
92    /// Borrow or repay side.
93    #[serde(default)]
94    pub side: String,
95    /// Amount.
96    #[serde(default)]
97    pub amt: NumberString,
98    /// OKX borrow/repay order ID.
99    #[serde(default)]
100    pub ord_id: String,
101    /// OKX state value.
102    #[serde(default)]
103    pub state: String,
104    /// Timestamp (Unix milliseconds).
105    #[serde(default)]
106    pub ts: NumberString,
107}
108
109/// Borrowing interest and limit information, as returned by
110/// `GET /api/v5/account/interest-limits`.
111#[derive(Debug, Clone, Deserialize)]
112#[serde(rename_all = "camelCase")]
113#[non_exhaustive]
114pub struct InterestLimit {
115    /// Current debt in USD.
116    #[serde(default)]
117    pub debt: NumberString,
118    /// Current interest in USD. Only applicable to Market loans.
119    #[serde(default)]
120    pub interest: NumberString,
121    /// Next deduct time (Unix milliseconds).
122    #[serde(default)]
123    pub next_discount_time: NumberString,
124    /// Next accrual time (Unix milliseconds).
125    #[serde(default)]
126    pub next_interest_time: NumberString,
127    /// VIP loan allocation for the current trading account (percent).
128    #[serde(default)]
129    pub loan_alloc: String,
130    /// Per-currency loan records.
131    #[serde(default)]
132    pub records: Vec<LoanRecord>,
133}
134
135/// Per-currency loan record nested in [`InterestLimit`].
136#[derive(Debug, Clone, Deserialize)]
137#[serde(rename_all = "camelCase")]
138#[non_exhaustive]
139pub struct LoanRecord {
140    /// Available loan amount.
141    #[serde(default)]
142    pub avail_loan: String,
143    /// Average borrow rate.
144    #[serde(default)]
145    pub avg_rate: String,
146    /// Currency.
147    #[serde(default)]
148    pub ccy: String,
149    /// Accrued interest.
150    #[serde(default)]
151    pub interest: NumberString,
152    /// Total loan quota.
153    #[serde(default)]
154    pub loan_quota: NumberString,
155    /// Position loan.
156    #[serde(default)]
157    pub pos_loan: String,
158    /// Current borrow rate.
159    #[serde(default)]
160    pub rate: NumberString,
161    /// Remaining loan limit.
162    #[serde(default)]
163    pub surplus_lmt: NumberString,
164    /// Used loan limit.
165    #[serde(default)]
166    pub used_lmt: NumberString,
167    /// Used loan amount.
168    #[serde(default)]
169    pub used_loan: String,
170    /// Interest-free liability.
171    #[serde(default)]
172    pub interest_free_liab: String,
173    /// Potential borrowing amount.
174    #[serde(default)]
175    pub potential_borrowing_amt: String,
176}