1use sos_core::AccountId;
3use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum Error {
8 #[error("invalid pairing url")]
10 InvalidShareUrl,
11
12 #[error("packet is not for me (wrong public key)")]
15 NotForMe,
16
17 #[error("failed to sync devices: {0}")]
19 DevicePatchSync(Box<crate::Error>),
20
21 #[error("enrollment is not available")]
24 NoEnrollment,
25
26 #[error("account must be fetched before authenticating a new device")]
29 AccountNotFetched,
30
31 #[error("cannot enroll, account '{0}' already exists on this device")]
34 EnrollAccountExists(AccountId),
35
36 #[error("could not sync after device enrollment authentication: '{0}'")]
39 EnrollSync(Box<crate::Error>),
40
41 #[error("pairing protocol bad state or invalid packet payload")]
44 BadState,
45
46 #[error(transparent)]
48 Client(#[from] crate::Error),
49
50 #[error(transparent)]
52 Core(#[from] sos_core::Error),
53
54 #[error(transparent)]
56 Backend(#[from] sos_backend::Error),
57
58 #[error(transparent)]
60 Login(#[from] sos_login::Error),
61
62 #[error(transparent)]
64 Signer(#[from] sos_signer::Error),
65
66 #[error(transparent)]
68 Vault(#[from] sos_vault::Error),
69
70 #[error(transparent)]
72 Database(#[from] sos_database::Error),
73
74 #[error(transparent)]
76 BackendStorage(#[from] sos_backend::StorageError),
77
78 #[error(transparent)]
80 Account(#[from] sos_account::Error),
81
82 #[error(transparent)]
84 Storage(#[from] sos_client_storage::Error),
85
86 #[error(transparent)]
88 Io(#[from] std::io::Error),
89
90 #[error(transparent)]
92 Json(#[from] serde_json::Error),
93
94 #[error(transparent)]
96 Hex(#[from] hex::FromHexError),
97
98 #[error(transparent)]
100 TryFromSlice(#[from] std::array::TryFromSliceError),
101
102 #[error(transparent)]
104 UrlParse(#[from] url::ParseError),
105
106 #[error(transparent)]
108 Snow(#[from] snow::Error),
109
110 #[error(transparent)]
112 WebSocket(#[from] sos_protocol::tokio_tungstenite::tungstenite::Error),
113
114 #[error(transparent)]
116 Protocol(#[from] sos_protocol::Error),
117
118 #[error(transparent)]
120 ProtoBufEncode(#[from] prost::EncodeError),
121
122 #[error(transparent)]
124 ProtoBufDecode(#[from] prost::DecodeError),
125}