anvil/eth/backend/
env.rs

1use alloy_evm::EvmEnv;
2use foundry_evm::{EnvMut, core::AsEnvMut};
3use foundry_evm_networks::NetworkConfigs;
4use op_revm::OpTransaction;
5use revm::context::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 networks: NetworkConfigs,
13}
14
15/// Helper container type for [`EvmEnv`] and [`OpTransaction<TxEnv>`].
16impl Env {
17    pub fn new(evm_env: EvmEnv, tx: OpTransaction<TxEnv>, networks: NetworkConfigs) -> Self {
18        Self { evm_env, tx, networks }
19    }
20}
21
22impl AsEnvMut for Env {
23    fn as_env_mut(&mut self) -> EnvMut<'_> {
24        EnvMut {
25            block: &mut self.evm_env.block_env,
26            cfg: &mut self.evm_env.cfg_env,
27            tx: &mut self.tx.base,
28        }
29    }
30}