use super::types::{
CostEstimate, ExecutionConfig, OptimizationRecommendation, OptimizationStrategy,
PerformancePrediction, WorkloadSpec,
};
use crate::prelude::CloudProvider;
use crate::DeviceResult;
pub trait ProviderOptimizer {
fn optimize_workload(
&self,
workload: &WorkloadSpec,
) -> DeviceResult<OptimizationRecommendation>;
fn get_provider(&self) -> CloudProvider;
fn get_optimization_strategies(&self) -> Vec<OptimizationStrategy>;
fn predict_performance(
&self,
workload: &WorkloadSpec,
config: &ExecutionConfig,
) -> DeviceResult<PerformancePrediction>;
fn estimate_cost(
&self,
workload: &WorkloadSpec,
config: &ExecutionConfig,
) -> DeviceResult<CostEstimate>;
}
pub trait FeatureExtractor: Send + Sync {}
pub trait ClusteringEngine: Send + Sync {}
pub trait SimilarityMetric: Send + Sync {}
pub trait NearestNeighborEngine: Send + Sync {}
pub trait PatternAnalysisAlgorithm: Send + Sync {}
pub trait RecommendationAlgorithm: Send + Sync {}
pub trait LearningAlgorithm: Send + Sync {}
pub trait UpdateStrategy: Send + Sync {}
pub trait FeedbackValidator: Send + Sync {}
pub trait FeedbackAnalyzer: Send + Sync {}
pub trait FeedbackAggregator: Send + Sync {}