import * as _angular_core from '@angular/core';
import { AfterViewInit, OnInit } from '@angular/core';
import { EuiLanguage, EuiAppShellService } from '@eui/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.
 *
 * @usageNotes
 * ### Basic Usage
 * ```html
 * <eui-language-selector></eui-language-selector>
 * ```
 *
 * ### In Toolbar
 * ```html
 * <eui-toolbar>
 *   <eui-language-selector [isToolbarSelector]="true"></eui-language-selector>
 * </eui-toolbar>
 * ```
 *
 * ### Accessibility
 * - Provides default `aria-label` indicating current language
 * - Custom `aria-label` can be set via input
 * - Keyboard-navigable dropdown and modal interfaces
 *
 * ### Notes
 * - Automatically detects toolbar parent and adjusts styling
 * - a Language list is managed through EuiAppShellService
 * - Supports 2-3 languages via dropdown, 4+ via modal
 */
declare class EuiLanguageSelectorComponent implements AfterViewInit {
    languages: _angular_core.WritableSignal<EuiLanguage[]>;
    selectedLanguage: _angular_core.WritableSignal<EuiLanguage>;
    ariaLabel: _angular_core.WritableSignal<string>;
    /**
     * @property hasLanguageSelection - Enables/disables language selection functionality.
     * @default true
     */
    readonly hasLanguageSelection: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * @property isToolbarSelector - When true, applies styling for toolbar integration.
     * @default false
     */
    readonly isToolbarSelector: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * @property euiPrimary - When true, applies primary styling.
     * @default false
     */
    readonly euiPrimary: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * @property ariaLabelInput - Accessibility label for the language selector.
     * If not provided, defaults to "Change Language - Current Language: [selected language]"
     */
    readonly ariaLabelInput: _angular_core.InputSignal<string>;
    /**
     * @event languageSelectorClick - Emitted when the language selector is clicked.
     */
    readonly languageSelectorClick: _angular_core.OutputEmitterRef<null>;
    readonly cssClasses: _angular_core.Signal<string>;
    /**
     * returns true if there are at least one and max four languages.
     */
    readonly isShowDropDown: _angular_core.Signal<boolean>;
    /**
     * returns true if there are at least five languages.
     */
    readonly isShowModal: _angular_core.Signal<boolean>;
    appShellService: EuiAppShellService;
    protected readonly activeLanguage: _angular_core.Signal<string>;
    private readonly _languagesSource;
    private readonly _isToolbarSelector;
    private isAriaLabelChanged;
    private euiDialogService;
    private translateService;
    private elRef;
    constructor();
    ngAfterViewInit(): 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: _angular_core.ɵɵFactoryDeclaration<EuiLanguageSelectorComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<EuiLanguageSelectorComponent, "eui-language-selector", never, { "hasLanguageSelection": { "alias": "hasLanguageSelection"; "required": false; "isSignal": true; }; "isToolbarSelector": { "alias": "isToolbarSelector"; "required": false; "isSignal": true; }; "euiPrimary": { "alias": "euiPrimary"; "required": false; "isSignal": true; }; "ariaLabelInput": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, { "languageSelectorClick": "languageSelectorClick"; }, never, never, true, never>;
}

interface ModelConfig {
    /**
     * Available languages to select from
     */
    languages: EuiLanguage[];
    /**
     * Currently selected language
     */
    selectedLanguage: EuiLanguage;
    /**
     * Callback when language selection changes
     * @param language
     */
    languageChanged: (language: EuiLanguage) => void;
}
/**
 * Modal component for language selection.
 * Displays EU and non-EU languages in a grid layout with 4 languages per row.
 */
declare class EuiModalSelectorComponent implements OnInit {
    /**
     * Configuration injected from the dialog service
     */
    config: ModelConfig;
    /** EU languages organized in rows of up to 4 languages */
    languageRows: EuiLanguage[][];
    /**
     * Non-EU languages organized in rows of up to 4 languages
     * @deprecated use {@link additionalLanguageRows}
     */
    additionaLanguageRows: EuiLanguage[][];
    /** Non-EU languages organized in rows of up to 4 languages */
    additionalLanguageRows: EuiLanguage[][];
    /** Currently selected language */
    private selectedLanguage;
    /** Dialog service for handling modal operations */
    private euiDialogService;
    /**
     * Initializes language rows by separating EU and non-EU languages
     */
    ngOnInit(): void;
    /**
     * Handles language selection
     * @param {EuiLanguage} languageCode - The language being selected
     */
    selectLanguage(languageCode: EuiLanguage): void;
    /**
     * Organizes languages into rows of up to 4 languages each
     * @param {EuiLanguage[]} languages - Array of languages to organize
     * @returns {EuiLanguage[][]} 2D array of languages organized in rows
     */
    private prepareLanguageRows;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<EuiModalSelectorComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<EuiModalSelectorComponent, "eui-modal-selector", never, {}, {}, never, never, true, never>;
}

declare const EUI_LANGUAGE_SELECTOR: readonly [typeof EuiLanguageSelectorComponent, typeof EuiModalSelectorComponent];

export { EUI_LANGUAGE_SELECTOR, EuiLanguageSelectorComponent, EuiModalSelectorComponent };
export type { ModelConfig };
//# sourceMappingURL=eui-components-eui-language-selector.d.ts.map
