1use serde::{Deserialize, Serialize};
4
5pub type PositiveDecimal = String;
7
8pub type Date = String;
10
11pub type DateTime = String;
13
14pub type CountryCode = String;
16
17pub type FiatCurrencyCode = String;
19
20#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
22#[serde(rename_all = "PascalCase")]
23pub enum CryptoCurrencyCode {
24 #[serde(rename = "BTC")]
26 Btc,
27 #[serde(rename = "BTC_TEST")]
29 BtcTest,
30 #[serde(rename = "USDC")]
32 Usdc,
33 #[serde(rename = "USDC_TEST")]
35 UsdcTest,
36}
37
38impl std::fmt::Display for CryptoCurrencyCode {
39 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
40 match self {
41 CryptoCurrencyCode::Btc => write!(f, "BTC"),
42 CryptoCurrencyCode::BtcTest => write!(f, "BTC_TEST"),
43 CryptoCurrencyCode::Usdc => write!(f, "USDC"),
44 CryptoCurrencyCode::UsdcTest => write!(f, "USDC_TEST"),
45 }
46 }
47}
48
49#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
51#[serde(rename_all = "PascalCase")]
52pub enum Network {
53 Bitcoin,
55 BitcoinTest,
57 Ethereum,
59 EthereumTestSepolia,
61 Celo,
63 CeloTestSepolia,
65 FlowEvm,
67 FlowEvmTest,
69 Gnosis,
71 GnosisTestChiado,
73 Lightning,
75 LightningTest,
77 PolygonPos,
79 PolygonTestAmoy,
81 Solana,
83 SolanaDevnet,
85 OffNetwork,
87}
88
89#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
91#[serde(rename_all = "PascalCase")]
92pub enum AddressFormat {
93 EvmCompatible,
95 Segwit,
97 TronBase58,
99 SolanaBase58,
101}
102
103pub type Address = String;
105
106#[derive(Debug, Clone, Serialize, Deserialize)]
108pub struct DestinationAddress {
109 #[serde(rename = "Address")]
111 pub address: Address,
112}
113
114#[derive(Debug, Clone, Serialize, Deserialize)]
116pub struct FiatAmount {
117 #[serde(rename = "Amount")]
119 pub amount: PositiveDecimal,
120 #[serde(rename = "FiatCurrency")]
122 pub fiat_currency: FiatCurrencyCode,
123}
124
125#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
127#[serde(rename_all = "PascalCase")]
128pub enum AccountType {
129 Current,
131}
132
133impl std::fmt::Display for AccountType {
134 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
135 match self {
136 AccountType::Current => write!(f, "Current"),
137 }
138 }
139}
140
141#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
143#[serde(rename_all = "PascalCase")]
144pub enum PaymentMethodCategory {
145 Bank,
147 Card,
149 Identifier,
151}
152
153#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
155#[serde(rename_all = "PascalCase")]
156pub enum PaymentMethodType {
157 BankSepa,
159 BankLocal,
161 BankFedwire,
163 TokenizedCard,
165 IdentifierPix,
167}
168
169#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
171#[serde(rename_all = "PascalCase")]
172pub enum ProcessingTier {
173 Standard,
175 Priority,
177}
178
179#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
181#[serde(rename_all = "PascalCase")]
182pub enum TransactionStatus {
183 Pending,
185 Failed,
187 Settled,
189}
190
191#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
193#[serde(rename_all = "PascalCase")]
194pub enum TransactionDirection {
195 In,
197 Out,
199}
200
201#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
203#[serde(rename_all = "UPPERCASE")]
204pub enum SortDirection {
205 Asc,
207 Desc,
209}
210
211pub type CustomerID = String;
213
214pub type ChannelID = String;
216
217pub type PaymentMethodID = String;
219
220pub type ExternalID = String;
222
223pub type FormSessionID = String;
225
226pub type Nonce = String;
228
229pub type PhoneNumber = String;
231
232pub type ReturnURL = String;