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