acta_maker_sdk/chain/
error.rs1use 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}