croncat_integration_utils/
error.rs1use cosmwasm_std::{Addr, StdError};
2use cw_utils::ParseReplyError;
3use serde_json::Error as SerdeJsonError;
4use thiserror::Error;
5
6#[derive(Error, Debug, PartialEq)]
7pub enum CronCatContractError {
8 #[error("{0}")]
9 Std(#[from] StdError),
10
11 #[error("Parse Reply Error {0}")]
12 ParseReplyError(#[from] ParseReplyError),
13
14 #[error("Reply {reply_id} failed")]
15 ReplyError { reply_id: u64 },
16
17 #[error("Failed to retrieve latest task execution info from potential CronCat manager: {manager_addr}")]
18 LatestTaskInfoFailed { manager_addr: Addr },
19
20 #[error("Could not deserialize task info")]
21 DeserializeTaskInfo {},
22
23 #[error("No response from factory regarding potential manager ({manager_addr}) for version {version}")]
24 FactoryManagerQueryFailed { manager_addr: Addr, version: String },
25
26 #[error("Attempted invocation from unsanctioned manager contract ({manager_addr}) for version {version}")]
27 UnsanctionedInvocation { manager_addr: Addr, version: String },
28
29 #[error("Invocation not in the same block and transaction index")]
30 NotSameBlockTxIndex {},
31
32 #[error("Invocation not called by task owner. Expected owner: {expected_owner}")]
33 WrongTaskOwner { expected_owner: Addr },
34
35 #[error("Serialization error: {msg}")]
36 SerdeError { msg: String },
37
38 #[error("Must attach funds for task creation")]
39 TaskCreationNoFunds {},
40
41 #[error("No contract named {contract_name} on factory {factory_addr} with {version} version")]
42 NoSuchContractOnFactory {
43 contract_name: String,
44 factory_addr: Addr,
45 version: String,
46 },
47
48 #[error("Invalid version string, please use dot-separated format")]
49 InvalidVersionString {},
50}
51
52impl From<SerdeJsonError> for CronCatContractError {
53 fn from(error: SerdeJsonError) -> Self {
54 CronCatContractError::SerdeError {
55 msg: format!("Serialization error: {}", error),
56 }
57 }
58}