ya_client_model/payment/
allocation.rs

1use std::collections::HashMap;
2
3use bigdecimal::BigDecimal;
4use chrono::{DateTime, Utc};
5use serde::{Deserialize, Serialize};
6
7#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
8pub struct ValidateDepositCall {
9    #[serde(flatten)]
10    pub arguments: HashMap<String, String>,
11}
12
13#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
14pub struct Deposit {
15    pub id: String,
16    pub contract: String,
17    pub validate: Option<ValidateDepositCall>,
18}
19
20#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
21pub struct DepositUpdate {
22    pub validate: Option<ValidateDepositCall>,
23}
24
25#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
26#[serde(rename_all = "camelCase")]
27pub struct Allocation {
28    pub allocation_id: String,
29    pub address: String,
30    pub payment_platform: String,
31    pub total_amount: BigDecimal,
32    pub spent_amount: BigDecimal,
33    pub remaining_amount: BigDecimal,
34    pub timestamp: DateTime<Utc>,
35    #[serde(skip_serializing_if = "Option::is_none", default)]
36    pub timeout: Option<DateTime<Utc>>,
37    #[serde(skip_serializing_if = "Option::is_none", default)]
38    pub deposit: Option<Deposit>,
39    pub make_deposit: bool,
40}
41
42#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
43#[serde(rename_all = "camelCase")]
44pub struct PaymentPlatform {
45    pub driver: Option<String>,
46    pub network: Option<String>,
47    pub token: Option<String>,
48}
49
50#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
51#[serde(rename_all = "camelCase", untagged)]
52pub enum PaymentPlatformEnum {
53    PaymentPlatformName(String),
54    PaymentPlatform(PaymentPlatform),
55}
56
57#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
58#[serde(rename_all = "camelCase")]
59pub struct NewAllocation {
60    pub address: Option<String>,
61    pub payment_platform: Option<PaymentPlatformEnum>,
62    pub total_amount: BigDecimal,
63    #[serde(skip_serializing_if = "Option::is_none", default)]
64    pub timeout: Option<DateTime<Utc>>,
65    #[serde(skip_serializing_if = "Option::is_none", default)]
66    pub deposit: Option<Deposit>,
67    pub make_deposit: bool,
68}
69
70#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
71#[serde(rename_all = "camelCase")]
72pub struct AllocationUpdate {
73    #[serde(skip_serializing_if = "Option::is_none", default)]
74    pub total_amount: Option<BigDecimal>,
75    #[serde(skip_serializing_if = "Option::is_none", default)]
76    pub timeout: Option<DateTime<Utc>>,
77    #[serde(skip_serializing_if = "Option::is_none", default)]
78    pub deposit: Option<DepositUpdate>,
79}