1use crate::mls_crypto;
4
5#[derive(Debug, thiserror::Error)]
6pub enum CoreError {
7 #[error("Identity error: {0}")]
9 IdentityError(#[from] mls_crypto::IdentityError),
10
11 #[error("MLS error: {0}")]
13 MlsServiceError(#[from] mls_crypto::MlsServiceError),
14
15 #[error("Storage error: {0}")]
17 StorageError(#[from] mls_crypto::StorageError),
18
19 #[error("Consensus error: {0}")]
20 ConsensusError(#[from] hashgraph_like_consensus::error::ConsensusError),
21
22 #[error("System time error: {0}")]
23 SystemTimeError(#[from] std::time::SystemTimeError),
24
25 #[error("Message error: {0}")]
27 MessageError(#[from] prost::DecodeError),
28
29 #[error("JSON error: {0}")]
31 JsonError(#[from] serde_json::Error),
32
33 #[error("MLS group not initialized")]
35 MlsGroupNotInitialized,
36
37 #[error("Steward not set")]
39 StewardNotSet,
40
41 #[error("No proposals available")]
43 NoProposals,
44
45 #[error("Invalid group update request")]
46 InvalidGroupUpdateRequest,
47
48 #[error("Handler error: {0}")]
50 HandlerError(String),
51
52 #[error("Delivery error: {0}")]
54 DeliveryError(String),
55
56 #[error("Invalid subtopic: {0}")]
57 InvalidSubtopic(String),
58}
59
60impl From<mls_crypto::MlsError> for CoreError {
61 fn from(e: mls_crypto::MlsError) -> Self {
62 match e {
63 mls_crypto::MlsError::Identity(e) => CoreError::IdentityError(e),
64 mls_crypto::MlsError::Service(e) => CoreError::MlsServiceError(e),
65 mls_crypto::MlsError::Storage(e) => CoreError::StorageError(e),
66 }
67 }
68}