mithril_aggregator/services/certificate_chain_synchronizer/
interface.rs1use async_trait::async_trait;
2
3use mithril_common::StdResult;
4use mithril_common::entities::Certificate;
5
6use crate::entities::OpenMessage;
7
8#[cfg_attr(test, mockall::automock)]
10#[async_trait::async_trait]
11pub trait CertificateChainSynchronizer: Send + Sync {
12 async fn synchronize_certificate_chain(&self, force: bool) -> StdResult<()>;
17}
18
19#[cfg_attr(test, mockall::automock)]
21#[async_trait]
22pub trait RemoteCertificateRetriever: Sync + Send {
23 async fn get_latest_certificate_details(&self) -> StdResult<Option<Certificate>>;
25
26 async fn get_genesis_certificate_details(&self) -> StdResult<Option<Certificate>>;
28}
29
30#[cfg_attr(test, mockall::automock)]
32#[async_trait]
33pub trait SynchronizedCertificateStorer: Send + Sync {
34 async fn insert_or_replace_many(&self, certificates: Vec<Certificate>) -> StdResult<()>;
36
37 async fn get_latest_genesis(&self) -> StdResult<Option<Certificate>>;
39}
40
41#[cfg_attr(test, mockall::automock)]
43#[async_trait]
44pub trait OpenMessageStorer: Send + Sync {
45 async fn insert_or_replace_open_message(&self, open_message: OpenMessage) -> StdResult<()>;
47}