1use std::time::SystemTimeError;
4
5use hashgraph_like_consensus::error::ConsensusError;
6
7use crate::{core::CoreError, ds::DeliveryServiceError, mls_crypto::MlsError};
8
9#[derive(Debug, thiserror::Error)]
11pub enum UserError {
12 #[error("Conversation already exists")]
13 ConversationAlreadyExists,
14
15 #[error("Conversation not found")]
16 ConversationNotFound,
17
18 #[error("Already leaving this conversation")]
19 AlreadyLeaving,
20
21 #[error("Cannot send message: conversation is in {0} state")]
22 ConversationBlocked(String),
23
24 #[error(
25 "Lower-priority proposal blocked: an emergency criteria proposal is active (RFC partial freeze)"
26 )]
27 PartialFreeze,
28
29 #[error("Transport error: {0}")]
30 Transport(#[from] DeliveryServiceError),
31
32 #[error("Core error: {0}")]
33 Core(#[from] CoreError),
34
35 #[error("Consensus error: {0}")]
36 Consensus(#[from] ConsensusError),
37
38 #[error("Message error: {0}")]
39 Message(#[from] prost::DecodeError),
40
41 #[error("System time error: {0}")]
42 SystemTime(#[from] SystemTimeError),
43
44 #[error("MLS error: {0}")]
45 Mls(#[from] MlsError),
46
47 #[error("Lock poisoned: {0}")]
48 LockPoisoned(&'static str),
49}