#pragma once

#include "external/il2cpp/il2cpp-api-types.h"

namespace ta::adapters::hooks::items
{
    using EnsureFactoryHookFn = bool(*)();

    void set_no_slot_limits(bool enabled) noexcept;
    void set_increased_transfer_size(bool enabled) noexcept;
    [[nodiscard]] bool no_slot_limits_enabled() noexcept;
    [[nodiscard]] bool increased_transfer_size_enabled() noexcept;

    [[nodiscard]] Il2CppObject* item_factory() noexcept;
    void set_item_factory(Il2CppObject* factory) noexcept;
    void set_ensure_factory_hook(EnsureFactoryHookFn function) noexcept;
    [[nodiscard]] bool ensure_item_factory_available();
    void reset_item_factory() noexcept;
    void reset_state() noexcept;
}
