#pragma once

namespace ta::adapters::il2cpp::exports
{
    struct Il2CppApiTable
    {
        void* il2cpp_class_from_name = nullptr;
        void* il2cpp_class_get_nested_types = nullptr;
        void* il2cpp_class_get_field_from_name = nullptr;
        void* il2cpp_class_get_method_from_name = nullptr;
        void* il2cpp_domain_get = nullptr;
        void* il2cpp_domain_get_assemblies = nullptr;
        void* il2cpp_field_static_get_value = nullptr;
        void* il2cpp_string_new = nullptr;
        void* il2cpp_type_get_object = nullptr;

        [[nodiscard]] bool complete() const noexcept;
    };

    [[nodiscard]] const Il2CppApiTable& api() noexcept;
    bool init();
}
