1//! Helper aliases when working with [`ConfigureEvm`] and the traits in this crate.
23use crate::ConfigureEvm;
4use alloy_evm::{block::BlockExecutorFactory, Database, EvmEnv, EvmFactory};
5use revm::{inspector::NoOpInspector, Inspector};
67/// Helper to access [`EvmFactory`] for a given [`ConfigureEvm`].
8pub type EvmFactoryFor<Evm> =
9 <<Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory;
1011/// Helper to access [`EvmFactory::Spec`] for a given [`ConfigureEvm`].
12pub type SpecFor<Evm> = <EvmFactoryFor<Evm> as EvmFactory>::Spec;
1314/// Helper to access [`EvmFactory::Evm`] for a given [`ConfigureEvm`].
15pub type EvmFor<Evm, DB, I = NoOpInspector> = <EvmFactoryFor<Evm> as EvmFactory>::Evm<DB, I>;
1617/// Helper to access [`EvmFactory::Error`] for a given [`ConfigureEvm`].
18pub type EvmErrorFor<Evm, DB> = <EvmFactoryFor<Evm> as EvmFactory>::Error<DB>;
1920/// Helper to access [`EvmFactory::Context`] for a given [`ConfigureEvm`].
21pub type EvmContextFor<Evm, DB> = <EvmFactoryFor<Evm> as EvmFactory>::Context<DB>;
2223/// Helper to access [`EvmFactory::HaltReason`] for a given [`ConfigureEvm`].
24pub type HaltReasonFor<Evm> = <EvmFactoryFor<Evm> as EvmFactory>::HaltReason;
2526/// Helper to access [`EvmFactory::Tx`] for a given [`ConfigureEvm`].
27pub type TxEnvFor<Evm> = <EvmFactoryFor<Evm> as EvmFactory>::Tx;
2829/// Helper to access [`BlockExecutorFactory::ExecutionCtx`] for a given [`ConfigureEvm`].
30pub type ExecutionCtxFor<'a, Evm> =
31 <<Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::ExecutionCtx<'a>;
3233/// Type alias for [`EvmEnv`] for a given [`ConfigureEvm`].
34pub type EvmEnvFor<Evm> = EvmEnv<SpecFor<Evm>>;
3536/// Helper trait to bound [`Inspector`] for a [`ConfigureEvm`].
37pub trait InspectorFor<Evm: ConfigureEvm, DB: Database>: Inspector<EvmContextFor<Evm, DB>> {}
38impl<T, Evm, DB> InspectorFor<Evm, DB> for T
39where
40Evm: ConfigureEvm,
41 DB: Database,
42 T: Inspector<EvmContextFor<Evm, DB>>,
43{
44}