1use near_account_id::AccountId;
2
3#[derive(Debug, Clone, thiserror::Error)]
4#[error("expected the input of {expected} bytes, but {received} was given")]
5pub struct InvalidLength {
6 pub expected: usize,
7 pub received: usize,
8}
9
10#[derive(Debug, Clone, thiserror::Error)]
11pub enum ParseKeyTypeError {
12 #[error("unknown key type '{unknown_key_type}'")]
13 UnknownKeyType { unknown_key_type: String },
14}
15
16#[derive(Debug, Clone, thiserror::Error)]
17pub enum ParseKeyError {
18 #[error("unknown key type '{unknown_key_type}'")]
19 UnknownKeyType { unknown_key_type: String },
20 #[error("invalid key length: {0}")]
21 InvalidLength(#[from] InvalidLength),
22 #[error("invalid key data: {error_message}")]
23 InvalidData { error_message: String },
24}
25
26impl From<ParseKeyTypeError> for ParseKeyError {
27 fn from(err: ParseKeyTypeError) -> Self {
28 match err {
29 ParseKeyTypeError::UnknownKeyType { unknown_key_type } => {
30 Self::UnknownKeyType { unknown_key_type }
31 }
32 }
33 }
34}
35
36#[derive(Debug, Clone, thiserror::Error)]
37pub enum ParseSignatureError {
38 #[error("unknown key type '{unknown_key_type}'")]
39 UnknownKeyType { unknown_key_type: String },
40 #[error("invalid signature length: {0}")]
41 InvalidLength(#[from] InvalidLength),
42 #[error("invalid signature data: {error_message}")]
43 InvalidData { error_message: String },
44}
45
46impl From<ParseKeyTypeError> for ParseSignatureError {
47 fn from(err: ParseKeyTypeError) -> Self {
48 match err {
49 ParseKeyTypeError::UnknownKeyType { unknown_key_type } => {
50 Self::UnknownKeyType { unknown_key_type }
51 }
52 }
53 }
54}
55
56#[derive(Debug, Clone, thiserror::Error)]
57pub enum ImplicitPublicKeyError {
58 #[error("'{account_id}' is not a NEAR-implicit account")]
59 AccountIsNotNearImplicit { account_id: AccountId },
60}