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")]
84 pub replace_tx_by_hash: Option<String>,
85 #[serde(rename = "extraParameters", skip_serializing_if = "Option::is_none")]
86 pub extra_parameters: Option<models::ExtraParameters>,
87 #[serde(rename = "customerRefId", skip_serializing_if = "Option::is_none")]
90 pub customer_ref_id: Option<String>,
91 #[serde(rename = "travelRuleMessage", skip_serializing_if = "Option::is_none")]
92 pub travel_rule_message: Option<models::TravelRuleCreateTransactionRequest>,
93 #[serde(rename = "autoStaking", skip_serializing_if = "Option::is_none")]
95 pub auto_staking: Option<bool>,
96 #[serde(rename = "networkStaking", skip_serializing_if = "Option::is_none")]
97 pub network_staking: Option<models::TransactionRequestNetworkStaking>,
98 #[serde(rename = "cpuStaking", skip_serializing_if = "Option::is_none")]
99 pub cpu_staking: Option<models::TransactionRequestNetworkStaking>,
100 #[serde(rename = "useGasless", skip_serializing_if = "Option::is_none")]
102 pub use_gasless: Option<bool>,
103}
104
105impl TransactionRequest {
106 pub fn new() -> TransactionRequest {
107 TransactionRequest {
108 operation: None,
109 note: None,
110 external_tx_id: None,
111 asset_id: None,
112 source: None,
113 destination: None,
114 destinations: None,
115 amount: None,
116 treat_as_gross_amount: None,
117 force_sweep: None,
118 fee_level: None,
119 fee: None,
120 priority_fee: None,
121 fail_on_low_fee: None,
122 max_fee: None,
123 gas_limit: None,
124 gas_price: None,
125 network_fee: None,
126 replace_tx_by_hash: None,
127 extra_parameters: None,
128 customer_ref_id: None,
129 travel_rule_message: None,
130 auto_staking: None,
131 network_staking: None,
132 cpu_staking: None,
133 use_gasless: None,
134 }
135 }
136}
137#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
141pub enum FeeLevel {
142 #[serde(rename = "LOW")]
143 Low,
144 #[serde(rename = "MEDIUM")]
145 Medium,
146 #[serde(rename = "HIGH")]
147 High,
148}
149
150impl Default for FeeLevel {
151 fn default() -> FeeLevel {
152 Self::Low
153 }
154}