use thiserror::Error;
#[derive(Error, Debug)]
pub enum ErrorCodes {
#[error("User class not found")]
UserClassNotFound,
#[error("User already paused")]
UserAlreadyPaused,
#[error("User already unpaused")]
UserAlreadyUnpaused,
#[error("Only liquidity authority")]
OnlyLiquidityAuthority,
#[error("Only auth")]
OnlyAuth,
#[error("Only guardians")]
OnlyGuardians,
#[error("Invalid params")]
InvalidParams,
#[error("Invalid config order")]
InvalidConfigOrder,
#[error("Status already set")]
StatusAlreadySet,
#[error("Limits cannot be zero")]
LimitsCannotBeZero,
#[error("Max auth count reached")]
MaxAuthCountReached,
#[error("Max user classes reached")]
MaxUserClassesReached,
#[error("Insufficient balance")]
InsufficientBalance,
#[error("User supply position required")]
UserSupplyPositionRequired,
#[error("User borrow position required")]
UserBorrowPositionRequired,
#[error("Claim account required")]
ClaimAccountRequired,
#[error("Withdraw to account required")]
WithdrawToAccountRequired,
#[error("Borrow to account required")]
BorrowToAccountRequired,
#[error("Invalid claim amount")]
InvalidClaimAmount,
#[error("No amount to claim")]
NoAmountToClaim,
#[error("Amount not zero")]
AmountNotZero,
#[error("Value overflow")]
ValueOverflow,
#[error("Invalid transfer type")]
InvalidTransferType,
#[error("Mint mismatch")]
MintMismatch,
#[error("User not defined")]
UserNotDefined,
#[error("Invalid user claim")]
InvalidUserClaim,
#[error("User paused")]
UserPaused,
#[error("Withdrawal limit reached")]
WithdrawalLimitReached,
#[error("Borrow limit reached")]
BorrowLimitReached,
#[error("Operate amounts nearly zero")]
OperateAmountsNearlyZero,
#[error("Operate amount too big")]
OperateAmountTooBig,
#[error("Operate amounts insufficient")]
OperateAmountsInsufficient,
#[error("Transfer amount out of bounds")]
TransferAmountOutOfBounds,
#[error("Forbidden operate call")]
ForbiddenOperateCall,
#[error("Max utilization reached")]
MaxUtilizationReached,
#[error("Value overflow total supply")]
ValueOverflowTotalSupply,
#[error("Value overflow total borrow")]
ValueOverflowTotalBorrow,
#[error("Deposit expected")]
DepositExpected,
#[error("Exchange price zero")]
ExchangePriceZero,
#[error("Unsupported rate version")]
UnsupportedRateVersion,
#[error("Borrow rate negative")]
BorrowRateNegative,
#[error("Protocol lockdown")]
ProtocolLockdown,
}