import { MissingTranslationHandler, MissingTranslationHandlerParams, TranslateLoader } from '@ngx-translate/core';
import { RuntimeConfigLoader, RuntimeConfigLoadResult, RuntimeUpdateEvent } from '@sixbell-telco/sdk/utils/runtime-config';
import { LanguageDefinition, TranslationConfig } from './models/translation';
import * as i0 from "@angular/core";
export declare function createLanguage(config: LanguageDefinition): LanguageDefinition;
export declare function extendDefaultLanguages(additionalLanguages: LanguageDefinition[]): LanguageDefinition[];
export declare class PlaceholderMissingTranslationHandler implements MissingTranslationHandler {
    handle(params: MissingTranslationHandlerParams): string;
}
export declare class TranslationService {
    private readonly translate;
    private readonly storageService;
    private readonly domService;
    private readonly logger;
    private readonly destroyRef;
    private initialized;
    private currentTranslationPaths;
    private translationHttpClient;
    private hasAppliedInitialLanguage;
    private isUsingFallbackConfig;
    private prefetchLanguages;
    private isApplyingRuntimeConfig;
    private runtimeHash;
    private runtimeLoader?;
    private runtimeMeta?;
    private pendingUpdatedLanguages;
    private bootstrapValidated;
    private readonly translationTick;
    readonly updateAvailable: import("@angular/core").WritableSignal<boolean>;
    readonly lastRefreshFailed: import("@angular/core").WritableSignal<boolean>;
    private config;
    readonly currentLanguage: import("@angular/core").WritableSignal<string>;
    readonly onLanguageChange$: import("rxjs").Observable<import("@ngx-translate/core").LangChangeEvent>;
    readonly onLanguageChange: import("@angular/core").WritableSignal<number>;
    readonly ready: import("@angular/core").WritableSignal<boolean>;
    readonly changes: import("@angular/core").Signal<number>;
    constructor();
    configure(config: TranslationConfig): void;
    private resolveStoredLanguage;
    setRuntimeConfig(config: TranslationConfig): Promise<void>;
    enablePrefetch(enable: boolean): void;
    private loadSelectedLanguage;
    private prefetchRemainingLanguages;
    private loadLanguageResources;
    private queueUpdatedLanguage;
    private reloadLanguages;
    refreshInactiveLanguages(): Promise<void>;
    private validateBootstrapCache;
    private initializeFromStorage;
    private applyLanguage;
    setLanguage(lang: string): void;
    getCurrentLanguage(): string;
    getAvailableLanguages(): string[];
    getDefaultLanguage(): string;
    instant(key: string, params?: object | undefined): string;
    get(key: string, params?: object | undefined): import("rxjs").Observable<any>;
    stream(key: string, params?: object | undefined): import("rxjs").Observable<any>;
    getAvailableLanguagesConfig(): LanguageDefinition[];
    getAvailableLanguageCodes(): string[];
    getLanguageByCode(code: string): LanguageDefinition | undefined;
    getLanguageDisplayName(code: string): string;
    getLocalizedLanguageName(code: string): string;
    isReady(): import("@angular/core").Signal<boolean>;
    waitForTranslations(timeoutMs?: number): Promise<void>;
    init(): void;
    applyRuntimeConfig(result: RuntimeConfigLoadResult<TranslationConfig>, loader?: RuntimeConfigLoader<TranslationConfig>): Promise<void>;
    setRuntimeLoader(loader: RuntimeConfigLoader<TranslationConfig>, hash?: string): void;
    checkForTranslationUpdates(loader: RuntimeConfigLoader<TranslationConfig>, event?: RuntimeUpdateEvent): Promise<void>;
    refreshTranslation(loader?: RuntimeConfigLoader<TranslationConfig>): Promise<void>;
    withTranslationsReady<T>(fn: () => T): T | undefined;
    private getOrCreateHttpClient;
    private fetchTranslation;
    createTranslateLoader(): TranslateLoader;
    private isTranslationObject;
    private deepMergeTranslations;
    static ɵfac: i0.ɵɵFactoryDeclaration<TranslationService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<TranslationService>;
}
