1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum CarrotError {
5 #[error("Solana client error: {0}")]
6 SolanaClient(#[from] solana_client::client_error::ClientError),
7
8 #[error("Solana SDK error: {0}")]
9 SolanaSdk(#[from] solana_sdk::program_error::ProgramError),
10
11 #[error("Token error: {0}")]
12 Token(#[from] spl_token::error::TokenError),
13
14 #[error("Borsh deserialization error: {0}")]
15 BorshDeserialize(#[from] std::io::Error),
16
17 #[error("Invalid vault data")]
18 InvalidVaultData,
19
20 #[error("Invalid asset: {0}")]
21 InvalidAsset(String),
22
23 #[error("Insufficient balance: required {required}, available {available}")]
24 InsufficientBalance { required: u64, available: u64 },
25
26 #[error("Transaction failed: {0}")]
27 TransactionFailed(String),
28
29 #[error("Account not found: {0}")]
30 AccountNotFound(String),
31}
32
33pub type Result<T> = std::result::Result<T, CarrotError>;