use reth_primitives::{Address, BlockNumber, StorageEntry, B256}; use reth_storage_errors::provider::ProviderResult; use std::{ collections::{BTreeMap, BTreeSet}, ops::RangeInclusive, }; /// Storage reader #[auto_impl::auto_impl(&, Arc, Box)] pub trait StorageReader: Send + Sync { /// Get plainstate storages for addresses and storage keys. fn plain_state_storages( &self, addresses_with_keys: impl IntoIterator)>, ) -> ProviderResult)>>; /// Iterate over storage changesets and return all storage slots that were changed. fn changed_storages_with_range( &self, range: RangeInclusive, ) -> ProviderResult>>; /// Iterate over storage changesets and return all storage slots that were changed alongside /// each specific set of blocks. /// /// NOTE: Get inclusive range of blocks. fn changed_storages_and_blocks_with_range( &self, range: RangeInclusive, ) -> ProviderResult>>; }