quantrs2_device/cloud/provider_optimizations/
traits.rs

1//! Provider optimizer trait definitions
2
3use super::types::{
4    CostEstimate, ExecutionConfig, OptimizationRecommendation, OptimizationStrategy,
5    PerformancePrediction, WorkloadSpec,
6};
7use crate::prelude::CloudProvider;
8use crate::DeviceResult;
9
10/// Trait for provider-specific optimization strategies
11pub trait ProviderOptimizer {
12    /// Optimize a workload for this provider
13    fn optimize_workload(
14        &self,
15        workload: &WorkloadSpec,
16    ) -> DeviceResult<OptimizationRecommendation>;
17
18    /// Get the cloud provider this optimizer targets
19    fn get_provider(&self) -> CloudProvider;
20
21    /// Get available optimization strategies for this provider
22    fn get_optimization_strategies(&self) -> Vec<OptimizationStrategy>;
23
24    /// Predict performance for a given workload and configuration
25    fn predict_performance(
26        &self,
27        workload: &WorkloadSpec,
28        config: &ExecutionConfig,
29    ) -> DeviceResult<PerformancePrediction>;
30
31    /// Estimate cost for a given workload and configuration
32    fn estimate_cost(
33        &self,
34        workload: &WorkloadSpec,
35        config: &ExecutionConfig,
36    ) -> DeviceResult<CostEstimate>;
37}
38
39// Stub traits for internal use (TODO: Implement properly)
40
41/// Feature extraction trait
42pub trait FeatureExtractor: Send + Sync {}
43
44/// Clustering engine trait
45pub trait ClusteringEngine: Send + Sync {}
46
47/// Similarity metric trait
48pub trait SimilarityMetric: Send + Sync {}
49
50/// Nearest neighbor engine trait
51pub trait NearestNeighborEngine: Send + Sync {}
52
53/// Pattern analysis algorithm trait
54pub trait PatternAnalysisAlgorithm: Send + Sync {}
55
56/// Recommendation algorithm trait
57pub trait RecommendationAlgorithm: Send + Sync {}
58
59/// Learning algorithm trait
60pub trait LearningAlgorithm: Send + Sync {}
61
62/// Update strategy trait
63pub trait UpdateStrategy: Send + Sync {}
64
65/// Feedback validator trait
66pub trait FeedbackValidator: Send + Sync {}
67
68/// Feedback analyzer trait
69pub trait FeedbackAnalyzer: Send + Sync {}
70
71/// Feedback aggregator trait
72pub trait FeedbackAggregator: Send + Sync {}