import { FocusMonitor } from '@angular/cdk/a11y';
import { AfterContentInit, AfterViewInit, ChangeDetectorRef, DestroyRef, ElementRef, InjectionToken, OnDestroy, QueryList } from '@angular/core';
import { FocusKeyManager } from '@koobiq/cdk/a11y';
import { BehaviorSubject, Observable, Subject } from 'rxjs';
import { KbqNavbarFocusableItemEvent, KbqNavbarIcFocusableItem, KbqNavbarIcItem } from './navbar-ic-item';
import * as i0 from "@angular/core";
export declare enum KbqExpandEvents {
    toggle = 0,
    hoverOrFocus = 1
}
/** minimum timeout to use KBQ_ENTER_DELAY */
export declare const KBQ_MIN_TIMEOUT_FOR_ENTER_DELAY = 2000;
/** delay before open navbar-ic */
export declare const KBQ_ENTER_DELAY = 400;
/** default configuration of navbar-ic */
/** @docs-private */
export declare const KBQ_NAVBAR_IC_DEFAULT_CONFIGURATION: {
    toggle: {
        pinButton: string;
        collapseButton: string;
    };
};
/** Injection Token for providing configuration of navbar-ic */
/** @docs-private */
export declare const KBQ_NAVBAR_IC_CONFIGURATION: InjectionToken<unknown>;
export declare class KbqFocusable implements AfterContentInit, AfterViewInit, OnDestroy {
    protected readonly changeDetectorRef: ChangeDetectorRef;
    protected readonly elementRef: ElementRef<HTMLElement>;
    protected readonly destroyRef: DestroyRef;
    protected readonly focusMonitor: FocusMonitor;
    focusableItems: QueryList<KbqNavbarIcFocusableItem>;
    keyManager: FocusKeyManager<KbqNavbarIcFocusableItem>;
    get tabindex(): number;
    set tabindex(value: number);
    private _tabindex;
    get itemFocusChanges(): Observable<KbqNavbarFocusableItemEvent>;
    get itemBlurChanges(): Observable<KbqNavbarFocusableItemEvent>;
    private itemFocusSubscription;
    private itemBlurSubscription;
    ngAfterContentInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    /** @docs-private */
    focusHandler(): void;
    /** @docs-private */
    blurHandler(): void;
    protected resetOptions(): void;
    protected dropSubscriptions(): void;
    protected listenToItemsFocus(): void;
    protected updateTabIndex(): void;
    protected isValidIndex(index: number): boolean;
    protected hasFocusedItem(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqFocusable, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqFocusable, never, never, { "tabindex": { "alias": "tabindex"; "required": false; }; }, {}, ["focusableItems"], never, false, never>;
    static ngAcceptInputType_tabindex: unknown;
}
export declare class KbqNavbarIcContainer {
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqNavbarIcContainer, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqNavbarIcContainer, "kbq-navbar-ic-container", never, {}, {}, never, never, true, never>;
}
export declare class KbqNavbarIc extends KbqFocusable implements AfterContentInit {
    /** @docs-private */
    protected readonly localeService: import("@koobiq/components/core").KbqLocaleService | null;
    readonly externalConfiguration: unknown;
    readonly state: BehaviorSubject<"expanded" | "collapsed" | null>;
    configuration: any;
    /** @docs-private */
    rectangleElements: import("@angular/core").Signal<readonly any[]>;
    /** @docs-private */
    items: import("@angular/core").Signal<readonly any[]>;
    /** @docs-private */
    toggleElement: import("@angular/core").Signal<readonly any[]>;
    /** @docs-private */
    dropdownTrigger: import("@angular/core").Signal<readonly any[]>;
    /** @docs-private */
    popoverTrigger: import("@angular/core").Signal<readonly any[]>;
    /** @docs-private */
    notificationCenterTrigger: import("@angular/core").Signal<readonly any[]>;
    readonly hovered: BehaviorSubject<boolean>;
    readonly focused: BehaviorSubject<boolean>;
    readonly animationDone: Subject<void>;
    expandEvent: KbqExpandEvents | null;
    pinned: boolean;
    collapsedWidth: number;
    expandedWidth: number;
    get expanded(): boolean;
    set expanded(value: boolean);
    private _expanded;
    get hasOpenedPopUp(): boolean;
    get expandedByToggle(): boolean;
    get expandedByHoverOrFocus(): boolean;
    get currentWidth(): number;
    private lastOpeningTime;
    constructor();
    /** @docs-private */
    ngAfterContentInit(): void;
    toggle(): void;
    /** @docs-private */
    onKeyDown(event: KeyboardEvent): void;
    private getExpandDelay;
    protected updateTooltipForItems: () => void;
    protected updateExpandedStateForItems: () => void;
    protected updateItemExpandedState: (item: KbqNavbarIcItem) => void;
    private updateLocaleParams;
    private initDefaultParams;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqNavbarIc, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<KbqNavbarIc, "kbq-navbar-ic", ["KbqNavbarIc"], { "pinned": { "alias": "pinned"; "required": false; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; }; "expandedWidth": { "alias": "expandedWidth"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; }, {}, ["rectangleElements", "items", "toggleElement", "dropdownTrigger", "popoverTrigger", "notificationCenterTrigger"], ["[kbq-navbar-ic-container], kbq-navbar-ic-container", "[kbq-navbar-ic-toggle], kbq-navbar-ic-toggle"], true, never>;
    static ngAcceptInputType_pinned: unknown;
    static ngAcceptInputType_collapsedWidth: unknown;
    static ngAcceptInputType_expandedWidth: unknown;
    static ngAcceptInputType_expanded: unknown;
}
