import { ActivatedRouteSnapshot } from '@angular/router';
import { BreadcrumbItem } from '@siemens/element-ng/breadcrumb';
import { Observable } from 'rxjs';
import * as i0 from '@angular/core';
import { InjectionToken, OnInit, OnDestroy } from '@angular/core';
import { TranslatableString } from '@siemens/element-translate-ng/translate';

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

/**
 * Defines the title and link of a breadcrumb item in a
 * route configuration and compatible to {@link BreadcrumbItem}.
 *
 * ```
 * {
 *   path: 'user-manual',
 *   component: UserManualComponent,
 *   data: {
 *     siBreadcrumb: [
 *       { title: 'USER_MANUAL.HEADING', link: '/main/user-manual' }
 *     ]
 *   }
 * }
 * ```
 *
 */
interface BreadcrumbRouterLink {
    /**
     * Angular router link for the breadcrumb item.
     */
    link?: string;
    /**
     * Breadcrumb item title that will be translated.
     */
    title: TranslatableString;
}
/**
 * Service interface to resolve the breadcrumb items on the base of a route.
 */
interface SiBreadcrumbResolverService {
    resolve(route: ActivatedRouteSnapshot): BreadcrumbItem[] | Observable<BreadcrumbItem[]>;
}
/**
 * Injection token to provide your own `SiBreadcrumbResolverService` implementation.
 *
 * ```
 * providers: [{
 *   provide: SI_BREADCRUMB_RESOLVER_SERVICE,
 *   useClass: CustomBreadcrumbResolverService,
 * }]
 * ```
 */
declare const SI_BREADCRUMB_RESOLVER_SERVICE: InjectionToken<SiBreadcrumbResolverService>;

declare class SiBreadcrumbDefaultResolverService implements SiBreadcrumbResolverService {
    private locale;
    /**
     * Method which resolves the route and creates the breadcrumb items from it.
     * Is called by the `si-breadcrumb-router-component` but can also be called manually in inheritance patterns.
     */
    resolve(route: ActivatedRouteSnapshot): BreadcrumbItem[] | Observable<BreadcrumbItem[]>;
    private resolveCustomRoutePart;
    private resolveDefault;
    private getUrl;
    private getName;
    private calculateName;
    private calculateUrl;
    private calculate;
    private findParam;
    static ɵfac: i0.ɵɵFactoryDeclaration<SiBreadcrumbDefaultResolverService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<SiBreadcrumbDefaultResolverService>;
}

declare class SiBreadcrumbRouterComponent implements OnInit, OnDestroy {
    /**
     * Aria label for the main breadcrumb navigation. Needed for a11y.
     *
     * @defaultValue 'breadcrumb'
     */
    readonly ariaLabel: i0.InputSignal<string>;
    protected readonly items: i0.WritableSignal<BreadcrumbItem[]>;
    private readonly currentCalcUrl;
    private nextRoute;
    private resolverService;
    private route?;
    private router?;
    private routerSubscription?;
    ngOnInit(): void;
    ngOnDestroy(): void;
    private checkItems;
    private computePath;
    private findRouteWithUrl;
    private getUrl;
    static ɵfac: i0.ɵɵFactoryDeclaration<SiBreadcrumbRouterComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SiBreadcrumbRouterComponent, "si-breadcrumb-router", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

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

export { SI_BREADCRUMB_RESOLVER_SERVICE, SiBreadcrumbDefaultResolverService, SiBreadcrumbRouterComponent, SiBreadcrumbRouterModule };
export type { BreadcrumbRouterLink, SiBreadcrumbResolverService };
