import * as _siemens_element_translate_ng_translate from '@siemens/element-translate-ng/translate';
import { TranslatableString } from '@siemens/element-translate-ng/translate';
import * as i0 from '@angular/core';

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */

/** */
interface IsoLanguageValue {
    /**
     * Official ISO language code, ex "en"
     */
    value: string;
    /**
     * Language name, ex "English" or translatable string, ex "LANGUAGES.EN"
     */
    name: TranslatableString;
}

declare class SiLanguageSwitcherComponent {
    /**
     * Key for translation.
     * If the key is set to an empty string, the language of the underlying translation framework will not be switched.
     *
     * @defaultValue 'LANGUAGE'
     */
    readonly translationKey: i0.InputSignal<string>;
    /**
     * Text for aria label for the language selector. Needed for a11y
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_LANGUAGE_SWITCHER.LABEL:Language switcher`)
     * ```
     */
    readonly languageSwitcherLabel: i0.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * List of all available languages in this application.
     *
     * @defaultValue null
     */
    readonly availableLanguages: i0.InputSignal<(string | IsoLanguageValue)[] | null>;
    protected readonly translate: _siemens_element_translate_ng_translate.SiTranslateService;
    protected readonly availableIsoLanguages: i0.Signal<IsoLanguageValue[]>;
    protected switchLanguage(target: EventTarget | null): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SiLanguageSwitcherComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SiLanguageSwitcherComponent, "si-language-switcher", never, { "translationKey": { "alias": "translationKey"; "required": false; "isSignal": true; }; "languageSwitcherLabel": { "alias": "languageSwitcherLabel"; "required": false; "isSignal": true; }; "availableLanguages": { "alias": "availableLanguages"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class SiLanguageSwitcherModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<SiLanguageSwitcherModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<SiLanguageSwitcherModule, never, [typeof SiLanguageSwitcherComponent], [typeof SiLanguageSwitcherComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<SiLanguageSwitcherModule>;
}

export { SiLanguageSwitcherComponent, SiLanguageSwitcherModule };
export type { IsoLanguageValue };
