use crate::forecast::error::ForecastError;
use crate::forecast::result::{ForecastResult, ModelParams, ModelType};
pub trait ForecastModel: Send + Sync {
fn fit(&mut self, timestamps: &[i64], values: &[f64]) -> Result<(), ForecastError>;
fn predict(&self, horizon: usize) -> Result<ForecastResult, ForecastError>;
fn update(&mut self, timestamp: i64, value: f64) -> Result<(), ForecastError>;
fn model_type(&self) -> ModelType;
fn params(&self) -> &ModelParams;
}