/*!
 * Copyright 2020 VMware, Inc.
 * SPDX-License-Identifier: BSD-2-Clause
 */
import { OnDestroy, Renderer2 } from '@angular/core';
import { Direction, MenuItem } from './dropdown.component';
import * as i0 from "@angular/core";
/**
 * Provided at the injector level of root {@link DropdownComponent}. The same service object is used for all the nested menus along
 * with the root menu. This is responsible for listening to arrow key presses within the root dropdown menu container and updating the
 * focused item on the DOM across all the nested and root menus.
 */
export declare class DropdownFocusHandlerService implements OnDestroy {
    private renderer;
    currentFocusedItem: MenuItem;
    unlistenFuncs: (() => void)[];
    constructor(renderer: Renderer2);
    ngOnDestroy(): void;
    /**
     * Moves the focus to HTML element in the given direction and returns true if the focus is moved and false otherwise
     */
    moveFocus(direction: Direction): boolean;
    /**
     * Calls the HTML focus method on the HTML element passed and removed focus on currently focused element.
     * Returns true if the focus is moved and false otherwise.
     */
    moveFocusTo(item: MenuItem): boolean;
    /**
     * Attaches arrow key event listeners to the root menu container in all direction except right. This is because, when a right arrow is
     * pressed, Clarity opens the nested dropdown menu and the logic inside {@link DropdownFocusHandlerDirective.ngAfterViewInit}
     * automatically moves the focus to first item in the menu on the right side
     */
    listenToArrowKeys(menuContainer: HTMLElement): void;
    /**
     * Whenever escape is pressed on dropdown item, the menu has to be closed and the focus has to be moved to parent menu if any... Just
     * like when left arrow key is pressed
     */
    escapePressed(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DropdownFocusHandlerService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DropdownFocusHandlerService>;
}
