import { AfterContentInit, InjectionToken, OnInit, Provider, QueryList, TemplateRef } from '@angular/core';
import { RouterLink } from '@angular/router';
import { KbqButtonStyles } from '@koobiq/components/button';
import { KbqComponentColors, KbqDefaultSizes, PopUpPlacements } from '@koobiq/components/core';
import { KbqBreadcrumbsConfiguration, KbqBreadcrumbsWrapMode } from './breadcrumbs.types';
import * as i0 from "@angular/core";
import * as i1 from "@radix-ng/primitives/roving-focus";
/** Breadcrumbs options global configuration provider. */
export declare const KBQ_BREADCRUMBS_CONFIGURATION: InjectionToken<KbqBreadcrumbsConfiguration>;
/** Utility provider for `KBQ_BREADCRUMBS_CONFIGURATION`. */
export declare const kbqBreadcrumbsConfigurationProvider: (configuration: Partial<KbqBreadcrumbsConfiguration>) => Provider;
export declare class KbqBreadcrumbsSeparator {
    readonly templateRef: TemplateRef<any>;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqBreadcrumbsSeparator, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqBreadcrumbsSeparator, "ng-template[kbqBreadcrumbsSeparator]", never, {}, {}, never, never, true, never>;
}
/**
 * Directive to style and configure buttons used as breadcrumb items.
 * - Inherits focus management behavior from `RdxRovingFocusItemDirective`.
 * - Optionally injects `KbqButton` to customize its style for breadcrumb usage.
 */
export declare class KbqBreadcrumbButton implements OnInit {
    private readonly button;
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqBreadcrumbButton, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqBreadcrumbButton, "[kbq-button][kbqBreadcrumb]", never, {}, {}, never, never, true, [{ directive: typeof i1.RdxRovingFocusItemDirective; inputs: { "focusable": "focusable"; }; outputs: {}; }]>;
}
/**
 * Directive provides a way to define a custom template for breadcrumb rendering, leveraging TemplateRef
 *
 */
export declare class KbqBreadcrumbView {
    readonly templateRef: TemplateRef<any>;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqBreadcrumbView, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqBreadcrumbView, "[kbqBreadcrumbView]", never, {}, {}, never, never, true, never>;
}
/**
 * Component represents an individual breadcrumb item with optional support for router navigation and styling.
 */
export declare class KbqBreadcrumbItem {
    /**
     * The text displayed for the breadcrumb item.
     * This text will be shown if breadcrumb item is hidden in dropdown.
     */
    text: string;
    /**
     * Indicates whether the breadcrumb item is disabled.
     */
    disabled: boolean;
    /**
     * Indicates whether the breadcrumb item is the current/active item.
     * Defaults to `false`.
     */
    current: boolean;
    /**
     * A reference to a custom template provided for the breadcrumb item content.
     * The template can be used to override the default appearance of the breadcrumb.
     */
    customTemplateRef: TemplateRef<any>;
    /**
     * An optional `RouterLink` instance for navigating to a specific route.
     * Injected from the host element, if available and projecting to the hidden breadcrumb item in dropdown.
     */
    readonly routerLink: RouterLink | null;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqBreadcrumbItem, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<KbqBreadcrumbItem, "kbq-breadcrumb-item", never, { "text": { "alias": "text"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "current": { "alias": "current"; "required": false; }; }, {}, ["customTemplateRef"], ["*"], true, never>;
    static ngAcceptInputType_disabled: unknown;
    static ngAcceptInputType_current: unknown;
}
export declare class KbqBreadcrumbs implements AfterContentInit {
    protected readonly configuration: KbqBreadcrumbsConfiguration;
    /**
     * Determines if a negative margin should be applied to the first breadcrumb item.
     *
     * @see KbqBreadcrumbsConfiguration
     */
    firstItemNegativeMargin: boolean;
    /**
     * Size of the breadcrumbs. Affects font size.
     * Default value is taken from the global configuration.
     */
    size: KbqDefaultSizes;
    /**
     * Maximum number of visible breadcrumb items.
     * Remaining items are collapsed into a dropdown if the total exceeds this value.
     * Default value is taken from the global configuration.
     */
    max: number | null;
    /**
     * Indicates whether the breadcrumbs are disabled.
     * When disabled, user interactions are blocked.
     */
    disabled: boolean;
    /**
     * Wrapping behavior of the breadcrumb items.
     */
    wrapMode: KbqBreadcrumbsWrapMode;
    protected readonly separator?: TemplateRef<any>;
    protected readonly items: QueryList<KbqBreadcrumbItem>;
    private readonly result;
    private readonly overflowItems;
    /**
     * Ensures at least minimum number of breadcrumb items are shown.
     */
    protected readonly minVisibleItems = 2;
    protected readonly KbqComponentColors: typeof KbqComponentColors;
    protected readonly KbqButtonStyles: typeof KbqButtonStyles;
    protected readonly PopUpPlacements: typeof PopUpPlacements;
    private readonly cdr;
    private readonly destroyRef;
    /** @docs-private */
    protected get itemsExcludingEdges(): KbqBreadcrumbItem[];
    /**
     * Calculates the total width of visible items based on the `max` value and overflow items.
     * @returns {number | null} The computed max width for overflow items or null if conditions are not met.
     * @docs-private
     */
    protected get maxWidth(): number | null;
    constructor();
    ngAfterContentInit(): void;
    private getItemWidth;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqBreadcrumbs, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<KbqBreadcrumbs, "kbq-breadcrumbs,[kbq-breadcrumbs]", never, { "firstItemNegativeMargin": { "alias": "firstItemNegativeMargin"; "required": false; }; "size": { "alias": "size"; "required": false; }; "max": { "alias": "max"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "wrapMode": { "alias": "wrapMode"; "required": false; }; }, {}, ["separator", "items"], ["*"], true, [{ directive: typeof i1.RdxRovingFocusGroupDirective; inputs: {}; outputs: {}; }]>;
    static ngAcceptInputType_firstItemNegativeMargin: unknown;
    static ngAcceptInputType_disabled: unknown;
}
