Skip to main content

rust_okx/api/funding/
responses.rs

1use serde::Deserialize;
2
3use crate::model::NumberString;
4
5/// Currency metadata and chain settings.
6#[derive(Debug, Clone, Default, Deserialize)]
7#[serde(rename_all = "camelCase")]
8#[non_exhaustive]
9pub struct Currency {
10    /// Currency code.
11    #[serde(default)]
12    pub ccy: String,
13    /// Display name.
14    #[serde(default)]
15    pub name: String,
16    /// Chain name.
17    #[serde(default)]
18    pub chain: String,
19    /// Minimum withdrawal amount.
20    #[serde(default, rename = "minWd")]
21    pub min_wd: NumberString,
22    /// Minimum deposit amount.
23    #[serde(default, rename = "minDep")]
24    pub min_dep: NumberString,
25    /// Withdrawal fee.
26    #[serde(default, rename = "minFee")]
27    pub min_fee: NumberString,
28    /// Whether deposit is enabled.
29    #[serde(default, rename = "canDep")]
30    pub can_dep: bool,
31    /// Whether withdrawal is enabled.
32    #[serde(default, rename = "canWd")]
33    pub can_wd: bool,
34    /// Whether internal transfer is enabled.
35    #[serde(default, rename = "canInternal")]
36    pub can_internal: bool,
37}
38
39/// Funding-account balance for one currency.
40#[derive(Debug, Clone, Default, Deserialize)]
41#[serde(rename_all = "camelCase")]
42#[non_exhaustive]
43pub struct FundingBalance {
44    /// Currency code.
45    #[serde(default)]
46    pub ccy: String,
47    /// Total balance.
48    #[serde(default)]
49    pub bal: NumberString,
50    /// Frozen balance.
51    #[serde(default)]
52    pub frozen_bal: NumberString,
53    /// Available balance.
54    #[serde(default)]
55    pub avail_bal: NumberString,
56}
57
58/// Non-tradable asset row.
59#[derive(Debug, Clone, Default, Deserialize)]
60#[serde(rename_all = "camelCase")]
61#[non_exhaustive]
62pub struct NonTradableAsset {
63    /// Currency code.
64    #[serde(default)]
65    pub ccy: String,
66    /// Asset amount.
67    #[serde(default)]
68    pub amt: NumberString,
69    /// Asset type.
70    #[serde(default, rename = "type")]
71    pub asset_type: String,
72}
73
74/// Deposit address for one currency/chain.
75#[derive(Debug, Clone, Default, Deserialize)]
76#[serde(rename_all = "camelCase")]
77#[non_exhaustive]
78pub struct DepositAddress {
79    /// Currency code.
80    #[serde(default)]
81    pub ccy: String,
82    /// Chain name.
83    #[serde(default)]
84    pub chain: String,
85    /// Deposit address.
86    #[serde(default)]
87    pub addr: String,
88    /// Address tag, memo, or payment ID when required by the chain.
89    #[serde(default)]
90    pub tag: String,
91    /// Selected account.
92    #[serde(default)]
93    pub selected: bool,
94}
95
96/// Funds-transfer result.
97#[derive(Debug, Clone, Default, Deserialize)]
98#[serde(rename_all = "camelCase")]
99#[non_exhaustive]
100pub struct TransferResult {
101    /// Transfer ID.
102    #[serde(default, rename = "transId")]
103    pub trans_id: String,
104    /// Currency code.
105    #[serde(default)]
106    pub ccy: String,
107    /// Transfer amount.
108    #[serde(default)]
109    pub amt: NumberString,
110}
111
112/// Funds-transfer state.
113#[derive(Debug, Clone, Default, Deserialize)]
114#[serde(rename_all = "camelCase")]
115#[non_exhaustive]
116pub struct TransferState {
117    /// Transfer ID.
118    #[serde(default, rename = "transId")]
119    pub trans_id: String,
120    /// Transfer state.
121    #[serde(default)]
122    pub state: String,
123    /// Currency code.
124    #[serde(default)]
125    pub ccy: String,
126    /// Transfer amount.
127    #[serde(default)]
128    pub amt: NumberString,
129    /// Source account.
130    #[serde(default, rename = "from")]
131    pub from_account: String,
132    /// Destination account.
133    #[serde(default)]
134    pub to: String,
135}
136
137/// Withdrawal result.
138#[derive(Debug, Clone, Default, Deserialize)]
139#[serde(rename_all = "camelCase")]
140#[non_exhaustive]
141pub struct WithdrawalResult {
142    /// Withdrawal ID.
143    #[serde(default, rename = "wdId")]
144    pub wd_id: String,
145    /// Client withdrawal ID.
146    #[serde(default, rename = "clientId")]
147    pub client_id: String,
148    /// Currency code.
149    #[serde(default)]
150    pub ccy: String,
151    /// Withdrawal amount.
152    #[serde(default)]
153    pub amt: NumberString,
154}
155
156/// Deposit history row.
157#[derive(Debug, Clone, Default, Deserialize)]
158#[serde(rename_all = "camelCase")]
159#[non_exhaustive]
160pub struct DepositRecord {
161    /// Deposit ID.
162    #[serde(default, rename = "depId")]
163    pub dep_id: String,
164    /// Transaction ID.
165    #[serde(default, rename = "txId")]
166    pub tx_id: String,
167    /// Currency code.
168    #[serde(default)]
169    pub ccy: String,
170    /// Chain name.
171    #[serde(default)]
172    pub chain: String,
173    /// Deposit amount.
174    #[serde(default)]
175    pub amt: NumberString,
176    /// Deposit state.
177    #[serde(default)]
178    pub state: String,
179    /// Timestamp.
180    #[serde(default)]
181    pub ts: NumberString,
182}
183
184/// Withdrawal history row.
185#[derive(Debug, Clone, Default, Deserialize)]
186#[serde(rename_all = "camelCase")]
187#[non_exhaustive]
188pub struct WithdrawalRecord {
189    /// Withdrawal ID.
190    #[serde(default, rename = "wdId")]
191    pub wd_id: String,
192    /// Client withdrawal ID.
193    #[serde(default, rename = "clientId")]
194    pub client_id: String,
195    /// Transaction ID.
196    #[serde(default, rename = "txId")]
197    pub tx_id: String,
198    /// Currency code.
199    #[serde(default)]
200    pub ccy: String,
201    /// Chain name.
202    #[serde(default)]
203    pub chain: String,
204    /// Withdrawal amount.
205    #[serde(default)]
206    pub amt: NumberString,
207    /// Fee.
208    #[serde(default)]
209    pub fee: NumberString,
210    /// Withdrawal state.
211    #[serde(default)]
212    pub state: String,
213    /// Timestamp.
214    #[serde(default)]
215    pub ts: NumberString,
216}
217
218/// Funding-account bill row.
219#[derive(Debug, Clone, Default, Deserialize)]
220#[serde(rename_all = "camelCase")]
221#[non_exhaustive]
222pub struct FundingBill {
223    /// Bill ID.
224    #[serde(default, rename = "billId")]
225    pub bill_id: String,
226    /// Currency code.
227    #[serde(default)]
228    pub ccy: String,
229    /// Balance change.
230    #[serde(default)]
231    pub bal_chg: NumberString,
232    /// Balance after change.
233    #[serde(default)]
234    pub bal: NumberString,
235    /// Bill type.
236    #[serde(default, rename = "type")]
237    pub bill_type: String,
238    /// Timestamp.
239    #[serde(default)]
240    pub ts: NumberString,
241}
242
243/// Lightning deposit invoice.
244#[derive(Debug, Clone, Default, Deserialize)]
245#[serde(rename_all = "camelCase")]
246#[non_exhaustive]
247pub struct DepositLightning {
248    /// Currency code.
249    #[serde(default)]
250    pub ccy: String,
251    /// Invoice amount.
252    #[serde(default)]
253    pub amt: NumberString,
254    /// Lightning invoice.
255    #[serde(default)]
256    pub invoice: String,
257    /// Recipient.
258    #[serde(default)]
259    pub to: String,
260}
261
262/// Lightning withdrawal result.
263#[derive(Debug, Clone, Default, Deserialize)]
264#[serde(rename_all = "camelCase")]
265#[non_exhaustive]
266pub struct WithdrawalLightning {
267    /// Currency code.
268    #[serde(default)]
269    pub ccy: String,
270    /// Withdrawal amount.
271    #[serde(default)]
272    pub amt: NumberString,
273    /// Withdrawal ID.
274    #[serde(default, rename = "wdId")]
275    pub wd_id: String,
276}
277
278/// Total asset valuation.
279#[derive(Debug, Clone, Default, Deserialize)]
280#[serde(rename_all = "camelCase")]
281#[non_exhaustive]
282pub struct AssetValuation {
283    /// Valuation details by account area.
284    #[serde(default)]
285    pub details: AssetValuationDetails,
286    /// Total balance in the requested valuation currency.
287    #[serde(default, rename = "totalBal")]
288    pub total_bal: NumberString,
289}
290
291/// Asset valuation details by account area.
292#[derive(Debug, Clone, Default, Deserialize)]
293#[serde(rename_all = "camelCase")]
294#[non_exhaustive]
295pub struct AssetValuationDetails {
296    /// Funding-account valuation.
297    #[serde(default)]
298    pub funding: NumberString,
299    /// Trading-account valuation.
300    #[serde(default)]
301    pub trading: NumberString,
302    /// Earn-account valuation.
303    #[serde(default)]
304    pub earn: NumberString,
305    /// Classic-account valuation.
306    #[serde(default)]
307    pub classic: NumberString,
308}
309
310/// Deposit/withdrawal status row.
311#[derive(Debug, Clone, Default, Deserialize)]
312#[serde(rename_all = "camelCase")]
313#[non_exhaustive]
314pub struct DepositWithdrawStatus {
315    /// Withdrawal ID.
316    #[serde(default, rename = "wdId")]
317    pub wd_id: String,
318    /// Transaction ID.
319    #[serde(default, rename = "txId")]
320    pub tx_id: String,
321    /// Currency code.
322    #[serde(default)]
323    pub ccy: String,
324    /// Chain name.
325    #[serde(default)]
326    pub chain: String,
327    /// Destination address.
328    #[serde(default)]
329    pub to: String,
330    /// State.
331    #[serde(default)]
332    pub state: String,
333}
334
335/// Dust-conversion result.
336#[derive(Debug, Clone, Default, Deserialize)]
337#[serde(rename_all = "camelCase")]
338#[non_exhaustive]
339pub struct ConvertDustAssetsResult {
340    /// Currency code.
341    #[serde(default)]
342    pub ccy: String,
343    /// Converted amount.
344    #[serde(default)]
345    pub amt: NumberString,
346}
347
348/// Purchase/redemption result.
349#[derive(Debug, Clone, Default, Deserialize)]
350#[serde(rename_all = "camelCase")]
351#[non_exhaustive]
352pub struct PurchaseRedemptResult {
353    /// Currency code.
354    #[serde(default)]
355    pub ccy: String,
356    /// Amount.
357    #[serde(default)]
358    pub amt: NumberString,
359    /// Operation side.
360    #[serde(default)]
361    pub side: String,
362}