use crate::mls_crypto;
#[derive(Debug, thiserror::Error)]
pub enum CoreError {
#[error("Identity error: {0}")]
IdentityError(#[from] mls_crypto::IdentityError),
#[error("MLS error: {0}")]
MlsServiceError(#[from] mls_crypto::MlsServiceError),
#[error("Storage error: {0}")]
StorageError(#[from] mls_crypto::StorageError),
#[error("Consensus error: {0}")]
ConsensusError(#[from] hashgraph_like_consensus::error::ConsensusError),
#[error("System time error: {0}")]
SystemTimeError(#[from] std::time::SystemTimeError),
#[error("Message error: {0}")]
MessageError(#[from] prost::DecodeError),
#[error("JSON error: {0}")]
JsonError(#[from] serde_json::Error),
#[error("MLS group not initialized")]
MlsGroupNotInitialized,
#[error("Steward not set")]
StewardNotSet,
#[error("No proposals available")]
NoProposals,
#[error("Invalid group update request")]
InvalidGroupUpdateRequest,
#[error("Handler error: {0}")]
HandlerError(String),
#[error("Delivery error: {0}")]
DeliveryError(String),
#[error("Invalid subtopic: {0}")]
InvalidSubtopic(String),
}
impl From<mls_crypto::MlsError> for CoreError {
fn from(e: mls_crypto::MlsError) -> Self {
match e {
mls_crypto::MlsError::Identity(e) => CoreError::IdentityError(e),
mls_crypto::MlsError::Service(e) => CoreError::MlsServiceError(e),
mls_crypto::MlsError::Storage(e) => CoreError::StorageError(e),
}
}
}