Skip to main content

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