1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
use cosmwasm_std::StdError;
use komple_framework_utils::{shared::SharedError, UtilError};
use thiserror::Error;

use cw721_base::ContractError as Cw721ContractError;

#[derive(Error, Debug, PartialEq)]
pub enum ContractError {
    #[error("{0}")]
    Std(#[from] StdError),

    #[error("Unauthorized")]
    Unauthorized {},

    #[error("Invalid instantiate msg")]
    InvalidInstantiateMsg {},

    #[error("Token mint locked")]
    MintLocked {},

    #[error("Token burn locked")]
    BurnLocked {},

    #[error("Token transfer locked")]
    TransferLocked {},

    #[error("Token send locked")]
    SendLocked {},

    #[error("Per address limit must be greater than 0")]
    InvalidPerAddressLimit {},

    #[error("Token limit is exceeded")]
    TokenLimitReached {},

    #[error("Token not found")]
    TokenNotFound {},

    #[error("Invalid max token limit")]
    InvalidMaxTokenLimit {},

    #[error("Invalid start time")]
    InvalidStartTime {},

    #[error("Minting has not started")]
    MintingNotStarted {},

    #[error("Minting has already started")]
    AlreadyStarted {},

    #[error("Description too long")]
    DescriptionTooLong {},

    #[error("Token_id already claimed")]
    Claimed {},

    #[error("Cannot set approval that is already expired")]
    Expired {},

    #[error("Approval not found for: {spender}")]
    ApprovalNotFound { spender: String },

    #[error("Invalid reply ID")]
    InvalidReplyID {},

    #[error("Metadata contract not found")]
    MetadataContractNotFound {},

    #[error("Error while instantiating contract")]
    ContractsInstantiateError {},

    #[error("IPFS link not found")]
    IpfsNotFound {},

    #[error("Collection and metadata types must be standard")]
    InvalidCollectionMetadataType {},

    #[error("Custom Error val: {val:?}")]
    CustomError { val: String },

    #[error("{0}")]
    Util(#[from] UtilError),

    #[error("{0}")]
    SharedError(#[from] SharedError),

    #[error("Semver parsing error: {0}")]
    SemVer(String),
}

impl From<Cw721ContractError> for ContractError {
    fn from(err: Cw721ContractError) -> ContractError {
        match err {
            Cw721ContractError::Std(err) => ContractError::Std(err),
            Cw721ContractError::Unauthorized {} => ContractError::Unauthorized {},
            Cw721ContractError::Claimed {} => ContractError::Claimed {},
            Cw721ContractError::Expired {} => ContractError::Expired {},
            Cw721ContractError::ApprovalNotFound { spender } => {
                ContractError::ApprovalNotFound { spender }
            }
        }
    }
}

impl From<semver::Error> for ContractError {
    fn from(err: semver::Error) -> Self {
        Self::SemVer(err.to_string())
    }
}