use crate::CircuitWrapper;
use num_complex::Complex64;
use numpy::{PyArray2, ToPyArray};
use pyo3::exceptions::{PyRuntimeError, PyValueError};
use pyo3::prelude::*;
use pyo3::types::PySet;
use qoqo_calculator::CalculatorFloat;
use qoqo_calculator_pyo3::convert_into_calculator_float;
use qoqo_calculator_pyo3::CalculatorFloatWrapper;
use qoqo_macros::*;
use roqoqo::operations::*;
#[cfg(feature = "json_schema")]
use roqoqo::ROQOQO_VERSION;
use std::collections::HashMap;
#[allow(clippy::upper_case_acronyms)]
#[wrap(
Operate,
Rotate,
OperateMultiQubit,
OperateGate,
OperateMultiQubitGate,
JsonSchema
)]
pub struct MultiQubitMS {
qubits: Vec<usize>,
theta: CalculatorFloat,
}
#[allow(clippy::upper_case_acronyms)]
#[wrap(
Operate,
Rotate,
OperateMultiQubit,
OperateGate,
OperateMultiQubitGate,
JsonSchema
)]
pub struct MultiQubitZZ {
qubits: Vec<usize>,
theta: CalculatorFloat,
}