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