/**
 * @packageDocumentation
 * @module translate
 */
import { HttpClient } from '@angular/common/http';
import { OnDestroy } from '@angular/core';
import { Observable } from 'rxjs';
import { Locale } from './constants';
import { TranslateKey, Translation, Translations } from './types';
export declare class TranslateService<L extends string = Locale> implements OnDestroy {
    private readonly locales;
    locale: L;
    defaultLocale: L;
    private readonly loose;
    private readonly baseHref;
    private remoteTranslationsList;
    private readonly remoteUrl;
    private readonly http;
    readonly locale$: Observable<L>;
    readonly defaultLocale$: Observable<L>;
    private _remoteLoaded?;
    get remoteLoaded(): boolean;
    readonly remoteLoaded$: Observable<boolean | undefined>;
    private readonly destroy$$;
    private readonly translationsList;
    constructor(locales: L[], locale: L, defaultLocale: L, translationsList: Array<Readonly<Translations<L>>>, loose: boolean, baseHref: string, remoteTranslationsList: Array<Readonly<Translations<L>>>, remoteUrl: string, http: HttpClient);
    /** @ignore */
    ngOnDestroy(): void;
    /**
     * @param key - 翻译key
     * @param data - 根据翻译上下文数据获取翻译内容，翻译项不存在直接返回 key 文本
     * @param ignoreNonExist - 开发环境是否忽视不存在的翻译项
     */
    get(key: TranslateKey<L>, data?: unknown, ignoreNonExist?: boolean): string;
    /**
     * 直接返回翻译文本模板
     * @param key - 翻译key
     * @param ignoreNonExist - 开发环境是否忽视不存在的翻译项
     */
    getRaw(key: TranslateKey<L>, ignoreNonExist?: boolean): string;
    /**
     * 根据 `locales` 循环切换当前区域设置
     */
    toggleLocale(): void;
    /**
     * 手动添加语言包
     */
    addTranslations(translations: Translations<L>): void;
    /**
     * 手动添加语言包
     */
    addRemoteTranslations(remoteUrl: string): void;
    /**
     * 从远程 url 模板和区域获取翻译包
     */
    fetchTranslation(remoteUrl: string): Observable<Translations<L>>;
    fetchTranslation(remoteUrl: string, locale: string): Observable<Translation>;
    private _watchLocale;
    private _getLooseLocale;
    private _getValue;
    private _getWithFallback;
    private _getBase;
    private _get;
    private _compareTranslationKeys;
    private _compareKeys;
}
