cdk_common/wallet/saga/
send.rs1use serde::{Deserialize, Serialize};
4
5use crate::nuts::Proofs;
6use crate::{Amount, Error};
7
8#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, Serialize, Deserialize)]
10#[serde(rename_all = "snake_case")]
11pub enum SendSagaState {
12 ProofsReserved,
14 TokenCreated,
16 RollingBack,
18}
19
20impl std::fmt::Display for SendSagaState {
21 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
22 match self {
23 SendSagaState::ProofsReserved => write!(f, "proofs_reserved"),
24 SendSagaState::TokenCreated => write!(f, "token_created"),
25 SendSagaState::RollingBack => write!(f, "rolling_back"),
26 }
27 }
28}
29
30impl std::str::FromStr for SendSagaState {
31 type Err = Error;
32 fn from_str(s: &str) -> Result<Self, Self::Err> {
33 match s {
34 "proofs_reserved" => Ok(SendSagaState::ProofsReserved),
35 "token_created" => Ok(SendSagaState::TokenCreated),
36 "rolling_back" => Ok(SendSagaState::RollingBack),
37 _ => Err(Error::InvalidOperationState),
38 }
39 }
40}
41
42#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
44pub struct SendOperationData {
45 pub amount: Amount,
47 pub memo: Option<String>,
49 pub counter_start: Option<u32>,
51 pub counter_end: Option<u32>,
53 pub token: Option<String>,
55 pub proofs: Option<Proofs>,
57}