#pragma once

#include <optional>
#include <string>

struct Il2CppObject;

namespace ta::adapters::eft::items
{
    struct CreatedItemOptions
    {
        int amount = 1;
        bool override_max_amount = false;
        bool found_in_raid = true;
        int max_stack_size = 1;
    };

    class ItemFactoryService final
    {
    public:
        [[nodiscard]] static Il2CppObject* create_preset_item(const std::string& template_id);
        [[nodiscard]] static bool configure_created_item(Il2CppObject* item, const CreatedItemOptions& options);
        [[nodiscard]] static std::optional<bool> is_quest_item(Il2CppObject* item);
    };
}
