use num_derive::FromPrimitive;
use thiserror::Error;
#[derive(Clone, Debug, Eq, Error, FromPrimitive, PartialEq)]
pub enum SigilError {
#[error("Error deserializing an account")]
DeserializationError,
#[error("Error serializing an account")]
SerializationError,
#[error("Invalid program owner. This likely mean the provided account does not exist")]
InvalidProgramOwner,
#[error("Invalid PDA derivation")]
InvalidPda,
#[error("Expected empty account")]
ExpectedEmptyAccount,
#[error("Expected non empty account")]
ExpectedNonEmptyAccount,
#[error("Expected signer account")]
ExpectedSignerAccount,
#[error("Expected writable account")]
ExpectedWritableAccount,
#[error("Account mismatch")]
AccountMismatch,
#[error("Invalid account key")]
InvalidAccountKey,
#[error("Numerical overflow")]
NumericalOverflow,
#[error("Invalid utf8 ticker")]
InvalidTicker,
#[error("Invalid mint")]
InvalidMint,
#[error("Invalid token account")]
InvalidTokenAccount,
#[error("Insufficient funds")]
InsufficientFunds,
#[error("Maximum supply reached")]
MaximumSupplyReached,
#[error("Cannot close mint account with supply")]
MintHasSupply,
}
impl solana_program::program_error::PrintProgramError for SigilError {
fn print<E>(&self) {
solana_program::msg!(&self.to_string());
}
}