import { InterpolatableTranslationObject, DefaultLangChangeEvent, LangChangeEvent, TranslationChangeEvent, Language, InterpolatableTranslation } from "./translate.service";
import { Observable } from "rxjs";
type DeepReadonly<T> = {
    readonly [K in keyof T]: T[K] extends object ? DeepReadonly<T[K]> : T[K];
};
export declare class TranslateStore {
    private _onTranslationChange;
    private _onLangChange;
    private _onDefaultLangChange;
    private defaultLang;
    private currentLang;
    private translations;
    private languages;
    getTranslations(language: Language): DeepReadonly<InterpolatableTranslationObject>;
    setTranslations(language: Language, translations: InterpolatableTranslationObject, extend: boolean): void;
    getLanguages(): readonly Language[];
    getCurrentLanguage(): Language;
    getDefaultLanguage(): Language;
    /**
     * Changes the default lang
     */
    setDefaultLang(lang: string, emitChange?: boolean): void;
    setCurrentLang(lang: string, emitChange?: boolean): void;
    /**
     * An Observable to listen to translation change events
     * onTranslationChange.subscribe((params: TranslationChangeEvent) => {
     *     // do something
     * });
     */
    get onTranslationChange(): Observable<TranslationChangeEvent>;
    /**
     * An Observable to listen to lang change events
     * onLangChange.subscribe((params: LangChangeEvent) => {
     *     // do something
     * });
     */
    get onLangChange(): Observable<LangChangeEvent>;
    /**
     * An Observable to listen to default lang change events
     * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {
     *     // do something
     * });
     */
    get onDefaultLangChange(): Observable<DefaultLangChangeEvent>;
    addLanguages(languages: Language[]): void;
    hasTranslationFor(lang: string): boolean;
    deleteTranslations(lang: string): void;
    getTranslation(key: string, useDefaultLang: boolean): InterpolatableTranslation;
    protected getValue(language: Language, key: string): InterpolatableTranslation;
}
export {};
