1use {
10 crate::models,
11 serde::{Deserialize, Serialize},
12};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct TransactionRequest {
16 #[serde(rename = "operation", skip_serializing_if = "Option::is_none")]
17 pub operation: Option<models::TransactionOperation>,
18 #[serde(rename = "note", skip_serializing_if = "Option::is_none")]
21 pub note: Option<String>,
22 #[serde(rename = "externalTxId", skip_serializing_if = "Option::is_none")]
24 pub external_tx_id: Option<String>,
25 #[serde(rename = "assetId", skip_serializing_if = "Option::is_none")]
27 pub asset_id: Option<String>,
28 #[serde(rename = "source", skip_serializing_if = "Option::is_none")]
29 pub source: Option<models::SourceTransferPeerPath>,
30 #[serde(rename = "destination", skip_serializing_if = "Option::is_none")]
31 pub destination: Option<models::DestinationTransferPeerPath>,
32 #[serde(rename = "destinations", skip_serializing_if = "Option::is_none")]
35 pub destinations: Option<Vec<models::TransactionRequestDestination>>,
36 #[serde(rename = "amount", skip_serializing_if = "Option::is_none")]
37 pub amount: Option<models::TransactionRequestAmount>,
38 #[serde(rename = "treatAsGrossAmount", skip_serializing_if = "Option::is_none")]
45 pub treat_as_gross_amount: Option<bool>,
46 #[serde(rename = "forceSweep", skip_serializing_if = "Option::is_none")]
52 pub force_sweep: Option<bool>,
53 #[serde(rename = "feeLevel", skip_serializing_if = "Option::is_none")]
57 pub fee_level: Option<FeeLevel>,
58 #[serde(rename = "fee", skip_serializing_if = "Option::is_none")]
59 pub fee: Option<models::TransactionRequestFee>,
60 #[serde(rename = "priorityFee", skip_serializing_if = "Option::is_none")]
61 pub priority_fee: Option<models::TransactionRequestPriorityFee>,
62 #[serde(rename = "failOnLowFee", skip_serializing_if = "Option::is_none")]
66 pub fail_on_low_fee: Option<bool>,
67 #[serde(rename = "maxFee", skip_serializing_if = "Option::is_none")]
72 pub max_fee: Option<String>,
73 #[serde(rename = "gasLimit", skip_serializing_if = "Option::is_none")]
74 pub gas_limit: Option<models::TransactionRequestGasLimit>,
75 #[serde(rename = "gasPrice", skip_serializing_if = "Option::is_none")]
76 pub gas_price: Option<models::TransactionRequestGasPrice>,
77 #[serde(rename = "networkFee", skip_serializing_if = "Option::is_none")]
78 pub network_fee: Option<models::TransactionRequestNetworkFee>,
79 #[serde(rename = "replaceTxByHash", skip_serializing_if = "Option::is_none")]
85 pub replace_tx_by_hash: Option<String>,
86 #[serde(rename = "extraParameters", skip_serializing_if = "Option::is_none")]
87 pub extra_parameters: Option<models::ExtraParameters>,
88 #[serde(rename = "customerRefId", skip_serializing_if = "Option::is_none")]
91 pub customer_ref_id: Option<String>,
92 #[serde(rename = "travelRuleMessage", skip_serializing_if = "Option::is_none")]
93 pub travel_rule_message: Option<models::TravelRuleCreateTransactionRequest>,
94 #[serde(rename = "autoStaking", skip_serializing_if = "Option::is_none")]
96 pub auto_staking: Option<bool>,
97 #[serde(rename = "networkStaking", skip_serializing_if = "Option::is_none")]
98 pub network_staking: Option<models::TransactionRequestNetworkStaking>,
99 #[serde(rename = "cpuStaking", skip_serializing_if = "Option::is_none")]
100 pub cpu_staking: Option<models::TransactionRequestNetworkStaking>,
101 #[serde(rename = "useGasless", skip_serializing_if = "Option::is_none")]
103 pub use_gasless: Option<bool>,
104}
105
106impl TransactionRequest {
107 pub fn new() -> TransactionRequest {
108 TransactionRequest {
109 operation: None,
110 note: None,
111 external_tx_id: None,
112 asset_id: None,
113 source: None,
114 destination: None,
115 destinations: None,
116 amount: None,
117 treat_as_gross_amount: None,
118 force_sweep: None,
119 fee_level: None,
120 fee: None,
121 priority_fee: None,
122 fail_on_low_fee: None,
123 max_fee: None,
124 gas_limit: None,
125 gas_price: None,
126 network_fee: None,
127 replace_tx_by_hash: None,
128 extra_parameters: None,
129 customer_ref_id: None,
130 travel_rule_message: None,
131 auto_staking: None,
132 network_staking: None,
133 cpu_staking: None,
134 use_gasless: None,
135 }
136 }
137}
138#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
142pub enum FeeLevel {
143 #[serde(rename = "LOW")]
144 Low,
145 #[serde(rename = "MEDIUM")]
146 Medium,
147 #[serde(rename = "HIGH")]
148 High,
149}
150
151impl Default for FeeLevel {
152 fn default() -> FeeLevel {
153 Self::Low
154 }
155}