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
use cosmwasm_std::{StdError, Uint128};
use thiserror::Error;
#[derive(Error, Debug, PartialEq)]
pub enum ContractError {
#[error("{0}")]
Std(#[from] StdError),
#[error("Unauthorized")]
Unauthorized {},
#[error("Validator '{validator}' not in current validator set")]
NotInValidatorSet { validator: String },
#[error("Different denominations in bonds: '{denom1}' vs. '{denom2}'")]
DifferentBondDenom { denom1: String, denom2: String },
#[error("Stored bonded {stored}, but query bonded {queried}")]
BondedMismatch { stored: Uint128, queried: Uint128 },
#[error("No {denom} tokens sent")]
EmptyBalance { denom: String },
#[error("Must unbond at least {min_bonded} {denom}")]
UnbondTooSmall { min_bonded: Uint128, denom: String },
#[error("Insufficient balance in contract to process claim")]
BalanceTooSmall {},
#[error("No claims that can be released currently")]
NothingToClaim {},
#[error("Cannot set to own account")]
CannotSetOwnAccount {},
#[error("Invalid zero amount")]
InvalidZeroAmount {},
#[error("Allowance is expired")]
Expired {},
#[error("No allowance for this account")]
NoAllowance {},
#[error("Minting cannot exceed the cap")]
CannotExceedCap {},
}
impl From<cw20_base::ContractError> for ContractError {
fn from(err: cw20_base::ContractError) -> Self {
match err {
cw20_base::ContractError::Std(error) => ContractError::Std(error),
cw20_base::ContractError::Unauthorized {} => ContractError::Unauthorized {},
cw20_base::ContractError::CannotSetOwnAccount {} => {
ContractError::CannotSetOwnAccount {}
}
cw20_base::ContractError::InvalidZeroAmount {} => ContractError::InvalidZeroAmount {},
cw20_base::ContractError::Expired {} => ContractError::Expired {},
cw20_base::ContractError::NoAllowance {} => ContractError::NoAllowance {},
cw20_base::ContractError::CannotExceedCap {} => ContractError::CannotExceedCap {},
cw20_base::ContractError::LogoTooBig {}
| cw20_base::ContractError::InvalidPngHeader {}
| cw20_base::ContractError::InvalidXmlPreamble {} => {
ContractError::Std(StdError::generic_err(err.to_string()))
}
}
}
}