import { Observable } from 'rxjs';
import { DsfrConfig } from '../config/config.model';
import { LangService, LoggerService } from '../services';
import { DsfrI18nExtensionBundle } from './i18n-types';
import * as i0 from "@angular/core";
/**
 * Maintient le code langue de l'application et signale le changement de langue.
 */
export declare class DsfrI18nService {
    private readonly logger;
    private readonly langService;
    /** Observable au changement de la langue (fin du chargement des nouveaux bundles) */
    completeLangChange$: Observable<string>;
    private completeLangChange;
    /**
     * L'ensemble des bundles de libellés gérés par le service I18N.
     */
    private bundles;
    /**
     * Messages (JSON) de la langue courante.
     */
    private currentBundle;
    constructor(config: DsfrConfig, logger: LoggerService, langService: LangService);
    /**
     * Retourne la valeur de traduction dans `messages` partir d'un path json.
     * @param jsonPath le chemin dans le fichier de messages json de la langue courante
     * @return le message et si non trouvé le path json
     */
    t(jsonPath: string): string;
    /**
     * Permet d'étendre les ressources d'internationalisation sur un périmètre de langue défini.
     *
     * @param lang Le code langue sur deux caractères en minuscules.
     * @param extension Le bundle contenant l'ensemble des libellés traduits dans la langue indiquée.
     */
    extendsLabelsBundle(lang: string, extension: DsfrI18nExtensionBundle): void;
    /**
     * Démarre l'abonnement au changement de langue.
     */
    protected startSubscribe(): void;
    /**
     * Charge le bon fichier de messages selon le code langue, messages en anglais si non trouvé.
     */
    protected onLangChange(code: string): void;
    /**
     * Si message non trouvé, retourne le message en anglais pour les langues autres que les langues par défaut.
     */
    protected messageNotFound(codeLang: string, jsonPath: string): string;
    /**
     * Lit tous les fichiers de la configuration
     * @param i18nconfig Configuration i18n
     * @return événement complet sur l'observable quand tous les fichiers ont été lus, erreur ou non
     */
    private readMessagesFiles;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrI18nService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DsfrI18nService>;
}
