Skip to main content

sns_sdk/
error.rs

1use std::array::TryFromSliceError;
2
3use {
4    derive_more::{Display, Error},
5    ed25519_dalek::ed25519,
6    solana_client::client_error::ClientError,
7    solana_program::program_error::ProgramError,
8    std::string::FromUtf8Error,
9};
10
11#[derive(Debug, Display, Error)]
12pub enum SnsError {
13    #[display(fmt = "")]
14    InvalidDomain,
15    SolanaClient(ClientError),
16    SolanaProgramError(ProgramError),
17    InvalidReverse,
18    ED25519(ed25519::Error),
19    BorshError(std::io::Error),
20    UnsupportedMint,
21    SerializationError,
22    InvalidPubkey,
23    Utf8(FromUtf8Error),
24    Bech32(bech32::Error),
25    InvalidRecordData,
26    Hex(hex::FromHexError),
27    UnrecognizedRecord,
28    Punycode,
29    InvalidEvmAddress,
30    InvalidInjectiveAddress,
31    InvalidIpv4,
32    InvalidIpv6,
33    SolRecordNotSupported,
34    NftRecordDoesNotExist,
35    Casting,
36    TryFromSlice(std::array::TryFromSliceError),
37    RecordsError(sns_records::error::SnsRecordsError),
38    StaleRecord,
39    UnverifiedRecord,
40}
41
42impl From<ClientError> for SnsError {
43    fn from(e: ClientError) -> Self {
44        Self::SolanaClient(e)
45    }
46}
47
48impl From<ProgramError> for SnsError {
49    fn from(e: ProgramError) -> Self {
50        Self::SolanaProgramError(e)
51    }
52}
53
54impl From<ed25519::Error> for SnsError {
55    fn from(e: ed25519::Error) -> Self {
56        Self::ED25519(e)
57    }
58}
59
60impl From<std::io::Error> for SnsError {
61    fn from(value: std::io::Error) -> Self {
62        Self::BorshError(value)
63    }
64}
65
66impl From<FromUtf8Error> for SnsError {
67    fn from(e: FromUtf8Error) -> Self {
68        Self::Utf8(e)
69    }
70}
71
72impl From<bech32::Error> for SnsError {
73    fn from(e: bech32::Error) -> Self {
74        Self::Bech32(e)
75    }
76}
77
78impl From<hex::FromHexError> for SnsError {
79    fn from(e: hex::FromHexError) -> Self {
80        Self::Hex(e)
81    }
82}
83
84impl From<bytemuck::PodCastError> for SnsError {
85    fn from(_: bytemuck::PodCastError) -> Self {
86        Self::Casting
87    }
88}
89
90impl From<TryFromSliceError> for SnsError {
91    fn from(e: std::array::TryFromSliceError) -> Self {
92        Self::TryFromSlice(e)
93    }
94}
95
96impl From<sns_records::error::SnsRecordsError> for SnsError {
97    fn from(value: sns_records::error::SnsRecordsError) -> Self {
98        Self::RecordsError(value)
99    }
100}