import { Observable } from 'rxjs';
import { LanguageConfig } from '../config/translation.config';
import { SeniorTokenService } from './senior-token.service';
import * as i0 from "@angular/core";
export type SupportedLanguage = 'pt-BR' | 'en-US' | 'es-ES';
export interface TranslationLoader {
    loadTranslations(language: string): Promise<any>;
}
export declare class TranslationService {
    private seniorTokenService;
    private currentLanguage;
    private translations;
    private loadingLanguages;
    private translationLoader?;
    constructor(seniorTokenService: SeniorTokenService, loader?: TranslationLoader);
    get currentLanguage$(): Observable<SupportedLanguage>;
    getCurrentLanguage(): SupportedLanguage;
    setLanguage(language: SupportedLanguage): Promise<void>;
    waitForTranslations(): Promise<void>;
    /**
     * Verifica se as traduções do idioma atual estão carregadas
     */
    isLanguageLoaded(language?: SupportedLanguage): boolean;
    translate(key: string, params?: {
        [key: string]: any;
    }): string;
    /**
     * Busca tradução em estrutura aninhada ou plana
     */
    private getNestedTranslation;
    private loadTranslations;
    private doLoadTranslations;
    /**
     * Carrega traduções internas da biblioteca
     */
    private loadLibraryTranslations;
    private loadStoredLanguage;
    private replaceParams;
    getSupportedLanguages(): LanguageConfig[];
    /**
     * Força o recarregamento das traduções (útil para desenvolvimento)
     */
    reloadTranslations(): Promise<void>;
    /**
     * Obtém todas as chaves de tradução carregadas
     */
    getLoadedKeys(): string[];
    /**
     * Verifica se um código de idioma é suportado
     */
    private isValidLanguage;
    /**
     * Monitora mudanças no token Senior para atualizar idioma automaticamente
     */
    private watchTokenChanges;
    /**
     * Força atualização do idioma baseado no token atual
     */
    syncWithToken(): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<TranslationService, [null, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<TranslationService>;
}
