abstract_core/
error.rs

1use cosmwasm_std::{OverflowError, StdError};
2use cw_asset::AssetError;
3use cw_semver::Error as CwSemverError;
4use semver::{Error as SemverError, Version};
5use thiserror::Error;
6
7use crate::objects::{ans_host::AnsHostError, version_control::VersionControlError};
8
9/// Wrapper error for the Abstract framework.
10#[derive(Error, Debug, PartialEq)]
11pub enum AbstractError {
12    #[error("Std error encountered while handling account object: {0}")]
13    Std(#[from] StdError),
14
15    #[error("{0}")]
16    Asset(#[from] AssetError),
17
18    #[error("cw math overflow error: {0}")]
19    Overflow(#[from] OverflowError),
20
21    #[error("{0}")]
22    VersionControlError(#[from] VersionControlError),
23
24    #[error("{0}")]
25    AnsHostError(#[from] AnsHostError),
26
27    #[error("Semver error encountered while handling account object: {0}")]
28    Semver(String),
29
30    #[error("Entry {actual} should be formatted as {expected}")]
31    EntryFormattingError { actual: String, expected: String },
32
33    #[error("Object {object} should be formatted {expected} but is {actual}")]
34    FormattingError {
35        object: String,
36        expected: String,
37        actual: String,
38    },
39
40    #[error("Cannot downgrade contract {} from {} to {}", contract, from, to)]
41    CannotDowngradeContract {
42        contract: String,
43        from: Version,
44        to: Version,
45    },
46
47    #[error("Cannot rename contract from {} to {}", from, to)]
48    ContractNameMismatch { from: String, to: String },
49
50    #[error("Adapter {0} not installed on Account")]
51    AdapterNotInstalled(String),
52
53    #[error("App {0} not installed on Account")]
54    AppNotInstalled(String),
55
56    #[error("version for {0} in missing")]
57    MissingVersion(String),
58
59    #[error("Abstract storage object {object} errors with {msg}")]
60    Storage { object: String, msg: String },
61
62    #[error("assertion: {0}")]
63    Assert(String),
64
65    //fee error
66    #[error("fee error: {0}")]
67    Fee(String),
68
69    // deposit error
70    #[error("deposit error: {0}")]
71    Deposit(String),
72
73    #[error("The version or name of this module was not consistent between its stores (cw2: {cw2} and abstract module data: {module}).")]
74    UnequalModuleData { cw2: String, module: String },
75
76    #[error("Cannot Skip module version {contract} from {from} to {to}")]
77    CannotSkipVersion {
78        contract: String,
79        from: Version,
80        to: Version,
81    },
82}
83
84impl From<SemverError> for AbstractError {
85    fn from(err: SemverError) -> Self {
86        AbstractError::Semver(err.to_string())
87    }
88}
89
90impl From<CwSemverError> for AbstractError {
91    fn from(err: CwSemverError) -> Self {
92        AbstractError::Semver(err.to_string())
93    }
94}