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,
18 #[serde(rename = "externalTxId", skip_serializing_if = "Option::is_none")]
21 pub external_tx_id: Option<String>,
22 pub status: models::TransactionStatus,
23 #[serde(rename = "subStatus", skip_serializing_if = "Option::is_none")]
24 pub sub_status: Option<models::TransactionSubStatus>,
25 #[serde(rename = "txHash", skip_serializing_if = "Option::is_none")]
40 pub tx_hash: Option<String>,
41 #[serde(rename = "operation", skip_serializing_if = "Option::is_none")]
42 pub operation: Option<models::GetTransactionOperation>,
43 #[serde(rename = "note", skip_serializing_if = "Option::is_none")]
46 pub note: Option<String>,
47 #[serde(rename = "blockchainInfo", skip_serializing_if = "Option::is_none")]
50 pub blockchain_info: Option<serde_json::Value>,
51 #[serde(rename = "assetId", skip_serializing_if = "Option::is_none")]
53 pub asset_id: Option<String>,
54 #[serde(rename = "assetType", skip_serializing_if = "Option::is_none")]
56 pub asset_type: Option<String>,
57 #[serde(rename = "source", skip_serializing_if = "Option::is_none")]
58 pub source: Option<models::SourceTransferPeerPathResponse>,
59 #[serde(rename = "sourceAddress", skip_serializing_if = "Option::is_none")]
65 pub source_address: Option<String>,
66 #[serde(rename = "tag", skip_serializing_if = "Option::is_none")]
69 pub tag: Option<String>,
70 #[serde(rename = "destination", skip_serializing_if = "Option::is_none")]
71 pub destination: Option<models::DestinationTransferPeerPathResponse>,
72 #[serde(rename = "destinations", skip_serializing_if = "Option::is_none")]
76 pub destinations: Option<Vec<models::TransactionResponseDestination>>,
77 #[serde(rename = "destinationAddress", skip_serializing_if = "Option::is_none")]
79 pub destination_address: Option<String>,
80 #[serde(
82 rename = "destinationAddressDescription",
83 skip_serializing_if = "Option::is_none"
84 )]
85 pub destination_address_description: Option<String>,
86 #[serde(rename = "destinationTag", skip_serializing_if = "Option::is_none")]
89 pub destination_tag: Option<String>,
90 #[serde(
91 rename = "contractCallDecodedData",
92 skip_serializing_if = "Option::is_none"
93 )]
94 pub contract_call_decoded_data: Option<models::TransactionResponseContractCallDecodedData>,
95 #[serde(rename = "amountInfo", skip_serializing_if = "Option::is_none")]
96 pub amount_info: Option<models::AmountInfo>,
97 #[serde(rename = "treatAsGrossAmount", skip_serializing_if = "Option::is_none")]
104 pub treat_as_gross_amount: Option<bool>,
105 #[serde(rename = "feeInfo", skip_serializing_if = "Option::is_none")]
106 pub fee_info: Option<models::FeeInfo>,
107 #[serde(rename = "feeCurrency", skip_serializing_if = "Option::is_none")]
110 pub fee_currency: Option<String>,
111 #[serde(rename = "networkRecords", skip_serializing_if = "Option::is_none")]
115 pub network_records: Option<Vec<models::NetworkRecord>>,
116 #[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
118 pub created_at: Option<f64>,
119 #[serde(rename = "lastUpdated", skip_serializing_if = "Option::is_none")]
121 pub last_updated: Option<f64>,
122 #[serde(rename = "createdBy", skip_serializing_if = "Option::is_none")]
124 pub created_by: Option<String>,
125 #[serde(rename = "signedBy", skip_serializing_if = "Option::is_none")]
127 pub signed_by: Option<Vec<String>>,
128 #[serde(rename = "rejectedBy", skip_serializing_if = "Option::is_none")]
131 pub rejected_by: Option<String>,
132 #[serde(rename = "authorizationInfo", skip_serializing_if = "Option::is_none")]
133 pub authorization_info: Option<models::AuthorizationInfo>,
134 #[serde(rename = "exchangeTxId", skip_serializing_if = "Option::is_none")]
137 pub exchange_tx_id: Option<String>,
138 #[serde(rename = "customerRefId", skip_serializing_if = "Option::is_none")]
141 pub customer_ref_id: Option<String>,
142 #[serde(rename = "amlScreeningResult", skip_serializing_if = "Option::is_none")]
143 pub aml_screening_result: Option<models::AmlScreeningResult>,
144 #[serde(rename = "complianceResult", skip_serializing_if = "Option::is_none")]
145 pub compliance_result: Option<models::ComplianceResult>,
146 #[serde(
148 rename = "notBroadcastByFireblocks",
149 skip_serializing_if = "Option::is_none"
150 )]
151 pub not_broadcast_by_fireblocks: Option<bool>,
152 #[serde(rename = "dappUrl", skip_serializing_if = "Option::is_none")]
154 pub dapp_url: Option<String>,
155 #[serde(rename = "gasLimit", skip_serializing_if = "Option::is_none")]
157 pub gas_limit: Option<String>,
158 #[serde(rename = "blockchainIndex", skip_serializing_if = "Option::is_none")]
160 pub blockchain_index: Option<String>,
161 #[serde(rename = "paidRent", skip_serializing_if = "Option::is_none")]
163 pub paid_rent: Option<String>,
164 #[serde(rename = "extraParameters", skip_serializing_if = "Option::is_none")]
165 pub extra_parameters: Option<models::ExtraParameters>,
166 #[serde(rename = "signedMessages", skip_serializing_if = "Option::is_none")]
168 pub signed_messages: Option<Vec<models::SignedMessage>>,
169 #[serde(rename = "numOfConfirmations", skip_serializing_if = "Option::is_none")]
173 pub num_of_confirmations: Option<f64>,
174 #[serde(rename = "blockInfo", skip_serializing_if = "Option::is_none")]
175 pub block_info: Option<models::BlockInfo>,
176 #[serde(rename = "index", skip_serializing_if = "Option::is_none")]
181 pub index: Option<f64>,
182 #[serde(rename = "rewardInfo", skip_serializing_if = "Option::is_none")]
183 pub reward_info: Option<models::RewardInfo>,
184 #[serde(rename = "feePayerInfo", skip_serializing_if = "Option::is_none")]
185 pub fee_payer_info: Option<models::FeePayerInfo>,
186 #[serde(rename = "systemMessages", skip_serializing_if = "Option::is_none")]
187 pub system_messages: Option<models::SystemMessageInfo>,
188 #[serde(rename = "addressType", skip_serializing_if = "Option::is_none")]
189 pub address_type: Option<AddressType>,
190 #[serde(rename = "requestedAmount", skip_serializing_if = "Option::is_none")]
193 pub requested_amount: Option<f64>,
194 #[serde(rename = "amount", skip_serializing_if = "Option::is_none")]
198 pub amount: Option<f64>,
199 #[serde(rename = "netAmount", skip_serializing_if = "Option::is_none")]
202 pub net_amount: Option<f64>,
203 #[serde(
206 rename = "amountUSD",
207 default,
208 with = "::serde_with::rust::double_option",
209 skip_serializing_if = "Option::is_none"
210 )]
211 pub amount_usd: Option<Option<f64>>,
212 #[serde(rename = "serviceFee", skip_serializing_if = "Option::is_none")]
216 pub service_fee: Option<f64>,
217 #[serde(rename = "fee", skip_serializing_if = "Option::is_none")]
219 pub fee: Option<f64>,
220 #[serde(rename = "networkFee", skip_serializing_if = "Option::is_none")]
223 pub network_fee: Option<f64>,
224 #[serde(rename = "errorDescription", skip_serializing_if = "Option::is_none")]
227 pub error_description: Option<String>,
228 #[serde(rename = "replacedTxByHash", skip_serializing_if = "Option::is_none")]
231 pub replaced_tx_by_hash: Option<String>,
232 #[serde(rename = "nonce", skip_serializing_if = "Option::is_none")]
234 pub nonce: Option<String>,
235}
236
237impl TransactionResponse {
238 pub fn new() -> TransactionResponse {
239 TransactionResponse {
240 id: String::new(),
241 external_tx_id: None,
242 status: models::TransactionStatus::Submitted,
243 sub_status: None,
244 tx_hash: None,
245 operation: None,
246 note: None,
247 blockchain_info: None,
248 asset_id: None,
249 asset_type: None,
250 source: None,
251 source_address: None,
252 tag: None,
253 destination: None,
254 destinations: None,
255 destination_address: None,
256 destination_address_description: None,
257 destination_tag: None,
258 contract_call_decoded_data: None,
259 amount_info: None,
260 treat_as_gross_amount: None,
261 fee_info: None,
262 fee_currency: None,
263 network_records: None,
264 created_at: None,
265 last_updated: None,
266 created_by: None,
267 signed_by: None,
268 rejected_by: None,
269 authorization_info: None,
270 exchange_tx_id: None,
271 customer_ref_id: None,
272 aml_screening_result: None,
273 compliance_result: None,
274 not_broadcast_by_fireblocks: None,
275 dapp_url: None,
276 gas_limit: None,
277 blockchain_index: None,
278 paid_rent: None,
279 extra_parameters: None,
280 signed_messages: None,
281 num_of_confirmations: None,
282 block_info: None,
283 index: None,
284 reward_info: None,
285 fee_payer_info: None,
286 system_messages: None,
287 address_type: None,
288 requested_amount: None,
289 amount: None,
290 net_amount: None,
291 amount_usd: None,
292 service_fee: None,
293 fee: None,
294 network_fee: None,
295 error_description: None,
296 replaced_tx_by_hash: None,
297 nonce: None,
298 }
299 }
300}
301#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
303pub enum AddressType {
304 #[serde(rename = "")]
305 Empty,
306 #[serde(rename = "WHITELISTED")]
307 Whitelisted,
308 #[serde(rename = "ONE_TIME")]
309 OneTime,
310}
311
312impl Default for AddressType {
313 fn default() -> AddressType {
314 Self::Empty
315 }
316}