Skip to main content

acta_maker_sdk/chain/
error.rs

1use solana_sdk::pubkey::Pubkey;
2use thiserror::Error;
3
4use super::ix::ChainIxError;
5
6#[derive(Debug, Error)]
7pub enum ChainError {
8    #[cfg(feature = "chain-rpc")]
9    #[error(transparent)]
10    Rpc(#[from] solana_rpc_client::api::client_error::Error),
11    #[error("invalid account data")]
12    InvalidAccountData,
13    #[error("account owner mismatch: expected {expected}, got {actual}")]
14    AccountOwnerMismatch { expected: Pubkey, actual: Pubkey },
15    #[error("account discriminator mismatch: expected {expected}, got {actual}")]
16    AccountDiscriminatorMismatch { expected: u8, actual: u8 },
17    #[error("account is not initialized")]
18    UninitializedAccount,
19    #[error("unknown position status: {0}")]
20    UnknownPositionStatus(u8),
21    #[error("invalid position type: {0}")]
22    InvalidPositionType(u8),
23    #[error("settlement amount overflow")]
24    SettlementAmountOverflow,
25    #[error("funding token account does not exist: {0}")]
26    MissingFundingAccount(Pubkey),
27    #[error("native SOL wrapping requires the classic SPL Token program, got {0}")]
28    InvalidNativeTokenProgram(Pubkey),
29    #[error(
30        "insufficient native SOL to wrap: needed={needed_lamports} available={available_lamports}"
31    )]
32    InsufficientNativeSol {
33        needed_lamports: u64,
34        available_lamports: u64,
35    },
36    #[error("lookup table {0} does not exist")]
37    MissingLookupTable(Pubkey),
38    #[error("lookup table {0} is deactivated")]
39    LookupTableDeactivated(Pubkey),
40    #[error("native SOL budget overflow")]
41    NativeSolBudgetOverflow,
42    #[error(transparent)]
43    Ix(#[from] ChainIxError),
44    #[error(transparent)]
45    Vault(#[from] super::vault::VaultChainError),
46    #[error("{0} does not match the account it was derived for")]
47    Identity(&'static str),
48    #[cfg(feature = "chain-rpc")]
49    #[error("transaction signing failed: {0}")]
50    Signing(#[from] solana_sdk::signer::SignerError),
51}