tap_caip/
error.rs

1use thiserror::Error;
2
3/// Error types for the CAIP library
4#[derive(Error, Debug, Clone)]
5pub enum Error {
6    /// Error when parsing a ChainId
7    #[error("Invalid CAIP-2 Chain ID: {0}")]
8    InvalidChainId(String),
9
10    /// Error when parsing a namespace
11    #[error("Invalid namespace: {0}")]
12    InvalidNamespace(String),
13
14    /// Error when parsing a reference
15    #[error("Invalid reference: {0}")]
16    InvalidReference(String),
17
18    /// Error when parsing an AccountId
19    #[error("Invalid CAIP-10 Account ID: {0}")]
20    InvalidAccountId(String),
21
22    /// Error when validating an address format
23    #[error("Invalid address format for chain {0}: {1}")]
24    InvalidAddressFormat(String, String),
25
26    /// Error when parsing an AssetId
27    #[error("Invalid CAIP-19 Asset ID: {0}")]
28    InvalidAssetId(String),
29
30    /// Error when parsing an asset namespace
31    #[error("Invalid asset namespace: {0}")]
32    InvalidAssetNamespace(String),
33
34    /// Error when parsing an asset reference
35    #[error("Invalid asset reference: {0}")]
36    InvalidAssetReference(String),
37
38    /// Error when parsing an input that doesn't match any CAIP format
39    #[error("Unrecognized CAIP format: {0}")]
40    UnrecognizedFormat(String),
41
42    /// Specific error for Ethereum address validation
43    #[error("Invalid Ethereum address: {0}")]
44    InvalidEthereumAddress(String),
45
46    /// Specific error for Bitcoin address validation
47    #[error("Invalid Bitcoin address: {0}")]
48    InvalidBitcoinAddress(String),
49}