use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecutionEvent {
pub step: u64,
pub opcode: String,
pub gas_used: u64,
pub stack: Vec<Value>,
pub memory: MemorySnapshot,
pub storage_diff: Vec<StorageChange>,
pub source_line: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Value {
pub hex: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MemorySnapshot {
pub bytes: Vec<u8>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StorageChange {
pub key: String,
pub old: Option<String>,
pub new: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DebugConfig {
pub contract_path: String,
pub entrypoint: String,
pub breakpoints: Vec<String>,
}