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 #[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 #[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 #[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 #[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}