import { NzDropdownMenuComponent } from 'ng-zorro-antd/dropdown';
import * as i0 from '@angular/core';
import { TemplateRef, OnInit } from '@angular/core';
import * as _angular_cdk_bidi from '@angular/cdk/bidi';
import { Params } from '@angular/router';

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

/**
 * https://angular.io/errors/NG3003
 * An intermediate interface for {@link NzBreadCrumbComponent} & {@link NzBreadCrumbItemComponent}
 */
declare abstract class NzBreadcrumb {
    abstract nzSeparator: string | TemplateRef<void> | null;
}

declare class NzBreadCrumbItemComponent {
    nzBreadCrumbComponent: NzBreadcrumb;
    /**
     * Dropdown content of a breadcrumb item.
     */
    nzOverlay?: NzDropdownMenuComponent;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzBreadCrumbItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzBreadCrumbItemComponent, "nz-breadcrumb-item", ["nzBreadcrumbItem"], { "nzOverlay": { "alias": "nzOverlay"; "required": false; }; }, {}, never, ["*"], true, never>;
}

interface BreadcrumbOption {
    label: string;
    params: Params;
    url: string;
}
declare class NzBreadCrumbComponent implements OnInit, NzBreadcrumb {
    private readonly injector;
    private readonly cdr;
    private readonly destroyRef;
    protected readonly dir: i0.WritableSignal<_angular_cdk_bidi.Direction>;
    nzAutoGenerate: boolean;
    nzSeparator: string | TemplateRef<void> | null;
    nzRouteLabel: string;
    nzRouteLabelFn: (label: string) => string;
    nzRouteFn: (route: string) => string;
    breadcrumbs: BreadcrumbOption[];
    ngOnInit(): void;
    navigate(url: string, e: MouseEvent): void;
    private registerRouterChange;
    private getBreadcrumbs;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzBreadCrumbComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzBreadCrumbComponent, "nz-breadcrumb", ["nzBreadcrumb"], { "nzAutoGenerate": { "alias": "nzAutoGenerate"; "required": false; }; "nzSeparator": { "alias": "nzSeparator"; "required": false; }; "nzRouteLabel": { "alias": "nzRouteLabel"; "required": false; }; "nzRouteLabelFn": { "alias": "nzRouteLabelFn"; "required": false; }; "nzRouteFn": { "alias": "nzRouteFn"; "required": false; }; }, {}, never, ["*"], true, never>;
    static ngAcceptInputType_nzAutoGenerate: unknown;
}

declare class NzBreadCrumbSeparatorComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<NzBreadCrumbSeparatorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzBreadCrumbSeparatorComponent, "nz-breadcrumb-separator", ["nzBreadcrumbSeparator"], {}, {}, never, ["*"], true, never>;
}

declare class NzBreadCrumbModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<NzBreadCrumbModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<NzBreadCrumbModule, never, [typeof NzBreadCrumbComponent, typeof NzBreadCrumbItemComponent, typeof NzBreadCrumbSeparatorComponent], [typeof NzBreadCrumbComponent, typeof NzBreadCrumbItemComponent, typeof NzBreadCrumbSeparatorComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<NzBreadCrumbModule>;
}

export { NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbModule, NzBreadCrumbSeparatorComponent };
export type { BreadcrumbOption };
