#ifndef MACHINE_CONFIG_HPP_
#define MACHINE_CONFIG_HPP_

#include <ItemStack/ItemStack.hpp>
#include <Serialize/Serialize.hpp>

struct MachineConfig
{
    /**
     * @brief Name of the machine's interface block.
     */
    std::string blockName;

    /**
     * @brief Label to show in tooltips and descriptions.
     */
    std::string label;

    /**
     * @brief Items which must be consumed to apply the full configuration.
     */
    std::vector<ItemStack> consumedItems;

    /**
     * @brief Data for each component of the machine.
     */
    std::unordered_map<std::string, std::vector<uint8_t>> components;
};

DERIVE_STRUCT_SERIALIZER(MachineConfig, self.blockName, self.label, self.consumedItems, self.components);

#endif