miden_lib/transaction/
events.rs1use core::fmt;
2
3use super::TransactionEventError;
4
5const ACCOUNT_VAULT_BEFORE_ADD_ASSET: u32 = 0x2_0000; const ACCOUNT_VAULT_AFTER_ADD_ASSET: u32 = 0x2_0001; const ACCOUNT_VAULT_BEFORE_REMOVE_ASSET: u32 = 0x2_0002; const ACCOUNT_VAULT_AFTER_REMOVE_ASSET: u32 = 0x2_0003; const ACCOUNT_STORAGE_BEFORE_SET_ITEM: u32 = 0x2_0004; const ACCOUNT_STORAGE_AFTER_SET_ITEM: u32 = 0x2_0005; const ACCOUNT_STORAGE_BEFORE_SET_MAP_ITEM: u32 = 0x2_0006; const ACCOUNT_STORAGE_AFTER_SET_MAP_ITEM: u32 = 0x2_0007; const ACCOUNT_BEFORE_INCREMENT_NONCE: u32 = 0x2_0008; const ACCOUNT_AFTER_INCREMENT_NONCE: u32 = 0x2_0009; const ACCOUNT_PUSH_PROCEDURE_INDEX: u32 = 0x2_000a; const NOTE_BEFORE_CREATED: u32 = 0x2_000b; const NOTE_AFTER_CREATED: u32 = 0x2_000c; const NOTE_BEFORE_ADD_ASSET: u32 = 0x2_000d; const NOTE_AFTER_ADD_ASSET: u32 = 0x2_000e; const FALCON_SIG_TO_STACK: u32 = 0x2_000f; const PROLOGUE_START: u32 = 0x2_0010; const PROLOGUE_END: u32 = 0x2_0011; const NOTES_PROCESSING_START: u32 = 0x2_0012; const NOTES_PROCESSING_END: u32 = 0x2_0013; const NOTE_EXECUTION_START: u32 = 0x2_0014; const NOTE_EXECUTION_END: u32 = 0x2_0015; const TX_SCRIPT_PROCESSING_START: u32 = 0x2_0016; const TX_SCRIPT_PROCESSING_END: u32 = 0x2_0017; const EPILOGUE_START: u32 = 0x2_0018; const EPILOGUE_END: u32 = 0x2_0019; #[repr(u32)]
59#[derive(Debug, Clone, Eq, PartialEq)]
60pub enum TransactionEvent {
61 AccountVaultBeforeAddAsset = ACCOUNT_VAULT_BEFORE_ADD_ASSET,
62 AccountVaultAfterAddAsset = ACCOUNT_VAULT_AFTER_ADD_ASSET,
63
64 AccountVaultBeforeRemoveAsset = ACCOUNT_VAULT_BEFORE_REMOVE_ASSET,
65 AccountVaultAfterRemoveAsset = ACCOUNT_VAULT_AFTER_REMOVE_ASSET,
66
67 AccountStorageBeforeSetItem = ACCOUNT_STORAGE_BEFORE_SET_ITEM,
68 AccountStorageAfterSetItem = ACCOUNT_STORAGE_AFTER_SET_ITEM,
69
70 AccountStorageBeforeSetMapItem = ACCOUNT_STORAGE_BEFORE_SET_MAP_ITEM,
71 AccountStorageAfterSetMapItem = ACCOUNT_STORAGE_AFTER_SET_MAP_ITEM,
72
73 AccountBeforeIncrementNonce = ACCOUNT_BEFORE_INCREMENT_NONCE,
74 AccountAfterIncrementNonce = ACCOUNT_AFTER_INCREMENT_NONCE,
75
76 AccountPushProcedureIndex = ACCOUNT_PUSH_PROCEDURE_INDEX,
77
78 NoteBeforeCreated = NOTE_BEFORE_CREATED,
79 NoteAfterCreated = NOTE_AFTER_CREATED,
80
81 NoteBeforeAddAsset = NOTE_BEFORE_ADD_ASSET,
82 NoteAfterAddAsset = NOTE_AFTER_ADD_ASSET,
83
84 FalconSigToStack = FALCON_SIG_TO_STACK,
85
86 PrologueStart = PROLOGUE_START,
87 PrologueEnd = PROLOGUE_END,
88
89 NotesProcessingStart = NOTES_PROCESSING_START,
90 NotesProcessingEnd = NOTES_PROCESSING_END,
91
92 NoteExecutionStart = NOTE_EXECUTION_START,
93 NoteExecutionEnd = NOTE_EXECUTION_END,
94
95 TxScriptProcessingStart = TX_SCRIPT_PROCESSING_START,
96 TxScriptProcessingEnd = TX_SCRIPT_PROCESSING_END,
97
98 EpilogueStart = EPILOGUE_START,
99 EpilogueEnd = EPILOGUE_END,
100}
101
102impl TransactionEvent {
103 pub const ID_PREFIX: u32 = 2;
105}
106
107impl fmt::Display for TransactionEvent {
108 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
109 write!(f, "{self:?}")
110 }
111}
112
113impl TryFrom<u32> for TransactionEvent {
114 type Error = TransactionEventError;
115
116 fn try_from(value: u32) -> Result<Self, Self::Error> {
117 if value >> 16 != TransactionEvent::ID_PREFIX {
118 return Err(TransactionEventError::NotTransactionEvent(value));
119 }
120
121 match value {
122 ACCOUNT_VAULT_BEFORE_ADD_ASSET => Ok(TransactionEvent::AccountVaultBeforeAddAsset),
123 ACCOUNT_VAULT_AFTER_ADD_ASSET => Ok(TransactionEvent::AccountVaultAfterAddAsset),
124
125 ACCOUNT_VAULT_BEFORE_REMOVE_ASSET => {
126 Ok(TransactionEvent::AccountVaultBeforeRemoveAsset)
127 },
128 ACCOUNT_VAULT_AFTER_REMOVE_ASSET => Ok(TransactionEvent::AccountVaultAfterRemoveAsset),
129
130 ACCOUNT_STORAGE_BEFORE_SET_ITEM => Ok(TransactionEvent::AccountStorageBeforeSetItem),
131 ACCOUNT_STORAGE_AFTER_SET_ITEM => Ok(TransactionEvent::AccountStorageAfterSetItem),
132
133 ACCOUNT_STORAGE_BEFORE_SET_MAP_ITEM => {
134 Ok(TransactionEvent::AccountStorageBeforeSetMapItem)
135 },
136 ACCOUNT_STORAGE_AFTER_SET_MAP_ITEM => {
137 Ok(TransactionEvent::AccountStorageAfterSetMapItem)
138 },
139
140 ACCOUNT_BEFORE_INCREMENT_NONCE => Ok(TransactionEvent::AccountBeforeIncrementNonce),
141 ACCOUNT_AFTER_INCREMENT_NONCE => Ok(TransactionEvent::AccountAfterIncrementNonce),
142
143 ACCOUNT_PUSH_PROCEDURE_INDEX => Ok(TransactionEvent::AccountPushProcedureIndex),
144
145 NOTE_BEFORE_CREATED => Ok(TransactionEvent::NoteBeforeCreated),
146 NOTE_AFTER_CREATED => Ok(TransactionEvent::NoteAfterCreated),
147
148 NOTE_BEFORE_ADD_ASSET => Ok(TransactionEvent::NoteBeforeAddAsset),
149 NOTE_AFTER_ADD_ASSET => Ok(TransactionEvent::NoteAfterAddAsset),
150
151 FALCON_SIG_TO_STACK => Ok(TransactionEvent::FalconSigToStack),
152
153 PROLOGUE_START => Ok(TransactionEvent::PrologueStart),
154 PROLOGUE_END => Ok(TransactionEvent::PrologueEnd),
155
156 NOTES_PROCESSING_START => Ok(TransactionEvent::NotesProcessingStart),
157 NOTES_PROCESSING_END => Ok(TransactionEvent::NotesProcessingEnd),
158
159 NOTE_EXECUTION_START => Ok(TransactionEvent::NoteExecutionStart),
160 NOTE_EXECUTION_END => Ok(TransactionEvent::NoteExecutionEnd),
161
162 TX_SCRIPT_PROCESSING_START => Ok(TransactionEvent::TxScriptProcessingStart),
163 TX_SCRIPT_PROCESSING_END => Ok(TransactionEvent::TxScriptProcessingEnd),
164
165 EPILOGUE_START => Ok(TransactionEvent::EpilogueStart),
166 EPILOGUE_END => Ok(TransactionEvent::EpilogueEnd),
167
168 _ => Err(TransactionEventError::InvalidTransactionEvent(value)),
169 }
170 }
171}