import { Link } from '@siemens/element-ng/link';
import * as _siemens_element_translate_ng_translate from '@siemens/element-translate-ng/translate';
import * as i0 from '@angular/core';
import { OnChanges, OnDestroy } from '@angular/core';

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

/**
 * Item that should be displayed in a breadcrumb.
 * As input, we expect an optional title and link,
 * which can be an URL or array of URL segments.
 */
interface BreadcrumbItem extends Link {
    title: string;
}
/**
 * Extends {@link EnumeratedBreadcrumbItem} and adds
 * the level, if it is shortened, a shortened title and
 * if it is the last item
 */
interface EnumeratedBreadcrumbItem extends BreadcrumbItem {
    /**
     * The current level relative to the root, the root is 0
     */
    level: number;
    /**
     * Whether the title is displayed in full length or it is shortened.
     */
    shortened?: boolean;
    /**
     * The shortened title, if the title is not shortened, it is the same as the title.
     */
    shortenedTitle?: string;
    /**
     * Whether it is the last breadcrumb item and should be styled differently.
     */
    lastItem?: boolean;
}

declare class SiBreadcrumbComponent implements OnChanges, OnDestroy {
    /** Array of breadcrumb items. */
    readonly items: i0.InputSignal<BreadcrumbItem[]>;
    /**
     * Shows the "root" route as the provided title string instead of an icon.
     *
     * @defaultValue false
     */
    readonly showRootAsText: i0.InputSignalWithTransform<boolean, unknown>;
    /**
     * Aria label for the main breadcrumb navigation. Needed for a11y.
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_BREADCRUMB:Breadcrumbs`)
     * ```
     */
    readonly ariaLabel: i0.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    private translationSubscription?;
    private itemsProcessed;
    private numberOfItems;
    protected itemsShown: EnumeratedBreadcrumbItem[];
    protected itemsHidden: EnumeratedBreadcrumbItem[];
    protected breadcrumbShortened: boolean;
    protected ellipsesLevel: number;
    protected breadcrumbDropdownOpen: number | undefined;
    protected addExpandDropdown: boolean;
    protected controlId: string;
    protected readonly icons: Record<"elementBreadcrumbRoot" | "elementRight2", string>;
    private readonly breadcrumbElement;
    private readonly breadcrumbElements;
    private changeDetector;
    private translate;
    ngOnChanges(): void;
    ngOnDestroy(): void;
    private processItems;
    protected toggleBreadcrumbDropdown(itemLevel: number): void;
    protected documentClick(targetElement: any): void;
    protected resetBreadcrumb(): void;
    private calculateBreadcrumb;
    static ɵfac: i0.ɵɵFactoryDeclaration<SiBreadcrumbComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SiBreadcrumbComponent, "si-breadcrumb", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "showRootAsText": { "alias": "showRootAsText"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

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

export { SiBreadcrumbComponent, SiBreadcrumbModule };
export type { BreadcrumbItem, EnumeratedBreadcrumbItem };
