use fvm_ipld_encoding::ipld_block::IpldBlock;
use fvm_shared::address::Address;
use fvm_shared::econ::TokenAmount;
use fvm_shared::error::ExitCode;
use fvm_shared::{ActorID, MethodNum};
use crate::gas::GasCharge;
use crate::kernel::SyscallError;
use crate::state_tree::ActorState;
pub type ExecutionTrace = Vec<ExecutionEvent>;
#[derive(Clone, Debug)]
#[non_exhaustive]
pub enum ExecutionEvent {
GasCharge(GasCharge),
Call {
from: ActorID,
to: Address,
method: MethodNum,
params: Option<IpldBlock>,
value: TokenAmount,
gas_limit: u64,
read_only: bool,
},
CallReturn(ExitCode, Option<IpldBlock>),
CallError(SyscallError),
InvokeActor {
id: ActorID,
state: ActorState,
},
}