import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnDestroy, OnInit, QueryList } from '@angular/core';
import { Nullable, RtlService } from '@fundamental-ngx/cdk/utils';
import { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';
import { OverflowContainer } from './interfaces/overflow-container.interface';
import { OverflowExpand } from './interfaces/overflow-expand.interface';
import { OverflowLayoutFocusableItem } from './interfaces/overflow-focusable-item.interface';
import { OverflowItemRef } from './interfaces/overflow-item-ref.interface';
import { OverflowPopoverContent } from './interfaces/overflow-popover-content.interface';
import { OverflowLayoutService } from './overflow-layout.service';
import * as i0 from "@angular/core";
export declare class OverflowLayoutComponent implements OnInit, AfterViewInit, OnDestroy, OverflowContainer {
    private readonly _elementRef;
    private readonly _ngZone;
    protected _cdr: ChangeDetectorRef;
    protected _overflowLayoutService: OverflowLayoutService;
    private readonly _rtl;
    /**
     * Maximum amount of visible items.
     */
    set maxVisibleItems(value: number);
    get maxVisibleItems(): number;
    /**
     * Keyboard event to listen for keyboard navigation through items.
     */
    navigationTrigger: 'keyup' | 'keydown';
    /** Direction of the fitting items calculation. */
    showMorePosition: 'left' | 'right';
    /** Whether the show more button should be rendered */
    renderShowMoreButton: boolean;
    /** Whether to render hidden items in reverse order. */
    reverseHiddenItems: boolean;
    /** Whether to enable keyboard navigation. */
    enableKeyboardNavigation: boolean;
    /** Aria role of the overflow layout. */
    ariaRole: string;
    /**
     * Event, triggered when amount of visible items has been changed.
     */
    visibleItemsCount: EventEmitter<number>;
    /**
     * Event, triggered when amount of hidden items has been changed.
     */
    hiddenItemsCount: EventEmitter<number>;
    /**
     * Event, triggered when hidden items have been changed.
     */
    hiddenItemsChange: EventEmitter<OverflowItemRef<any>[]>;
    /**
     * @hidden
     * List of items to display.
     */
    _items: QueryList<OverflowItemRef>;
    /**
     * @hidden
     * Template for the custom "More" button.
     */
    _moreButton: Nullable<OverflowExpand>;
    /**
     * @hidden
     * List of items that can be focused
     */
    _focusableOverflowItems: QueryList<OverflowLayoutFocusableItem>;
    /**
     * @hidden
     * List of rendered items.
     */
    _visibleItems: QueryList<OverflowLayoutItemContainerDirective>;
    /**
     * @hidden
     * Items wrapper directive.
     */
    _itemsWrapper: ElementRef<HTMLElement>;
    /**
     * @hidden
     * Layout container element.
     */
    _layoutContainer: ElementRef<HTMLDivElement>;
    /**
     * @hidden
     * "More" button container element.
     */
    _showMoreContainer: ElementRef<HTMLDivElement>;
    /** @hidden */
    readonly _initialClass = "fd-overflow-layout";
    /** @hidden */
    _allItems: OverflowItemRef[];
    /** @hidden */
    _hiddenItems: OverflowItemRef[];
    /** @hidden */
    _showMore: boolean;
    /** @hidden */
    private readonly _subscription;
    /** @hidden */
    private _overflowPopoverContent;
    /** @hidden */
    private _fillTrigger$;
    /** @hidden */
    private _maxVisibleItems;
    /** @hidden */
    private _canListenToResize;
    /** @hidden */
    private _dir;
    /** @hidden */
    private _keyboardEventsManager;
    /** @hidden */
    constructor(_elementRef: ElementRef<HTMLElement>, _ngZone: NgZone, _cdr: ChangeDetectorRef, _overflowLayoutService: OverflowLayoutService, _rtl: RtlService);
    /** Overflow Layout more button text */
    moreItemsButtonText: (hiddenItemsCount: number) => string;
    /** @hidden */
    private get _config();
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngAfterViewInit(): void;
    /** @hidden */
    ngOnDestroy(): void;
    /**
     * Triggers layout recalculation of the items.
     */
    triggerRecalculation(): void;
    /**
     * Sets current focused element.
     * @param element Element that needs to be focused.
     */
    setFocusedElement(element: OverflowLayoutFocusableItem): void;
    /**
     * Registers popover content directive for main component.
     * @param content {OverflowPopoverContent} directive
     */
    registerPopoverContent(content: OverflowPopoverContent): void;
    /** @hidden */
    _onPopoverStateChange(opened: boolean): void;
    /** @hidden */
    private _setupKeyboardListener;
    /** @hidden */
    private _setFocusKeyManager;
    /** @hidden Rtl change subscription */
    private _subscribeToRtl;
    static ɵfac: i0.ɵɵFactoryDeclaration<OverflowLayoutComponent, [null, null, null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<OverflowLayoutComponent, "fd-overflow-layout", never, { "maxVisibleItems": { "alias": "maxVisibleItems"; "required": false; }; "navigationTrigger": { "alias": "navigationTrigger"; "required": false; }; "showMorePosition": { "alias": "showMorePosition"; "required": false; }; "renderShowMoreButton": { "alias": "renderShowMoreButton"; "required": false; }; "reverseHiddenItems": { "alias": "reverseHiddenItems"; "required": false; }; "enableKeyboardNavigation": { "alias": "enableKeyboardNavigation"; "required": false; }; "ariaRole": { "alias": "ariaRole"; "required": false; }; "moreItemsButtonText": { "alias": "moreItemsButtonText"; "required": false; }; }, { "visibleItemsCount": "visibleItemsCount"; "hiddenItemsCount": "hiddenItemsCount"; "hiddenItemsChange": "hiddenItemsChange"; }, ["_moreButton", "_items", "_focusableOverflowItems"], never, true, never>;
    static ngAcceptInputType_renderShowMoreButton: unknown;
}
