diem_types/transaction/
metadata.rs1use serde::{Deserialize, Serialize};
14
15#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
17pub enum Metadata {
18 Undefined,
19 GeneralMetadata(GeneralMetadata),
20 TravelRuleMetadata(TravelRuleMetadata),
21 UnstructuredBytesMetadata(UnstructuredBytesMetadata),
22 RefundMetadata(RefundMetadata),
23 CoinTradeMetadata(CoinTradeMetadata),
24}
25
26#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
29pub enum GeneralMetadata {
30 GeneralMetadataVersion0(GeneralMetadataV0),
31}
32
33#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
36pub struct GeneralMetadataV0 {
37 #[serde(with = "serde_bytes")]
39 to_subaddress: Option<Vec<u8>>,
40 #[serde(with = "serde_bytes")]
42 from_subaddress: Option<Vec<u8>>,
43 referenced_event: Option<u64>,
49}
50
51impl GeneralMetadataV0 {
52 pub fn new(
53 to_subaddress: Option<Vec<u8>>, from_subaddress: Option<Vec<u8>>,
54 referenced_event: Option<u64>,
55 ) -> Self {
56 GeneralMetadataV0 {
57 to_subaddress,
58 from_subaddress,
59 referenced_event,
60 }
61 }
62
63 pub fn to_subaddress(&self) -> &Option<Vec<u8>> { &self.to_subaddress }
64
65 pub fn from_subaddress(&self) -> &Option<Vec<u8>> { &self.from_subaddress }
66
67 pub fn referenced_event(&self) -> &Option<u64> { &self.referenced_event }
68}
69
70#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
73pub enum TravelRuleMetadata {
74 TravelRuleMetadataVersion0(TravelRuleMetadataV0),
75}
76
77#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
79pub struct TravelRuleMetadataV0 {
80 off_chain_reference_id: Option<String>,
84}
85
86#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
88pub struct UnstructuredBytesMetadata {
89 #[serde(with = "serde_bytes")]
91 metadata: Option<Vec<u8>>,
92}
93
94#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
97pub enum RefundMetadata {
98 RefundMetadataV0(RefundMetadataV0),
99}
100
101#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
103pub struct RefundMetadataV0 {
104 pub transaction_version: u64,
106 pub reason: RefundReason,
108}
109
110#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
111pub enum RefundReason {
112 OtherReason,
113 InvalidSubaddress,
114 UserInitiatedPartialRefund,
115 UserInitiatedFullRefund,
116}
117
118#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
121pub enum CoinTradeMetadata {
122 CoinTradeMetadataV0(CoinTradeMetadataV0),
123}
124
125#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
127pub struct CoinTradeMetadataV0 {
128 pub trade_ids: Vec<String>,
130}