1use serde::{Deserialize, Serialize};
4
5pub type QueryBrokerAccountInfoResponse = BrokerAccountInfoResult;
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
10#[serde(rename_all = "camelCase")]
11pub struct BrokerAccountInfoResult {
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub sub_acct_qty: Option<String>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub max_sub_acct_qty: Option<String>,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub base_fee_rebate_rate: Option<BaseFeeRebateRate>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub markup_fee_rebate_rate: Option<MarkupFeeRebateRate>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub ts: Option<String>,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
26#[serde(rename_all = "camelCase")]
27pub struct BaseFeeRebateRate {
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub spot: Option<String>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub derivatives: Option<String>,
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize)]
36#[serde(rename_all = "camelCase")]
37pub struct MarkupFeeRebateRate {
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub spot: Option<String>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub derivatives: Option<String>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub convert: Option<String>,
44}
45
46pub type QueryBrokerAllUidDetailsResponse = QueryBrokerAllUidResult;
48
49#[derive(Debug, Clone, Serialize, Deserialize)]
51#[serde(rename_all = "camelCase")]
52pub struct QueryBrokerAllUidResult {
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub next_page_cursor: Option<String>,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub list: Option<Vec<ApiLimitInfo>>,
57}
58
59#[derive(Debug, Clone, Serialize, Deserialize)]
61#[serde(rename_all = "camelCase")]
62pub struct ApiLimitInfo {
63 #[serde(skip_serializing_if = "Option::is_none")]
64 pub uids: Option<String>,
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub biz_type: Option<String>,
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub rate: Option<i64>,
69}
70
71pub type QueryBrokerCapResponse = QueryBrokerCapResult;
73
74#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(rename_all = "camelCase")]
77pub struct QueryBrokerCapResult {
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub list: Option<Vec<BrokerCapInfo>>,
80}
81
82#[derive(Debug, Clone, Serialize, Deserialize)]
84#[serde(rename_all = "camelCase")]
85pub struct BrokerCapInfo {
86 #[serde(skip_serializing_if = "Option::is_none")]
87 pub biz_type: Option<String>,
88 #[serde(skip_serializing_if = "Option::is_none")]
89 pub total_rate: Option<String>,
90 #[serde(skip_serializing_if = "Option::is_none")]
91 pub eb_cap: Option<String>,
92 #[serde(skip_serializing_if = "Option::is_none")]
93 pub uid_cap: Option<String>,
94}
95
96#[derive(Debug, Clone, Serialize, Deserialize)]
98#[serde(rename_all = "camelCase")]
99pub struct SetBrokerApiLimitParams {
100 #[serde(skip_serializing_if = "Option::is_none")]
101 pub list: Option<Vec<ApiLimitInfoRequest>>,
102}
103
104#[derive(Debug, Clone, Serialize, Deserialize)]
106#[serde(rename_all = "camelCase")]
107pub struct ApiLimitInfoRequest {
108 pub uids: String,
109 pub biz_type: String,
110 pub rate: i64,
111}
112
113pub type SetBrokerApiLimitResponse = SetApiLimitResult;
115
116#[derive(Debug, Clone, Serialize, Deserialize)]
118#[serde(rename_all = "camelCase")]
119pub struct SetApiLimitResult {
120 #[serde(skip_serializing_if = "Option::is_none")]
121 pub list: Option<Vec<ApiLimitInfoResult>>,
122}
123
124#[derive(Debug, Clone, Serialize, Deserialize)]
126#[serde(rename_all = "camelCase")]
127pub struct ApiLimitInfoResult {
128 #[serde(skip_serializing_if = "Option::is_none")]
129 pub uids: Option<String>,
130 #[serde(skip_serializing_if = "Option::is_none")]
131 pub biz_type: Option<String>,
132 #[serde(skip_serializing_if = "Option::is_none")]
133 pub rate: Option<i64>,
134 #[serde(skip_serializing_if = "Option::is_none")]
135 pub success: Option<bool>,
136 #[serde(skip_serializing_if = "Option::is_none")]
137 pub msg: Option<String>,
138}
139
140pub type QueryBrokerEarningResponse = BrokerEarningResult;
142
143#[derive(Debug, Clone, Serialize, Deserialize)]
145#[serde(rename_all = "camelCase")]
146pub struct BrokerEarningResult {
147 #[serde(skip_serializing_if = "Option::is_none")]
148 pub total_earning_cat: Option<TotalEarningCat>,
149 #[serde(skip_serializing_if = "Option::is_none")]
150 pub details: Option<Vec<RebateDetail>>,
151 #[serde(skip_serializing_if = "Option::is_none")]
152 pub next_page_cursor: Option<String>,
153}
154
155#[derive(Debug, Clone, Serialize, Deserialize)]
157#[serde(rename_all = "camelCase")]
158pub struct TotalEarningCat {
159 #[serde(skip_serializing_if = "Option::is_none")]
160 pub spot: Option<Vec<TotalEarning>>,
161 #[serde(skip_serializing_if = "Option::is_none")]
162 pub derivatives: Option<Vec<TotalEarning>>,
163 #[serde(skip_serializing_if = "Option::is_none")]
164 pub options: Option<Vec<TotalEarning>>,
165 #[serde(skip_serializing_if = "Option::is_none")]
166 pub convert: Option<Vec<TotalEarning>>,
167 #[serde(skip_serializing_if = "Option::is_none")]
168 pub total: Option<Vec<TotalEarning>>,
169}
170
171#[derive(Debug, Clone, Serialize, Deserialize)]
173#[serde(rename_all = "camelCase")]
174pub struct TotalEarning {
175 #[serde(skip_serializing_if = "Option::is_none")]
176 pub coin: Option<String>,
177 #[serde(skip_serializing_if = "Option::is_none")]
178 pub earning: Option<String>,
179}
180
181#[derive(Debug, Clone, Serialize, Deserialize)]
183#[serde(rename_all = "camelCase")]
184pub struct RebateDetail {
185 #[serde(skip_serializing_if = "Option::is_none")]
186 pub user_id: Option<String>,
187 #[serde(skip_serializing_if = "Option::is_none")]
188 pub biz_type: Option<String>,
189 #[serde(skip_serializing_if = "Option::is_none")]
190 pub symbol: Option<String>,
191 #[serde(skip_serializing_if = "Option::is_none")]
192 pub coin: Option<String>,
193 #[serde(skip_serializing_if = "Option::is_none")]
194 pub earning: Option<String>,
195 #[serde(skip_serializing_if = "Option::is_none")]
196 pub markup_earning: Option<String>,
197 #[serde(skip_serializing_if = "Option::is_none")]
198 pub base_fee_earning: Option<String>,
199 #[serde(skip_serializing_if = "Option::is_none")]
200 pub order_id: Option<String>,
201 #[serde(skip_serializing_if = "Option::is_none")]
202 pub exec_time: Option<String>,
203 #[serde(skip_serializing_if = "Option::is_none")]
204 pub exec_id: Option<String>,
205}
206
207#[derive(Debug, Clone, Serialize, Deserialize)]
209#[serde(rename_all = "camelCase")]
210pub struct GetAwardInfoParams {
211 pub id: String,
212}
213
214#[derive(Debug, Clone, Serialize, Deserialize)]
216#[serde(rename_all = "camelCase")]
217pub struct GetAwardInfoResponse {
218 #[serde(default)]
219 pub id: String,
220 #[serde(default)]
221 pub coin: String,
222 #[serde(default)]
223 pub amount_unit: String,
224 #[serde(default)]
225 pub product_line: String,
226 #[serde(default)]
227 pub sub_product_line: String,
228 #[serde(default)]
229 pub total_amount: String,
230 #[serde(default)]
231 pub used_amount: String,
232}
233
234#[derive(Debug, Clone, Serialize, Deserialize)]
236#[serde(rename_all = "camelCase")]
237pub struct DistributeAwardParams {
238 pub account_id: String,
239 pub award_id: String,
240 pub spec_code: String,
241 pub amount: String,
242 pub broker_id: String,
243}
244
245#[derive(Debug, Clone, Serialize, Deserialize)]
247#[serde(rename_all = "camelCase")]
248pub struct GetDistributionRecordParams {
249 pub account_id: String,
250 pub award_id: String,
251 pub spec_code: String,
252 #[serde(skip_serializing_if = "Option::is_none")]
253 pub with_used_amount: Option<bool>,
254}
255
256#[derive(Debug, Clone, Serialize, Deserialize)]
258#[serde(rename_all = "camelCase")]
259pub struct GetDistributionRecordResponse {
260 #[serde(default)]
261 pub account_id: String,
262 #[serde(default)]
263 pub award_id: String,
264 #[serde(default)]
265 pub spec_code: String,
266 #[serde(default)]
267 pub amount: String,
268 #[serde(default)]
269 pub is_claimed: bool,
270 #[serde(default)]
271 pub start_at: String,
272 #[serde(default)]
273 pub end_at: String,
274 #[serde(default)]
275 pub effective_at: String,
276 #[serde(default)]
277 pub ineffective_at: String,
278 #[serde(skip_serializing_if = "Option::is_none")]
279 pub used_amount: Option<String>,
280}