use std::fmt::Debug;
use std::hash::Hash as StdHash;
mod dgm;
mod key_bundle;
mod key_manager;
mod key_registry;
mod message;
mod ordering;
#[cfg(any(test, feature = "message_scheme"))]
pub use dgm::AckedGroupMembership;
#[cfg(any(test, feature = "data_scheme"))]
pub use dgm::GroupMembership;
pub use key_bundle::KeyBundle;
pub use key_manager::{IdentityManager, PreKeyManager};
pub use key_registry::{IdentityRegistry, PreKeyRegistry};
#[cfg(any(test, feature = "message_scheme"))]
pub use message::{ForwardSecureGroupMessage, ForwardSecureMessageContent};
#[cfg(any(test, feature = "data_scheme"))]
pub use message::{GroupMessage, GroupMessageContent};
#[cfg(any(test, feature = "message_scheme"))]
pub use ordering::ForwardSecureOrdering;
#[cfg(any(test, feature = "data_scheme"))]
pub use ordering::Ordering;
pub trait IdentityHandle: Copy + Debug + PartialEq + Eq + StdHash {}
impl IdentityHandle for p2panda_core::VerifyingKey {}
#[cfg(any(test, feature = "test_utils"))]
impl IdentityHandle for &str {}
#[cfg(any(test, feature = "test_utils"))]
impl IdentityHandle for usize {}
pub trait OperationId: Copy + Debug + PartialEq + Eq + StdHash {}
impl OperationId for p2panda_core::Hash {}
#[cfg(any(test, feature = "test_utils"))]
impl OperationId for (usize, usize) {}
#[cfg(any(test, feature = "test_utils"))]
impl OperationId for usize {}