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