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("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 #[cfg(feature = "chain-rpc")]
45 #[error("transaction signing failed: {0}")]
46 Signing(#[from] solana_sdk::signer::SignerError),
47}