1use crate::ConfigureEvm;
4use alloy_evm::{block::BlockExecutorFactory, Database, EvmEnv, EvmFactory};
5use revm::{inspector::NoOpInspector, Inspector};
6
7pub type EvmFactoryFor<Evm> =
9 <<Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory;
10
11pub type SpecFor<Evm> = <EvmFactoryFor<Evm> as EvmFactory>::Spec;
13
14pub type BlockEnvFor<Evm> = <EvmFactoryFor<Evm> as EvmFactory>::BlockEnv;
16
17pub type EvmFor<Evm, DB, I = NoOpInspector> = <EvmFactoryFor<Evm> as EvmFactory>::Evm<DB, I>;
19
20pub type EvmErrorFor<Evm, DB> = <EvmFactoryFor<Evm> as EvmFactory>::Error<DB>;
22
23pub type EvmContextFor<Evm, DB> = <EvmFactoryFor<Evm> as EvmFactory>::Context<DB>;
25
26pub type HaltReasonFor<Evm> = <EvmFactoryFor<Evm> as EvmFactory>::HaltReason;
28
29pub type TxEnvFor<Evm> = <EvmFactoryFor<Evm> as EvmFactory>::Tx;
31
32pub type ExecutionCtxFor<'a, Evm> =
34 <<Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::ExecutionCtx<'a>;
35
36pub type EvmEnvFor<Evm> = EvmEnv<SpecFor<Evm>, BlockEnvFor<Evm>>;
38
39pub trait InspectorFor<Evm: ConfigureEvm, DB: Database>: Inspector<EvmContextFor<Evm, DB>> {}
41impl<T, Evm, DB> InspectorFor<Evm, DB> for T
42where
43 Evm: ConfigureEvm,
44 DB: Database,
45 T: Inspector<EvmContextFor<Evm, DB>>,
46{
47}