#pragma once

#include <cstddef>

#include "adapters/il2cpp/Il2CppObjectInstance.h"
#include "features/items/contracts/ItemCommandTypes.h"

namespace ta::adapters::eft::items
{
    class ItemActions final
    {
    public:
        [[nodiscard]] static bool execute_stack(const ta::features::items::contracts::ItemCreateRequest& request,
                            ta::adapters::il2cpp::Il2CppObjectInstance game_world_instance,
                            ta::adapters::il2cpp::Il2CppObjectInstance main_player);

    private:
        [[nodiscard]] static bool place_created_item(const ta::features::items::contracts::ItemCreateRequest& request,
                                                     ta::adapters::il2cpp::Il2CppObjectInstance game_world_instance,
                                                     ta::adapters::il2cpp::Il2CppObjectInstance main_player,
                                                     Il2CppObject* item);
    };
}
