Skip to main content

rust_okx/api/finance/responses/
staking.rs

1use crate::model::NumberString;
2use serde::Deserialize;
3
4/// Currency-level investment data returned by Staking/DeFi endpoints.
5#[derive(Debug, Clone, Deserialize)]
6#[serde(rename_all = "camelCase")]
7#[non_exhaustive]
8pub struct StakingDefiInvestData {
9    /// Value returned by OKX in the `ccy` field.
10    #[serde(default)]
11    pub ccy: String,
12    /// Value returned by OKX in the `amt` field.
13    #[serde(default)]
14    pub amt: NumberString,
15    /// Value returned by OKX in the `earnings` field.
16    #[serde(default)]
17    pub earnings: NumberString,
18}
19
20/// Staking/DeFi offer row.
21#[derive(Debug, Clone, Deserialize)]
22#[serde(rename_all = "camelCase")]
23#[non_exhaustive]
24pub struct StakingDefiOffer {
25    /// Value returned by OKX in the `productId` field.
26    #[serde(default)]
27    pub product_id: String,
28    /// Value returned by OKX in the `protocolType` field.
29    #[serde(default)]
30    pub protocol_type: String,
31    /// Value returned by OKX in the `name` field.
32    #[serde(default)]
33    pub name: String,
34    /// Value returned by OKX in the `ccy` field.
35    #[serde(default)]
36    pub ccy: String,
37    /// Value returned by OKX in the `term` field.
38    #[serde(default)]
39    pub term: String,
40    /// Value returned by OKX in the `apy` field.
41    #[serde(default)]
42    pub apy: NumberString,
43    /// Value returned by OKX in the `state` field.
44    #[serde(default)]
45    pub state: String,
46    /// Value returned by OKX in the `investData` field.
47    #[serde(default)]
48    pub invest_data: Vec<StakingDefiInvestData>,
49}
50
51/// Staking/DeFi order row.
52#[derive(Debug, Clone, Deserialize)]
53#[serde(rename_all = "camelCase")]
54#[non_exhaustive]
55pub struct StakingDefiOrder {
56    /// Value returned by OKX in the `ordId` field.
57    #[serde(default)]
58    pub ord_id: String,
59    /// Value returned by OKX in the `productId` field.
60    #[serde(default)]
61    pub product_id: String,
62    /// Value returned by OKX in the `protocolType` field.
63    #[serde(default)]
64    pub protocol_type: String,
65    /// Value returned by OKX in the `ccy` field.
66    #[serde(default)]
67    pub ccy: String,
68    /// Value returned by OKX in the `amt` field.
69    #[serde(default)]
70    pub amt: NumberString,
71    /// Value returned by OKX in the `state` field.
72    #[serde(default)]
73    pub state: String,
74    /// Value returned by OKX in the `term` field.
75    #[serde(default)]
76    pub term: String,
77    /// Value returned by OKX in the `apy` field.
78    #[serde(default)]
79    pub apy: NumberString,
80    /// Value returned by OKX in the `cTime` field.
81    #[serde(default)]
82    pub c_time: NumberString,
83    /// Value returned by OKX in the `uTime` field.
84    #[serde(default)]
85    pub u_time: NumberString,
86}
87
88/// Staking product-info row.
89#[derive(Debug, Clone, Deserialize)]
90#[serde(rename_all = "camelCase")]
91#[non_exhaustive]
92pub struct StakingProductInfo {
93    /// Fast redemption daily limit.
94    /// The master account and sub-accounts share the same limit.
95    #[serde(default)]
96    pub fast_redemption_daily_limit: NumberString,
97    /// The latest rate for checking crypto.
98    #[serde(default)]
99    pub rate: NumberString,
100    /// Redemption days of crypto.
101    #[serde(default)]
102    pub redempt_days: NumberString,
103    /// Minimum subscription amount of crypto.
104    #[serde(default)]
105    pub min_amt: NumberString,
106    /// urrently fast redemption max available amount
107    /// Only for `SOL_PRODUCT_INFO`
108    #[serde(default)]
109    pub fast_redemption_avail: Option<NumberString>,
110}
111
112/// Staking order row.
113#[derive(Debug, Clone, Deserialize)]
114#[serde(rename_all = "camelCase")]
115#[non_exhaustive]
116pub struct StakingOrder {
117    /// Value returned by OKX in the `ordId` field.
118    #[serde(default)]
119    pub ord_id: String,
120    /// Value returned by OKX in the `ccy` field.
121    #[serde(default)]
122    pub ccy: String,
123    /// Value returned by OKX in the `amt` field.
124    #[serde(default)]
125    pub amt: NumberString,
126    /// Value returned by OKX in the `state` field.
127    #[serde(default)]
128    pub state: String,
129    /// Value returned by OKX in the `type` field.
130    #[serde(default, rename = "type")]
131    pub order_type: String,
132    /// Value returned by OKX in the `cTime` field.
133    #[serde(default)]
134    pub c_time: NumberString,
135}
136
137/// Cancel redeem ETH
138#[derive(Debug, Clone, Deserialize)]
139#[serde(rename_all = "camelCase")]
140#[non_exhaustive]
141pub struct CancelRedeem {
142    /// Value returned by OKX in the `ordId` field
143    #[serde(default)]
144    pub ord_id: String,
145}
146
147/// Staking balance row.
148#[derive(Debug, Clone, Deserialize)]
149#[serde(rename_all = "camelCase")]
150#[non_exhaustive]
151pub struct StakingBalance {
152    /// Value returned by OKX in the `ccy` field.
153    #[serde(default)]
154    pub ccy: String,
155    /// Value returned by OKX in the `amt` field.
156    #[serde(default)]
157    pub amt: NumberString,
158    /// Value returned by OKX in the `earnings` field.
159    #[serde(default)]
160    pub earnings: NumberString,
161}
162
163/// Staking history row.
164#[derive(Debug, Clone, Deserialize)]
165#[serde(rename_all = "camelCase")]
166#[non_exhaustive]
167pub struct StakingHistory {
168    /// Value returned by OKX in the `ccy` field.
169    #[serde(default)]
170    pub ccy: String,
171    /// Value returned by OKX in the `amt` field.
172    #[serde(default)]
173    pub amt: NumberString,
174    /// Value returned by OKX in the `type` field.
175    #[serde(default, rename = "type")]
176    pub event_type: String,
177    /// Value returned by OKX in the `state` field.
178    #[serde(default)]
179    pub state: String,
180    /// Value returned by OKX in the `ts` field.
181    #[serde(default)]
182    pub ts: NumberString,
183}
184
185/// Staking APY-history row.
186#[derive(Debug, Clone, Deserialize)]
187#[serde(rename_all = "camelCase")]
188#[non_exhaustive]
189pub struct StakingApyHistory {
190    /// Value returned by OKX in the `ccy` field.
191    #[serde(default)]
192    pub ccy: String,
193    /// Value returned by OKX in the `apy` field.
194    #[serde(default)]
195    pub apy: NumberString,
196    /// Value returned by OKX in the `ts` field.
197    #[serde(default)]
198    pub ts: NumberString,
199}