fuel_core_interfaces/
relayer.rs

1use crate::{
2    common::fuel_storage::{
3        StorageAsMut,
4        StorageMutate,
5    },
6    db::{
7        KvStoreError,
8        Messages,
9    },
10    model::{
11        BlockHeight,
12        CheckedMessage,
13        DaBlockHeight,
14        SealedFuelBlock,
15    },
16};
17use async_trait::async_trait;
18use std::sync::Arc;
19
20// Manages state related to supported external chains.
21#[async_trait]
22pub trait RelayerDb: StorageMutate<Messages, Error = KvStoreError> + Send + Sync {
23    /// Add bridge message to database. Messages are not revertible.
24    async fn insert_message(&mut self, message: &CheckedMessage) {
25        let _ = self
26            .storage::<Messages>()
27            .insert(message.id(), message.as_ref());
28    }
29
30    /// current best block number
31    async fn get_chain_height(&self) -> BlockHeight;
32
33    async fn get_sealed_block(&self, height: BlockHeight)
34        -> Option<Arc<SealedFuelBlock>>;
35
36    /// set finalized da height that represent last block from da layer that got finalized.
37    async fn set_finalized_da_height(&self, block: DaBlockHeight);
38
39    /// Assume it is always set as initialization of database.
40    async fn get_finalized_da_height(&self) -> Option<DaBlockHeight>;
41
42    /// Get the last fuel block height that was published to the da layer.
43    async fn get_last_published_fuel_height(&self) -> Option<BlockHeight>;
44
45    /// Set the last fuel block height that was published to the da layer.
46    async fn set_last_published_fuel_height(&self, block_height: BlockHeight);
47}