#ifndef MDD_OUTPUT_H
#define MDD_OUTPUT_H
#include "IOutput.h"
#include "IModule.h"

namespace mdd {
    class Output : public IOutput{
    private:
        bool _changed;
        json _value;
        std::string _prefix;
        std::string _type;
        int _appendix;

    public:
        Output(const std::string& type, int appendix, const json& initial);
        const json& getValue() override;
        json& getValueInternal() override;
        bool hasChanged() override;
        void resetChange() override;
        std::string setType(std::string type) override;
        std::string getType() override;
        std::string getID() override;
        std::string setPrefix(std::string prefix) override;
        std::string setAppendix(int appendix) override;
    };
}
#endif
