use thiserror::Error;
pub const MAX_PERIOD: usize = 1 << 24;
pub(crate) const PERIOD_ABOVE_MAX: &str =
"period exceeds the maximum supported window length (see MAX_PERIOD)";
#[derive(Debug, Clone, PartialEq, Eq, Error)]
#[non_exhaustive]
pub enum Error {
#[error("period must be greater than zero")]
PeriodZero,
#[error("invalid period: {message}")]
InvalidPeriod { message: &'static str },
#[error("input value must be finite (got NaN or infinity)")]
NonFiniteInput,
#[error("invalid candle: {message}")]
InvalidCandle { message: &'static str },
#[error("invalid tick: {message}")]
InvalidTick { message: &'static str },
#[error("multiplier must be greater than zero")]
NonPositiveMultiplier,
#[error("invalid order book: {message}")]
InvalidOrderBook { message: &'static str },
#[error("invalid trade: {message}")]
InvalidTrade { message: &'static str },
#[error("invalid derivatives tick: {message}")]
InvalidDerivatives { message: &'static str },
#[error("invalid cross-section: {message}")]
InvalidCrossSection { message: &'static str },
#[error("invalid parameter: {message}")]
InvalidParameter { message: &'static str },
}
pub type Result<T> = core::result::Result<T, Error>;