use thiserror::Error;

#[derive(Error, Debug)]
pub enum ErrorCodes {
    #[error("Math calculation error")]
    MathError,
    #[error("Type casting failure")]
    CastingFailure,
    #[error("BigNumber operation error")]
    BnError,
    #[error("Division by zero")]
    DivisionByZero,
    #[error("Tick value out of bounds")]
    TickOutOfBounds,
    #[error("Tick ratio out of bounds")]
    TickRatioOutOfBounds,
    #[error("Tick division by zero")]
    TickDivisionByZero,
    #[error("Tick overflow")]
    TickOverflow,
    #[error("Invalid perfect ratio for tick")]
    TickInvalidPerfectRatio,
    #[error("U256 number downcast error")]
    U256NumberDownCastError,
    #[error("Invalid token account")]
    InvalidTokenAccount,
    #[error("Unsupported token extension")]
    UnsupportedTokenExtension,
    #[error("Invalid token mint")]
    InvalidTokenMint,
}
