#pragma once

#include <string>

namespace ta::adapters::eft::localization
{
    enum class EftStringCase : int
    {
        None = 0,
        Upper = 1,
        Lower = 2
    };

    class EftLocalizationService
    {
    public:
        static std::string trader_name(const std::string& trader_id);
        static std::string condition_text(const std::string& condition_id,
                                          const std::string& quest_id);
        static std::string item_name(const std::string& template_id);
        static std::string item_short_name(const std::string& template_id);
        static std::string localized_text(
            const std::string& key,
            EftStringCase string_case = EftStringCase::None);

        // Call when the game language may have changed. Cached text is also
        // time-bounded so external language changes eventually become visible.
        static void invalidate_language_cache() noexcept;

        // Clears both localized values and resolved IL2CPP metadata.
        static void reset_session() noexcept;
    };
}
