1pub mod anomaly;
26pub mod decomposition;
27pub mod features;
28pub mod forecasting;
29pub mod models;
30pub mod observability;
31pub mod time_series;
32
33pub use anomaly::{Anomaly, AnomalyDetector, AnomalyType};
34pub use decomposition::{Decomposer, DecompositionResult, DecompositionType};
35pub use features::FeatureExtractor;
36pub use forecasting::{ExponentialSmoothing, ForecastResult, Forecaster, MovingAverageForecaster};
37pub use observability::{
38 Alert, AlertLevel, DataQuality, DataQualityAssessment, ErrorBudget, GoldenSignals, LogSeverity,
39 NASAQualityControl, PerformanceTracker, ServiceLevelObjective, StructuredLog,
40};
41pub use time_series::TimeSeries;
42
43#[derive(Debug, serde::Serialize, serde::Deserialize)]
45pub enum TelemetryError {
46 InvalidData(String),
48 InsufficientData(String),
50 ModelError(String),
52 InvalidParameter(String),
54}
55
56impl std::fmt::Display for TelemetryError {
57 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
58 match self {
59 TelemetryError::InvalidData(msg) => write!(f, "Invalid data: {}", msg),
60 TelemetryError::InsufficientData(msg) => write!(f, "Insufficient data: {}", msg),
61 TelemetryError::ModelError(msg) => write!(f, "Model error: {}", msg),
62 TelemetryError::InvalidParameter(msg) => write!(f, "Invalid parameter: {}", msg),
63 }
64 }
65}
66
67impl std::error::Error for TelemetryError {}
68
69pub type Result<T> = std::result::Result<T, TelemetryError>;
70
71#[cfg(test)]
72mod tests {
73 use super::*;
74
75 #[test]
76 fn test_basic_functionality() {
77 let data = vec![1.0, 2.0, 3.0, 4.0, 5.0];
78 let ts = TimeSeries::new(data);
79 assert_eq!(ts.len(), 5);
80 }
81}