use async_trait::async_trait;
use fuel_core_storage::Result as StorageResult;
use fuel_core_types::{
blockchain::primitives::DaBlockHeight,
services::relayer::Event,
};
#[cfg(test)]
mod tests;
#[async_trait]
pub trait RelayerDb: Send + Sync {
fn insert_events(
&mut self,
da_height: &DaBlockHeight,
events: &[Event],
) -> StorageResult<()>;
fn get_finalized_da_height(&self) -> Option<DaBlockHeight>;
}
#[cfg_attr(test, mockall::automock)]
pub trait DatabaseTransaction {
fn commit(self) -> StorageResult<()>;
}
pub trait Transactional {
type Transaction<'a>: DatabaseTransaction
where
Self: 'a;
fn transaction(&mut self) -> Self::Transaction<'_>;
fn latest_da_height(&self) -> Option<DaBlockHeight>;
}