import { AfterContentInit, AfterViewChecked, AfterViewInit, ChangeDetectorRef, DestroyRef, ElementRef, QueryList } from '@angular/core';
import { DynamicPageHeader } from '@fundamental-ngx/core/shared';
import { CssClassBuilder, Nullable, ResizeObserverService } from '@fundamental-ngx/cdk/utils';
import { ContentDensityObserver } from '@fundamental-ngx/core/content-density';
import { HeadingLevel } from '@fundamental-ngx/core/shared';
import { TitleToken } from '@fundamental-ngx/core/title';
import { Observable } from 'rxjs';
import { ToolbarItem } from './abstract-toolbar-item.class';
import { ToolbarSeparatorComponent } from './toolbar-separator.component';
import { ToolbarSpacerDirective } from './toolbar-spacer.directive';
import * as i0 from "@angular/core";
export type ToolbarType = 'solid' | 'transparent' | 'auto' | 'info';
export declare const enum OverflowPriorityEnum {
    ALWAYS = "always",
    NEVER = "never",
    LOW = "low",
    HIGH = "high",
    DISAPPEAR = "disappear"
}
export declare class ToolbarComponent implements AfterViewInit, AfterViewChecked, CssClassBuilder, AfterContentInit {
    private _cd;
    readonly _contentDensityObserver: ContentDensityObserver;
    private readonly _destroyRef;
    private resizeObserverService;
    private _dynamicPageHeader?;
    /**
     * The ID of the toolbar title
     * */
    titleId: string;
    /** Property allows user to pass additional class
     */
    class: string;
    /** Determines if overflow button should be visible
     * Default value: false
     */
    set shouldOverflow(val: boolean);
    get shouldOverflow(): boolean;
    /** Determines the type of toolbar
     * Available options: 'solid' | 'transparent' | 'auto' | 'info'
     * Default value: 'solid'
     */
    fdType: ToolbarType;
    /** The title for the toolbar. */
    title: string;
    /** Determines if toolbar should has active state (only when fdType == 'info')
     * Default value: false
     */
    active: boolean;
    /** Determines if toolbar should clear border bottom
     * Default value: false
     */
    clearBorder: boolean;
    /** Whether all items should be inside overflow */
    forceOverflow: boolean;
    /** Tabindex of the toolbar element, to be used when fdType="info" */
    tabindex: number;
    /**
     * Heading level of the toolbar title.
     */
    set headingLevel(level: Nullable<HeadingLevel>);
    /** Toolbar Aria-label attribute. */
    ariaLabel: string;
    /** Toolbar Aria-labelledby attribute. */
    ariaLabelledBy: string;
    /** @hidden */
    titleElement: ElementRef<HTMLHeadElement>;
    /** @hidden */
    toolbarItems: QueryList<ToolbarItem>;
    /** @hidden */
    set titleComponent(title: TitleToken | null);
    get titleComponent(): TitleToken | null;
    /** @hidden */
    private readonly _role;
    /** @hidden */
    overflowItems$: Observable<ToolbarItem[]>;
    /** @hidden */
    overflownItems: ToolbarItem[];
    /** @hidden */
    spacerUsed: import("@angular/core").WritableSignal<boolean>;
    /** @hidden */
    spacerDirectives: import("@angular/core").Signal<readonly ToolbarSpacerDirective[]>;
    /** @hidden */
    separatorDirectives: import("@angular/core").Signal<readonly ToolbarSeparatorComponent[]>;
    /** @hidden */
    _headingLevel: number;
    /** HTML Element Reference. */
    readonly elementRef: ElementRef<any>;
    /** @hidden */
    private _titleComponent$;
    /** @hidden */
    private _refreshOverflow$;
    /** @hidden */
    private get _toolbarWidth();
    /** @hidden */
    private _shouldOverflow;
    /** @hidden */
    private shouldOverflow$;
    /** @hidden */
    constructor(_cd: ChangeDetectorRef, _contentDensityObserver: ContentDensityObserver, _destroyRef: DestroyRef, resizeObserverService: ResizeObserverService, _dynamicPageHeader?: DynamicPageHeader | undefined);
    /** @hidden */
    buildComponentCssClass(): string[];
    /** @hidden */
    ngAfterViewInit(): void;
    /** @hidden */
    ngAfterViewChecked(): void;
    /** @hidden */
    ngAfterContentInit(): void;
    /** Change detection reference */
    detectChanges(): void;
    /** Method triggering collapsible toolbar  */
    updateCollapsibleItems(): void;
    /** hidden */
    private _updateSpacerUsed;
    /** @hidden Get group number with the lowest priority.
     *  Uses for detecting a group of elements which would be hidden from the toolbar.
     *  */
    private _getLowestPriorityFromGroup;
    /** @hidden */
    private _getElementsFromCurrentGroup;
    /** @hidden Get the object with grouped arrays of elements. */
    private _getGroupedCollection;
    /** @hidden Get the object with the highest priority for each group of elements. */
    private _getGroupedCollectionPriority;
    /** @hidden Sort priorities of elements/groups. */
    private _sortPriorities;
    /** @hidden Sort by group and priority and initial position */
    private _getSortedByPriorityAndGroupItems;
    static ɵfac: i0.ɵɵFactoryDeclaration<ToolbarComponent, [null, null, null, null, { optional: true; skipSelf: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ToolbarComponent, "fd-toolbar", never, { "titleId": { "alias": "titleId"; "required": false; }; "class": { "alias": "class"; "required": false; }; "shouldOverflow": { "alias": "shouldOverflow"; "required": false; }; "fdType": { "alias": "fdType"; "required": false; }; "title": { "alias": "title"; "required": false; }; "active": { "alias": "active"; "required": false; }; "clearBorder": { "alias": "clearBorder"; "required": false; }; "forceOverflow": { "alias": "forceOverflow"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; }, {}, ["spacerDirectives", "separatorDirectives", "titleComponent", "toolbarItems"], ["*"], true, never>;
}
