reth_storage_api/
stage_checkpoint.rs1use alloc::{string::String, vec::Vec};
2use alloy_primitives::BlockNumber;
3use reth_stages_types::{StageCheckpoint, StageId};
4use reth_storage_errors::provider::ProviderResult;
5
6#[auto_impl::auto_impl(&, Arc)]
8pub trait StageCheckpointReader: Send + Sync {
9    fn get_stage_checkpoint(&self, id: StageId) -> ProviderResult<Option<StageCheckpoint>>;
11
12    fn get_stage_checkpoint_progress(&self, id: StageId) -> ProviderResult<Option<Vec<u8>>>;
14
15    fn get_all_checkpoints(&self) -> ProviderResult<Vec<(String, StageCheckpoint)>>;
18}
19
20#[auto_impl::auto_impl(&, Arc)]
22pub trait StageCheckpointWriter: Send + Sync {
23    fn save_stage_checkpoint(&self, id: StageId, checkpoint: StageCheckpoint)
25        -> ProviderResult<()>;
26
27    fn save_stage_checkpoint_progress(
29        &self,
30        id: StageId,
31        checkpoint: Vec<u8>,
32    ) -> ProviderResult<()>;
33
34    fn update_pipeline_stages(
36        &self,
37        block_number: BlockNumber,
38        drop_stage_checkpoint: bool,
39    ) -> ProviderResult<()>;
40}