quantrs2_device/
lib.rs

1//! Quantum device connectors for the QuantRS2 framework.
2//!
3//! This crate provides connectivity to quantum hardware providers like IBM Quantum,
4//! Azure Quantum, and AWS Braket. It enables users to run quantum circuits on real
5//! quantum hardware or cloud-based simulators.
6//!
7//! ## Recent Updates (v0.1.0-beta.2)
8//!
9//! - Enhanced transpilation using SciRS2 v0.1.0-beta.3's graph algorithms
10//! - Improved qubit routing with refined SciRS2 integration patterns
11//! - Stable APIs for IBM Quantum, Azure Quantum, and AWS Braket
12//! - Advanced error handling and asynchronous execution
13
14use quantrs2_circuit::prelude::Circuit;
15use std::collections::HashMap;
16use thiserror::Error;
17
18pub mod adaptive_compilation;
19pub mod advanced_benchmarking_suite;
20pub mod advanced_scheduling;
21/// Public exports for commonly used types
22// Forward declaration - implemented below
23// pub mod prelude;
24pub mod aws;
25pub mod aws_device;
26pub mod azure;
27pub mod azure_device;
28pub mod backend_traits;
29pub mod benchmarking;
30pub mod calibration;
31pub mod characterization;
32pub mod circuit_integration;
33pub mod circuit_migration;
34pub mod cloud;
35pub mod continuous_variable;
36pub mod scirs2_calibration_enhanced;
37// pub mod cost_optimization;
38pub mod compiler_passes;
39pub mod cross_platform_benchmarking;
40pub mod crosstalk;
41pub mod distributed;
42pub mod dynamical_decoupling;
43pub mod hardware_parallelization;
44pub mod hybrid_quantum_classical;
45pub mod ibm;
46pub mod ibm_device;
47pub mod integrated_device_manager;
48pub mod job_scheduling;
49// pub mod mapping_scirc2; // Temporarily disabled due to scirs2-graph API changes
50pub mod algorithm_marketplace;
51pub mod mid_circuit_measurements;
52pub mod ml_optimization;
53pub mod neutral_atom;
54pub mod noise_model;
55pub mod noise_modeling_scirs2;
56pub mod optimization;
57pub mod optimization_old;
58pub mod parametric;
59pub mod performance_analytics_dashboard;
60pub mod performance_dashboard;
61pub mod photonic;
62pub mod process_tomography;
63pub mod provider_capability_discovery;
64pub mod pulse;
65pub mod qec;
66pub mod quantum_ml;
67pub mod quantum_ml_integration;
68pub mod quantum_network;
69pub mod quantum_system_security;
70pub mod routing;
71pub mod routing_advanced;
72// Temporarily disabled for compilation fixes
73// pub mod scirs2_hardware_benchmarks_enhanced;
74// pub mod scirs2_noise_characterization_enhanced;
75pub mod security;
76pub mod telemetry;
77pub mod topological;
78pub mod topology;
79pub mod topology_analysis;
80pub mod translation;
81pub mod transpiler;
82pub mod unified_benchmarking;
83pub mod unified_error_handling;
84pub mod vqa_support;
85pub mod zero_noise_extrapolation;
86
87// Test utilities
88#[cfg(test)]
89pub mod test_utils;
90
91// AWS authentication module
92#[cfg(feature = "aws")]
93pub mod aws_auth;
94
95// AWS circuit conversion module
96#[cfg(feature = "aws")]
97pub mod aws_conversion;
98
99/// Result type for device operations
100pub type DeviceResult<T> = Result<T, DeviceError>;
101
102/// Errors that can occur during device operations
103#[derive(Error, Debug, Clone)]
104pub enum DeviceError {
105    #[error("Authentication error: {0}")]
106    Authentication(String),
107
108    #[error("Connection error: {0}")]
109    Connection(String),
110
111    #[error("API error: {0}")]
112    APIError(String),
113
114    #[error("Job submission error: {0}")]
115    JobSubmission(String),
116
117    #[error("Job execution error: {0}")]
118    JobExecution(String),
119
120    #[error("Execution failed: {0}")]
121    ExecutionFailed(String),
122
123    #[error("Timeout error: {0}")]
124    Timeout(String),
125
126    #[error("Deserialization error: {0}")]
127    Deserialization(String),
128
129    #[error("Device not supported: {0}")]
130    UnsupportedDevice(String),
131
132    #[error("Circuit conversion error: {0}")]
133    CircuitConversion(String),
134
135    #[error("Insufficient qubits: required {required}, available {available}")]
136    InsufficientQubits { required: usize, available: usize },
137
138    #[error("Routing error: {0}")]
139    RoutingError(String),
140
141    #[error("Unsupported operation: {0}")]
142    UnsupportedOperation(String),
143
144    #[error("Invalid input: {0}")]
145    InvalidInput(String),
146
147    #[error("Optimization error: {0}")]
148    OptimizationError(String),
149
150    #[error("Not implemented: {0}")]
151    NotImplemented(String),
152
153    #[error("Invalid mapping: {0}")]
154    InvalidMapping(String),
155
156    #[error("Graph analysis error: {0}")]
157    GraphAnalysisError(String),
158
159    #[error("Device not found: {0}")]
160    DeviceNotFound(String),
161
162    #[error("Device not initialized: {0}")]
163    DeviceNotInitialized(String),
164
165    #[error("Job execution failed: {0}")]
166    JobExecutionFailed(String),
167
168    #[error("Invalid response: {0}")]
169    InvalidResponse(String),
170
171    #[error("Unknown job status: {0}")]
172    UnknownJobStatus(String),
173
174    #[error("Resource exhaustion: {0}")]
175    ResourceExhaustion(String),
176}
177
178/// Convert QuantRS2Error to DeviceError
179impl From<quantrs2_core::error::QuantRS2Error> for DeviceError {
180    fn from(err: quantrs2_core::error::QuantRS2Error) -> Self {
181        DeviceError::APIError(err.to_string())
182    }
183}
184
185/// Convert String to DeviceError
186impl From<String> for DeviceError {
187    fn from(err: String) -> Self {
188        DeviceError::APIError(err)
189    }
190}
191
192/// Convert OptimizeError to DeviceError
193impl From<crate::ml_optimization::OptimizeError> for DeviceError {
194    fn from(err: crate::ml_optimization::OptimizeError) -> Self {
195        DeviceError::OptimizationError(err.to_string())
196    }
197}
198
199/// General representation of quantum hardware
200#[cfg(feature = "ibm")]
201#[async_trait::async_trait]
202pub trait QuantumDevice {
203    /// Check if the device is available for use
204    async fn is_available(&self) -> DeviceResult<bool>;
205
206    /// Get the number of qubits on the device
207    async fn qubit_count(&self) -> DeviceResult<usize>;
208
209    /// Get device properties such as error rates, connectivity, etc.
210    async fn properties(&self) -> DeviceResult<HashMap<String, String>>;
211
212    /// Check if the device is a simulator
213    async fn is_simulator(&self) -> DeviceResult<bool>;
214}
215
216#[cfg(not(feature = "ibm"))]
217pub trait QuantumDevice {
218    /// Check if the device is available for use
219    fn is_available(&self) -> DeviceResult<bool>;
220
221    /// Get the number of qubits on the device
222    fn qubit_count(&self) -> DeviceResult<usize>;
223
224    /// Get device properties such as error rates, connectivity, etc.
225    fn properties(&self) -> DeviceResult<HashMap<String, String>>;
226
227    /// Check if the device is a simulator
228    fn is_simulator(&self) -> DeviceResult<bool>;
229}
230
231/// Trait for devices that can execute quantum circuits
232#[cfg(feature = "ibm")]
233#[async_trait::async_trait]
234pub trait CircuitExecutor: QuantumDevice {
235    /// Execute a quantum circuit on the device
236    async fn execute_circuit<const N: usize>(
237        &self,
238        circuit: &Circuit<N>,
239        shots: usize,
240    ) -> DeviceResult<CircuitResult>;
241
242    /// Execute multiple circuits in parallel
243    async fn execute_circuits<const N: usize>(
244        &self,
245        circuits: Vec<&Circuit<N>>,
246        shots: usize,
247    ) -> DeviceResult<Vec<CircuitResult>>;
248
249    /// Check if a circuit can be executed on the device
250    async fn can_execute_circuit<const N: usize>(&self, circuit: &Circuit<N>)
251        -> DeviceResult<bool>;
252
253    /// Get estimated queue time for a circuit execution
254    async fn estimated_queue_time<const N: usize>(
255        &self,
256        circuit: &Circuit<N>,
257    ) -> DeviceResult<std::time::Duration>;
258}
259
260#[cfg(not(feature = "ibm"))]
261pub trait CircuitExecutor: QuantumDevice {
262    /// Execute a quantum circuit on the device
263    fn execute_circuit<const N: usize>(
264        &self,
265        circuit: &Circuit<N>,
266        shots: usize,
267    ) -> DeviceResult<CircuitResult>;
268
269    /// Execute multiple circuits in parallel
270    fn execute_circuits<const N: usize>(
271        &self,
272        circuits: Vec<&Circuit<N>>,
273        shots: usize,
274    ) -> DeviceResult<Vec<CircuitResult>>;
275
276    /// Check if a circuit can be executed on the device
277    fn can_execute_circuit<const N: usize>(&self, circuit: &Circuit<N>) -> DeviceResult<bool>;
278
279    /// Get estimated queue time for a circuit execution
280    fn estimated_queue_time<const N: usize>(
281        &self,
282        circuit: &Circuit<N>,
283    ) -> DeviceResult<std::time::Duration>;
284}
285
286/// Result of a circuit execution on hardware
287#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
288pub struct CircuitResult {
289    /// Counts of each basis state
290    pub counts: HashMap<String, usize>,
291
292    /// Total number of shots executed
293    pub shots: usize,
294
295    /// Additional metadata about the execution
296    pub metadata: HashMap<String, String>,
297}
298
299/// Check if device integration is available and properly set up
300pub fn is_available() -> bool {
301    #[cfg(any(feature = "ibm", feature = "azure", feature = "aws"))]
302    {
303        return true;
304    }
305
306    #[cfg(not(any(feature = "ibm", feature = "azure", feature = "aws")))]
307    {
308        false
309    }
310}
311
312/// Create an IBM Quantum client
313///
314/// Requires the "ibm" feature to be enabled
315#[cfg(feature = "ibm")]
316pub fn create_ibm_client(token: &str) -> DeviceResult<ibm::IBMQuantumClient> {
317    ibm::IBMQuantumClient::new(token)
318}
319
320/// Create an IBM Quantum client
321///
322/// This function is available as a stub when the "ibm" feature is not enabled
323#[cfg(not(feature = "ibm"))]
324pub fn create_ibm_client(_token: &str) -> DeviceResult<()> {
325    Err(DeviceError::UnsupportedDevice(
326        "IBM Quantum support not enabled. Recompile with the 'ibm' feature.".to_string(),
327    ))
328}
329
330/// Create an IBM Quantum device instance
331#[cfg(feature = "ibm")]
332pub async fn create_ibm_device(
333    token: &str,
334    backend_name: &str,
335    config: Option<ibm_device::IBMDeviceConfig>,
336) -> DeviceResult<impl QuantumDevice + CircuitExecutor> {
337    let client = create_ibm_client(token)?;
338    ibm_device::IBMQuantumDevice::new(client, backend_name, config).await
339}
340
341/// Create an IBM Quantum device instance
342///
343/// This function is available as a stub when the "ibm" feature is not enabled
344#[cfg(not(feature = "ibm"))]
345pub async fn create_ibm_device(
346    _token: &str,
347    _backend_name: &str,
348    _config: Option<()>,
349) -> DeviceResult<()> {
350    Err(DeviceError::UnsupportedDevice(
351        "IBM Quantum support not enabled. Recompile with the 'ibm' feature.".to_string(),
352    ))
353}
354
355/// Create an Azure Quantum client
356///
357/// Requires the "azure" feature to be enabled
358#[cfg(feature = "azure")]
359pub fn create_azure_client(
360    token: &str,
361    subscription_id: &str,
362    resource_group: &str,
363    workspace: &str,
364    region: Option<&str>,
365) -> DeviceResult<azure::AzureQuantumClient> {
366    azure::AzureQuantumClient::new(token, subscription_id, resource_group, workspace, region)
367}
368
369/// Create an Azure Quantum client
370///
371/// This function is available as a stub when the "azure" feature is not enabled
372#[cfg(not(feature = "azure"))]
373pub fn create_azure_client(
374    _token: &str,
375    _subscription_id: &str,
376    _resource_group: &str,
377    _workspace: &str,
378    _region: Option<&str>,
379) -> DeviceResult<()> {
380    Err(DeviceError::UnsupportedDevice(
381        "Azure Quantum support not enabled. Recompile with the 'azure' feature.".to_string(),
382    ))
383}
384
385/// Create an Azure Quantum device instance
386#[cfg(feature = "azure")]
387pub async fn create_azure_device(
388    client: azure::AzureQuantumClient,
389    target_id: &str,
390    provider_id: Option<&str>,
391    config: Option<azure_device::AzureDeviceConfig>,
392) -> DeviceResult<impl QuantumDevice + CircuitExecutor> {
393    azure_device::AzureQuantumDevice::new(client, target_id, provider_id, config).await
394}
395
396/// Create an Azure Quantum device instance
397///
398/// This function is available as a stub when the "azure" feature is not enabled
399#[cfg(not(feature = "azure"))]
400pub async fn create_azure_device(
401    _client: (),
402    _target_id: &str,
403    _provider_id: Option<&str>,
404    _config: Option<()>,
405) -> DeviceResult<()> {
406    Err(DeviceError::UnsupportedDevice(
407        "Azure Quantum support not enabled. Recompile with the 'azure' feature.".to_string(),
408    ))
409}
410
411/// Create an AWS Braket client
412///
413/// Requires the "aws" feature to be enabled
414#[cfg(feature = "aws")]
415pub fn create_aws_client(
416    access_key: &str,
417    secret_key: &str,
418    region: Option<&str>,
419    s3_bucket: &str,
420    s3_key_prefix: Option<&str>,
421) -> DeviceResult<aws::AWSBraketClient> {
422    aws::AWSBraketClient::new(access_key, secret_key, region, s3_bucket, s3_key_prefix)
423}
424
425/// Create an AWS Braket client
426///
427/// This function is available as a stub when the "aws" feature is not enabled
428#[cfg(not(feature = "aws"))]
429pub fn create_aws_client(
430    _access_key: &str,
431    _secret_key: &str,
432    _region: Option<&str>,
433    _s3_bucket: &str,
434    _s3_key_prefix: Option<&str>,
435) -> DeviceResult<()> {
436    Err(DeviceError::UnsupportedDevice(
437        "AWS Braket support not enabled. Recompile with the 'aws' feature.".to_string(),
438    ))
439}
440
441/// Create an AWS Braket device instance
442#[cfg(feature = "aws")]
443pub async fn create_aws_device(
444    client: aws::AWSBraketClient,
445    device_arn: &str,
446    config: Option<aws_device::AWSDeviceConfig>,
447) -> DeviceResult<impl QuantumDevice + CircuitExecutor> {
448    aws_device::AWSBraketDevice::new(client, device_arn, config).await
449}
450
451/// Create an AWS Braket device instance
452///
453/// This function is available as a stub when the "aws" feature is not enabled
454#[cfg(not(feature = "aws"))]
455pub async fn create_aws_device(
456    _client: (),
457    _device_arn: &str,
458    _config: Option<()>,
459) -> DeviceResult<()> {
460    Err(DeviceError::UnsupportedDevice(
461        "AWS Braket support not enabled. Recompile with the 'aws' feature.".to_string(),
462    ))
463}
464
465/// Re-exports of commonly used types and traits
466pub mod prelude {
467    pub use crate::advanced_benchmarking_suite::{
468        AdvancedBenchmarkConfig, AdvancedBenchmarkResult, AdvancedHardwareBenchmarkSuite,
469        AdvancedStatisticalResult, AdvancedStatsConfig, AnomalyDetectionConfig,
470        AnomalyDetectionResult, BenchmarkOptimizationConfig, MLAnalysisResult, MLBenchmarkConfig,
471        PredictionResult, PredictiveModelingConfig, RealtimeBenchmarkConfig,
472    };
473    pub use crate::backend_traits::{
474        google_gates, honeywell_gates, ibm_gates, ionq_gates, query_backend_capabilities,
475        rigetti_gates, BackendCapabilities, BackendFeatures, BackendPerformance, HardwareGate,
476    };
477    pub use crate::benchmarking::{
478        BenchmarkConfig, BenchmarkResult, BenchmarkSuite, GraphAnalysis, HardwareBenchmarkSuite,
479        NoiseAnalysis, PerformanceMetrics as BenchmarkingMetrics, StatisticalAnalysis,
480    };
481    pub use crate::calibration::{
482        create_ideal_calibration, CalibrationBuilder, CalibrationManager, CrosstalkMatrix,
483        DeviceCalibration, DeviceTopology, QubitCalibration, ReadoutCalibration,
484        SingleQubitGateCalibration, TwoQubitGateCalibration,
485    };
486    pub use crate::characterization::{
487        CrosstalkCharacterization as CharacterizationCrosstalk, DriftTracker, ProcessTomography,
488        RandomizedBenchmarking, StateTomography,
489    };
490    pub use crate::circuit_integration::{
491        create_high_performance_config, create_universal_interface, AnalyticsConfig, CacheConfig,
492        CircuitVariant, CostInfo, ExecutionAnalytics, ExecutionMetadata, ExecutionResult,
493        IntegrationConfig, OptimizationSettings, OptimizedCircuit,
494        PerformanceMetrics as CircuitPerformanceMetrics, PlatformAdapter, PlatformConfig,
495        PlatformMetrics, SelectionCriteria, UniversalCircuitInterface,
496    };
497    pub use crate::cloud::{
498        allocation::{AllocationAlgorithm, ResourceOptimizationObjective},
499        cost_management::CostOptimizationStrategy,
500        monitoring::CloudMonitoringConfig,
501        orchestration::{LoadBalancingStrategy, PerformanceOptimizationStrategy},
502        providers::{CloudProvider, MultiProviderConfig, ProviderSelectionStrategy},
503    };
504    pub use crate::compiler_passes::{
505        CompilationResult, CompilerConfig, HardwareAllocation, HardwareCompiler,
506        HardwareConstraints, OptimizationObjective, OptimizationStats, PassInfo,
507        PerformancePrediction,
508    };
509    pub use crate::continuous_variable::{
510        cluster_states::{
511            ClusterStateConfig, ClusterStateGenerator, ClusterStateType, ClusterStateValidation,
512            MBQCMeasurement, MBQCResult,
513        },
514        create_cluster_state_cv_device, create_gaussian_cv_device,
515        cv_gates::{CVGateLibrary, CVGateParams, CVGateSequence, CVGateType},
516        error_correction::{
517            CVErrorCorrectionCode, CVErrorCorrectionConfig, CVErrorCorrector, CVLogicalState,
518            CorrectionResult,
519        },
520        gaussian_states::GaussianState,
521        heterodyne::{
522            HeterodyneDetector, HeterodyneDetectorConfig, HeterodyneResult, HeterodyneStatistics,
523        },
524        homodyne::{HomodyneDetector, HomodyneDetectorConfig, HomodyneResult, HomodyneStatistics},
525        measurements::{
526            CVMeasurementConfig, CVMeasurementEngine, CVMeasurementScheme, MeasurementStatistics,
527        },
528        CVDeviceConfig, CVDeviceDiagnostics, CVEntanglementMeasures, CVMeasurementOutcome,
529        CVMeasurementResult, CVMeasurementType, CVModeState, CVQuantumDevice, CVSystemType,
530        Complex,
531    };
532    pub use crate::scirs2_calibration_enhanced::{
533        AnalysisOptions, CNOTData, CalibrationConfig, CalibrationFeedback, CalibrationInput,
534        CalibrationModel, CalibrationObjective, CalibrationPrediction, CalibrationProtocols,
535        CalibrationRecommendation, CalibrationReport, CalibrationState, CalibrationSummary,
536        CalibrationVisualizations, ChevronData, CoherenceTimes, CoherentError, CorrelatedError,
537        CrosstalkCharacterization as EnhancedCrosstalkCharacterization, CrosstalkParameters,
538        CrosstalkProtocols, DetailedResults, DiscriminationData, DiscriminationParameters,
539        DragData, DriftAnalysis, DriftDirection, DriftMeasurement, EnhancedCalibrationConfig,
540        EnhancedCalibrationSystem, ErrorAnalysis, ErrorCharacterization, ErrorData, ErrorModel,
541        ErrorModelTrait, GSTData, GateSet, HardwareSpec, IQData, IQParameters,
542        IdentificationMethod, IncoherentError, IncoherentErrorType, MLSystemParameters,
543        PerformanceMetrics, PerformanceThresholds, Priority, ProcessTomographyData, QualityMetrics,
544        QuantumOperation, QubitParameters, RBData, RabiData, RamseyData,
545        ReadoutCalibration as EnhancedReadoutCalibration, ReadoutParameters, ReadoutProtocols,
546        RecommendationCategory, SingleQubitCalibration, SingleQubitProtocols, SystemAnalysis,
547        SystemCalibrationResult, SystemModel, TwoQubitCalibration, TwoQubitParameters,
548        TwoQubitProtocols, ZZData,
549    };
550    // pub use crate::cost_optimization::{
551    //     CostOptimizationEngine, CostOptimizationConfig, CostOptimizationStrategy as CostStrategy, CostEstimate,
552    //     CostBreakdown, CostEstimationMetadata, BudgetConfig, BudgetStatus, BudgetRolloverPolicy,
553    //     CostModel, CostModelType, ProviderComparisonResult, ProviderMetrics, ComparisonMetric,
554    //     PredictiveModelingConfig as CostPredictiveConfig, PredictiveModelType, PredictionResult as CostPredictionResult,
555    //     ResourceRequirements as CostResourceRequirements, OptimizationResult as CostOptimizationResult,
556    //     OptimizationStatus, BudgetConstraint, TimeConstraint, QualityRequirement,
557    //     OptimizationRecommendation, RecommendationType, CostTrends, TrendDirection, CostAnomaly,
558    //     MonitoringMetric, CostAlertConfig, CostAlertRule, AlertCondition, AlertSeverity,
559    //     NotificationChannel, DashboardConfig, DashboardWidget, MLCostModel, PredictiveModel,
560    // };
561    pub use crate::crosstalk::{
562        CrosstalkAnalyzer, CrosstalkCharacterization, CrosstalkConfig, CrosstalkMechanism,
563        MitigationStrategy, SpatialCrosstalkAnalysis, SpectralCrosstalkAnalysis,
564        TemporalCrosstalkAnalysis,
565    };
566    pub use crate::distributed::{
567        AuthenticationMethod as DistributedAuthenticationMethod, CircuitDecompositionResult,
568        CommunicationProtocol, DistributedCommand, DistributedComputingConfig,
569        DistributedCostAnalysis, DistributedEvent, DistributedExecutionResult,
570        DistributedExecutionStatus, DistributedMonitoringConfig, DistributedOptimizationConfig,
571        DistributedOrchestratorConfig, DistributedPerformanceAnalytics,
572        DistributedQuantumOrchestrator, DistributedResourceConfig, DistributedResourceUtilization,
573        DistributedWorkflow, DistributedWorkflowType,
574        EncryptionAlgorithm as DistributedEncryptionAlgorithm, FaultToleranceConfig,
575        FaultToleranceMetrics, LoadBalancingAlgorithm, LoadBalancingConfig, NetworkConfig,
576        NetworkPerformanceMetrics, NetworkTopology, NodeCapabilities, NodeInfo, NodeStatus,
577        OptimizationObjective as DistributedOptimizationObjective, ReplicationStrategy,
578        SecurityAuditTrail, SecurityConfig as DistributedSecurityConfig,
579        WorkloadDistributionStrategy,
580    };
581    pub use crate::hardware_parallelization::{
582        ExecutionConstraints, ExecutionQualityMetrics, HardwareAwarenessConfig,
583        HardwareParallelizationEngine, LoadBalancingConfig as ParallelLoadBalancingConfig,
584        LoadBalancingResult, OptimizationSuggestion, ParallelCircuitTask, ParallelExecutionResult,
585        ParallelGateTask, ParallelResourceRequirements, ParallelSchedulingConfig,
586        ParallelizationConfig, ParallelizationStrategy,
587        PerformanceMetrics as ParallelPerformanceMetrics, PerformanceOptimizationConfig,
588        QualityRequirements, ResourceAllocationConfig, ResourceConstraints, ResourceUsage,
589        TaskPriority, TimingConstraints,
590    };
591    pub use crate::hybrid_quantum_classical::{
592        AdaptationAlgorithm, AdaptiveControlConfig, BackendSelectionConfig, BackoffStrategy,
593        CircuitOptimizationConfig, ClassicalComputationConfig, ClassicalComputationResult,
594        ConvergenceConfig, ConvergenceCriterion, ConvergenceReason, ConvergenceStatus,
595        ErrorHandlingConfig, ErrorRecoveryStrategy, FeedbackAlgorithm, FeedbackControlConfig,
596        HybridLoopConfig, HybridLoopResult, HybridLoopState, HybridLoopStrategy,
597        HybridOptimizationConfig, HybridOptimizer, HybridPerformanceConfig,
598        HybridQuantumClassicalExecutor, IterationResult, NoiseModelingConfig, OptimizationLevel,
599        OptimizationPass, OptimizationSummary, PerformanceMetrics as HybridPerformanceMetrics,
600        QualityMetrics as HybridQualityMetrics, QuantumExecutionConfig, QuantumExecutionResult,
601        RetryConfig, SelectionCriterion, StateEstimationMethod,
602    };
603    pub use crate::ibm::IBMCircuitConfig;
604    pub use crate::integrated_device_manager::{
605        DeviceInfo,
606        ExecutionStatus, // ExecutionStrategy, DeviceSelectionCriteria, ExecutionMode, DeviceCapabilityInfo,
607        // OptimizationMode, IntegratedAnalyticsConfig, HardwareCompatibilityInfo, DeviceHealthInfo,
608        IntegratedDeviceConfig,
609        IntegratedExecutionResult,
610        IntegratedQuantumDeviceManager,
611    };
612    pub use crate::job_scheduling::{
613        create_batch_job_config, create_high_priority_config, create_realtime_config,
614        AllocationStrategy as JobAllocationStrategy, BackendPerformance as JobBackendPerformance,
615        BackendStatus, ExecutionMetrics, JobConfig, JobExecution, JobId, JobPriority, JobStatus,
616        QuantumJob, QuantumJobScheduler, QueueAnalytics, ResourceRequirements, SchedulerEvent,
617        SchedulingParams, SchedulingStrategy,
618    };
619    // Temporarily disabled due to scirs2-graph API changes
620    // pub use crate::mapping_scirc2::{
621    //     InitialMappingAlgorithm, OptimizationObjective as MappingObjective, SciRS2MappingConfig,
622    //     SciRS2MappingResult, SciRS2QubitMapper, SciRS2RoutingAlgorithm,
623    // };
624    pub use crate::algorithm_marketplace::{
625        APIConfig, ActiveDeployment, AlgorithmDeploymentManager, AlgorithmDiscoveryEngine,
626        AlgorithmInfo, AlgorithmOptimizationEngine, AlgorithmRegistration, AlgorithmRegistry,
627        AlgorithmValidationService, AlgorithmVersioningSystem, DeploymentRequest, DeploymentStatus,
628        DiscoveryCriteria, MarketplaceAPI, MarketplaceConfig, MonetizationSystem,
629        OptimizationConfig as MarketplaceOptimizationConfig, PaymentMethod, Permission,
630        PricingStrategy, QuantumAlgorithmMarketplace, SubscriptionModel, UserSession, UserType,
631        ValidationConfig as MarketplaceValidationConfig, VersioningConfig,
632    };
633    pub use crate::mid_circuit_measurements::{
634        ExecutionStats, HardwareOptimizations, MeasurementEvent, MidCircuitCapabilities,
635        MidCircuitConfig, MidCircuitDeviceExecutor, MidCircuitExecutionResult, MidCircuitExecutor,
636        PerformanceMetrics as MidCircuitPerformanceMetrics, ValidationConfig, ValidationResult,
637    };
638    pub use crate::noise_model::{
639        CalibrationNoiseModel, GateNoiseParams, NoiseModelBuilder, QubitNoiseParams,
640        ReadoutNoiseParams,
641    };
642    pub use crate::noise_modeling_scirs2::{SciRS2NoiseConfig, SciRS2NoiseModeler};
643    // Temporarily disabled
644    // pub use crate::scirs2_noise_characterization_enhanced::{
645    //     EnhancedNoiseCharacterizer, EnhancedNoiseConfig, NoiseCharacterizationConfig,
646    //     NoiseModel, StatisticalMethod, AnalysisParameters, ReportingOptions,
647    //     ExportFormat, NoiseCharacterizationResult, MLNoiseInsights,
648    //     NoiseClassification, PredictedNoisePoint, NoisePredictions,
649    //     NoiseTrend, NoiseAlert, AlertType, Severity, NoiseReport,
650    //     NoiseSummary, ModelAnalysis, TemporalAnalysis, SpectralAnalysis,
651    //     CorrelationAnalysis, Recommendation, RecommendationType, Priority as NoisePriority,
652    //     NoiseVisualizations, PlotData, HeatmapData, Landscape3D,
653    //     PlotMetadata, PlotType, Visualization3DParams, SurfaceType,
654    // };
655    // Temporarily disabled
656    // pub use crate::scirs2_hardware_benchmarks_enhanced::{
657    //     EnhancedHardwareBenchmark, EnhancedBenchmarkConfig, BenchmarkConfig as EnhancedBenchmarkConfig2,
658    //     BenchmarkSuite as EnhancedBenchmarkSuite, PerformanceMetric, AnalysisMethod, ReportingOptions as BenchmarkReportingOptions,
659    //     ExportFormat as BenchmarkExportFormat, ComprehensiveBenchmarkResult,
660    //     DeviceInfo as BenchmarkDeviceInfo, BenchmarkSuiteResult, StatisticalAnalysis as BenchmarkStatisticalAnalysis,
661    //     SuiteStatistics, CorrelationMatrix, SignificanceTest, ConfidenceInterval,
662    //     PerformancePredictions, PredictedPerformance, DegradationTimeline,
663    //     DegradationThreshold, DegradationEvent, DegradationType, ImpactLevel,
664    //     MaintenanceRecommendation, MaintenanceType, ComparativeAnalysis,
665    //     HistoricalComparison, PerformanceTrend, HistoricalAnomaly, AnomalyType,
666    //     Severity as BenchmarkSeverity, DeviceComparison, IndustryPosition,
667    //     IndustryTier, BenchmarkRecommendation, RecommendationCategory as BenchmarkRecommendationCategory,
668    //     Priority as BenchmarkPriority, EffortLevel, BenchmarkReport,
669    //     ExecutiveSummary, SuiteReport, MetricReport, MetricTrend,
670    //     StatisticalSummary, PredictionSummary, ComparativeSummary,
671    //     BenchmarkVisualizations, HeatmapVisualization, TrendPlot, DataSeries,
672    //     PlotType as BenchmarkPlotType, ComparisonChart, ComparisonDataSet,
673    //     ChartType, RadarChart, RadarDataSet,
674    // };
675    pub use crate::optimization::{
676        CalibrationOptimizer, FidelityEstimator, OptimizationConfig, OptimizationResult,
677        PulseOptimizer,
678    };
679    pub use crate::parametric::{
680        BatchExecutionRequest, BatchExecutionResult, Parameter, ParameterExpression,
681        ParameterOptimizer, ParametricCircuit, ParametricCircuitBuilder, ParametricExecutor,
682        ParametricGate, ParametricTemplates,
683    };
684    pub use crate::photonic::{
685        create_photonic_device,
686        gate_based::{
687            OpticalElement, PhotonicCircuitCompiler, PhotonicCircuitImplementation,
688            PhotonicGateImpl, PhotonicGates, PhotonicHardwareConstraints, PhotonicQubitEncoding,
689            PhotonicQubitState, PhotonicResourceRequirements,
690        },
691        gates::{
692            BeamsplitterGate, CrossKerrGate, DisplacementGate, KerrGate, PhaseRotationGate,
693            SqueezingGate, TwoModeSqueezingGate,
694        },
695        validate_photonic_config, PhotonicCircuitResult, PhotonicClient, PhotonicConfig,
696        PhotonicDeviceConfig, PhotonicExecutionMetadata, PhotonicMeasurementData, PhotonicMode,
697        PhotonicQuantumDevice, PhotonicSystemType,
698    };
699    pub use crate::provider_capability_discovery::{
700        create_high_performance_discovery_config, create_provider_discovery_system,
701        CachedCapability, CapabilityRequirements, ComparisonResults, ConnectivityRequirement,
702        DiscoveryCommand, DiscoveryConfig, DiscoveryEvent, DiscoveryStrategy, FilteringConfig,
703        ProviderCapabilities, ProviderCapabilityDiscoverySystem, ProviderFeature, ProviderInfo,
704        ProviderRanking, ProviderType, ReportType as DiscoveryReportType, TopologyType,
705        VerificationConfig, VerificationStatus,
706    };
707    pub use crate::pulse::{
708        ChannelType, MeasLevel, MeasurementData, PulseBackend, PulseBuilder, PulseCalibration,
709        PulseInstruction, PulseLibrary, PulseResult, PulseSchedule, PulseShape, PulseTemplates,
710    };
711    pub use crate::qec::{
712        AdaptiveQECConfig, ErrorMitigationConfig, QECCodeType, QECConfig, QECMLConfig,
713        QECMonitoringConfig, QECOptimizationConfig, QECStrategy, SyndromeDetectionConfig,
714    };
715    pub use crate::quantum_ml::{
716        create_qaoa_accelerator, create_vqc_accelerator,
717        gradients::{
718            create_finite_difference_calculator, create_parameter_shift_calculator, GradientConfig,
719            GradientUtils, Observable as QMLObservable, ObservableTerm, QuantumGradientCalculator,
720        },
721        optimization::{
722            create_gradient_free_optimizer, create_gradient_optimizer, GradientBasedOptimizer,
723            GradientFreeOptimizer, ObjectiveFunction as QMLObjectiveFunction,
724            OptimizationResult as QMLOptResult, OptimizationStep, OptimizerConfig,
725            QuantumOptimizer, VQEObjectiveFunction,
726        },
727        quantum_neural_networks::{
728            create_pqc_classifier, create_qcnn_classifier, ClassificationResult,
729            EntanglingStrategy, InputEncoding, OutputDecoding, PQCNetwork, QConvLayer,
730            QNNArchitecture, QNNType, QPoolingLayer, QPoolingType, QuantumNeuralNetwork, QCNN, VQC,
731        },
732        training::{
733            create_supervised_trainer, create_training_data, BatchObjectiveFunction,
734            CrossEntropyLoss, LossFunction as QMLLossFunction, MSELoss, QuantumTrainer,
735            TrainingData as QMLTrainingData, TrainingMetrics, TrainingResult as QMLTrainingResult,
736        },
737        variational_algorithms::{
738            create_molecular_vqe, AdamOptimizer, EntanglingGateType, Hamiltonian,
739            HardwareEfficientAnsatz, MolecularHamiltonian, ParameterizedQuantumCircuit,
740            PauliOperator, PauliTerm, QAOAConfig, QAOAResult, QAOASolution, QuantumGate,
741            QuantumState, VQEConfig, VQEResult, VariationalAnsatz, VariationalOptimizer, QAOA, VQE,
742        },
743        CircuitStructure, GradientMethod as QMLGradientMethod, InferenceData, InferenceResult,
744        ModelExportFormat, ModelRegistry, NoiseResilienceLevel,
745        OptimizationResult as QMLOptimizationResult, OptimizerType, QMLAccelerator, QMLConfig,
746        QMLDiagnostics, QMLModel, QMLModelType, TrainingData, TrainingEpoch, TrainingResult,
747        TrainingStatistics,
748    };
749    pub use crate::quantum_ml_integration::{
750        create_high_performance_qml_config, create_qml_integration_hub,
751        AnomalyType as QMLAnomalyType, FrameworkBridge, HybridMLOptimizer, LossFunction,
752        MLFramework, MLPerformanceAnalytics, QMLArchitecture, QMLDataBatch, QMLDataPipeline,
753        QMLDataset, QMLInferenceResult, QMLIntegrationConfig, QMLMonitoringConfig,
754        QMLOptimizationConfig, QMLResourceConfig, QMLResourceRequirements, QMLTrainingConfig,
755        QMLTrainingOrchestrator, QuantumEncodingType, QuantumMLIntegrationHub,
756        QuantumNeuralNetworkExecutor, TrainingPriority,
757    };
758    pub use crate::quantum_system_security::{
759        AuthenticationMethod as SecurityAuthenticationMethod, AuthorizationModel,
760        ComplianceStandard, EncryptionProtocol, PostQuantumAlgorithm, QuantumSecurityConfig,
761        QuantumSecurityExecutionResult, QuantumSecurityExecutionStatus,
762        QuantumSystemSecurityFramework, RegulatoryFramework,
763        SecurityAnalyticsEngine as SecurityAnalyticsEngineType, SecurityClassification,
764        SecurityMLModel, SecurityObjective, SecurityOperation, SecurityOperationType,
765        SecurityStandard, ThreatDetectionAlgorithm,
766    };
767    pub use crate::routing_advanced::{
768        AdvancedQubitRouter, AdvancedRoutingResult, AdvancedRoutingStrategy, RoutingMetrics,
769        SwapOperation,
770    };
771    pub use crate::telemetry::{
772        create_high_performance_telemetry_config, create_telemetry_system, Alert, AlertConfig,
773        AlertManager, AlertSeverity, AlertState, AnalyticsConfig as TelemetryAnalyticsConfig,
774        AnomalyDetector, AnomalyResult, AnomalyType as TelemetryAnomalyType, ExportConfig,
775        HealthStatus, Metric, MetricCollector, MetricConfig, MetricType, MonitoringConfig,
776        QuantumTelemetrySystem, RealTimeMonitor, ReportType, RetentionConfig, SystemHealth,
777        SystemStatus, TelemetryAnalytics, TelemetryCommand, TelemetryConfig, TelemetryEvent,
778        TelemetryReport, TelemetryStorage, TrendDirection,
779    };
780    pub use crate::topological::{
781        anyons::{AnyonFactory, AnyonTracker, ChargeAlgebra},
782        braiding::{BraidGroupElement, BraidingMatrixCalculator, BraidingOperationManager},
783        device::{
784            create_fibonacci_device, create_ising_device, EnhancedTopologicalDevice,
785            TopologicalDeviceConfig, TopologicalDeviceDiagnostics,
786        },
787        error_correction::{
788            ErrorCorrectionConfig, RealTimeErrorMonitor, TopologicalErrorCorrector,
789        },
790        fusion::{FSymbolCalculator, FusionOperationExecutor, FusionTree},
791        topological_codes::{
792            ColorCode, ErrorCorrection, SurfaceCode, SyndromeMeasurement, TopologicalCodeType,
793            TopologicalDecoder,
794        },
795        Anyon, BraidingDirection, BraidingOperation, BraidingResult, FusionRuleSet,
796        NonAbelianAnyonType, TopologicalCapabilities, TopologicalCharge, TopologicalDevice,
797        TopologicalError, TopologicalOperation, TopologicalQubit, TopologicalQubitState,
798        TopologicalResult, TopologicalSystemStatus, TopologicalSystemType,
799    };
800    pub use crate::topology_analysis::{
801        create_standard_topology, AllocationStrategy, HardwareMetrics, TopologyAnalysis,
802        TopologyAnalyzer,
803    };
804    pub use crate::translation::{
805        validate_native_circuit, DecomposedGate, GateTranslator, HardwareBackend, NativeGateSet,
806        OptimizationStrategy, TranslationMethod, TranslationOptimizer, TranslationRule,
807        TranslationStats,
808    };
809    pub use crate::unified_benchmarking::{
810        BaselineMetric, BaselineMetricValue, BenchmarkEvent, PerformanceBaseline,
811        QuantumPlatform as UnifiedQuantumPlatform, UnifiedBenchmarkConfig, UnifiedBenchmarkResult,
812        UnifiedQuantumBenchmarkSystem,
813    };
814    pub use crate::unified_error_handling::{
815        ErrorCategory, ErrorSeverity, RecoveryStrategy, UnifiedDeviceError, UnifiedErrorContext,
816        UnifiedErrorHandler, UnifiedRetryConfig,
817    };
818    pub use crate::vqa_support::{
819        analysis::ConvergenceAnalysis,
820        circuits::ParametricCircuit as VQAParametricCircuit,
821        config::{
822            AdaptiveShotConfig, ConvergenceCriterion as VQAConvergenceCriterion, GradientMethod,
823            MultiStartConfig, OptimizationTrajectory, ResourceUtilization, VQAAlgorithmType,
824            VQAConfig, VQAHardwareAnalysis, VQAHardwareConfig, VQANoiseMitigation,
825            VQAOptimizationConfig, VQAOptimizer, VQAStatisticalAnalysis, VQAStatisticalConfig,
826            VQAValidationConfig, VQAValidationResults, WarmRestartConfig,
827        },
828        executor::{VQAExecutor, VQAResult},
829        objectives::ObjectiveFunction,
830    };
831    pub use crate::zero_noise_extrapolation::{
832        CircuitFolder, ExtrapolationFitter, ExtrapolationMethod, NoiseScalingMethod, Observable,
833        ZNECapable, ZNEConfig, ZNEExecutor, ZNEResult,
834    };
835}