import type { LanguageResources } from "../LanguageResources.js";
import type { FormatSettings } from "../utilities/format/FormatSettings.js";
/**
 * Options that can be passed to {@link LanguageResources.get}.
 */
export interface LanguageResource extends FormatSettings {
    /**
     * The unique key of the registered string.
     */
    key: string;
    /**
     * The locale of the string.
     */
    locale?: string;
}
/**
 * A registry of localized string resources.
 */
export declare class LanguageRegistry {
    /**
     * This locale is used if the specified locale is not configured for a given
     * key.
     */
    defaultLocale: string;
    private readonly _registeredStrings;
    private readonly localeKeyJoin;
    /**
     * Registers language resources for a locale.
     *
     * @param resources The language resources to add.
     */
    add(resources: LanguageResources): void;
    /**
     * Gets a string with a unique key and the current locale. Uses default
     * locale (inv) to look up string if it cannot be found.
     *
     * @param key The unique key of the registered string.
     * @param args The values to substitute into the format string.
     */
    get(key: string, ...args: unknown[]): string;
    /**
     * Gets a string with a unique key and locale. The current locale is used if
     * no locale is provided. Uses default locale (inv) to look up string if it
     * cannot be found.
     *
     * @param options The options object that contains the key and locale.
     * @param args The values to substitute into the format string.
     */
    get(options: LanguageResource, ...args: unknown[]): string;
    get(options: string | LanguageResource, ...args: unknown[]): string;
    /**
     * Whether a string is registered with the unique key and locale. The
     * current locale is used if no locale is provided. Uses default locale
     * (inv) to look up string if it cannot be found.
     *
     * @param options The options object that contains the key and locale.
     */
    has(options: string | LanguageResource): boolean;
    private _createUniqueKey;
    private _getLocales;
}
/**
 * Registers a set of language resources.
 *
 * @param resources The language resources to add.
 */
export declare function registerLanguageResources(resources: LanguageResources): void;
/**
 * Sets the default locale.
 *
 * @param locale The locale to set as the default.
 */
export declare function setDefaultLocale(locale: string): void;
/**
 * Gets a string with a unique key and the current locale. Uses default locale
 * (inv) to look up string if it cannot be found.
 *
 * @param key The unique key of the registered string.
 * @param args The values to substitute into the format string.
 */
export declare function translate(key: string | LanguageResource, ...args: unknown[]): string;
/**
 * Whether a string is registered with the unique key and locale. The current
 * locale is used if no locale is provided.
 *
 * @param key The key to look for.
 * @param locale The locale to look for.
 */
export declare function isRegisteredLanguageResource(key: string, locale?: string): boolean;
