dd_merkle_tree/merkle/
errors.rs

1#[cfg(not(target_arch = "wasm32"))]
2use anchor_lang::error::{AnchorError, Error, ERROR_CODE_OFFSET};
3use thiserror::Error;
4
5#[cfg(not(target_arch = "wasm32"))]
6pub type Result<T> = anchor_lang::Result<T>;
7#[cfg(target_arch = "wasm32")]
8pub type Result<T> = anyhow::Result<T, MerkleError>;
9
10#[derive(Debug, Error)]
11pub enum MerkleError {
12    #[error("Leaf out of range")]
13    LeafOutOfRange,
14    #[error("Branch out of range")]
15    BranchOutOfRange,
16    #[error("Leaf not found")]
17    LeafNotFound,
18    #[error("Merkle tree not merklized")]
19    TreeNotMerklized,
20    #[error("Merkle tree is empty")]
21    TreeEmpty,
22    #[error("Invalid hash size")]
23    InvalidHashSize,
24}
25
26#[cfg(not(target_arch = "wasm32"))]
27impl From<MerkleError> for anchor_lang::error::Error {
28    fn from(value: MerkleError) -> Self {
29        let e = match value {
30            MerkleError::LeafOutOfRange => AnchorError {
31                error_name: "LeafOutOfRange".to_string(),
32                error_code_number: ERROR_CODE_OFFSET + 1337 + 0,
33                error_msg: value.to_string(),
34                error_origin: None,
35                compared_values: None
36            },
37            MerkleError::BranchOutOfRange => AnchorError {
38                error_name: "BranchOutOfRange".to_string(),
39                error_code_number: ERROR_CODE_OFFSET + 1337 + 1,
40                error_msg: value.to_string(),
41                error_origin: None,
42                compared_values: None
43            },
44            MerkleError::LeafNotFound => AnchorError {
45                error_name: "LeafNotFound".to_string(),
46                error_code_number: ERROR_CODE_OFFSET + 1337 + 2,
47                error_msg: value.to_string(),
48                error_origin: None,
49                compared_values: None
50            },
51            MerkleError::TreeNotMerklized => AnchorError {
52                error_name: "TreeNotMerklized".to_string(),
53                error_code_number: ERROR_CODE_OFFSET + 1337 + 3,
54                error_msg: value.to_string(),
55                error_origin: None,
56                compared_values: None
57            },
58            MerkleError::TreeEmpty => AnchorError {
59                error_name: "TreeEmpty".to_string(),
60                error_code_number: ERROR_CODE_OFFSET + 1337 + 4,
61                error_msg: value.to_string(),
62                error_origin: None,
63                compared_values: None
64            },
65            MerkleError::InvalidHashSize => AnchorError {
66                error_name: "InvalidHashSize".to_string(),
67                error_code_number: ERROR_CODE_OFFSET + 1337 + 5,
68                error_msg: value.to_string(),
69                error_origin: None,
70                compared_values: None
71            },
72        };
73        Error::AnchorError(Box::new(e))
74    }
75}