import * as _angular_core from '@angular/core';
import { OnChanges, SimpleChanges, OnInit, DoCheck, OnDestroy } from '@angular/core';
import { MenuItem, EntityStatusType } from '@siemens/element-ng/common';
import { HeaderWithDropdowns, SiHeaderDropdownTriggerDirective } from '@siemens/element-ng/header-dropdown';
import * as rxjs from 'rxjs';
import * as _siemens_element_translate_ng_translate from '@siemens/element-translate-ng/translate';
import { TranslatableString } from '@siemens/element-translate-ng/translate';
import { SiApplicationHeaderComponent, SiHeaderCollapsibleActionsComponent, App, AppCategory, FavoriteChangeEvent } from '@siemens/element-ng/application-header';
import { Link } from '@siemens/element-ng/link';

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

/** @deprecated Use the new `si-application-header` instead. */
interface AccountItem extends MenuItem {
    /**
     * Full name of user
     */
    title: string;
    /**
     * Initials to be displayed as avatar if no `icon` and also no `image` are provided.
     * If also no initials are provided, they will be automatically calculated from the `title`.
     */
    initials?: string;
    /**
     * The status (success, info, warning, caution, danger, critical, pending, progress) to be
     * visualized.
     */
    avatarStatus?: EntityStatusType;
    /**
     * aria-label for avatar status
     */
    avatarStatusAriaLabel?: TranslatableString;
    /**
     * Email address of the user
     */
    email?: string;
    /**
     * Name of the Company
     */
    company?: string;
    /**
     * Role name shown as a badge in the bottom
     */
    role?: TranslatableString;
}

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

/**
 * The AppItem is used to show apps in the launchpad.
 * @deprecated Use the new `si-application-header` instead.
 */
interface AppItem extends MenuItem {
    /**
     * If `true`, the app is marked as a favorite.
     */
    isFavorite?: boolean;
    /**
     * If `true`, the app is marked as an external application opening in a new browser tab.
     */
    isExternal?: boolean;
}
/**
 * The AppItemCategory is used to show app categories in the launchpad.
 * @deprecated Use the new `si-application-header` instead.
 */
interface AppItemCategory {
    /**
     * The name of the app category. Can be a translation key.
     */
    category?: TranslatableString;
    /**
     * The apps to show under this category.
     */
    items: AppItem[];
}

