use pinocchio::program_error::ProgramError;
#[repr(u32)]
#[derive(thiserror::Error, Clone, Debug, Eq, PartialEq)]
pub enum ProgramWhitelistError {
#[error("Invalid program whitelist account")]
InvalidProgramWhitelistAccount = 0xBBBBBB00,
#[error("Pending authority mismatch")]
PendingAuthorityMismatch,
#[error("No pending authority")]
NoPendingAuthority,
#[error("Authority transfer already initialized")]
AuthorityTransferAlreadyInitialized,
#[error("Invalid program whitelist entry account")]
InvalidProgramWhitelistEntryAccount,
#[error("Invalid program whitelist entry account owner")]
InvalidProgramWhitelistEntryAccountOwner,
#[error("Deployer not approved")]
DeployerNotApproved,
#[error("Whitelist entry is not pending")]
NotPending, }
impl From<ProgramWhitelistError> for ProgramError {
fn from(e: ProgramWhitelistError) -> Self {
ProgramError::Custom(e as u32)
}
}
#[cfg(test)]
mod tests {
use super::ProgramWhitelistError;
#[test]
fn error_discriminants_are_pinned() {
assert_eq!(
ProgramWhitelistError::InvalidProgramWhitelistAccount as u32,
0xBBBBBB00
);
assert_eq!(
ProgramWhitelistError::PendingAuthorityMismatch as u32,
0xBBBBBB01
);
assert_eq!(
ProgramWhitelistError::NoPendingAuthority as u32,
0xBBBBBB02
);
assert_eq!(
ProgramWhitelistError::AuthorityTransferAlreadyInitialized as u32,
0xBBBBBB03
);
assert_eq!(
ProgramWhitelistError::InvalidProgramWhitelistEntryAccount as u32,
0xBBBBBB04
);
assert_eq!(
ProgramWhitelistError::InvalidProgramWhitelistEntryAccountOwner as u32,
0xBBBBBB05
);
assert_eq!(
ProgramWhitelistError::DeployerNotApproved as u32,
0xBBBBBB06
);
assert_eq!(ProgramWhitelistError::NotPending as u32, 0xBBBBBB07);
}
}