#pragma once

#include <cstddef>

#include "adapters/il2cpp/Il2CppObjectInstance.h"

namespace ta::adapters::eft::items
{
    class ItemPlacementService final
    {
    public:
        [[nodiscard]] static bool place_item_in_grids(Il2CppObject* slot_item, Il2CppObject* item);
        [[nodiscard]] static ta::adapters::il2cpp::Il2CppObjectInstance get_inventory(ta::adapters::il2cpp::Il2CppObjectInstance main_player);
        [[nodiscard]] static bool place_in_equipment(ta::adapters::il2cpp::Il2CppObjectInstance main_player,
                                                     Il2CppObject* item,
                                                     int slot_index,
                                                     bool overwrite_slot);
        [[nodiscard]] static bool place_in_quest_inventory(ta::adapters::il2cpp::Il2CppObjectInstance main_player, Il2CppObject* item);
        [[nodiscard]] static bool place_in_container_slots(ta::adapters::il2cpp::Il2CppObjectInstance main_player, Il2CppObject* item);
        [[nodiscard]] static bool place_into_transit_stash(ta::adapters::il2cpp::Il2CppObjectInstance game_world_instance,
                                                           ta::adapters::il2cpp::Il2CppObjectInstance main_player,
                                                           Il2CppObject* item);
    };
}
