#pragma once

#include <memory>

class QuantumCircuitElement
{
public:
    enum class Type
    {
        INPUT_TERMINAL,
        OUTPUT_TERMINAL,
        WIRE,
        GATE,
        UNKNOWN
    };

    virtual ~QuantumCircuitElement() = default;

    virtual bool isFullyConnected() const = 0;

    virtual QuantumCircuitElement::Type getType() const = 0;
};