1pub use aleph_bft_crypto::{
2 Indexed, MultiKeychain, Multisigned, NodeCount, PartialMultisignature, PartiallyMultisigned,
3 Signable, Signature, Signed, UncheckedSigned,
4};
5use codec::{Decode, Encode};
6use core::fmt::Debug;
7use std::hash::Hash;
8
9mod handler;
10mod scheduler;
11mod service;
12
13pub use handler::Handler;
14pub use scheduler::DoublingDelayScheduler;
15pub use service::Service;
16
17#[derive(Debug, Encode, Decode, Clone, PartialEq, Eq, Hash)]
19pub enum Message<H: Signable, S: Signature, M: PartialMultisignature> {
20 SignedHash(UncheckedSigned<Indexed<H>, S>),
21 MultisignedHash(UncheckedSigned<H, M>),
22}
23
24impl<H: Signable, S: Signature, M: PartialMultisignature> Message<H, S, M> {
25 pub fn hash(&self) -> &H {
26 match self {
27 Message::SignedHash(unchecked) => unchecked.as_signable_strip_index(),
28 Message::MultisignedHash(unchecked) => unchecked.as_signable(),
29 }
30 }
31 pub fn is_complete(&self) -> bool {
32 matches!(self, Message::MultisignedHash(_))
33 }
34}