pub trait ConsensusClient:
    Sync
    + Send
    + 'static {
    // Required method
    fn submit<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        transactions: &'life1 [ConsensusTransaction],
        epoch_store: &'life2 Arc<AuthorityPerEpochStore>,
    ) -> Pin<Box<dyn Future<Output = SuiResult<(Vec<ConsensusPosition>, BlockStatusReceiver)>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait;
}