use thiserror::Error;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum BacktestError {
#[error("invalid strategy spec: {0}")]
InvalidSpec(String),
#[error("unknown indicator type: {0}")]
UnknownIndicator(String),
#[error("invalid parameters for indicator {indicator}: {reason}")]
InvalidParams {
indicator: String,
reason: String,
},
#[error("rule references undeclared indicator: {0}")]
UndeclaredRef(String),
#[error("invalid input data: {0}")]
InvalidData(String),
}
pub type Result<T> = core::result::Result<T, BacktestError>;