/** @deprecated Use the new `si-application-header` instead. */
declare class SiNavbarPrimaryComponent implements OnChanges, HeaderWithDropdowns {
    /**
     * List of navbar items which should be displayed at the left (in LTR) side next to the
     * banner.
     *
     * @defaultValue []
     */
    readonly primaryItems: _angular_core.InputSignal<MenuItem[]>;
    /**
     * List of account dropdown elements (defined by `title` and `link`).
     *
     * The menu item can have submenu items (supplying `items`: MenuItem[]).
     * Submenu items can be divided into groups by separators. A separator is
     * an item with only '-' set as `title`.
     *
     * Alternatively, you can can create a custom content by putting your html
     * code between the <si-navbar-primary> tags. In this case you don't need this
     * property (will be ignored if you set anyway).
     */
    readonly accountItems: _angular_core.InputSignal<MenuItem[] | undefined>;
    /**
     * Account settings name (`title`) and profile picture (`image` or `icon`)
     */
    readonly account: _angular_core.InputSignal<AccountItem | undefined>;
    /**
     * URL of the navbar brand.
     */
    readonly logoUrl: _angular_core.InputSignal<string | undefined>;
    /**
     * Title of the application.
     */
    readonly appTitle: _angular_core.InputSignal<string | undefined>;
    /**
     * Configurable home link that is used at the logo and app title.
     * Use `undefined` to disable the link.
     *
     * @defaultValue
     * ```
     * { link: '/' }
     * ```
     */
    readonly home: _angular_core.InputSignal<Link | undefined>;
    /**
     * title for the launchpad
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_LAUNCHPAD.TITLE:Launchpad`)
     * ```
     */
    readonly appSwitcherTitle: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * sub-title for the launchpad
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_LAUNCHPAD.SUB_TITLE:Access all your apps`)
     * ```
     */
    readonly appSwitcherSubTitle: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * Title or translate key for the favorite apps section.
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_LAUNCHPAD.FAVORITE_APPS:Favorite apps`)
     * ```
     */
    readonly favoriteAppsTitle: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * Title or translate key for the default apps section.
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_LAUNCHPAD.DEFAULT_CATEGORY_TITLE:Apps`)
     * ```
     */
    readonly defaultAppsTitle: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * Title or translate key for the show more apps button.
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_LAUNCHPAD.SHOW_MORE:Show more`)
     * ```
     */
    readonly showMoreAppsTitle: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * Title or translate key for the show less apps button.
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_LAUNCHPAD.SHOW_LESS:Show less`)
     * ```
     */
    readonly showLessAppsTitle: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * All app items shown in the launchpad. The launchpad will not be visible if the
     * app items are undefined. The launchpad will be visible if the app items are an
     * empty array.
     */
    readonly appItems: _angular_core.InputSignal<AppItem[] | undefined>;
    /**
     * Like `appItems` but with the addition of categories. If this is set, `appItems` is ignored.
     */
    readonly appCategoryItems: _angular_core.InputSignal<AppItemCategory[] | undefined>;
    /**
     * Allow the user to favorite apps which will then be displayed at the top.
     *
     * @defaultValue false
     */
    readonly appItemsFavorites: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * "all apps" link in the launchpad
     */
    readonly allAppsLink: _angular_core.InputSignal<MenuItem | undefined>;
    /**
     * Specifies whether the component should automatically be focused as soon as it is loaded.
     *
     * @defaultValue false
     */
    readonly focusOnLoad: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Marks the navbar as primary navigation element. Needed for a11y (screen reader).
     * Only one element should be primary. If multiple navbars are used, it's up to the
     * user of the components to label them in the correct order.
     *
     * @defaultValue 'Primary'
     */
    readonly navAriaLabel: _angular_core.InputSignal<string>;
    /**
     * Text to close the launchpad. Needed for a11y.
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_LAUNCHPAD.CLOSE:Close launchpad`)
     * ```
     */
    readonly closeAppSwitcherText: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * Text for the launchpad icon. Needed for a11y.
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_NAVBAR.OPEN_LAUNCHPAD:Open launchpad`)
     * ```
     */
    readonly openAppSwitcherText: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * Text or translate key for the toggle navigation icon. Needed for a11y.
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_NAVBAR.TOGGLE_NAVIGATION:Toggle navigation`)
     * ```
     */
    readonly toggleNavigationText: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * Aria label for the main menu landmark
     *
     * @defaultValue 'Header main'
     */
    readonly ariaLabelMainMenu: _angular_core.InputSignal<string>;
    /**
     * Aria label for the secondary menu landmark
     *
     * @defaultValue 'Header secondary'
     */
    readonly ariaLabelSecondaryMenu: _angular_core.InputSignal<string>;
    readonly appItemFavoriteChanged: _angular_core.OutputEmitterRef<[AppItem, boolean]>;
    /** @internal */
    readonly header: _angular_core.Signal<SiApplicationHeaderComponent>;
    /** @internal */
    readonly collapsibleActions: _angular_core.Signal<SiHeaderCollapsibleActionsComponent | undefined>;
    /** @internal */
    readonly navItemCount: _angular_core.WritableSignal<number>;
    protected newAppItems?: App[] | AppCategory[];
    protected active?: MenuItem;
    /** @internal */
    readonly inlineDropdown: rxjs.Observable<boolean>;
    /** @internal */
    onDropdownItemTriggered(): void;
    /** @internal */
    ngOnChanges(changes: SimpleChanges<this>): void;
    private convertApps;
    protected onFavoriteChange({ app, favorite }: FavoriteChangeEvent): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiNavbarPrimaryComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiNavbarPrimaryComponent, "si-navbar-primary", never, { "primaryItems": { "alias": "primaryItems"; "required": false; "isSignal": true; }; "accountItems": { "alias": "accountItems"; "required": false; "isSignal": true; }; "account": { "alias": "account"; "required": false; "isSignal": true; }; "logoUrl": { "alias": "logoUrl"; "required": false; "isSignal": true; }; "appTitle": { "alias": "appTitle"; "required": false; "isSignal": true; }; "home": { "alias": "home"; "required": false; "isSignal": true; }; "appSwitcherTitle": { "alias": "appSwitcherTitle"; "required": false; "isSignal": true; }; "appSwitcherSubTitle": { "alias": "appSwitcherSubTitle"; "required": false; "isSignal": true; }; "favoriteAppsTitle": { "alias": "favoriteAppsTitle"; "required": false; "isSignal": true; }; "defaultAppsTitle": { "alias": "defaultAppsTitle"; "required": false; "isSignal": true; }; "showMoreAppsTitle": { "alias": "showMoreAppsTitle"; "required": false; "isSignal": true; }; "showLessAppsTitle": { "alias": "showLessAppsTitle"; "required": false; "isSignal": true; }; "appItems": { "alias": "appItems"; "required": false; "isSignal": true; }; "appCategoryItems": { "alias": "appCategoryItems"; "required": false; "isSignal": true; }; "appItemsFavorites": { "alias": "appItemsFavorites"; "required": false; "isSignal": true; }; "allAppsLink": { "alias": "allAppsLink"; "required": false; "isSignal": true; }; "focusOnLoad": { "alias": "focusOnLoad"; "required": false; "isSignal": true; }; "navAriaLabel": { "alias": "navAriaLabel"; "required": false; "isSignal": true; }; "closeAppSwitcherText": { "alias": "closeAppSwitcherText"; "required": false; "isSignal": true; }; "openAppSwitcherText": { "alias": "openAppSwitcherText"; "required": false; "isSignal": true; }; "toggleNavigationText": { "alias": "toggleNavigationText"; "required": false; "isSignal": true; }; "ariaLabelMainMenu": { "alias": "ariaLabelMainMenu"; "required": false; "isSignal": true; }; "ariaLabelSecondaryMenu": { "alias": "ariaLabelSecondaryMenu"; "required": false; "isSignal": true; }; }, { "appItemFavoriteChanged": "appItemFavoriteChanged"; }, never, ["*", "si-navbar-item[quickAction], element-navbar-item[quickAction='true']"], true, never>;
}

