1#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
2pub struct STXTransferEventData {
3 pub sender: String,
4 pub recipient: String,
5 pub amount: String,
6}
7
8#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
9pub struct STXMintEventData {
10 pub recipient: String,
11 pub amount: String,
12}
13
14#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
15pub struct STXLockEventData {
16 pub locked_amount: String,
17 pub unlock_height: String,
18 pub locked_address: String,
19}
20
21#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
22pub struct STXBurnEventData {
23 pub sender: String,
24 pub amount: String,
25}
26
27#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
28pub struct NFTTransferEventData {
29 #[serde(rename = "asset_identifier")]
30 pub asset_class_identifier: String,
31 #[serde(rename = "raw_value")]
32 pub hex_asset_identifier: String,
33 pub sender: String,
34 pub recipient: String,
35}
36
37#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
38pub struct NFTMintEventData {
39 #[serde(rename = "asset_identifier")]
40 pub asset_class_identifier: String,
41 #[serde(rename = "raw_value")]
42 pub hex_asset_identifier: String,
43 pub recipient: String,
44}
45
46#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
47pub struct NFTBurnEventData {
48 #[serde(rename = "asset_identifier")]
49 pub asset_class_identifier: String,
50 #[serde(rename = "raw_value")]
51 pub hex_asset_identifier: String,
52 pub sender: String,
53}
54
55#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
56pub struct FTTransferEventData {
57 #[serde(rename = "asset_identifier")]
58 pub asset_class_identifier: String,
59 pub sender: String,
60 pub recipient: String,
61 pub amount: String,
62}
63
64#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
65pub struct FTMintEventData {
66 #[serde(rename = "asset_identifier")]
67 pub asset_class_identifier: String,
68 pub recipient: String,
69 pub amount: String,
70}
71
72#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
73pub struct FTBurnEventData {
74 #[serde(rename = "asset_identifier")]
75 pub asset_class_identifier: String,
76 pub sender: String,
77 pub amount: String,
78}
79
80#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
81pub struct DataVarSetEventData {
82 pub contract_identifier: String,
83 pub var: String,
84 #[serde(rename = "raw_new_value")]
85 pub hex_new_value: String,
86}
87
88#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
89pub struct DataMapInsertEventData {
90 pub contract_identifier: String,
91 pub map: String,
92 #[serde(rename = "raw_inserted_key")]
93 pub hex_inserted_key: String,
94 #[serde(rename = "raw_inserted_value")]
95 pub hex_inserted_value: String,
96}
97
98#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
99pub struct DataMapUpdateEventData {
100 pub contract_identifier: String,
101 pub map: String,
102 #[serde(rename = "raw_key")]
103 pub hex_key: String,
104 #[serde(rename = "raw_new_value")]
105 pub hex_new_value: String,
106}
107
108#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
109pub struct DataMapDeleteEventData {
110 pub contract_identifier: String,
111 pub map: String,
112 #[serde(rename = "raw_deleted_key")]
113 pub hex_deleted_key: String,
114}
115
116#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize)]
117pub struct SmartContractEventData {
118 pub contract_identifier: String,
119 pub topic: String,
120 #[serde(rename = "raw_value")]
121 pub hex_value: String,
122}
123
124#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
125#[serde(tag = "type", content = "data")]
126pub enum StacksTransactionEventPayload {
127 STXTransferEvent(STXTransferEventData),
128 STXMintEvent(STXMintEventData),
129 STXLockEvent(STXLockEventData),
130 STXBurnEvent(STXBurnEventData),
131 NFTTransferEvent(NFTTransferEventData),
132 NFTMintEvent(NFTMintEventData),
133 NFTBurnEvent(NFTBurnEventData),
134 FTTransferEvent(FTTransferEventData),
135 FTMintEvent(FTMintEventData),
136 FTBurnEvent(FTBurnEventData),
137 DataVarSetEvent(DataVarSetEventData),
138 DataMapInsertEvent(DataMapInsertEventData),
139 DataMapUpdateEvent(DataMapUpdateEventData),
140 DataMapDeleteEvent(DataMapDeleteEventData),
141 SmartContractEvent(SmartContractEventData),
142}
143
144#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
145pub struct StacksTransactionEvent {
146 #[serde(flatten)]
147 pub event_payload: StacksTransactionEventPayload,
148 #[serde(default)]
149 pub position: StacksTransactionEventPosition,
150}
151
152#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
153pub struct StacksTransactionEventPosition {
154 pub index: u32,
155}
156
157impl Default for StacksTransactionEventPosition {
158 fn default() -> Self {
159 Self { index: 0 }
160 }
161}