noah_sdk/models/
transactions.rs1use crate::models::common::*;
4use crate::models::payment_methods::PaymentMethod;
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9#[serde(rename_all = "PascalCase")]
10pub enum FiatPaymentStatus {
11 Pending,
13 Failed,
15 Successful,
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize)]
21pub struct FiatPayment {
22 #[serde(rename = "Amount")]
24 pub amount: PositiveDecimal,
25 #[serde(rename = "FeeAmount")]
27 pub fee_amount: PositiveDecimal,
28 #[serde(rename = "Rate")]
30 pub rate: PositiveDecimal,
31 #[serde(rename = "FiatCurrency")]
33 pub fiat_currency: FiatCurrencyCode,
34 #[serde(rename = "FiatDepositID")]
36 pub fiat_deposit_id: Option<String>,
37 #[serde(rename = "PaymentSystemID")]
39 pub payment_system_id: Option<String>,
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
44#[serde(rename_all = "PascalCase")]
45pub enum TransactionBreakdownType {
46 ChannelFee,
48 BusinessFee,
50 Remaining,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct TransactionBreakdownItem {
57 #[serde(rename = "Type")]
59 pub breakdown_type: TransactionBreakdownType,
60 #[serde(rename = "Amount")]
62 pub amount: PositiveDecimal,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize)]
67pub struct Transaction {
68 #[serde(rename = "ID")]
70 pub id: String,
71 #[serde(rename = "PublicID")]
73 pub public_id: Option<String>,
74 #[serde(rename = "Network")]
76 pub network: Network,
77 #[serde(rename = "Created")]
79 pub created: DateTime,
80 #[serde(rename = "Status")]
82 pub status: TransactionStatus,
83 #[serde(rename = "Direction")]
85 pub direction: TransactionDirection,
86 #[serde(rename = "CustomerID")]
88 pub customer_id: Option<CustomerID>,
89 #[serde(rename = "ExternalID")]
91 pub external_id: Option<ExternalID>,
92 #[serde(rename = "Amount")]
94 pub amount: PositiveDecimal,
95 #[serde(rename = "NetworkFee")]
97 pub network_fee: Option<PositiveDecimal>,
98 #[serde(rename = "CryptoCurrency")]
100 pub crypto_currency: CryptoCurrencyCode,
101 #[serde(rename = "FiatPayment")]
103 pub fiat_payment: Option<FiatPayment>,
104 #[serde(rename = "Orchestration")]
106 pub orchestration: Option<serde_json::Value>,
107 #[serde(rename = "FiatPaymentMethod")]
109 pub fiat_payment_method: Option<PaymentMethod>,
110 #[serde(rename = "Breakdown")]
112 pub breakdown: Option<Vec<TransactionBreakdownItem>>,
113}
114
115#[derive(Debug, Clone, Serialize, Deserialize)]
117pub struct GetTransactionsResponse {
118 #[serde(rename = "Items")]
120 pub items: Vec<Transaction>,
121 #[serde(rename = "PageToken")]
123 pub page_token: Option<String>,
124}
125
126#[derive(Debug, Clone, Serialize, Deserialize)]
128pub struct PrepareSellRequest {
129 #[serde(rename = "ChannelID")]
131 pub channel_id: ChannelID,
132 #[serde(rename = "PaymentMethodID")]
134 pub payment_method_id: Option<PaymentMethodID>,
135 #[serde(rename = "CryptoCurrency")]
137 pub crypto_currency: CryptoCurrencyCode,
138 #[serde(rename = "CustomerID")]
140 pub customer_id: Option<CustomerID>,
141 #[serde(rename = "FiatAmount")]
143 pub fiat_amount: PositiveDecimal,
144 #[serde(rename = "Form")]
146 pub form: Option<serde_json::Value>,
147 #[serde(rename = "DelayedSell")]
149 pub delayed_sell: Option<bool>,
150}
151
152#[derive(Debug, Clone, Serialize, Deserialize)]
154pub struct PrepareSellResponse {
155 #[serde(rename = "TotalFee")]
157 pub total_fee: PositiveDecimal,
158 #[serde(rename = "CryptoAmountEstimate")]
160 pub crypto_amount_estimate: PositiveDecimal,
161 #[serde(rename = "CryptoAuthorizedAmount")]
163 pub crypto_authorized_amount: PositiveDecimal,
164 #[serde(rename = "FormSessionID")]
166 pub form_session_id: FormSessionID,
167}
168
169#[derive(Debug, Clone, Serialize, Deserialize)]
171pub struct SellRequest {
172 #[serde(rename = "CryptoCurrency")]
174 pub crypto_currency: CryptoCurrencyCode,
175 #[serde(rename = "FiatAmount")]
177 pub fiat_amount: PositiveDecimal,
178 #[serde(rename = "CryptoAuthorizedAmount")]
180 pub crypto_authorized_amount: PositiveDecimal,
181 #[serde(rename = "FormSessionID")]
183 pub form_session_id: FormSessionID,
184 #[serde(rename = "Nonce")]
186 pub nonce: Nonce,
187 #[serde(rename = "ExternalID")]
189 pub external_id: Option<ExternalID>,
190}
191
192#[derive(Debug, Clone, Serialize, Deserialize)]
194pub struct SellResponse {
195 #[serde(rename = "Transaction")]
197 pub transaction: Transaction,
198}