use num_derive::FromPrimitive;
use solana_program::{decode_error::DecodeError, msg, program_error::{PrintProgramError, ProgramError}};
use thiserror::Error;
#[derive(Clone, Debug, Eq, Error, FromPrimitive, PartialEq)]
pub enum UpgradeError {
#[error("Already in use")]
AlreadyInUse,
#[error("Not initialized")]
NotInitialized,
#[error("Wrong admin")]
WrongAdmin,
#[error("Wrong seeds")]
WrongSeeds,
#[error("Wrong signature public key")]
WrongSignature,
#[error("Invalid signature")]
InvalidSignature,
}
impl From<UpgradeError> for ProgramError {
fn from(e: UpgradeError) -> Self {
ProgramError::Custom(e as u32)
}
}
impl PrintProgramError for UpgradeError {
fn print<E>(&self) {
msg!(&self.to_string());
}
}
impl<T> DecodeError<T> for UpgradeError {
fn type_of() -> &'static str {
"UpgradeError"
}
}