circle_api/models/
transaction.rs

1use serde::{Deserialize, Serialize};
2use uuid::Uuid;
3
4#[derive(Serialize, Debug)]
5#[serde(rename_all = "camelCase")]
6pub struct TransactionRequest {
7    pub idempotency_key: Uuid,
8    pub amounts: Vec<String>,
9    pub destination_address: String,
10    pub entity_secret_cipher_text: String,
11    pub fee_level: Option<FeeLevel>,
12    pub gas_limit: Option<u64>,
13    pub gas_price: Option<f64>,
14    pub max_fee: Option<f64>,
15    pub priority_fee: Option<f64>,
16    pub nft_token_ids: Option<Vec<String>>,
17    pub ref_id: Option<String>,
18    pub token_id: Uuid,
19    pub wallet_id: Uuid,
20}
21
22#[derive(Serialize, Deserialize, Debug)]
23#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
24pub enum FeeLevel {
25    Low,
26    Medium,
27    High,
28}
29
30#[derive(Deserialize, Debug)]
31#[serde(rename_all = "camelCase")]
32pub struct TransactionResponse {
33    pub id: String,
34    pub state: TransactionState,
35}
36
37#[derive(Deserialize, Debug)]
38#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
39pub enum TransactionState {
40    Initiated,
41    PendingRiskScreening,
42    Denied,
43    Queued,
44    Sent,
45    Confirmed,
46    Complete,
47    Failed,
48    Cancelled,
49}