anvil_zksync_core/formatter/transaction/
status.rs

1use std::fmt::Display;
2
3use zksync_multivm::interface::ExecutionResult;
4
5///
6/// Kind of outcomes of transaction execution.
7///
8pub enum TransactionStatus {
9    Success,
10    Failure,
11    Halt,
12}
13
14impl TransactionStatus {
15    pub fn emoji(&self) -> &str {
16        match self {
17            Self::Success => "✅",
18            Self::Failure => "❌",
19            Self::Halt => "⏸️",
20        }
21    }
22}
23impl From<&zksync_multivm::interface::ExecutionResult> for TransactionStatus {
24    fn from(value: &ExecutionResult) -> Self {
25        match value {
26            ExecutionResult::Success { .. } => Self::Success,
27            ExecutionResult::Revert { .. } => Self::Failure,
28            ExecutionResult::Halt { .. } => Self::Halt,
29        }
30    }
31}
32impl Display for TransactionStatus {
33    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
34        f.write_str(match self {
35            TransactionStatus::Success => "SUCCESS",
36            TransactionStatus::Failure => "FAILED",
37            TransactionStatus::Halt => "HALTED",
38        })
39    }
40}