class NoisyQuantum

#include <NoiseModel.h>

class NoisyQuantum
{
public:
    // typedefs

    typedef std::map<std::string, size_t> qubit_quantum_error_map_t;
    typedef std::map<GateType, qubit_quantum_error_map_t> gate_noisy_map_t;

    // methods

    bool sample_noisy_op(
        GateType type,
        const Qnum& qns,
        NOISE_MODEL& model,
        NoiseOp& ops,
        Qnum& effect_qubits,
        RandomEngine19937& rng
        );

    bool sample_noisy_op(
        GateType type,
        const Qnum& qns,
        NoiseOp& ops,
        Qnum& effect_qubits,
        RandomEngine19937& rng
        );

    bool sample_noisy_op(
        size_t qn,
        std::vector<std::vector<double>>& readout,
        RandomEngine19937& rng
        );

    void add_quamtum_error(
        GateType type,
        const QuantumError& quantum_error,
        const QuantumError::noise_qubits_t& noise_qubits = {}
        );
};