reth_storage_api/
state_writer.rs1use alloy_primitives::BlockNumber;
2use reth_execution_types::ExecutionOutcome;
3use reth_storage_errors::provider::ProviderResult;
4use reth_trie_common::HashedPostStateSorted;
5use revm_database::{
6 states::{PlainStateReverts, StateChangeset},
7 OriginalValuesKnown,
8};
9
10pub trait StateWriter {
12 type Receipt;
14
15 fn write_state(
18 &self,
19 execution_outcome: &ExecutionOutcome<Self::Receipt>,
20 is_value_known: OriginalValuesKnown,
21 ) -> ProviderResult<()>;
22
23 fn write_state_reverts(
27 &self,
28 reverts: PlainStateReverts,
29 first_block: BlockNumber,
30 ) -> ProviderResult<()>;
31
32 fn write_state_changes(&self, changes: StateChangeset) -> ProviderResult<()>;
34
35 fn write_hashed_state(&self, hashed_state: &HashedPostStateSorted) -> ProviderResult<()>;
37
38 fn remove_state_above(&self, block: BlockNumber) -> ProviderResult<()>;
41
42 fn take_state_above(
45 &self,
46 block: BlockNumber,
47 ) -> ProviderResult<ExecutionOutcome<Self::Receipt>>;
48}