reth_provider/traits/
state.rs1use alloy_primitives::BlockNumber;
2use reth_execution_types::ExecutionOutcome;
3use reth_storage_errors::provider::ProviderResult;
4use reth_trie::HashedPostStateSorted;
5use revm::db::{
6 states::{PlainStateReverts, StateChangeset},
7 OriginalValuesKnown,
8};
9
10use super::StorageLocation;
11
12pub trait StateWriter {
14 type Receipt;
16
17 fn write_state(
20 &self,
21 execution_outcome: ExecutionOutcome<Self::Receipt>,
22 is_value_known: OriginalValuesKnown,
23 write_receipts_to: StorageLocation,
24 ) -> ProviderResult<()>;
25
26 fn write_state_reverts(
30 &self,
31 reverts: PlainStateReverts,
32 first_block: BlockNumber,
33 ) -> ProviderResult<()>;
34
35 fn write_state_changes(&self, changes: StateChangeset) -> ProviderResult<()>;
37
38 fn write_hashed_state(&self, hashed_state: &HashedPostStateSorted) -> ProviderResult<()>;
40
41 fn remove_state_above(
44 &self,
45 block: BlockNumber,
46 remove_receipts_from: StorageLocation,
47 ) -> ProviderResult<()>;
48
49 fn take_state_above(
52 &self,
53 block: BlockNumber,
54 remove_receipts_from: StorageLocation,
55 ) -> ProviderResult<ExecutionOutcome<Self::Receipt>>;
56}