Skip to main content

bybit_api/models/
fiat.rs

1use serde::{Deserialize, Serialize};
2
3use crate::models::earn::PriceQuote;
4
5pub type CreatePayResponse = CreatePayResult;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
8#[serde(rename_all = "camelCase")]
9pub struct CreatePayResult {
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub pay_id: Option<String>,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub terminal_type: Option<String>,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub expire_time: Option<i64>,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub checkout_link: Option<String>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub qr_content: Option<String>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub order: Option<PayOrder>,
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub customer: Option<Customer>,
24}
25
26pub type PayResultResponse = PayResultResult;
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
29#[serde(rename_all = "camelCase")]
30pub struct PayResultResult {
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub order: Option<PayOrder>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub customer: Option<Customer>,
35}
36
37pub type MockStatusResponse = MockStatusResult;
38
39#[derive(Debug, Clone, Serialize, Deserialize)]
40#[serde(rename_all = "camelCase")]
41pub struct MockStatusResult {
42    #[serde(skip_serializing_if = "Option::is_none")]
43    pub order: Option<PayOrder>,
44}
45
46pub type FxConvertResponse = FxConvertResult;
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
49#[serde(rename_all = "camelCase")]
50pub struct FxConvertResult {
51    #[serde(skip_serializing_if = "Option::is_none")]
52    pub quotation_id: Option<String>,
53    #[serde(skip_serializing_if = "Option::is_none")]
54    pub settle_currency: Option<String>,
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub settle_amount: Option<String>,
57}
58
59pub type RefundResponse = RefundResponseResult;
60
61#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(rename_all = "camelCase")]
63pub struct RefundResponseResult {
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub refund_orders: Option<Vec<RefundOrder>>,
66}
67
68pub type PayoutResponse = PayoutResponseResult;
69
70#[derive(Debug, Clone, Serialize, Deserialize)]
71#[serde(rename_all = "camelCase")]
72pub struct PayoutResponseResult {
73    #[serde(skip_serializing_if = "Option::is_none")]
74    pub order: Option<PayOrder>,
75}
76
77#[derive(Debug, Clone, Serialize, Deserialize)]
78#[serde(rename_all = "camelCase")]
79pub struct PayOrder {
80    #[serde(skip_serializing_if = "Option::is_none")]
81    pub merchant_id: Option<String>,
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub client_id: Option<String>,
84    #[serde(skip_serializing_if = "Option::is_none")]
85    pub payment_type: Option<String>,
86    #[serde(skip_serializing_if = "Option::is_none")]
87    pub merchant_trade_no: Option<String>,
88    #[serde(skip_serializing_if = "Option::is_none")]
89    pub pay_id: Option<String>,
90    #[serde(skip_serializing_if = "Option::is_none")]
91    pub status: Option<String>,
92    #[serde(skip_serializing_if = "Option::is_none")]
93    pub amount: Option<String>,
94    #[serde(skip_serializing_if = "Option::is_none")]
95    pub currency: Option<String>,
96    #[serde(skip_serializing_if = "Option::is_none")]
97    pub currency_type: Option<String>,
98    #[serde(skip_serializing_if = "Option::is_none")]
99    pub create_time: Option<i64>,
100    #[serde(skip_serializing_if = "Option::is_none")]
101    pub payment_time: Option<i64>,
102    #[serde(skip_serializing_if = "Option::is_none")]
103    pub finish_time: Option<i64>,
104    #[serde(skip_serializing_if = "Option::is_none")]
105    pub refund_orders: Option<Vec<RefundOrder>>,
106    #[serde(skip_serializing_if = "Option::is_none")]
107    pub remark: Option<String>,
108}
109
110#[derive(Debug, Clone, Serialize, Deserialize)]
111#[serde(rename_all = "camelCase")]
112pub struct RefundOrder {
113    #[serde(skip_serializing_if = "Option::is_none")]
114    pub refund_id: Option<String>,
115    #[serde(skip_serializing_if = "Option::is_none")]
116    pub refund_type: Option<String>,
117    #[serde(skip_serializing_if = "Option::is_none")]
118    pub merchant_trade_no: Option<String>,
119    #[serde(skip_serializing_if = "Option::is_none")]
120    pub merchant_refund_no: Option<String>,
121    #[serde(skip_serializing_if = "Option::is_none")]
122    pub pay_id: Option<String>,
123    #[serde(skip_serializing_if = "Option::is_none")]
124    pub refund_status: Option<String>,
125    #[serde(skip_serializing_if = "Option::is_none")]
126    pub refund_currency: Option<String>,
127    #[serde(skip_serializing_if = "Option::is_none")]
128    pub amount: Option<String>,
129    #[serde(skip_serializing_if = "Option::is_none")]
130    pub create_time: Option<i64>,
131}
132
133#[derive(Debug, Clone, Serialize, Deserialize)]
134#[serde(rename_all = "camelCase")]
135pub struct Customer {
136    #[serde(skip_serializing_if = "Option::is_none")]
137    pub uid: Option<String>,
138    #[serde(skip_serializing_if = "Option::is_none")]
139    pub external_user_id: Option<String>,
140    #[serde(skip_serializing_if = "Option::is_none")]
141    pub user_name: Option<String>,
142    #[serde(skip_serializing_if = "Option::is_none")]
143    pub register_time: Option<String>,
144    #[serde(skip_serializing_if = "Option::is_none")]
145    pub kyc_country: Option<String>,
146    #[serde(skip_serializing_if = "Option::is_none")]
147    pub remarks: Option<String>,
148}
149
150#[derive(Debug, Clone, Serialize, Deserialize)]
151#[serde(rename_all = "camelCase")]
152pub struct Env {
153    pub terminal_type: String,
154    pub device: String,
155    pub browser_version: String,
156    pub ip: String,
157}
158
159#[derive(Debug, Clone, Serialize, Deserialize)]
160#[serde(rename_all = "camelCase")]
161pub struct Good {
162    pub shopping_name: String,
163    pub mcc_code: String,
164    pub goods_name: String,
165    #[serde(skip_serializing_if = "Option::is_none")]
166    pub goods_detail: Option<String>,
167}
168
169#[derive(Debug, Clone, Serialize, Deserialize)]
170#[serde(rename_all = "camelCase")]
171pub struct RiskInfo {
172    pub terminal_type: String,
173}
174
175#[derive(Debug, Clone, Serialize, Deserialize)]
176#[serde(rename_all = "camelCase")]
177pub struct RefundOrderItem {
178    pub refund_type: String,
179    #[serde(skip_serializing_if = "Option::is_none")]
180    pub merchant_trade_no: Option<String>,
181    #[serde(skip_serializing_if = "Option::is_none")]
182    pub pay_id: Option<String>,
183    pub merchant_refund_no: String,
184    pub refund_amount: String,
185    pub env: Env,
186    #[serde(skip_serializing_if = "Option::is_none")]
187    pub risk_info: Option<RiskInfo>,
188    #[serde(skip_serializing_if = "Option::is_none")]
189    pub customer: Option<Customer>,
190}
191
192#[derive(Debug, Clone, Serialize, Deserialize)]
193#[serde(rename_all = "camelCase")]
194pub struct Payee {
195    pub uid: String,
196}
197
198#[derive(Debug, Clone, Serialize, Deserialize)]
199#[serde(rename_all = "camelCase")]
200pub struct AgreementBaseResponse {
201    #[serde(skip_serializing_if = "Option::is_none")]
202    pub code: Option<String>,
203    #[serde(skip_serializing_if = "Option::is_none")]
204    pub message: Option<String>,
205}
206
207#[derive(Debug, Clone, Serialize, Deserialize)]
208#[serde(rename_all = "camelCase")]
209pub struct AgreementSignResponse {
210    #[serde(skip_serializing_if = "Option::is_none")]
211    pub code: Option<String>,
212    #[serde(skip_serializing_if = "Option::is_none")]
213    pub message: Option<String>,
214    #[serde(skip_serializing_if = "Option::is_none")]
215    pub data: Option<AgreementSignData>,
216}
217
218#[derive(Debug, Clone, Serialize, Deserialize)]
219pub struct AgreementSignData {
220    #[serde(rename = "sign_order_id", skip_serializing_if = "Option::is_none")]
221    pub sign_order_id: Option<String>,
222    #[serde(rename = "sign_url", skip_serializing_if = "Option::is_none")]
223    pub sign_url: Option<String>,
224    #[serde(rename = "qr_code", skip_serializing_if = "Option::is_none")]
225    pub qr_code: Option<String>,
226    #[serde(rename = "qr_code_url", skip_serializing_if = "Option::is_none")]
227    pub qr_code_url: Option<String>,
228    #[serde(rename = "expire_time", skip_serializing_if = "Option::is_none")]
229    pub expire_time: Option<i64>,
230}
231
232#[derive(Debug, Clone, Serialize, Deserialize)]
233#[serde(rename_all = "camelCase")]
234pub struct AgreementUnsignResponse {
235    #[serde(skip_serializing_if = "Option::is_none")]
236    pub code: Option<String>,
237    #[serde(skip_serializing_if = "Option::is_none")]
238    pub message: Option<String>,
239    #[serde(skip_serializing_if = "Option::is_none")]
240    pub data: Option<AgreementUnsignData>,
241}
242
243#[derive(Debug, Clone, Serialize, Deserialize)]
244pub struct AgreementUnsignData {
245    #[serde(rename = "agreement_no", skip_serializing_if = "Option::is_none")]
246    pub agreement_no: Option<String>,
247    #[serde(skip_serializing_if = "Option::is_none")]
248    pub status: Option<String>,
249    #[serde(rename = "unsign_time", skip_serializing_if = "Option::is_none")]
250    pub unsign_time: Option<i64>,
251}
252
253#[derive(Debug, Clone, Serialize, Deserialize)]
254#[serde(rename_all = "camelCase")]
255pub struct AgreementPayResponse {
256    #[serde(skip_serializing_if = "Option::is_none")]
257    pub code: Option<String>,
258    #[serde(skip_serializing_if = "Option::is_none")]
259    pub message: Option<String>,
260    #[serde(skip_serializing_if = "Option::is_none")]
261    pub data: Option<AgreementPayData>,
262}
263
264#[derive(Debug, Clone, Serialize, Deserialize)]
265pub struct AgreementPayData {
266    #[serde(rename = "order_no", skip_serializing_if = "Option::is_none")]
267    pub order_no: Option<String>,
268    #[serde(rename = "trade_no", skip_serializing_if = "Option::is_none")]
269    pub trade_no: Option<String>,
270    #[serde(rename = "out_trade_no", skip_serializing_if = "Option::is_none")]
271    pub out_trade_no: Option<String>,
272    #[serde(skip_serializing_if = "Option::is_none")]
273    pub status: Option<String>,
274    #[serde(skip_serializing_if = "Option::is_none")]
275    pub amount: Option<String>,
276    #[serde(rename = "crypto_payment", skip_serializing_if = "Option::is_none")]
277    pub crypto_payment: Option<String>,
278    #[serde(rename = "pay_time", skip_serializing_if = "Option::is_none")]
279    pub pay_time: Option<i64>,
280    #[serde(rename = "failure_reason", skip_serializing_if = "Option::is_none")]
281    pub failure_reason: Option<String>,
282}
283
284#[derive(Debug, Clone, Serialize, Deserialize)]
285#[serde(rename_all = "camelCase")]
286pub struct AgreementPayWithSignResponse {
287    #[serde(skip_serializing_if = "Option::is_none")]
288    pub code: Option<String>,
289    #[serde(skip_serializing_if = "Option::is_none")]
290    pub message: Option<String>,
291    #[serde(skip_serializing_if = "Option::is_none")]
292    pub data: Option<AgreementPayWithSignData>,
293}
294
295#[derive(Debug, Clone, Serialize, Deserialize)]
296pub struct AgreementPayWithSignData {
297    #[serde(rename = "sign_result", skip_serializing_if = "Option::is_none")]
298    pub sign_result: Option<AgreementSignData>,
299    #[serde(rename = "pay_result", skip_serializing_if = "Option::is_none")]
300    pub pay_result: Option<AgreementPayData>,
301}
302
303#[derive(Debug, Clone, Serialize, Deserialize)]
304#[serde(rename_all = "camelCase")]
305pub struct AgreementQueryResponse {
306    #[serde(skip_serializing_if = "Option::is_none")]
307    pub code: Option<String>,
308    #[serde(skip_serializing_if = "Option::is_none")]
309    pub message: Option<String>,
310    #[serde(skip_serializing_if = "Option::is_none")]
311    pub data: Option<AgreementQueryData>,
312}
313
314#[derive(Debug, Clone, Serialize, Deserialize)]
315pub struct AgreementQueryData {
316    #[serde(rename = "agreement_no", skip_serializing_if = "Option::is_none")]
317    pub agreement_no: Option<String>,
318    #[serde(
319        rename = "external_agreement_no",
320        skip_serializing_if = "Option::is_none"
321    )]
322    pub external_agreement_no: Option<String>,
323    #[serde(rename = "user_id", skip_serializing_if = "Option::is_none")]
324    pub user_id: Option<String>,
325    #[serde(rename = "merchant_user_id", skip_serializing_if = "Option::is_none")]
326    pub merchant_user_id: Option<String>,
327    #[serde(skip_serializing_if = "Option::is_none")]
328    pub status: Option<String>,
329    #[serde(rename = "sign_time", skip_serializing_if = "Option::is_none")]
330    pub sign_time: Option<i64>,
331    #[serde(rename = "valid_time", skip_serializing_if = "Option::is_none")]
332    pub valid_time: Option<i64>,
333    #[serde(rename = "single_limit", skip_serializing_if = "Option::is_none")]
334    pub single_limit: Option<String>,
335    #[serde(rename = "period_limits", skip_serializing_if = "Option::is_none")]
336    pub period_limits: Option<String>,
337    #[serde(rename = "used_quota", skip_serializing_if = "Option::is_none")]
338    pub used_quota: Option<String>,
339}
340
341#[derive(Debug, Clone, Serialize, Deserialize)]
342#[serde(rename_all = "camelCase")]
343pub struct AgreementListResponse {
344    #[serde(skip_serializing_if = "Option::is_none")]
345    pub code: Option<String>,
346    #[serde(skip_serializing_if = "Option::is_none")]
347    pub message: Option<String>,
348    #[serde(skip_serializing_if = "Option::is_none")]
349    pub data: Option<AgreementListData>,
350}
351
352#[derive(Debug, Clone, Serialize, Deserialize)]
353pub struct AgreementListData {
354    #[serde(skip_serializing_if = "Option::is_none")]
355    pub total: Option<i64>,
356    #[serde(rename = "page_no", skip_serializing_if = "Option::is_none")]
357    pub page_no: Option<i32>,
358    #[serde(rename = "page_size", skip_serializing_if = "Option::is_none")]
359    pub page_size: Option<i32>,
360    #[serde(skip_serializing_if = "Option::is_none")]
361    pub list: Option<Vec<AgreementQueryData>>,
362}
363
364#[derive(Debug, Clone, Serialize, Deserialize)]
365#[serde(rename_all = "camelCase")]
366pub struct AgreementPayQueryResponse {
367    #[serde(skip_serializing_if = "Option::is_none")]
368    pub code: Option<String>,
369    #[serde(skip_serializing_if = "Option::is_none")]
370    pub message: Option<String>,
371    #[serde(skip_serializing_if = "Option::is_none")]
372    pub data: Option<AgreementPayQueryData>,
373}
374
375#[derive(Debug, Clone, Serialize, Deserialize)]
376pub struct AgreementPayQueryData {
377    #[serde(rename = "trade_no", skip_serializing_if = "Option::is_none")]
378    pub trade_no: Option<String>,
379    #[serde(rename = "out_trade_no", skip_serializing_if = "Option::is_none")]
380    pub out_trade_no: Option<String>,
381    #[serde(skip_serializing_if = "Option::is_none")]
382    pub status: Option<String>,
383    #[serde(skip_serializing_if = "Option::is_none")]
384    pub amount: Option<String>,
385    #[serde(rename = "crypto_payment", skip_serializing_if = "Option::is_none")]
386    pub crypto_payment: Option<String>,
387    #[serde(rename = "pay_time", skip_serializing_if = "Option::is_none")]
388    pub pay_time: Option<i64>,
389    #[serde(rename = "refund_amount", skip_serializing_if = "Option::is_none")]
390    pub refund_amount: Option<String>,
391    #[serde(rename = "refund_no", skip_serializing_if = "Option::is_none")]
392    pub refund_no: Option<String>,
393    #[serde(rename = "out_refund_no", skip_serializing_if = "Option::is_none")]
394    pub out_refund_no: Option<String>,
395    #[serde(rename = "refund_time", skip_serializing_if = "Option::is_none")]
396    pub refund_time: Option<i64>,
397    #[serde(rename = "failure_reason", skip_serializing_if = "Option::is_none")]
398    pub failure_reason: Option<String>,
399}
400
401#[derive(Debug, Clone, Serialize, Deserialize)]
402#[serde(rename_all = "camelCase")]
403pub struct AgreementPayListResponse {
404    #[serde(skip_serializing_if = "Option::is_none")]
405    pub code: Option<String>,
406    #[serde(skip_serializing_if = "Option::is_none")]
407    pub message: Option<String>,
408    #[serde(skip_serializing_if = "Option::is_none")]
409    pub data: Option<AgreementPayListData>,
410}
411
412#[derive(Debug, Clone, Serialize, Deserialize)]
413pub struct AgreementPayListData {
414    #[serde(skip_serializing_if = "Option::is_none")]
415    pub total: Option<i64>,
416    #[serde(rename = "page_no", skip_serializing_if = "Option::is_none")]
417    pub page_no: Option<i32>,
418    #[serde(rename = "page_size", skip_serializing_if = "Option::is_none")]
419    pub page_size: Option<i32>,
420    #[serde(skip_serializing_if = "Option::is_none")]
421    pub list: Option<Vec<AgreementPayQueryData>>,
422}
423
424#[derive(Debug, Clone, Serialize, Deserialize)]
425#[serde(rename_all = "camelCase")]
426pub struct AgreementRefundResponse {
427    #[serde(skip_serializing_if = "Option::is_none")]
428    pub code: Option<String>,
429    #[serde(skip_serializing_if = "Option::is_none")]
430    pub message: Option<String>,
431    #[serde(skip_serializing_if = "Option::is_none")]
432    pub data: Option<AgreementRefundData>,
433}
434
435#[derive(Debug, Clone, Serialize, Deserialize)]
436pub struct AgreementRefundData {
437    #[serde(rename = "refund_no", skip_serializing_if = "Option::is_none")]
438    pub refund_no: Option<String>,
439    #[serde(rename = "out_refund_no", skip_serializing_if = "Option::is_none")]
440    pub out_refund_no: Option<String>,
441    #[serde(rename = "trade_no", skip_serializing_if = "Option::is_none")]
442    pub trade_no: Option<String>,
443    #[serde(skip_serializing_if = "Option::is_none")]
444    pub status: Option<String>,
445    #[serde(rename = "refund_amount", skip_serializing_if = "Option::is_none")]
446    pub refund_amount: Option<String>,
447    #[serde(rename = "refund_time", skip_serializing_if = "Option::is_none")]
448    pub refund_time: Option<i64>,
449    #[serde(rename = "failure_reason", skip_serializing_if = "Option::is_none")]
450    pub failure_reason: Option<String>,
451}
452
453#[derive(Debug, Clone, Serialize, Deserialize)]
454#[serde(rename_all = "camelCase")]
455pub struct ApplyQuoteParams {
456    pub from_coin: String,
457    pub from_coin_type: String,
458    pub to_coin: String,
459    pub to_coin_type: String,
460    pub request_amount: String,
461    #[serde(skip_serializing_if = "Option::is_none")]
462    pub request_coin_type: Option<String>,
463}
464
465#[derive(Debug, Clone, Serialize, Deserialize)]
466#[serde(rename_all = "camelCase")]
467pub struct ConfirmQuoteParams {
468    pub quote_tx_id: String,
469    pub sub_user_id: String,
470    #[serde(skip_serializing_if = "Option::is_none")]
471    pub webhook_url: Option<String>,
472    #[serde(skip_serializing_if = "Option::is_none")]
473    pub merchant_request_id: Option<String>,
474}
475
476#[derive(Debug, Clone, Serialize, Deserialize)]
477#[serde(rename_all = "camelCase")]
478pub struct GetAdsParams {
479    pub token_id: String,
480    pub currency_id: String,
481    pub side: String,
482    #[serde(skip_serializing_if = "Option::is_none")]
483    pub page: Option<String>,
484    #[serde(skip_serializing_if = "Option::is_none")]
485    pub size: Option<String>,
486}
487
488#[derive(Debug, Clone, Serialize, Deserialize)]
489#[serde(rename_all = "camelCase")]
490pub struct PostAdParams {
491    pub token_id: String,
492    pub currency_id: String,
493    pub side: String,
494    pub price_type: String,
495    pub premium: String,
496    pub price: String,
497    pub min_amount: String,
498    pub max_amount: String,
499    pub remark: String,
500    pub trading_preference_set: serde_json::Value,
501    pub payment_ids: Vec<String>,
502    pub quantity: String,
503    pub payment_period: String,
504    pub item_type: String,
505}
506
507#[derive(Debug, Clone, Serialize, Deserialize)]
508#[serde(rename_all = "camelCase")]
509pub struct RemoveAdParams {
510    pub item_id: String,
511}
512
513#[derive(Debug, Clone, Serialize, Deserialize)]
514#[serde(rename_all = "camelCase")]
515pub struct UpdateAdParams {
516    pub id: String,
517    pub price_type: String,
518    pub premium: String,
519    pub price: String,
520    pub min_amount: String,
521    pub max_amount: String,
522    pub remark: String,
523    pub trading_preference_set: serde_json::Value,
524    pub payment_ids: Vec<String>,
525    pub action_type: String,
526    pub quantity: String,
527    pub payment_period: String,
528}
529
530#[derive(Debug, Clone, Serialize, Deserialize)]
531#[serde(rename_all = "camelCase")]
532pub struct GetMyAdsParams {
533    #[serde(skip_serializing_if = "Option::is_none")]
534    pub item_id: Option<String>,
535    #[serde(skip_serializing_if = "Option::is_none")]
536    pub status: Option<String>,
537    #[serde(skip_serializing_if = "Option::is_none")]
538    pub side: Option<String>,
539    #[serde(skip_serializing_if = "Option::is_none")]
540    pub token_id: Option<String>,
541    #[serde(skip_serializing_if = "Option::is_none")]
542    pub page: Option<String>,
543    #[serde(skip_serializing_if = "Option::is_none")]
544    pub size: Option<String>,
545    #[serde(skip_serializing_if = "Option::is_none")]
546    pub currency_id: Option<String>,
547}
548
549#[derive(Debug, Clone, Serialize, Deserialize)]
550#[serde(rename_all = "camelCase")]
551pub struct GetMyAdDetailsParams {
552    pub item_id: String,
553}
554
555#[derive(Debug, Clone, Serialize, Deserialize)]
556#[serde(rename_all = "camelCase")]
557pub struct GetAllOrdersParams {
558    pub page: i32,
559    pub size: i32,
560    #[serde(skip_serializing_if = "Option::is_none")]
561    pub status: Option<i32>,
562    #[serde(skip_serializing_if = "Option::is_none")]
563    pub begin_time: Option<String>,
564    #[serde(skip_serializing_if = "Option::is_none")]
565    pub end_time: Option<String>,
566    #[serde(skip_serializing_if = "Option::is_none")]
567    pub token_id: Option<String>,
568    #[serde(skip_serializing_if = "Option::is_none")]
569    pub side: Option<i32>,
570}
571
572#[derive(Debug, Clone, Serialize, Deserialize)]
573#[serde(rename_all = "camelCase")]
574pub struct GetOrderDetailParams {
575    pub order_id: String,
576}
577
578#[derive(Debug, Clone, Serialize, Deserialize)]
579#[serde(rename_all = "camelCase")]
580pub struct GetPendingOrdersParams {
581    #[serde(skip_serializing_if = "Option::is_none")]
582    pub status: Option<i32>,
583    #[serde(skip_serializing_if = "Option::is_none")]
584    pub begin_time: Option<String>,
585    #[serde(skip_serializing_if = "Option::is_none")]
586    pub end_time: Option<String>,
587    #[serde(skip_serializing_if = "Option::is_none")]
588    pub token_id: Option<String>,
589    #[serde(skip_serializing_if = "Option::is_none")]
590    pub side: Option<i32>,
591    pub page: i32,
592    pub size: i32,
593}
594
595#[derive(Debug, Clone, Serialize, Deserialize)]
596#[serde(rename_all = "camelCase")]
597pub struct MarkOrderAsPaidParams {
598    pub order_id: String,
599    pub payment_type: String,
600    pub payment_id: String,
601}
602
603#[derive(Debug, Clone, Serialize, Deserialize)]
604#[serde(rename_all = "camelCase")]
605pub struct ReleaseAssetsParams {
606    pub order_id: String,
607}
608
609#[derive(Debug, Clone, Serialize, Deserialize)]
610#[serde(rename_all = "camelCase")]
611pub struct SendChatMessageParams {
612    pub message: String,
613    pub content_type: String,
614    pub order_id: String,
615    pub msg_uuid: String,
616    #[serde(skip_serializing_if = "Option::is_none")]
617    pub file_name: Option<String>,
618}
619
620#[derive(Debug, Clone, Serialize, Deserialize)]
621#[serde(rename_all = "camelCase")]
622pub struct UploadChatFileParams {
623    #[serde(rename = "upload_file")]
624    pub upload_file: String,
625}
626
627#[derive(Debug, Clone, Serialize, Deserialize)]
628#[serde(rename_all = "camelCase")]
629pub struct GetChatMessagesParams {
630    pub order_id: String,
631    #[serde(skip_serializing_if = "Option::is_none")]
632    pub current_page: Option<String>,
633    pub size: String,
634}
635
636#[derive(Debug, Clone, Serialize, Deserialize)]
637#[serde(rename_all = "camelCase")]
638pub struct GetCounterpartyUserInfoParams {
639    #[serde(skip_serializing_if = "Option::is_none")]
640    pub original_uid: Option<String>,
641    #[serde(skip_serializing_if = "Option::is_none")]
642    pub order_id: Option<String>,
643}
644
645#[derive(Debug, Clone, Serialize, Deserialize)]
646pub struct AgreementMonetaryAmount {
647    pub total: String,
648    pub currency: String,
649    #[serde(rename = "currency_type")]
650    pub currency_type: String,
651    #[serde(skip_serializing_if = "Option::is_none")]
652    pub chain: Option<String>,
653}
654
655#[derive(Debug, Clone, Serialize, Deserialize)]
656pub struct AgreementLimitConfig {
657    #[serde(skip_serializing_if = "Option::is_none")]
658    pub amount: Option<String>,
659    #[serde(skip_serializing_if = "Option::is_none")]
660    pub currency: Option<String>,
661    #[serde(rename = "currency_type", skip_serializing_if = "Option::is_none")]
662    pub currency_type: Option<String>,
663    #[serde(skip_serializing_if = "Option::is_none")]
664    pub chain: Option<String>,
665}
666
667#[derive(Debug, Clone, Serialize, Deserialize)]
668pub struct AgreementPeriodLimit {
669    #[serde(skip_serializing_if = "Option::is_none")]
670    pub amount: Option<String>,
671    #[serde(skip_serializing_if = "Option::is_none")]
672    pub currency: Option<String>,
673    #[serde(rename = "currency_type", skip_serializing_if = "Option::is_none")]
674    pub currency_type: Option<String>,
675    #[serde(skip_serializing_if = "Option::is_none")]
676    pub chain: Option<String>,
677    #[serde(rename = "period_type")]
678    pub period_type: String,
679}
680
681#[derive(Debug, Clone, Serialize, Deserialize)]
682pub struct AgreementCryptoPaymentInfo {
683    #[serde(skip_serializing_if = "Option::is_none")]
684    pub currency: Option<String>,
685    #[serde(skip_serializing_if = "Option::is_none")]
686    pub amount: Option<String>,
687    #[serde(skip_serializing_if = "Option::is_none")]
688    pub chain: Option<String>,
689    #[serde(rename = "exchange_rate", skip_serializing_if = "Option::is_none")]
690    pub exchange_rate: Option<String>,
691    #[serde(rename = "rate_time", skip_serializing_if = "Option::is_none")]
692    pub rate_time: Option<String>,
693}
694
695#[derive(Debug, Clone, Serialize, Deserialize)]
696pub struct AgreementOrderInfo {
697    #[serde(rename = "order_title")]
698    pub order_title: String,
699    #[serde(rename = "order_desc", skip_serializing_if = "Option::is_none")]
700    pub order_desc: Option<String>,
701    #[serde(rename = "goods_name", skip_serializing_if = "Option::is_none")]
702    pub goods_name: Option<String>,
703    #[serde(rename = "goods_id", skip_serializing_if = "Option::is_none")]
704    pub goods_id: Option<String>,
705    #[serde(rename = "goods_category", skip_serializing_if = "Option::is_none")]
706    pub goods_category: Option<String>,
707}
708
709#[derive(Debug, Clone, Serialize, Deserialize)]
710pub struct AgreementSceneInfo {
711    #[serde(rename = "device_id", skip_serializing_if = "Option::is_none")]
712    pub device_id: Option<String>,
713    #[serde(rename = "device_ip", skip_serializing_if = "Option::is_none")]
714    pub device_ip: Option<String>,
715    // FIXME(typed-field): falls back to `serde_json::Value` because the Bybit
716    // spec did not provide a matching inner type at generation time. Replace
717    // with a typed struct in a follow-up PR after consulting the V5 docs.
718    #[serde(skip_serializing_if = "Option::is_none")]
719    pub location: Option<serde_json::Value>,
720}
721
722#[derive(Debug, Clone, Serialize, Deserialize)]
723pub struct AgreementRiskInfo {
724    #[serde(rename = "user_ip", skip_serializing_if = "Option::is_none")]
725    pub user_ip: Option<String>,
726    #[serde(rename = "device_fingerprint", skip_serializing_if = "Option::is_none")]
727    pub device_fingerprint: Option<String>,
728    #[serde(rename = "user_agent", skip_serializing_if = "Option::is_none")]
729    pub user_agent: Option<String>,
730}
731
732#[derive(Debug, Clone, Serialize, Deserialize)]
733pub struct AgreementSignParams {
734    #[serde(rename = "merchant_user_id", skip_serializing_if = "Option::is_none")]
735    pub merchant_user_id: Option<String>,
736    #[serde(rename = "scene_code", skip_serializing_if = "Option::is_none")]
737    pub scene_code: Option<String>,
738    #[serde(rename = "product_code", skip_serializing_if = "Option::is_none")]
739    pub product_code: Option<String>,
740    #[serde(
741        rename = "external_agreement_no",
742        skip_serializing_if = "Option::is_none"
743    )]
744    pub external_agreement_no: Option<String>,
745    #[serde(rename = "sign_valid_time", skip_serializing_if = "Option::is_none")]
746    pub sign_valid_time: Option<String>,
747    #[serde(rename = "single_limit", skip_serializing_if = "Option::is_none")]
748    pub single_limit: Option<AgreementLimitConfig>,
749    #[serde(rename = "period_limits", skip_serializing_if = "Option::is_none")]
750    pub period_limits: Option<Vec<AgreementPeriodLimit>>,
751    #[serde(rename = "sign_notify_url", skip_serializing_if = "Option::is_none")]
752    pub sign_notify_url: Option<String>,
753    #[serde(rename = "return_url", skip_serializing_if = "Option::is_none")]
754    pub return_url: Option<String>,
755    #[serde(
756        rename = "sign_expire_minutes",
757        skip_serializing_if = "Option::is_none"
758    )]
759    pub sign_expire_minutes: Option<i32>,
760    // FIXME(typed-field): falls back to `serde_json::Value` because the Bybit
761    // spec did not provide a matching inner type at generation time. Replace
762    // with a typed struct in a follow-up PR after consulting the V5 docs.
763    #[serde(rename = "extra_params", skip_serializing_if = "Option::is_none")]
764    pub extra_params: Option<serde_json::Value>,
765}
766
767#[derive(Debug, Clone, Serialize, Deserialize)]
768pub struct AgreementPayParams {
769    #[serde(rename = "agreement_no", skip_serializing_if = "Option::is_none")]
770    pub agreement_no: Option<String>,
771    #[serde(rename = "out_trade_no")]
772    pub out_trade_no: String,
773    #[serde(rename = "scene_code")]
774    pub scene_code: String,
775    pub amount: AgreementMonetaryAmount,
776    #[serde(rename = "order_info")]
777    pub order_info: AgreementOrderInfo,
778    #[serde(rename = "scene_info", skip_serializing_if = "Option::is_none")]
779    pub scene_info: Option<AgreementSceneInfo>,
780    #[serde(rename = "pay_notify_url")]
781    pub pay_notify_url: String,
782    #[serde(rename = "risk_info", skip_serializing_if = "Option::is_none")]
783    pub risk_info: Option<AgreementRiskInfo>,
784}
785
786#[derive(Debug, Clone, Serialize, Deserialize)]
787#[serde(rename_all = "camelCase")]
788pub struct FiatCoin {
789    #[serde(skip_serializing_if = "Option::is_none")]
790    pub coin: Option<String>,
791    #[serde(skip_serializing_if = "Option::is_none")]
792    pub full_name: Option<String>,
793    #[serde(skip_serializing_if = "Option::is_none")]
794    pub icon: Option<String>,
795    #[serde(skip_serializing_if = "Option::is_none")]
796    pub icon_night: Option<String>,
797    #[serde(skip_serializing_if = "Option::is_none")]
798    pub precision: Option<i32>,
799    #[serde(skip_serializing_if = "Option::is_none")]
800    pub disable: Option<bool>,
801    #[serde(skip_serializing_if = "Option::is_none")]
802    pub single_from_min_limit: Option<String>,
803    #[serde(skip_serializing_if = "Option::is_none")]
804    pub single_from_max_limit: Option<String>,
805}
806
807#[derive(Debug, Clone, Serialize, Deserialize)]
808#[serde(rename_all = "camelCase")]
809pub struct CryptoCoin {
810    #[serde(skip_serializing_if = "Option::is_none")]
811    pub coin: Option<String>,
812    #[serde(skip_serializing_if = "Option::is_none")]
813    pub full_name: Option<String>,
814    #[serde(skip_serializing_if = "Option::is_none")]
815    pub icon: Option<String>,
816    #[serde(skip_serializing_if = "Option::is_none")]
817    pub icon_night: Option<String>,
818    #[serde(skip_serializing_if = "Option::is_none")]
819    pub precision: Option<i32>,
820    #[serde(skip_serializing_if = "Option::is_none")]
821    pub disable: Option<bool>,
822    #[serde(skip_serializing_if = "Option::is_none")]
823    pub single_from_min_limit: Option<String>,
824    #[serde(skip_serializing_if = "Option::is_none")]
825    pub single_from_max_limit: Option<String>,
826}
827
828#[derive(Debug, Clone, Serialize, Deserialize)]
829#[serde(rename_all = "camelCase")]
830pub struct CoinListResult {
831    #[serde(skip_serializing_if = "Option::is_none")]
832    pub fiats: Option<Vec<FiatCoin>>,
833    #[serde(skip_serializing_if = "Option::is_none")]
834    pub cryptos: Option<Vec<CryptoCoin>>,
835}
836
837pub type QueryCoinListResponse = CoinListResult;
838
839#[derive(Debug, Clone, Serialize, Deserialize)]
840#[serde(rename_all = "camelCase")]
841pub struct QuotaInfo {
842    #[serde(skip_serializing_if = "Option::is_none")]
843    pub min: Option<f64>,
844    #[serde(skip_serializing_if = "Option::is_none")]
845    pub max: Option<f64>,
846}
847
848#[derive(Debug, Clone, Serialize, Deserialize)]
849#[serde(rename_all = "camelCase")]
850pub struct ReferencePriceResult {
851    #[serde(skip_serializing_if = "Option::is_none")]
852    pub symbol: Option<String>,
853    #[serde(skip_serializing_if = "Option::is_none")]
854    pub fiat: Option<String>,
855    #[serde(skip_serializing_if = "Option::is_none")]
856    pub crypto: Option<String>,
857    #[serde(skip_serializing_if = "Option::is_none")]
858    pub timestamp: Option<i64>,
859    #[serde(skip_serializing_if = "Option::is_none")]
860    pub buys: Option<Vec<PriceQuote>>,
861    #[serde(skip_serializing_if = "Option::is_none")]
862    pub sells: Option<Vec<PriceQuote>>,
863}
864
865pub type GetReferencePriceResponse = ReferencePriceResult;
866
867#[derive(Debug, Clone, Serialize, Deserialize)]
868#[serde(rename_all = "camelCase")]
869pub struct QuoteApplyRequest {
870    pub from_coin: String,
871    pub from_coin_type: String,
872    pub to_coin: String,
873    pub to_coin_type: String,
874    pub request_amount: String,
875    #[serde(skip_serializing_if = "Option::is_none")]
876    pub request_coin_type: Option<String>,
877}
878
879#[derive(Debug, Clone, Serialize, Deserialize)]
880#[serde(rename_all = "camelCase")]
881pub struct QuoteApplyResult {
882    #[serde(skip_serializing_if = "Option::is_none")]
883    pub quote_tx_id: Option<String>,
884    #[serde(skip_serializing_if = "Option::is_none")]
885    pub exchange_rate: Option<String>,
886    #[serde(skip_serializing_if = "Option::is_none")]
887    pub from_coin: Option<String>,
888    #[serde(skip_serializing_if = "Option::is_none")]
889    pub from_coin_type: Option<String>,
890    #[serde(skip_serializing_if = "Option::is_none")]
891    pub to_coin: Option<String>,
892    #[serde(skip_serializing_if = "Option::is_none")]
893    pub to_coin_type: Option<String>,
894    #[serde(skip_serializing_if = "Option::is_none")]
895    pub from_amount: Option<String>,
896    #[serde(skip_serializing_if = "Option::is_none")]
897    pub to_amount: Option<String>,
898    #[serde(skip_serializing_if = "Option::is_none")]
899    pub expired_time: Option<String>,
900}
901
902pub type ApplyQuoteResponse = QuoteApplyResult;
903
904#[derive(Debug, Clone, Serialize, Deserialize)]
905#[serde(rename_all = "camelCase")]
906pub struct TradeExecuteRequest {
907    pub quote_tx_id: String,
908    pub sub_user_id: String,
909    #[serde(skip_serializing_if = "Option::is_none")]
910    pub webhook_url: Option<String>,
911    #[serde(skip_serializing_if = "Option::is_none")]
912    pub merchant_request_id: Option<String>,
913}
914
915#[derive(Debug, Clone, Serialize, Deserialize)]
916#[serde(rename_all = "camelCase")]
917pub struct TradeExecuteResult {
918    #[serde(skip_serializing_if = "Option::is_none")]
919    pub trade_no: Option<String>,
920    #[serde(skip_serializing_if = "Option::is_none")]
921    pub merchant_request_id: Option<String>,
922}
923
924pub type ConfirmQuoteResponse = TradeExecuteResult;
925
926#[derive(Debug, Clone, Serialize, Deserialize)]
927#[serde(rename_all = "camelCase")]
928pub struct TradeInfo {
929    #[serde(skip_serializing_if = "Option::is_none")]
930    pub trade_no: Option<String>,
931    #[serde(skip_serializing_if = "Option::is_none")]
932    pub status: Option<String>,
933    #[serde(skip_serializing_if = "Option::is_none")]
934    pub quote_tx_id: Option<String>,
935    #[serde(skip_serializing_if = "Option::is_none")]
936    pub exchange_rate: Option<String>,
937    #[serde(skip_serializing_if = "Option::is_none")]
938    pub from_coin: Option<String>,
939    #[serde(skip_serializing_if = "Option::is_none")]
940    pub from_coin_type: Option<String>,
941    #[serde(skip_serializing_if = "Option::is_none")]
942    pub to_coin: Option<String>,
943    #[serde(skip_serializing_if = "Option::is_none")]
944    pub to_coin_type: Option<String>,
945    #[serde(skip_serializing_if = "Option::is_none")]
946    pub from_amount: Option<String>,
947    #[serde(skip_serializing_if = "Option::is_none")]
948    pub to_amount: Option<String>,
949    #[serde(skip_serializing_if = "Option::is_none")]
950    pub created_at: Option<String>,
951    #[serde(skip_serializing_if = "Option::is_none")]
952    pub sub_user_id: Option<String>,
953}
954
955pub type QueryTradeResponse = TradeInfo;
956
957#[derive(Debug, Clone, Serialize, Deserialize)]
958#[serde(rename_all = "camelCase")]
959pub struct TradeHistoryResult {
960    #[serde(skip_serializing_if = "Option::is_none")]
961    pub list: Option<Vec<TradeInfo>>,
962}
963
964pub type QueryTradeHistoryResponse = TradeHistoryResult;
965
966#[derive(Debug, Clone, Serialize, Deserialize)]
967#[serde(rename_all = "camelCase")]
968pub struct CurrencyInfo {
969    #[serde(skip_serializing_if = "Option::is_none")]
970    pub currency_type: Option<String>,
971    #[serde(skip_serializing_if = "Option::is_none")]
972    pub currency_code: Option<String>,
973    #[serde(skip_serializing_if = "Option::is_none")]
974    pub currency_name: Option<String>,
975}
976
977#[derive(Debug, Clone, Serialize, Deserialize)]
978#[serde(rename_all = "camelCase")]
979pub struct BalanceInfo {
980    #[serde(skip_serializing_if = "Option::is_none")]
981    pub total_balance: Option<String>,
982    #[serde(skip_serializing_if = "Option::is_none")]
983    pub balance: Option<String>,
984    #[serde(skip_serializing_if = "Option::is_none")]
985    pub frozen_balance: Option<String>,
986    #[serde(skip_serializing_if = "Option::is_none")]
987    pub currency: Option<CurrencyInfo>,
988}
989
990pub type QueryBalanceResponse = serde_json::Value;
991
992pub type MarkOrderAsPaidResponse = serde_json::Value;
993
994#[derive(Debug, Clone, Serialize, Deserialize)]
995#[serde(rename_all = "camelCase")]
996pub struct TradingPreferenceSet {
997    #[serde(skip_serializing_if = "Option::is_none")]
998    pub has_un_post_ad: Option<String>,
999    #[serde(skip_serializing_if = "Option::is_none")]
1000    pub is_kyc: Option<String>,
1001    #[serde(skip_serializing_if = "Option::is_none")]
1002    pub is_email: Option<String>,
1003    #[serde(skip_serializing_if = "Option::is_none")]
1004    pub is_mobile: Option<String>,
1005    #[serde(skip_serializing_if = "Option::is_none")]
1006    pub has_register_time: Option<String>,
1007    #[serde(skip_serializing_if = "Option::is_none")]
1008    pub register_time_threshold: Option<String>,
1009    #[serde(skip_serializing_if = "Option::is_none")]
1010    pub order_finish_number_day30: Option<String>,
1011    #[serde(skip_serializing_if = "Option::is_none")]
1012    pub complete_rate_day30: Option<String>,
1013    #[serde(skip_serializing_if = "Option::is_none")]
1014    pub national_limit: Option<String>,
1015    #[serde(skip_serializing_if = "Option::is_none")]
1016    pub has_order_finish_number_day30: Option<String>,
1017    #[serde(skip_serializing_if = "Option::is_none")]
1018    pub has_complete_rate_day30: Option<String>,
1019    #[serde(skip_serializing_if = "Option::is_none")]
1020    pub has_national_limit: Option<String>,
1021}
1022
1023pub type GetCoinBalanceResponse = serde_json::Value;
1024
1025#[derive(Debug, Clone, Serialize, Deserialize)]
1026#[serde(rename_all = "camelCase")]
1027pub struct GetAdsRequest {
1028    pub token_id: String,
1029    pub currency_id: String,
1030    pub side: String,
1031    #[serde(skip_serializing_if = "Option::is_none")]
1032    pub page: Option<String>,
1033    #[serde(skip_serializing_if = "Option::is_none")]
1034    pub size: Option<String>,
1035}
1036
1037pub type GetAdsResponse = serde_json::Value;
1038
1039#[derive(Debug, Clone, Serialize, Deserialize)]
1040#[serde(rename_all = "camelCase")]
1041pub struct PostAdRequest {
1042    pub token_id: String,
1043    pub currency_id: String,
1044    pub side: String,
1045    pub price_type: String,
1046    pub premium: String,
1047    pub price: String,
1048    pub min_amount: String,
1049    pub max_amount: String,
1050    pub remark: String,
1051    pub trading_preference_set: TradingPreferenceSet,
1052    pub payment_ids: Vec<String>,
1053    pub quantity: String,
1054    pub payment_period: String,
1055    pub item_type: String,
1056}
1057
1058pub type PostAdResponse = serde_json::Value;
1059
1060#[derive(Debug, Clone, Serialize, Deserialize)]
1061#[serde(rename_all = "camelCase")]
1062pub struct RemoveAdRequest {
1063    pub item_id: String,
1064}
1065
1066#[derive(Debug, Clone, Serialize, Deserialize)]
1067#[serde(rename_all = "camelCase")]
1068pub struct UpdateAdRequest {
1069    pub id: String,
1070    pub price_type: String,
1071    pub premium: String,
1072    pub price: String,
1073    pub min_amount: String,
1074    pub max_amount: String,
1075    pub remark: String,
1076    pub trading_preference_set: TradingPreferenceSet,
1077    pub payment_ids: Vec<String>,
1078    pub action_type: String,
1079    pub quantity: String,
1080    pub payment_period: String,
1081}
1082
1083pub type UpdateAdResponse = serde_json::Value;
1084
1085#[derive(Debug, Clone, Serialize, Deserialize)]
1086#[serde(rename_all = "camelCase")]
1087pub struct GetMyAdsRequest {
1088    #[serde(skip_serializing_if = "Option::is_none")]
1089    pub item_id: Option<String>,
1090    #[serde(skip_serializing_if = "Option::is_none")]
1091    pub status: Option<String>,
1092    #[serde(skip_serializing_if = "Option::is_none")]
1093    pub side: Option<String>,
1094    #[serde(skip_serializing_if = "Option::is_none")]
1095    pub token_id: Option<String>,
1096    #[serde(skip_serializing_if = "Option::is_none")]
1097    pub page: Option<String>,
1098    #[serde(skip_serializing_if = "Option::is_none")]
1099    pub size: Option<String>,
1100    #[serde(skip_serializing_if = "Option::is_none")]
1101    pub currency_id: Option<String>,
1102}
1103
1104#[derive(Debug, Clone, Serialize, Deserialize)]
1105#[serde(rename_all = "camelCase")]
1106pub struct AdItem {
1107    #[serde(skip_serializing_if = "Option::is_none")]
1108    pub id: Option<String>,
1109    #[serde(skip_serializing_if = "Option::is_none")]
1110    pub account_id: Option<String>,
1111    #[serde(skip_serializing_if = "Option::is_none")]
1112    pub user_id: Option<String>,
1113    #[serde(skip_serializing_if = "Option::is_none")]
1114    pub nick_name: Option<String>,
1115    #[serde(skip_serializing_if = "Option::is_none")]
1116    pub token_id: Option<String>,
1117    #[serde(skip_serializing_if = "Option::is_none")]
1118    pub currency_id: Option<String>,
1119    #[serde(skip_serializing_if = "Option::is_none")]
1120    pub side: Option<i32>,
1121    #[serde(skip_serializing_if = "Option::is_none")]
1122    pub price_type: Option<i32>,
1123    #[serde(skip_serializing_if = "Option::is_none")]
1124    pub price: Option<String>,
1125    #[serde(skip_serializing_if = "Option::is_none")]
1126    pub premium: Option<String>,
1127    #[serde(skip_serializing_if = "Option::is_none")]
1128    pub last_quantity: Option<String>,
1129    #[serde(skip_serializing_if = "Option::is_none")]
1130    pub quantity: Option<String>,
1131    #[serde(skip_serializing_if = "Option::is_none")]
1132    pub frozen_quantity: Option<String>,
1133    #[serde(skip_serializing_if = "Option::is_none")]
1134    pub executed_quantity: Option<String>,
1135    #[serde(skip_serializing_if = "Option::is_none")]
1136    pub min_amount: Option<String>,
1137    #[serde(skip_serializing_if = "Option::is_none")]
1138    pub max_amount: Option<String>,
1139    #[serde(skip_serializing_if = "Option::is_none")]
1140    pub remark: Option<String>,
1141    #[serde(skip_serializing_if = "Option::is_none")]
1142    pub status: Option<i32>,
1143    #[serde(skip_serializing_if = "Option::is_none")]
1144    pub create_date: Option<String>,
1145    #[serde(skip_serializing_if = "Option::is_none")]
1146    pub payments: Option<Vec<String>>,
1147    #[serde(skip_serializing_if = "Option::is_none")]
1148    pub hidden_reason: Option<String>,
1149    #[serde(skip_serializing_if = "Option::is_none")]
1150    pub trading_preference_set: Option<TradingPreferenceSet>,
1151    #[serde(skip_serializing_if = "Option::is_none")]
1152    pub update_date: Option<String>,
1153    #[serde(skip_serializing_if = "Option::is_none")]
1154    pub fee_rate: Option<String>,
1155    #[serde(skip_serializing_if = "Option::is_none")]
1156    pub payment_period: Option<i32>,
1157    #[serde(skip_serializing_if = "Option::is_none")]
1158    pub item_type: Option<String>,
1159    #[serde(skip_serializing_if = "Option::is_none")]
1160    pub payment_terms: Option<Vec<serde_json::Value>>,
1161}
1162
1163pub type GetMyAdsResponse = serde_json::Value;
1164
1165#[derive(Debug, Clone, Serialize, Deserialize)]
1166#[serde(rename_all = "camelCase")]
1167pub struct GetAdDetailRequest {
1168    pub item_id: String,
1169}
1170
1171pub type GetMyAdDetailsResponse = serde_json::Value;
1172
1173#[derive(Debug, Clone, Serialize, Deserialize)]
1174#[serde(rename_all = "camelCase")]
1175pub struct OrderItem {
1176    #[serde(skip_serializing_if = "Option::is_none")]
1177    pub id: Option<String>,
1178    #[serde(skip_serializing_if = "Option::is_none")]
1179    pub side: Option<i32>,
1180    #[serde(skip_serializing_if = "Option::is_none")]
1181    pub token_id: Option<String>,
1182    #[serde(skip_serializing_if = "Option::is_none")]
1183    pub order_type: Option<String>,
1184    #[serde(skip_serializing_if = "Option::is_none")]
1185    pub amount: Option<String>,
1186    #[serde(skip_serializing_if = "Option::is_none")]
1187    pub currency_id: Option<String>,
1188    #[serde(skip_serializing_if = "Option::is_none")]
1189    pub price: Option<String>,
1190    #[serde(skip_serializing_if = "Option::is_none")]
1191    pub fee: Option<String>,
1192    #[serde(skip_serializing_if = "Option::is_none")]
1193    pub target_nick_name: Option<String>,
1194    #[serde(skip_serializing_if = "Option::is_none")]
1195    pub target_user_id: Option<String>,
1196    #[serde(skip_serializing_if = "Option::is_none")]
1197    pub status: Option<i32>,
1198    #[serde(skip_serializing_if = "Option::is_none")]
1199    pub create_date: Option<String>,
1200    #[serde(skip_serializing_if = "Option::is_none")]
1201    pub transfer_last_seconds: Option<String>,
1202    #[serde(skip_serializing_if = "Option::is_none")]
1203    pub user_id: Option<String>,
1204    #[serde(skip_serializing_if = "Option::is_none")]
1205    pub seller_real_name: Option<String>,
1206    #[serde(skip_serializing_if = "Option::is_none")]
1207    pub buyer_real_name: Option<String>,
1208    // FIXME(typed-field): falls back to `serde_json::Value` because the Bybit
1209    // spec did not provide a matching inner type at generation time. Replace
1210    // with a typed struct in a follow-up PR after consulting the V5 docs.
1211    #[serde(skip_serializing_if = "Option::is_none")]
1212    pub extension: Option<serde_json::Value>,
1213}
1214
1215#[derive(Debug, Clone, Serialize, Deserialize)]
1216#[serde(rename_all = "camelCase")]
1217pub struct GetAllOrdersRequest {
1218    pub page: i32,
1219    pub size: i32,
1220    #[serde(skip_serializing_if = "Option::is_none")]
1221    pub status: Option<i32>,
1222    #[serde(skip_serializing_if = "Option::is_none")]
1223    pub begin_time: Option<String>,
1224    #[serde(skip_serializing_if = "Option::is_none")]
1225    pub end_time: Option<String>,
1226    #[serde(skip_serializing_if = "Option::is_none")]
1227    pub token_id: Option<String>,
1228    #[serde(skip_serializing_if = "Option::is_none")]
1229    pub side: Option<i32>,
1230}
1231
1232pub type GetPendingOrdersResponse = serde_json::Value;
1233
1234#[derive(Debug, Clone, Serialize, Deserialize)]
1235#[serde(rename_all = "camelCase")]
1236pub struct GetPendingOrdersRequest {
1237    #[serde(skip_serializing_if = "Option::is_none")]
1238    pub status: Option<i32>,
1239    #[serde(skip_serializing_if = "Option::is_none")]
1240    pub begin_time: Option<String>,
1241    #[serde(skip_serializing_if = "Option::is_none")]
1242    pub end_time: Option<String>,
1243    #[serde(skip_serializing_if = "Option::is_none")]
1244    pub token_id: Option<String>,
1245    #[serde(skip_serializing_if = "Option::is_none")]
1246    pub side: Option<i32>,
1247    pub page: i32,
1248    pub size: i32,
1249}
1250
1251#[derive(Debug, Clone, Serialize, Deserialize)]
1252#[serde(rename_all = "camelCase")]
1253pub struct GetOrderDetailRequest {
1254    pub order_id: String,
1255}
1256
1257#[derive(Debug, Clone, Serialize, Deserialize)]
1258#[serde(rename_all = "camelCase")]
1259pub struct PaymentTermItem {
1260    #[serde(skip_serializing_if = "Option::is_none")]
1261    pub id: Option<String>,
1262    #[serde(skip_serializing_if = "Option::is_none")]
1263    pub real_name: Option<String>,
1264    #[serde(skip_serializing_if = "Option::is_none")]
1265    pub payment_type: Option<i32>,
1266    #[serde(skip_serializing_if = "Option::is_none")]
1267    pub bank_name: Option<String>,
1268    #[serde(skip_serializing_if = "Option::is_none")]
1269    pub branch_name: Option<String>,
1270    #[serde(skip_serializing_if = "Option::is_none")]
1271    pub account_no: Option<String>,
1272    #[serde(skip_serializing_if = "Option::is_none")]
1273    pub qrcode: Option<String>,
1274}
1275
1276pub type GetOrderDetailResponse = serde_json::Value;
1277
1278#[derive(Debug, Clone, Serialize, Deserialize)]
1279#[serde(rename_all = "camelCase")]
1280pub struct MarkOrderPaidRequest {
1281    pub order_id: String,
1282    pub payment_type: String,
1283    pub payment_id: String,
1284}
1285
1286#[derive(Debug, Clone, Serialize, Deserialize)]
1287#[serde(rename_all = "camelCase")]
1288pub struct ReleaseAssetsRequest {
1289    pub order_id: String,
1290}
1291
1292pub type UploadChatFileResponse = UploadFileResult;
1293
1294#[derive(Debug, Clone, Serialize, Deserialize)]
1295#[serde(rename_all = "camelCase")]
1296pub struct UploadFileResult {
1297    #[serde(skip_serializing_if = "Option::is_none")]
1298    pub upload_id: Option<String>,
1299    #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
1300    pub type_: Option<String>,
1301    #[serde(skip_serializing_if = "Option::is_none")]
1302    pub url: Option<String>,
1303}
1304
1305#[derive(Debug, Clone, Serialize, Deserialize)]
1306#[serde(rename_all = "camelCase")]
1307pub struct GetChatMessageParams {
1308    pub order_id: String,
1309    #[serde(skip_serializing_if = "Option::is_none")]
1310    pub current_page: Option<String>,
1311    pub size: String,
1312}
1313
1314pub type GetChatMessagesResponse = GetChatMessageResult;
1315
1316#[derive(Debug, Clone, Serialize, Deserialize)]
1317pub struct GetChatMessageResult {
1318    #[serde(skip_serializing_if = "Option::is_none")]
1319    pub result: Option<Vec<ChatMessageItem>>,
1320}
1321
1322#[derive(Debug, Clone, Serialize, Deserialize)]
1323#[serde(rename_all = "camelCase")]
1324pub struct ChatMessageItem {
1325    #[serde(skip_serializing_if = "Option::is_none")]
1326    pub message: Option<String>,
1327    #[serde(skip_serializing_if = "Option::is_none")]
1328    pub content_type: Option<String>,
1329    #[serde(skip_serializing_if = "Option::is_none")]
1330    pub order_id: Option<String>,
1331    #[serde(skip_serializing_if = "Option::is_none")]
1332    pub msg_uuid: Option<String>,
1333    #[serde(skip_serializing_if = "Option::is_none")]
1334    pub user_id: Option<String>,
1335    #[serde(skip_serializing_if = "Option::is_none")]
1336    pub create_date: Option<String>,
1337}
1338
1339#[derive(Debug, Clone, Serialize, Deserialize)]
1340#[serde(rename_all = "camelCase")]
1341pub struct UserInfo {
1342    #[serde(skip_serializing_if = "Option::is_none")]
1343    pub nick_name: Option<String>,
1344    #[serde(skip_serializing_if = "Option::is_none")]
1345    pub default_nick_name: Option<bool>,
1346    #[serde(skip_serializing_if = "Option::is_none")]
1347    pub is_online: Option<bool>,
1348    #[serde(skip_serializing_if = "Option::is_none")]
1349    pub kyc_level: Option<String>,
1350    #[serde(skip_serializing_if = "Option::is_none")]
1351    pub email: Option<String>,
1352    #[serde(skip_serializing_if = "Option::is_none")]
1353    pub mobile: Option<String>,
1354    #[serde(skip_serializing_if = "Option::is_none")]
1355    pub last_logout_time: Option<String>,
1356    #[serde(skip_serializing_if = "Option::is_none")]
1357    pub recent_rate: Option<String>,
1358    #[serde(skip_serializing_if = "Option::is_none")]
1359    pub total_finish_count: Option<i64>,
1360    #[serde(skip_serializing_if = "Option::is_none")]
1361    pub total_finish_sell_count: Option<i64>,
1362    #[serde(skip_serializing_if = "Option::is_none")]
1363    pub total_finish_buy_count: Option<i64>,
1364    #[serde(skip_serializing_if = "Option::is_none")]
1365    pub recent_finish_count: Option<i64>,
1366    #[serde(skip_serializing_if = "Option::is_none")]
1367    pub average_release_time: Option<String>,
1368    #[serde(skip_serializing_if = "Option::is_none")]
1369    pub average_transfer_time: Option<String>,
1370    #[serde(skip_serializing_if = "Option::is_none")]
1371    pub account_create_days: Option<i64>,
1372    #[serde(skip_serializing_if = "Option::is_none")]
1373    pub first_trade_days: Option<i64>,
1374    #[serde(skip_serializing_if = "Option::is_none")]
1375    pub real_name: Option<String>,
1376    #[serde(skip_serializing_if = "Option::is_none")]
1377    pub recent_trade_amount: Option<String>,
1378    #[serde(skip_serializing_if = "Option::is_none")]
1379    pub total_trade_amount: Option<String>,
1380    #[serde(skip_serializing_if = "Option::is_none")]
1381    pub register_time: Option<String>,
1382    #[serde(skip_serializing_if = "Option::is_none")]
1383    pub auth_status: Option<i32>,
1384    #[serde(skip_serializing_if = "Option::is_none")]
1385    pub kyc_country_code: Option<String>,
1386    #[serde(skip_serializing_if = "Option::is_none")]
1387    pub blocked: Option<String>,
1388    #[serde(skip_serializing_if = "Option::is_none")]
1389    pub good_appraise_rate: Option<String>,
1390    #[serde(skip_serializing_if = "Option::is_none")]
1391    pub good_appraise_count: Option<i64>,
1392    #[serde(skip_serializing_if = "Option::is_none")]
1393    pub bad_appraise_count: Option<i64>,
1394    #[serde(skip_serializing_if = "Option::is_none")]
1395    pub vip_level: Option<i32>,
1396    #[serde(skip_serializing_if = "Option::is_none")]
1397    pub user_id: Option<String>,
1398    #[serde(skip_serializing_if = "Option::is_none")]
1399    pub real_name_en: Option<String>,
1400}
1401
1402#[derive(Debug, Clone, Serialize, Deserialize)]
1403#[serde(rename_all = "camelCase")]
1404pub struct GetCounterpartyInfoParams {
1405    #[serde(skip_serializing_if = "Option::is_none")]
1406    pub original_uid: Option<String>,
1407    #[serde(skip_serializing_if = "Option::is_none")]
1408    pub order_id: Option<String>,
1409}
1410
1411pub type GetCounterpartyUserInfoResponse = UserInfo;
1412
1413#[derive(Debug, Clone, Serialize, Deserialize)]
1414#[serde(rename_all = "camelCase")]
1415pub struct PaymentMethod {
1416    #[serde(skip_serializing_if = "Option::is_none")]
1417    pub id: Option<String>,
1418    #[serde(skip_serializing_if = "Option::is_none")]
1419    pub real_name: Option<String>,
1420    #[serde(skip_serializing_if = "Option::is_none")]
1421    pub payment_type: Option<String>,
1422    #[serde(skip_serializing_if = "Option::is_none")]
1423    pub bank_name: Option<String>,
1424    #[serde(skip_serializing_if = "Option::is_none")]
1425    pub branch_name: Option<String>,
1426    #[serde(skip_serializing_if = "Option::is_none")]
1427    pub account_no: Option<String>,
1428    #[serde(skip_serializing_if = "Option::is_none")]
1429    pub qrcode: Option<String>,
1430    #[serde(skip_serializing_if = "Option::is_none")]
1431    pub online: Option<String>,
1432    #[serde(skip_serializing_if = "Option::is_none")]
1433    pub visible: Option<i32>,
1434    #[serde(skip_serializing_if = "Option::is_none")]
1435    pub pay_message: Option<String>,
1436    #[serde(skip_serializing_if = "Option::is_none")]
1437    pub first_name: Option<String>,
1438    #[serde(skip_serializing_if = "Option::is_none")]
1439    pub last_name: Option<String>,
1440    #[serde(skip_serializing_if = "Option::is_none")]
1441    pub second_last_name: Option<String>,
1442    #[serde(skip_serializing_if = "Option::is_none")]
1443    pub clabe: Option<String>,
1444    #[serde(skip_serializing_if = "Option::is_none")]
1445    pub debit_card_number: Option<String>,
1446    #[serde(skip_serializing_if = "Option::is_none")]
1447    pub concept: Option<String>,
1448    #[serde(skip_serializing_if = "Option::is_none")]
1449    pub count_no: Option<String>,
1450    #[serde(skip_serializing_if = "Option::is_none")]
1451    pub payment_ext1: Option<String>,
1452    #[serde(skip_serializing_if = "Option::is_none")]
1453    pub payment_ext2: Option<String>,
1454    #[serde(skip_serializing_if = "Option::is_none")]
1455    pub payment_ext3: Option<String>,
1456    #[serde(skip_serializing_if = "Option::is_none")]
1457    pub payment_ext4: Option<String>,
1458    #[serde(skip_serializing_if = "Option::is_none")]
1459    pub payment_ext5: Option<String>,
1460    #[serde(skip_serializing_if = "Option::is_none")]
1461    pub payment_ext6: Option<String>,
1462    #[serde(skip_serializing_if = "Option::is_none")]
1463    pub payment_template_version: Option<i32>,
1464    #[serde(skip_serializing_if = "Option::is_none")]
1465    pub has_payment_template_changed: Option<bool>,
1466    // FIXME(typed-field): falls back to `serde_json::Value` because the Bybit
1467    // spec did not provide a matching inner type at generation time. Replace
1468    // with a typed struct in a follow-up PR after consulting the V5 docs.
1469    #[serde(skip_serializing_if = "Option::is_none")]
1470    pub payment_config_vo: Option<serde_json::Value>,
1471    #[serde(skip_serializing_if = "Option::is_none")]
1472    pub real_name_verified: Option<bool>,
1473    #[serde(skip_serializing_if = "Option::is_none")]
1474    pub channel: Option<String>,
1475    #[serde(skip_serializing_if = "Option::is_none")]
1476    pub currency_balance: Option<Vec<String>>,
1477}
1478
1479pub type GetUserPaymentResponse = Vec<PaymentMethod>;
1480
1481pub type QueryFundingDetailApiResponse = FundingDetailApiResult;
1482
1483#[derive(Debug, Clone, Serialize, Deserialize)]
1484#[serde(rename_all = "camelCase")]
1485pub struct FundingDetailApiResult {
1486    #[serde(skip_serializing_if = "Option::is_none")]
1487    pub next_page_cursor: Option<String>,
1488    #[serde(skip_serializing_if = "Option::is_none")]
1489    pub list: Option<Vec<FundingDetailApiBO>>,
1490}
1491
1492#[derive(Debug, Clone, Serialize, Deserialize)]
1493#[serde(rename_all = "camelCase")]
1494pub struct FundingDetailApiBO {
1495    #[serde(skip_serializing_if = "Option::is_none")]
1496    pub member_id: Option<String>,
1497    #[serde(skip_serializing_if = "Option::is_none")]
1498    pub currency: Option<String>,
1499    #[serde(skip_serializing_if = "Option::is_none")]
1500    pub io_direction: Option<String>,
1501    #[serde(skip_serializing_if = "Option::is_none")]
1502    pub txn_amt: Option<String>,
1503    #[serde(skip_serializing_if = "Option::is_none")]
1504    pub after_amt: Option<String>,
1505    #[serde(skip_serializing_if = "Option::is_none")]
1506    pub create_time: Option<String>,
1507    #[serde(skip_serializing_if = "Option::is_none")]
1508    pub show_busi_type: Option<String>,
1509    #[serde(skip_serializing_if = "Option::is_none")]
1510    pub show_busi_type_en: Option<String>,
1511    #[serde(skip_serializing_if = "Option::is_none")]
1512    pub description: Option<String>,
1513    #[serde(skip_serializing_if = "Option::is_none")]
1514    pub description_en: Option<String>,
1515}