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 amount overflow")]
28 SettlementAmountOverflow,
29 #[error("funding token account does not exist: {0}")]
30 MissingFundingAccount(Pubkey),
31 #[error("native SOL wrapping requires the classic SPL Token program, got {0}")]
32 InvalidNativeTokenProgram(Pubkey),
33 #[error(
34 "insufficient native SOL to wrap: needed={needed_lamports} available={available_lamports}"
35 )]
36 InsufficientNativeSol {
37 needed_lamports: u64,
38 available_lamports: u64,
39 },
40 #[error("lookup table {0} does not exist")]
41 MissingLookupTable(Pubkey),
42 #[error("lookup table {0} is deactivated")]
43 LookupTableDeactivated(Pubkey),
44 #[error("native SOL budget overflow")]
45 NativeSolBudgetOverflow,
46 #[error(transparent)]
47 Ix(#[from] ChainIxError),
48 #[error(transparent)]
49 Vault(#[from] super::vault::VaultChainError),
50 #[error("{0} does not match the account it was derived for")]
51 Identity(&'static str),
52 #[cfg(feature = "chain-rpc")]
53 #[error("transaction signing failed: {0}")]
54 Signing(#[from] solana_sdk::signer::SignerError),
55}