use de_mls::core::{
CoreError,
DeMlsProvider,
DefaultProvider,
DispatchAction,
GroupEventHandler,
GroupHandle,
ProcessResult,
cast_vote,
dispatch_result,
forward_incoming_proposal,
forward_incoming_vote,
handle_consensus_event,
start_voting,
};
use de_mls::mls_crypto::{MemoryDeMlsStorage, MlsService};
fn _assert_dispatch_action_variants(action: DispatchAction) {
match action {
DispatchAction::Done => {}
DispatchAction::StartVoting(_request) => {}
DispatchAction::GroupUpdated => {}
DispatchAction::LeaveGroup => {}
DispatchAction::JoinedGroup => {}
}
}
async fn _check_start_voting(
consensus: &<DefaultProvider as DeMlsProvider>::Consensus,
handler: &dyn GroupEventHandler,
) -> Result<u32, CoreError> {
let request = de_mls::protos::de_mls::messages::v1::GroupUpdateRequest { payload: None };
start_voting::<DefaultProvider>("group", &request, 3, "0xabc".into(), consensus, handler).await
}
async fn _check_forward_incoming_proposal(
proposal: hashgraph_like_consensus::protos::consensus::v1::Proposal,
consensus: &<DefaultProvider as DeMlsProvider>::Consensus,
handler: &dyn GroupEventHandler,
) -> Result<(), CoreError> {
forward_incoming_proposal::<DefaultProvider>("group", proposal, consensus, handler).await
}
async fn _check_forward_incoming_vote(
vote: hashgraph_like_consensus::protos::consensus::v1::Vote,
consensus: &<DefaultProvider as DeMlsProvider>::Consensus,
) -> Result<(), CoreError> {
forward_incoming_vote::<DefaultProvider>("group", vote, consensus).await
}
async fn _check_cast_vote(
handle: &GroupHandle,
consensus: &<DefaultProvider as DeMlsProvider>::Consensus,
signer: alloy::signers::local::PrivateKeySigner,
mls: &MlsService<MemoryDeMlsStorage>,
handler: &dyn GroupEventHandler,
) -> Result<(), CoreError> {
cast_vote::<DefaultProvider, _, _>(handle, "group", 1, true, consensus, signer, mls, handler)
.await
}
async fn _check_handle_consensus_event(
handle: &mut GroupHandle,
event: hashgraph_like_consensus::types::ConsensusEvent,
consensus: &<DefaultProvider as DeMlsProvider>::Consensus,
) -> Result<(), CoreError> {
handle_consensus_event::<DefaultProvider>(handle, "group", event, consensus).await
}
async fn _check_dispatch_result(
handle: &GroupHandle,
result: ProcessResult,
consensus: &<DefaultProvider as DeMlsProvider>::Consensus,
handler: &dyn GroupEventHandler,
mls: &MlsService<MemoryDeMlsStorage>,
) -> Result<DispatchAction, CoreError> {
dispatch_result::<DefaultProvider, _>(handle, "group", result, consensus, handler, mls).await
}
#[test]
fn core_consensus_api_is_public() {
}