1#![cfg_attr(not(test), warn(unused_crate_dependencies))]
11#![cfg_attr(docsrs, feature(doc_cfg))]
12
13#[cfg(feature = "optimism")]
14use op_alloy_rpc_types as _;
15
16use crate::constants::DEFAULT_CREATE2_DEPLOYER;
17use alloy_primitives::{Address, map::HashMap};
18use auto_impl::auto_impl;
19use revm::{Inspector, inspector::NoOpInspector, interpreter::CreateInputs};
20use revm_inspectors::access_list::AccessListInspector;
21
22pub type Breakpoints = HashMap<char, (Address, usize)>;
24
25#[macro_use]
26extern crate tracing;
27
28pub mod abi {
29 pub use foundry_cheatcodes_spec::Vm;
30 pub use foundry_evm_abi::*;
31}
32
33pub mod env;
34pub use env::*;
35use foundry_evm_networks::NetworkConfigs;
36
37pub mod backend;
38pub mod buffer;
39pub mod bytecode;
40pub mod constants;
41pub mod decode;
42pub mod eip2935;
43pub mod evm;
44pub mod fork;
45pub mod hardfork;
46pub mod ic;
47pub mod opts;
48pub mod precompiles;
49pub mod state_snapshot;
50pub mod tempo;
51pub mod utils;
52
53#[auto_impl(&mut, Box)]
59pub trait InspectorExt {
60 fn should_use_create2_factory(&mut self, _depth: usize, _inputs: &CreateInputs) -> bool {
65 false
66 }
67
68 fn console_log(&mut self, msg: &str) {
70 let _ = msg;
71 }
72
73 fn get_networks(&self) -> NetworkConfigs {
75 NetworkConfigs::default()
76 }
77
78 fn create2_deployer(&self) -> Address {
80 DEFAULT_CREATE2_DEPLOYER
81 }
82}
83
84pub trait FoundryInspectorExt<CTX: FoundryContextExt>: Inspector<CTX> + InspectorExt {}
88
89impl<CTX: FoundryContextExt, T> FoundryInspectorExt<CTX> for T where T: Inspector<CTX> + InspectorExt
90{}
91
92impl InspectorExt for NoOpInspector {}
93
94impl InspectorExt for AccessListInspector {}