<?php
namespace Claromentis\Core\Localization;

$GLOBALS["__65da1b1ec2d66" . "53e8a0ab7848e53" . "6215"] = (@$GLOBALS["__65da1b1ec2" . "d6653e8a0ab7" . "848e536215"] ?: array()) + array("_d706c160e45bf7434fff82a5976f0e" . "19" => base64_decode("YXJyYX" . "lfa2V5" . "cw=="), "_1bee3d4d1d0df49e0fcf8b9ed2ecb8" . "fa" => base64_decode("ZXhwb" . "G9kZQ" . "=="), "_bd71c3b5c20" . "1fc11db82ed1" . "4ce424de5" => base64_decode("aW5fYX" . "JyYXk="));
use Claromentis\Core\Localization\Exception\TypeException;
class Api
{
    public const LM_DELIMITER = '.';
    public const LT_DELIMITER = ':';
    public const TYPES = ['lm', 'lt'];
    
    
    private $languageList;
    
    
    private $localizationListCallable;
    public function __construct(callable $_62921b377c74b1837422bf0e6a3a0060, LanguageList $_961aa0149b6c246b79b1d24963d81881)
    {
        $this->localizationListCallable = $_62921b377c74b1837422bf0e6a3a0060;
        $this->languageList = $_961aa0149b6c246b79b1d24963d81881;
    }
    
    
    
    
    
    
    
    public function isBuiltInLanguageKey(string $_66824e0309bb76c78bd2bbd5fda8d3d8) : bool
    {
        return $GLOBALS["__65da1b1ec2d6653e8a0ab7848e53" . "6215"]["_bd71c3b" . "5c201fc1" . "1db82ed1" . "4ce424de" . "5"]($_66824e0309bb76c78bd2bbd5fda8d3d8, $GLOBALS["__65da1b1ec2d6653e8a0a" . "b7848e536215"]["_d706c160e45bf7434fff82" . "a5976f0e19"]($this->languageList->GetBuiltinLanguages()));
    }
    
    
    
    
    
    
    public function getAllProviderNames() : array
    {
        return ($this->localizationListCallable)();
    }
    
    
    
    
    
    
    
    
    public function getDomainFromKey(string $key, string $_422ff4c94d67d939c8e583132d0e411c = Api::LM_DELIMITER) : string
    {
        return $GLOBALS["__65da1b1ec2d6653e8a0ab" . "7848e536215"]["_1bee3d4d1d0df4" . "9e0fcf8b9ed2ecb" . "8fa"]($_422ff4c94d67d939c8e583132d0e411c, $key, 2)[0];
    }
    
    
    
    
    
    
    
    
    
    public function getTypeDelimiter(string $type) : string
    {
        switch ($type) {
            case self::TYPES[0]:
                return self::LM_DELIMITER;
            case self::TYPES[1]:
                return self::LT_DELIMITER;
            default:
                throw TypeException::invalidType($type);
        }
    }
}