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    #[error("taker_buy_unsupported")]
9    TakerBuyUnsupported,
10    #[error(transparent)]
11    Spread(#[from] crate::spreads::SpreadError),
12    #[cfg(feature = "chain-rpc")]
13    #[error(transparent)]
14    Rpc(#[from] solana_rpc_client::api::client_error::Error),
15    #[error("account does not exist: {0}")]
16    MissingAccount(Pubkey),
17    #[error("confirmation transport: {0}")]
18    Confirmation(String),
19    #[error("invalid account data")]
20    InvalidAccountData,
21    #[error("account owner mismatch: expected {expected}, got {actual}")]
22    AccountOwnerMismatch { expected: Pubkey, actual: Pubkey },
23    #[error("account discriminator mismatch: expected {expected}, got {actual}")]
24    AccountDiscriminatorMismatch { expected: u8, actual: u8 },
25    #[error("account is not initialized")]
26    UninitializedAccount,
27    #[error("unknown position status: {0}")]
28    UnknownPositionStatus(u8),
29    #[error("invalid position type: {0}")]
30    InvalidPositionType(u8),
31    #[error("settlement requires a matching finalized market and an OTM Open or Funded position")]
32    InvalidSettlementState,
33    #[error("settlement amount overflow")]
34    SettlementAmountOverflow,
35    #[error("funding token account does not exist: {0}")]
36    MissingFundingAccount(Pubkey),
37    #[error("native SOL wrapping requires the classic SPL Token program, got {0}")]
38    InvalidNativeTokenProgram(Pubkey),
39    #[error(
40        "insufficient native SOL to wrap: needed={needed_lamports} available={available_lamports}"
41    )]
42    InsufficientNativeSol {
43        needed_lamports: u64,
44        available_lamports: u64,
45    },
46    #[error("lookup table {0} does not exist")]
47    MissingLookupTable(Pubkey),
48    #[error("lookup table {0} is deactivated")]
49    LookupTableDeactivated(Pubkey),
50    #[error("native SOL budget overflow")]
51    NativeSolBudgetOverflow,
52    #[error(transparent)]
53    Ix(#[from] ChainIxError),
54    #[error(transparent)]
55    Vault(#[from] super::vault::VaultChainError),
56    #[error("{0} does not match the account it was derived for")]
57    Identity(&'static str),
58    #[cfg(feature = "chain-rpc")]
59    #[error("transaction signing failed: {0}")]
60    Signing(#[from] solana_sdk::signer::SignerError),
61}