jito-vault-sdk 0.0.5

Jito's Vault SDK
Documentation
use solana_program::{decode_error::DecodeError, program_error::ProgramError};
use thiserror::Error;

#[derive(Debug, Error, PartialEq, Eq)]
pub enum VaultError {
    #[error("VaultSlashUnderflow")]
    VaultSlashUnderflow = 1000,
    #[error("VaultInitialAmountFailed")]
    VaultInitialAmountFailed,
    #[error("VaultInsufficientFunds")]
    VaultInsufficientFunds,
    #[error("VaultOverflow")]
    VaultOverflow,
    #[error("VaultOperatorAdminInvalid")]
    VaultOperatorAdminInvalid,
    #[error("VaultAdminInvalid")]
    VaultAdminInvalid,
    #[error("VaultCapacityAdminInvalid")]
    VaultCapacityAdminInvalid,
    #[error("VaultMintBurnAdminInvalid")]
    VaultMintBurnAdminInvalid,
    #[error("VaultDelegationAdminInvalid")]
    VaultDelegationAdminInvalid,
    #[error("VaultDelegateAssetAdminInvalid")]
    VaultDelegateAssetAdminInvalid,
    #[error("VaultCapacityExceeded")]
    VaultCapacityExceeded,
    #[error("VaultSlasherAdminInvalid")]
    VaultSlasherAdminInvalid,
    #[error("VaultNcnAdminInvalid")]
    VaultNcnAdminInvalid,
    #[error("VaultFeeAdminInvalid")]
    VaultFeeAdminInvalid,
    #[error("ConfigAdminInvalid")]
    ConfigAdminInvalid,
    #[error("ConfigFeeAdminInvalid")]
    ConfigFeeAdminInvalid,
    #[error("VaultFeeCapExceeded")]
    VaultFeeCapExceeded,
    #[error("VaultFeeChangeTooSoon")]
    VaultFeeChangeTooSoon,
    #[error("VaultFeeBumpTooLarge")]
    VaultFeeBumpTooLarge,
    #[error("VaultUnderflow")]
    VaultUnderflow,
    #[error("VaultUpdateNeeded")]
    VaultUpdateNeeded,
    #[error("VaultIsUpdated")]
    VaultIsUpdated,
    #[error("VaultOperatorDelegationUpdateNeeded")]
    VaultOperatorDelegationUpdateNeeded,
    #[error("VaultOperatorDelegationIsUpdated")]
    VaultOperatorDelegationIsUpdated,
    #[error("VaultUpdateIncorrectIndex")]
    VaultUpdateIncorrectIndex,
    #[error("VaultUpdateStateNotFinishedUpdating")]
    VaultUpdateStateNotFinishedUpdating,
    #[error("VaultSecurityOverflow")]
    VaultSecurityOverflow,
    #[error("VaultSlashIncomplete")]
    VaultSlashIncomplete,
    #[error("VaultSecurityUnderflow")]
    VaultSecurityUnderflow,
    #[error("SlippageError")]
    SlippageError,
    #[error("VaultStakerWithdrawalTicketNotWithdrawable")]
    VaultStakerWithdrawalTicketNotWithdrawable,
    #[error("VaultNcnSlasherTicketFailedCooldown")]
    VaultNcnSlasherTicketFailedCooldown,
    #[error("VaultNcnSlasherTicketFailedWarmup")]
    VaultNcnSlasherTicketFailedWarmup,
    #[error("VaultNcnTicketFailedCooldown")]
    VaultNcnTicketFailedCooldown,
    #[error("VaultNcnTicketFailedWarmup")]
    VaultNcnTicketFailedWarmup,
    #[error("VaultNcnTicketUnslashable")]
    VaultNcnTicketUnslashable,
    #[error("OperatorVaultTicketUnslashable")]
    OperatorVaultTicketUnslashable,
    #[error("NcnOperatorStateUnslashable")]
    NcnOperatorStateUnslashable,
    #[error("VaultNcnSlasherTicketUnslashable")]
    VaultNcnSlasherTicketUnslashable,
    #[error("NcnVaultTicketUnslashable")]
    NcnVaultTicketUnslashable,
    #[error("NcnVaultSlasherTicketUnslashable")]
    NcnVaultSlasherTicketUnslashable,
    #[error("VaultMaxSlashedPerOperatorExceeded")]
    VaultMaxSlashedPerOperatorExceeded,
    #[error("VaultStakerWithdrawalTicketInvalidStaker")]
    VaultStakerWithdrawalTicketInvalidStaker,
    #[error("SlasherOverflow")]
    SlasherOverflow,
    #[error("NcnOverflow")]
    NcnOverflow,
    #[error("OperatorOverflow")]
    OperatorOverflow,
    #[error("VaultDelegationZero")]
    VaultDelegationZero,
    #[error("VaultCooldownZero")]
    VaultCooldownZero,
    #[error("VaultBurnZero")]
    VaultBurnZero,
    #[error("VaultEnqueueWithdrawalAmountZero")]
    VaultEnqueueWithdrawalAmountZero,
    #[error("VaultMintZero")]
    VaultMintZero,
    #[error("VaultIsPaused")]
    VaultIsPaused,
    #[error("InvalidDepositor")]
    InvalidDepositor,
    #[error("InvalidDepositTokenAccount")]
    InvalidDepositTokenAccount,
    #[error("NoSupportedMintBalanceChange")]
    NoSupportedMintBalanceChange,
    #[error("InvalidEpochLength")]
    InvalidEpochLength,
    #[error("VaultRewardFeeDeltaTooLarge")]
    VaultRewardFeeDeltaTooLarge,
    #[error("VaultRewardFeeIsZero")]
    VaultRewardFeeIsZero,
    #[error("VrtOutCannotBeZero")]
    VrtOutCannotBeZero,
    #[error("NonZeroAdditionalAssetsNeededForWithdrawalAtEndOfUpdate")]
    NonZeroAdditionalAssetsNeededForWithdrawalAtEndOfUpdate,
    #[error("ArithmeticOverflow")]
    ArithmeticOverflow = 3000,
    #[error("ArithmeticUnderflow")]
    ArithmeticUnderflow,
    #[error("DivisionByZero")]
    DivisionByZero,
}

impl<T> DecodeError<T> for VaultError {
    fn type_of() -> &'static str {
        "jito::vault"
    }
}

impl From<VaultError> for ProgramError {
    fn from(e: VaultError) -> Self {
        Self::Custom(e as u32)
    }
}

impl From<VaultError> for u64 {
    fn from(e: VaultError) -> Self {
        e as Self
    }
}

impl From<VaultError> for u32 {
    fn from(e: VaultError) -> Self {
        e as Self
    }
}