// This Header is auto generated by BDSLiteLoader Toolchain
#pragma once
#define AUTO_GENERATED
#include "../Global.h"
#include "Json.hpp"

#define BEFORE_EXTRA

#undef BEFORE_EXTRA

class Option {

#define AFTER_EXTRA

#undef AFTER_EXTRA
#ifndef DISABLE_CONSTRUCTOR_PREVENTION_OPTION
public:
    class Option& operator=(class Option const &) = delete;
    Option(class Option const &) = delete;
    Option() = delete;
#endif

public:
    /*0*/ virtual ~Option();
    /*1*/ virtual void save(std::vector<struct std::pair<std::string, std::string>> &) = 0;
    /*2*/ virtual void load(std::string const &) = 0;
    /*3*/ virtual void load(class std::map<std::string, std::string, struct std::less<std::string>, class std::allocator<struct std::pair<std::string const, std::string>>> &);
    /*4*/ virtual void load(class Json::Value const &);
#ifdef ENABLE_VIRTUAL_FAKESYMBOL_OPTION
#endif
    MCAPI Option(enum OptionID, enum OptionOwnerType, enum OptionResetFlags, std::string const &, std::string const &, enum OptionType);
    MCAPI bool getBool() const;
    MCAPI void notifyOptionValueChanged(bool);
    MCAPI void registerLock(void *, class std::function<bool (void)>);
    MCAPI bool unregisterObserver(void *);
    MCAPI static bool read(std::string const &, bool &);

//private:
    MCAPI void _updatePropertyVector(std::vector<struct std::pair<std::string, std::string>> &, std::string const &);

private:

};