kabu_evm_db/
database_loom.rs1use crate::error::KabuDBError;
2use crate::fast_cache_db::FastDbAccount;
3use alloy::primitives::map::HashMap;
4use alloy::primitives::{Address, U256};
5use revm::state::AccountInfo;
6use revm::DatabaseRef;
7
8pub trait DatabaseKabuExt {
9 fn with_ext_db(&mut self, db: impl DatabaseRef<Error = KabuDBError> + Send + Sync + 'static);
10 fn is_account(&self, address: &Address) -> bool;
11 fn is_slot(&self, address: &Address, slot: &U256) -> bool;
12 fn contracts_len(&self) -> usize;
13 fn accounts_len(&self) -> usize;
14 fn storage_len(&self) -> usize;
15
16 fn load_account(&mut self, address: Address) -> eyre::Result<&mut FastDbAccount>;
17
18 fn load_cached_account(&mut self, address: Address) -> eyre::Result<&mut FastDbAccount>;
19
20 fn insert_contract(&mut self, account: &mut AccountInfo);
21
22 fn insert_account_info(&mut self, address: Address, info: AccountInfo);
23
24 fn insert_account_storage(&mut self, address: Address, slot: U256, value: U256) -> eyre::Result<()>;
25
26 fn replace_account_storage(&mut self, address: Address, storage: HashMap<U256, U256>) -> eyre::Result<()>;
27
28 fn maintain(self) -> Self;
29}