anvil/eth/backend/
env.rs

1use alloy_evm::EvmEnv;
2use foundry_evm::EnvMut;
3use foundry_evm_core::AsEnvMut;
4use op_revm::OpTransaction;
5use revm::context::{BlockEnv, CfgEnv, TxEnv};
6
7/// Helper container type for [`EvmEnv`] and [`OpTransaction<TxEnd>`].
8#[derive(Clone, Debug, Default)]
9pub struct Env {
10    pub evm_env: EvmEnv,
11    pub tx: OpTransaction<TxEnv>,
12    pub is_optimism: bool,
13    pub is_celo: bool,
14}
15
16/// Helper container type for [`EvmEnv`] and [`OpTransaction<TxEnv>`].
17impl Env {
18    pub fn new(
19        cfg: CfgEnv,
20        block: BlockEnv,
21        tx: OpTransaction<TxEnv>,
22        is_optimism: bool,
23        is_celo: bool,
24    ) -> Self {
25        Self { evm_env: EvmEnv { cfg_env: cfg, block_env: block }, tx, is_optimism, is_celo }
26    }
27}
28
29impl AsEnvMut for Env {
30    fn as_env_mut(&mut self) -> EnvMut<'_> {
31        EnvMut {
32            block: &mut self.evm_env.block_env,
33            cfg: &mut self.evm_env.cfg_env,
34            tx: &mut self.tx.base,
35        }
36    }
37}