1use {
10 crate::models,
11 serde::{Deserialize, Serialize},
12};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct TransactionResponse {
16 pub id: String,
19 #[serde(rename = "externalTxId", skip_serializing_if = "Option::is_none")]
23 pub external_tx_id: Option<String>,
24 #[serde(rename = "status")]
27 pub status: models::TransactionStatus,
28 #[serde(rename = "subStatus", skip_serializing_if = "Option::is_none")]
29 pub sub_status: Option<models::TransactionSubStatus>,
30 #[serde(rename = "txHash", skip_serializing_if = "Option::is_none")]
45 pub tx_hash: Option<String>,
46 #[serde(rename = "operation", skip_serializing_if = "Option::is_none")]
47 pub operation: Option<models::GetTransactionOperation>,
48 #[serde(rename = "note", skip_serializing_if = "Option::is_none")]
51 pub note: Option<String>,
52 #[serde(rename = "blockchainInfo", skip_serializing_if = "Option::is_none")]
55 pub blockchain_info: Option<String>,
56 #[serde(rename = "assetId", skip_serializing_if = "Option::is_none")]
58 pub asset_id: Option<String>,
59 #[serde(rename = "assetType", skip_serializing_if = "Option::is_none")]
61 pub asset_type: Option<String>,
62 #[serde(rename = "source", skip_serializing_if = "Option::is_none")]
63 pub source: Option<models::SourceTransferPeerPathResponse>,
64 #[serde(rename = "sourceAddress", skip_serializing_if = "Option::is_none")]
70 pub source_address: Option<String>,
71 #[serde(rename = "tag", skip_serializing_if = "Option::is_none")]
74 pub tag: Option<String>,
75 #[serde(rename = "destination", skip_serializing_if = "Option::is_none")]
76 pub destination: Option<models::DestinationTransferPeerPathResponse>,
77 #[serde(rename = "destinations", skip_serializing_if = "Option::is_none")]
81 pub destinations: Option<Vec<models::TransactionResponseDestination>>,
82 #[serde(rename = "destinationAddress", skip_serializing_if = "Option::is_none")]
84 pub destination_address: Option<String>,
85 #[serde(
87 rename = "destinationAddressDescription",
88 skip_serializing_if = "Option::is_none"
89 )]
90 pub destination_address_description: Option<String>,
91 #[serde(rename = "destinationTag", skip_serializing_if = "Option::is_none")]
94 pub destination_tag: Option<String>,
95 #[serde(
96 rename = "contractCallDecodedData",
97 skip_serializing_if = "Option::is_none"
98 )]
99 pub contract_call_decoded_data: Option<models::TransactionResponseContractCallDecodedData>,
100 #[serde(rename = "amountInfo", skip_serializing_if = "Option::is_none")]
101 pub amount_info: Option<models::AmountInfo>,
102 #[serde(rename = "treatAsGrossAmount", skip_serializing_if = "Option::is_none")]
109 pub treat_as_gross_amount: Option<bool>,
110 #[serde(rename = "feeInfo", skip_serializing_if = "Option::is_none")]
111 pub fee_info: Option<models::FeeInfo>,
112 #[serde(rename = "feeCurrency", skip_serializing_if = "Option::is_none")]
115 pub fee_currency: Option<String>,
116 #[serde(rename = "networkRecords", skip_serializing_if = "Option::is_none")]
120 pub network_records: Option<Vec<models::NetworkRecord>>,
121 #[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
123 pub created_at: Option<f64>,
124 #[serde(rename = "lastUpdated", skip_serializing_if = "Option::is_none")]
126 pub last_updated: Option<f64>,
127 #[serde(rename = "createdBy", skip_serializing_if = "Option::is_none")]
129 pub created_by: Option<String>,
130 #[serde(rename = "signedBy", skip_serializing_if = "Option::is_none")]
132 pub signed_by: Option<Vec<String>>,
133 #[serde(rename = "rejectedBy", skip_serializing_if = "Option::is_none")]
136 pub rejected_by: Option<String>,
137 #[serde(rename = "authorizationInfo", skip_serializing_if = "Option::is_none")]
138 pub authorization_info: Option<models::AuthorizationInfo>,
139 #[serde(rename = "exchangeTxId", skip_serializing_if = "Option::is_none")]
142 pub exchange_tx_id: Option<String>,
143 #[serde(rename = "customerRefId", skip_serializing_if = "Option::is_none")]
146 pub customer_ref_id: Option<String>,
147 #[serde(rename = "amlScreeningResult", skip_serializing_if = "Option::is_none")]
148 pub aml_screening_result: Option<models::AmlScreeningResult>,
149 #[serde(rename = "complianceResult", skip_serializing_if = "Option::is_none")]
150 pub compliance_result: Option<models::ComplianceResult>,
151 #[serde(
153 rename = "notBroadcastByFireblocks",
154 skip_serializing_if = "Option::is_none"
155 )]
156 pub not_broadcast_by_fireblocks: Option<bool>,
157 #[serde(rename = "dappUrl", skip_serializing_if = "Option::is_none")]
159 pub dapp_url: Option<String>,
160 #[serde(rename = "gasLimit", skip_serializing_if = "Option::is_none")]
162 pub gas_limit: Option<String>,
163 #[serde(rename = "blockchainIndex", skip_serializing_if = "Option::is_none")]
165 pub blockchain_index: Option<String>,
166 #[serde(rename = "paidRent", skip_serializing_if = "Option::is_none")]
168 pub paid_rent: Option<String>,
169 #[serde(rename = "extraParameters", skip_serializing_if = "Option::is_none")]
170 pub extra_parameters: Option<models::ExtraParameters>,
171 #[serde(rename = "signedMessages", skip_serializing_if = "Option::is_none")]
173 pub signed_messages: Option<Vec<models::SignedMessage>>,
174 #[serde(rename = "numOfConfirmations", skip_serializing_if = "Option::is_none")]
178 pub num_of_confirmations: Option<f64>,
179 #[serde(rename = "blockInfo", skip_serializing_if = "Option::is_none")]
180 pub block_info: Option<models::BlockInfo>,
181 #[serde(rename = "index", skip_serializing_if = "Option::is_none")]
186 pub index: Option<f64>,
187 #[serde(rename = "rewardInfo", skip_serializing_if = "Option::is_none")]
188 pub reward_info: Option<models::RewardInfo>,
189 #[serde(rename = "feePayerInfo", skip_serializing_if = "Option::is_none")]
190 pub fee_payer_info: Option<models::FeePayerInfo>,
191 #[serde(rename = "systemMessages", skip_serializing_if = "Option::is_none")]
192 pub system_messages: Option<models::SystemMessageInfo>,
193 #[serde(rename = "addressType", skip_serializing_if = "Option::is_none")]
194 pub address_type: Option<AddressType>,
195 #[serde(rename = "requestedAmount", skip_serializing_if = "Option::is_none")]
198 pub requested_amount: Option<f64>,
199 #[serde(rename = "amount", skip_serializing_if = "Option::is_none")]
203 pub amount: Option<f64>,
204 #[serde(rename = "netAmount", skip_serializing_if = "Option::is_none")]
207 pub net_amount: Option<f64>,
208 #[serde(
211 rename = "amountUSD",
212 default,
213 with = "::serde_with::rust::double_option",
214 skip_serializing_if = "Option::is_none"
215 )]
216 pub amount_usd: Option<Option<f64>>,
217 #[serde(rename = "serviceFee", skip_serializing_if = "Option::is_none")]
221 pub service_fee: Option<f64>,
222 #[serde(rename = "fee", skip_serializing_if = "Option::is_none")]
224 pub fee: Option<f64>,
225 #[serde(rename = "networkFee", skip_serializing_if = "Option::is_none")]
228 pub network_fee: Option<f64>,
229 #[serde(rename = "errorDescription", skip_serializing_if = "Option::is_none")]
232 pub error_description: Option<String>,
233 #[serde(rename = "replacedTxByHash", skip_serializing_if = "Option::is_none")]
236 pub replaced_tx_by_hash: Option<String>,
237 #[serde(rename = "nonce", skip_serializing_if = "Option::is_none")]
239 pub nonce: Option<String>,
240}
241
242impl TransactionResponse {
243 pub fn new() -> TransactionResponse {
244 TransactionResponse {
245 id: String::new(),
246 external_tx_id: None,
247 status: models::TransactionStatus::default(),
248 sub_status: None,
249 tx_hash: None,
250 operation: None,
251 note: None,
252 blockchain_info: None,
253 asset_id: None,
254 asset_type: None,
255 source: None,
256 source_address: None,
257 tag: None,
258 destination: None,
259 destinations: None,
260 destination_address: None,
261 destination_address_description: None,
262 destination_tag: None,
263 contract_call_decoded_data: None,
264 amount_info: None,
265 treat_as_gross_amount: None,
266 fee_info: None,
267 fee_currency: None,
268 network_records: None,
269 created_at: None,
270 last_updated: None,
271 created_by: None,
272 signed_by: None,
273 rejected_by: None,
274 authorization_info: None,
275 exchange_tx_id: None,
276 customer_ref_id: None,
277 aml_screening_result: None,
278 compliance_result: None,
279 not_broadcast_by_fireblocks: None,
280 dapp_url: None,
281 gas_limit: None,
282 blockchain_index: None,
283 paid_rent: None,
284 extra_parameters: None,
285 signed_messages: None,
286 num_of_confirmations: None,
287 block_info: None,
288 index: None,
289 reward_info: None,
290 fee_payer_info: None,
291 system_messages: None,
292 address_type: None,
293 requested_amount: None,
294 amount: None,
295 net_amount: None,
296 amount_usd: None,
297 service_fee: None,
298 fee: None,
299 network_fee: None,
300 error_description: None,
301 replaced_tx_by_hash: None,
302 nonce: None,
303 }
304 }
305}
306#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
308pub enum AddressType {
309 #[serde(rename = "")]
310 Empty,
311 #[serde(rename = "WHITELISTED")]
312 Whitelisted,
313 #[serde(rename = "ONE_TIME")]
314 OneTime,
315}
316
317impl Default for AddressType {
318 fn default() -> AddressType {
319 Self::Empty
320 }
321}