use core_lane::{StateManager, BundleStateManager, Address, U256};
use anyhow::Result;
fn main() -> Result<()> {
// Create a new state manager
let state = StateManager::new();
let mut bundle = BundleStateManager::new();
// Add balance to an account
let address = Address::from([0x42; 20]);
let amount = U256::from(1_000_000_000_000_000_000u128); // 1 ETH
bundle.add_balance(&state, address, amount)?;
// Check balance in bundle (not yet committed)
assert_eq!(bundle.get_balance(&state, address), amount);
assert_eq!(state.get_balance(address), U256::ZERO); // Original unchanged
// Commit changes to state
let mut new_state = state;
new_state.apply_changes(bundle);
assert_eq!(new_state.get_balance(address), amount);
Ok(())
}