use serde::{Deserialize, Serialize};
use std::time::Duration;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HardwarePredictionConfig {
pub enable_prediction: bool,
pub prediction_targets: Vec<PredictionTarget>,
pub prediction_horizon: Duration,
pub uncertainty_quantification: bool,
pub multi_step_prediction: bool,
pub hardware_adaptation: HardwareAdaptationConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum PredictionTarget {
CircuitFidelity,
ExecutionTime,
ErrorRate,
ResourceUtilization,
CircuitDepth,
SwapCount,
GateCount,
OptimalMapping,
HardwareBottlenecks,
CalibrationDrift,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HardwareAdaptationConfig {
pub enable_adaptation: bool,
pub adaptation_frequency: Duration,
pub adaptation_triggers: Vec<AdaptationTrigger>,
pub learning_rate_adaptation: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum AdaptationTrigger {
PerformanceDegradation,
CalibrationDrift,
EnvironmentalChange,
NewHardwareData,
ScheduledUpdate,
ThresholdBreach,
}