foundry_evm/executors/fuzz/
types.rs1use crate::executors::RawCallResult;
2use alloy_primitives::{
3 Bytes, Log,
4 map::{AddressHashMap, HashMap},
5};
6use foundry_evm_core::{Breakpoints, evm::FoundryEvmNetwork};
7use foundry_evm_coverage::HitMaps;
8use foundry_evm_fuzz::FuzzCase;
9use foundry_evm_traces::SparsedTraceArena;
10use revm::interpreter::InstructionResult;
11
12#[derive(Debug)]
14pub struct CaseOutcome {
15 pub case: FuzzCase,
17 pub traces: Option<SparsedTraceArena>,
19 pub debug_bytecodes: AddressHashMap<Bytes>,
21 pub coverage: Option<HitMaps>,
23 pub breakpoints: Breakpoints,
25 pub logs: Vec<Log>,
27 pub deprecated_cheatcodes: HashMap<&'static str, Option<&'static str>>,
29}
30
31#[derive(Debug)]
33pub struct CounterExampleOutcome<FEN: FoundryEvmNetwork> {
34 pub counterexample: (Bytes, RawCallResult<FEN>),
36 pub exit_reason: Option<InstructionResult>,
38 pub breakpoints: Breakpoints,
40}
41
42#[derive(Debug)]
44#[expect(clippy::large_enum_variant)]
45pub enum FuzzOutcome<FEN: FoundryEvmNetwork> {
46 Case(CaseOutcome),
47 CounterExample(CounterExampleOutcome<FEN>),
48}