import { OnDestroy, OnInit, EventEmitter, AfterViewInit, SimpleChanges, OnChanges } from '@angular/core';
import { EuiLanguage } from '@eui/core';
import { EuiAppShellService } from '@eui/core';
import * as i0 from "@angular/core";
/**
 * @description A component that provides language selection functionality for applications.
 *
 * This component displays available languages and allows users to select their preferred language.
 * It adapts its display based on the number of available languages:
 * - For 1 language: No selector is shown
 * - For 2-3 languages: Displays a dropdown menu
 * - For 4+ languages: Opens a modal dialog with the full list
 *
 * The component integrates with EuiAppShellService to manage language state
 * and uses TranslateService for localization.
 */
export declare class EuiLanguageSelectorComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {
    get cssClasses(): string;
    languages: EuiLanguage[];
    selectedLanguage: EuiLanguage;
    /**
     * @property hasLanguageSelection - Enables/disables language selection functionality.
     * @default true
     */
    hasLanguageSelection: boolean;
    /**
     * @property isToolbarSelector - When true, applies styling for toolbar integration.
     * @default false
     */
    isToolbarSelector: boolean;
    /**
     * @property euiPrimary - When true, applies primary styling.
     * @default false
     */
    euiPrimary: boolean;
    /**
     * @property ariaLabel - Accessibility label for the language selector.
     * If not provided, defaults to "Change Language - Current Language: [selected language]"
     */
    ariaLabel: string;
    /**
     * @event languageSelectorClick - Emitted when the language selector is clicked.
     */
    languageSelectorClick: EventEmitter<null>;
    appShellService: EuiAppShellService;
    private destroy$;
    private isAriaLabelChanged;
    private cd;
    private euiDialogService;
    private translateService;
    private elRef;
    /**
     * returns true if there are at least one and max four languages.
     */
    get isShowDropDown(): boolean;
    /**
     * returns true if there are at least five languages.
     */
    get isShowModal(): boolean;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    /**
     * Updates the active language in the application.
     * @param language - The language object to set as active.
     */
    onLanguageChanged(language: EuiLanguage): void;
    /**
     * Opens a modal dialog with the full list of available languages.
     * @param [titleLabel] - Optional custom title for the modal.
     */
    onOpen(titleLabel?: string): void;
    onClick(): void;
    /**
     * Retrieves a language object by its code.
     *
     * @param languageCode - Two-character language code.
     */
    protected getLanguage(languageCode: string): EuiLanguage;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiLanguageSelectorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EuiLanguageSelectorComponent, "eui-language-selector", never, { "hasLanguageSelection": { "alias": "hasLanguageSelection"; "required": false; }; "isToolbarSelector": { "alias": "isToolbarSelector"; "required": false; }; "euiPrimary": { "alias": "euiPrimary"; "required": false; }; "ariaLabel": { "alias": "aria-label"; "required": false; }; }, { "languageSelectorClick": "languageSelectorClick"; }, never, never, true, never>;
    static ngAcceptInputType_hasLanguageSelection: unknown;
    static ngAcceptInputType_isToolbarSelector: unknown;
    static ngAcceptInputType_euiPrimary: unknown;
}
//# sourceMappingURL=language-selector.component.d.ts.map