/** @deprecated Use the new `si-application-header` instead. */
declare class SiNavbarItemComponent implements OnInit, DoCheck, OnDestroy {
    protected readonly icons: Record<"elementDown2", string>;
    /**
     * MenuItem to display in the navbar.
     */
    readonly item: _angular_core.InputSignal<MenuItem>;
    /**
     * Is the item a quick action displayed on the end (right in LTR) side
     *
     * @defaultValue false
     */
    readonly quickAction: _angular_core.InputSignalWithTransform<boolean, unknown>;
    readonly dropdownTrigger: _angular_core.Signal<SiHeaderDropdownTriggerDirective | undefined>;
    protected active: boolean;
    protected navbar: SiNavbarPrimaryComponent;
    private hasBadge;
    ngOnInit(): void;
    ngDoCheck(): void;
    ngOnDestroy(): void;
    protected click(): void;
    protected get visuallyHideTitle(): boolean;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiNavbarItemComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiNavbarItemComponent, "si-navbar-item", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "quickAction": { "alias": "quickAction"; "required": false; "isSignal": true; }; }, {}, never, ["si-avatar", "*"], true, never>;
}

/** @deprecated Use the new `si-application-header` instead. */
declare class SiNavbarModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiNavbarModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<SiNavbarModule, never, [typeof SiNavbarItemComponent, typeof SiNavbarPrimaryComponent], [typeof SiNavbarItemComponent, typeof SiNavbarPrimaryComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<SiNavbarModule>;
}

export { SiNavbarItemComponent, SiNavbarModule, SiNavbarPrimaryComponent };
export type { AccountItem, AppItem, AppItemCategory };
