use super::super::{MpcEngineResult, MpcPartyId, RbcSessionId};
use super::core::MpcEngine;
pub trait MpcEngineConsensus: MpcEngine {
fn rbc_broadcast(&self, message: &[u8]) -> MpcEngineResult<RbcSessionId>;
fn rbc_receive(&self, from_party: MpcPartyId, timeout_ms: u64) -> MpcEngineResult<Vec<u8>>;
fn rbc_receive_any(&self, timeout_ms: u64) -> MpcEngineResult<(MpcPartyId, Vec<u8>)>;
}
#[async_trait::async_trait]
pub trait AsyncMpcEngineConsensus: MpcEngineConsensus {
async fn rbc_broadcast_async(&self, message: &[u8]) -> MpcEngineResult<RbcSessionId>;
async fn rbc_receive_async(
&self,
from_party: MpcPartyId,
timeout_ms: u64,
) -> MpcEngineResult<Vec<u8>>;
async fn rbc_receive_any_async(
&self,
timeout_ms: u64,
) -> MpcEngineResult<(MpcPartyId, Vec<u8>)>;
}