import { type IEventEmitter } from '@breadstone/mosaik-elements';
interface ITranslation {
    [key: string]: string | ITranslation;
}
export declare namespace Translator {
    const DEFAULT_LANGUAGE: string;
    const DEFAULT_LANGUAGE_RESOLVER: (() => string);
}
/**
 * A translator is used to translate keys into strings.
 *
 * @public
 */
export declare class TranslatorService {
    private readonly _languageChanged;
    private _translations;
    private _currentLanguage;
    constructor(defaultLangOrFn?: string | (() => string));
    /**
     * Gets or sets the `currentLanguage` property.
     *
     * @public
     */
    get currentLanguage(): string;
    set currentLanguage(value: string);
    /**
     * Returns the `languageChanged` property.
     *
     * @public
     * @readonly
     */
    get languageChanged(): IEventEmitter<string>;
    /**
     * Adds the given translations for the given language.
     *
     * @public
     */
    addTranslations(lang: string, translations: ITranslation): void;
    /**
     * Translates the given key.
     *
     * @public
     */
    translate(key: string, ...args: Array<unknown>): string;
    /**
     * Gets the translation for the given key.
     * The splitter is used to split the key into parts. Aktually the noting is used as splitter.
     *
     * @private
     */
    private getTranslation;
    /**
     * Formats the given string with the given arguments.
     *
     * @private
     */
    private format;
}
/**
 * @public
 */
export declare class TranslatorServiceLocator {
    private static _current;
    static get current(): TranslatorService;
    static isSet(): boolean;
    static set(current: TranslatorService): void;
}
export {};
//# sourceMappingURL=TranslatorService.d.ts.map