1use revm::context_interface::result::HaltReason;
3
4#[derive(Clone, Debug, PartialEq, Eq, Hash)]
6#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7pub enum OpHaltReason {
8 Base(HaltReason),
10 FailedDeposit,
12}
13
14impl From<HaltReason> for OpHaltReason {
15 fn from(value: HaltReason) -> Self {
16 Self::Base(value)
17 }
18}
19
20#[cfg(all(test, feature = "serde"))]
21mod tests {
22 use super::*;
23 use revm::context_interface::result::OutOfGasError;
24
25 #[test]
26 fn test_serialize_json_op_halt_reason() {
27 let response = r#"{"Base":{"OutOfGas":"Basic"}}"#;
28
29 let op_halt_reason: OpHaltReason = serde_json::from_str(response).unwrap();
30 assert_eq!(
31 op_halt_reason,
32 HaltReason::OutOfGas(OutOfGasError::Basic).into()
33 );
34 }
35}