use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PerformanceConstraints {
pub max_depth: Option<usize>,
pub max_gates: Option<usize>,
pub max_execution_time: Option<f64>,
pub min_fidelity: Option<f64>,
pub max_transpilation_time: Option<f64>,
}
impl Default for PerformanceConstraints {
fn default() -> Self {
Self {
max_depth: None,
max_gates: None,
max_execution_time: None,
min_fidelity: Some(0.95),
max_transpilation_time: Some(60.0),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ExportFormat {
QASM3,
OpenQASM,
Cirq,
Qiskit,
PyQuil,
Braket,
QSharp,
Custom,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TranspilationPass {
Decomposition(DecompositionStrategy),
Routing(RoutingStrategy),
Optimization(OptimizationStrategy),
ErrorMitigation(MitigationStrategy),
Custom(String),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum DecompositionStrategy {
KAK,
Euler,
Optimal,
HardwareOptimized,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum RoutingStrategy {
SABRE,
Stochastic,
LookAhead,
MachineLearning,
Hybrid,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum OptimizationStrategy {
GateCancellation,
GateFusion,
Commutation,
TemplateMatching,
Peephole,
All,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum MitigationStrategy {
ZNE,
PEC,
SymmetryVerification,
VirtualDistillation,
DynamicalDecoupling,
}