use vapory_types::{Address, U256};
use bytes::Bytes;
use crate::{
log_entry::LogEntry,
receipt,
state_diff::StateDiff,
};
pub type Call<'a> = dyn Fn(Address, Vec<u8>) -> Result<(Vec<u8>, Vec<Vec<u8>>), String> + 'a;
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum AuxiliaryRequest {
Body,
Receipts,
Both,
}
#[derive(Default, Clone)]
pub struct AuxiliaryData<'a> {
pub bytes: Option<&'a [u8]>,
pub receipts: Option<&'a [receipt::Receipt]>,
}
#[derive(Debug, PartialEq, Clone)]
pub struct Executed<T, V> {
pub exception: Option<tetsy_vm::Error>,
pub gas: U256,
pub gas_used: U256,
pub refunded: U256,
pub cumulative_gas_used: U256,
pub logs: Vec<LogEntry>,
pub contracts_created: Vec<Address>,
pub output: Bytes,
pub trace: Vec<T>,
pub vm_trace: Option<V>,
pub state_diff: Option<StateDiff>,
}