quantrs2_device/
lib.rs

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