pub trait OptimizationStrategy:
Send
+ Sync
+ Debug {
// Required methods
fn strategy_name(&self) -> &str;
fn applicable_to(&self, backend_type: &HardwareType) -> bool;
fn optimize_operation(
&self,
operation: &dyn GateOp,
backend: &dyn QuantumHardwareBackend,
) -> Result<Box<dyn GateOp>, QuantRS2Error>;
fn optimize_circuit(
&self,
circuit: &[Box<dyn GateOp>],
backend: &dyn QuantumHardwareBackend,
) -> Result<Vec<Box<dyn GateOp>>, QuantRS2Error>;
}