/// import { Account, Address } from 'ethereumjs-util'; import { AccessList } from '@ethereumjs/tx'; import { Proof } from './stateManager'; /** * Storage values of an account */ export interface StorageDump { [key: string]: string; } export interface StateManager { copy(): StateManager; getAccount(address: Address): Promise; putAccount(address: Address, account: Account): Promise; deleteAccount(address: Address): Promise; touchAccount(address: Address): void; putContractCode(address: Address, value: Buffer): Promise; getContractCode(address: Address): Promise; getContractStorage(address: Address, key: Buffer): Promise; getOriginalContractStorage(address: Address, key: Buffer): Promise; putContractStorage(address: Address, key: Buffer, value: Buffer): Promise; clearContractStorage(address: Address): Promise; checkpoint(): Promise; commit(): Promise; revert(): Promise; getStateRoot(force?: boolean): Promise; setStateRoot(stateRoot: Buffer): Promise; dumpStorage(address: Address): Promise; hasGenesisState(): Promise; generateCanonicalGenesis(): Promise; generateGenesis(initState: any): Promise; accountIsEmpty(address: Address): Promise; accountExists(address: Address): Promise; cleanupTouchedAccounts(): Promise; clearOriginalStorageCache(): void; getProof?(address: Address, storageSlots: Buffer[]): Promise; verifyProof?(proof: Proof): Promise; } export interface EIP2929StateManager extends StateManager { addWarmedAddress(address: Buffer): void; isWarmedAddress(address: Buffer): boolean; addWarmedStorage(address: Buffer, slot: Buffer): void; isWarmedStorage(address: Buffer, slot: Buffer): boolean; clearWarmedAccounts(): void; generateAccessList?(addressesRemoved: Address[], addressesOnlyStorage: Address[]): AccessList; }