#pragma once

#include "data/config/ConfigChannel.h"

namespace inertia
{

struct INERTIA_API AbstractConfig
{
protected:
	AbstractConfig();
	AbstractConfig(uint8_t const* in);
	AbstractConfig(std::wstring const& argString);
	virtual ~AbstractConfig();
	AbstractConfig(AbstractConfig const&) = default;
	AbstractConfig& operator = (AbstractConfig const&) = default;

public:
	virtual void GetBytes(std::vector<uint8_t>& out) const = 0;
	virtual ConfigType GetConfigType() const = 0;
	virtual const std::wstring ToString() const = 0;
};

}
