import { Observable } from 'rxjs';
import { L10nLocale, L10nProvider } from '../models/types';
import { L10nConfig } from '../models/l10n-config';
import { L10nCache } from './l10n-cache';
import { L10nStorage } from './l10n-storage';
import { L10nLocaleResolver } from './l10n-locale-resolver';
import { L10nTranslationFallback } from './l10n-translation-fallback';
import { L10nTranslationLoader } from './l10n-translation-loader';
import { L10nTranslationHandler } from './l10n-translation-handler';
import { L10nMissingTranslationHandler } from './l10n-missing-translation-handler';
import * as i0 from "@angular/core";
export declare class L10nTranslationService {
    private config;
    private locale;
    private cache;
    private storage;
    private resolveLocale;
    private translationFallback;
    private translationLoader;
    private translationHandler;
    private missingTranslationHandler;
    /**
     * The translation data: {language: {key: value}}
     */
    data: {
        [key: string]: any;
    };
    private translation;
    private error;
    constructor(config: L10nConfig, locale: L10nLocale, cache: L10nCache, storage: L10nStorage, resolveLocale: L10nLocaleResolver, translationFallback: L10nTranslationFallback, translationLoader: L10nTranslationLoader, translationHandler: L10nTranslationHandler, missingTranslationHandler: L10nMissingTranslationHandler);
    /**
     * Gets the current locale.
     */
    getLocale(): L10nLocale;
    /**
     * Changes the current locale and load the translation data.
     * @param locale The new locale
     */
    setLocale(locale: L10nLocale): Promise<void>;
    /**
     * Fired every time the translation data has been loaded. Returns the locale.
     */
    onChange(): Observable<L10nLocale>;
    /**
     * Fired when the translation data could not been loaded. Returns the error.
     */
    onError(): Observable<any>;
    /**
     * Translates a key or an array of keys.
     * @param keys The key or an array of keys to be translated
     * @param params Optional parameters contained in the key
     * @param language The current language
     * @return The translated value or an object: {key: value}
     */
    translate(keys: string | string[], params?: any, language?: string): string | any;
    /**
     * Checks if a translation exists.
     * @param key The key to be tested
     * @param language The current language
     */
    has(key: string, language?: string): boolean;
    /**
     * Gets the language direction.
     */
    getLanguageDirection(language?: string): 'ltr' | 'rtl' | undefined;
    /**
     * Gets available languages.
     */
    getAvailableLanguages(): string[];
    /**
     * Initializes the service
     * @param providers An array of L10nProvider
     */
    init(providers?: L10nProvider[]): Promise<void>;
    /**
     * Can be called at every translation change.
     * @param providers An array of L10nProvider
     * @param locale The current locale
     */
    loadTranslations(providers?: L10nProvider[], locale?: L10nLocale): Promise<void>;
    /**
     * Can be called to add translation data.
     * @param data The translation data {key: value}
     * @param language The language to add data
     */
    addData(data: {
        [key: string]: any;
    }, language: string): void;
    /**
     * Adds providers to configuration
     * @param providers The providers of the translations data
     */
    addProviders(providers: L10nProvider[]): void;
    private getTranslation;
    private handleError;
    private releaseTranslation;
    static ɵfac: i0.ɵɵFactoryDeclaration<L10nTranslationService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<L10nTranslationService>;
}
