use revm::primitives::{Address, Bytes, U256};
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;
#[derive(Clone, Debug, Serialize, Deserialize, Default)]
pub enum SnapShotSource {
Memory,
#[default]
Fork,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct SnapShotAccountRecord {
pub nonce: u64,
pub balance: U256,
pub code: Bytes,
pub storage: BTreeMap<U256, U256>,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
pub struct SnapShot {
pub source: SnapShotSource,
pub block_num: u64,
pub timestamp: u64,
pub accounts: BTreeMap<Address, SnapShotAccountRecord>,
}