#pragma once

#include "data/node.h"

namespace Xybrid::Data {
    class AudioPort : public Port {

    public:
        float* bufL;
        float* bufR;

        AudioPort() = default;
        ~AudioPort() override = default;

        Port::DataType dataType() const override { return Port::Audio; }

        void pull() override;
    };

    class CommandPort : public Port {

    public:
        uint8_t* data;
        size_t dataSize;

        CommandPort() = default;
        ~CommandPort() override = default;

        Port::DataType dataType() const override { return Port::Command; }
        bool singleInput() const override { return true; }

        void pull() override;

        /// Push a data buffer
        void push(std::vector<uint8_t>);
    };
}
