import { OnInit, EventEmitter, OnChanges, SimpleChanges, OnDestroy, AfterViewInit, QueryList, ElementRef } from '@angular/core';
import { EuiMenuItemComponent } from './eui-menu-item.component';
import { EuiMenuItem } from './models/eui-menu-item.model';
import * as i0 from "@angular/core";
export declare class EuiMenuComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {
    protected menuItemsComponents: QueryList<EuiMenuItemComponent>;
    protected filterInput: ElementRef<HTMLInputElement>;
    menubar: ElementRef<HTMLUListElement>;
    get cssClasses(): string;
    items: EuiMenuItem[];
    searchFilterLabel: string;
    externalLinkLabel: string;
    fragmentId: string;
    filterValue: string;
    isCollapsed: boolean;
    hasCollapsedInitials: boolean;
    hasFilter: boolean;
    hasIcons: boolean;
    hasIconsLabels: boolean;
    hasTooltip: boolean;
    hasTooltipOnExpanded: boolean;
    /**
     * Expand all items in the menu. Affects only items that have no expanded property set.
     * e.g. items = [{label: test, expanded: true}, {label: test2, expanded: false}, {label: test3}] will expand only test3.
     */
    expandAllItems: boolean;
    isFlat: boolean;
    hasScrollToItem: boolean;
    hasBoldRootLevel: boolean;
    isClick: EventEmitter<boolean>;
    itemClick: EventEmitter<EuiMenuItem>;
    expandToggle: EventEmitter<EuiMenuItem<unknown>>;
    protected hasExpandIcon: boolean;
    private subscription;
    private focusKeyManager;
    private router;
    private route;
    private cd;
    stopPropagation(event: MouseEvent): void;
    onKeydown(event: KeyboardEvent): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    protected onClick(item: EuiMenuItem): void;
    protected onExpandToggle(item: EuiMenuItem): void;
    protected onMenuFilterClick(event: MouseEvent): void;
    /**
     * Filter the menu items based on the input value
     * @param event
     * @protected
     */
    protected onFilter(event: Event): void;
    protected onFilter(value: string): void;
    /**
     * Check if the children of an item should be rendered. The children should be rendered if the item is expanded
     * or if the item is filtered and the filter input has a value. There are two cases when the filter input has a value:
     * 1. The user has typed something in the filter input
     * 2. The user has typed something in the filter input and the item is filtered
     * In general there are two states to be taken into account, the expanded state and the filtered state.
     *
     * @param item
     * @protected
     */
    protected shouldRenderChild(item: EuiMenuItem): boolean;
    /**
     * finds the EuiMenuItemComponent in the queried focusableItems[] that  matches the passed EuiMenuItem object
     *
     * @param menuItem an EuiMenuItem
     * @private
     */
    private findFocusableItem;
    /**
     * finds the first item that is filtered
     *
     * @param menuItems an array of EuiMenuItem
     * @private
     */
    private findFirstFilteredItem;
    /**
     * finds all filtered menu items
     *
     * @param menuItems an array of EuiMenuItem
     * @private
     */
    private findFilteredItems;
    /**
     * checks the focus state of the action icon
     *
     * @private
     */
    private checkActionIconFocusState;
    /**
     * filter all menu items given a value
     *
     * @param menuItems an array of menu items
     * @param filterValue the value to filter menu items
     * @private
     */
    private filterMenuItems;
    /**
     * expand / collapse all items
     *
     * @param isExpanded
     * @param items
     * @private
     */
    private setExpandedToAllItems;
    /**
     * expand / collapse a menu item
     *
     * @param item The item where the "expand" had been toggled
     * @param items The items list (used for recursion)
     * @private
     */
    private onExpandToggled;
    /**
     * configure an array of items with visible, filtered and expand (in case of expandAllItems flag enabled) properties
     *
     * @param items An array of EuiMenuItem
     * @param parent the parent item of items if exists
     * @private
     */
    private configureItems;
    /**
     * Given a URL and a list of items, it will expand the item that matches the URL. If not item matches exactly the url, then it will
     * match the item that is most relevant to that url.
     *
     * @param url
     * @param items
     * @param relevantItem
     * @private
     */
    private findMostRelevantItem;
    /**
     * Given two items with url return the one with the most relevant url that matches given url
     *
     * @param url A URL to be matched with the one of given items
     * @param item1
     * @param item2
     * @private
     */
    private getMostRelevantItem;
    /**
     * Given an item, if there's a parent expand it until you reach the root item
     *
     * @param item Given menu item
     * @private
     */
    private expandToGivenItem;
    /**
     * Set a random id to an item and its child if they don't have one
     * @param item
     * @private
     */
    private setRandomId;
    /**
     * Scroll to an item if it's not visible in the viewport
     * @param url
     * @private
     */
    private scrollToItem;
    /**
     * Check if the filter input has a value
     * @private
     */
    private isFilterEnabled;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiMenuComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EuiMenuComponent, "eui-menu", never, { "items": { "alias": "items"; "required": false; }; "searchFilterLabel": { "alias": "searchFilterLabel"; "required": false; }; "externalLinkLabel": { "alias": "externalLinkLabel"; "required": false; }; "fragmentId": { "alias": "fragmentId"; "required": false; }; "filterValue": { "alias": "filterValue"; "required": false; }; "isCollapsed": { "alias": "isCollapsed"; "required": false; }; "hasCollapsedInitials": { "alias": "hasCollapsedInitials"; "required": false; }; "hasFilter": { "alias": "hasFilter"; "required": false; }; "hasIcons": { "alias": "hasIcons"; "required": false; }; "hasIconsLabels": { "alias": "hasIconsLabels"; "required": false; }; "hasTooltip": { "alias": "hasTooltip"; "required": false; }; "hasTooltipOnExpanded": { "alias": "hasTooltipOnExpanded"; "required": false; }; "expandAllItems": { "alias": "expandAllItems"; "required": false; }; "isFlat": { "alias": "isFlat"; "required": false; }; "hasScrollToItem": { "alias": "hasScrollToItem"; "required": false; }; "hasBoldRootLevel": { "alias": "hasBoldRootLevel"; "required": false; }; }, { "isClick": "isClick"; "itemClick": "itemClick"; "expandToggle": "expandToggle"; }, never, never, true, never>;
    static ngAcceptInputType_isCollapsed: unknown;
    static ngAcceptInputType_hasCollapsedInitials: unknown;
    static ngAcceptInputType_hasFilter: unknown;
    static ngAcceptInputType_hasIcons: unknown;
    static ngAcceptInputType_hasIconsLabels: unknown;
    static ngAcceptInputType_hasTooltip: unknown;
    static ngAcceptInputType_hasTooltipOnExpanded: unknown;
    static ngAcceptInputType_expandAllItems: unknown;
    static ngAcceptInputType_isFlat: unknown;
    static ngAcceptInputType_hasScrollToItem: unknown;
    static ngAcceptInputType_hasBoldRootLevel: unknown;
}
//# sourceMappingURL=eui-menu.component.d.ts.map