import { MenuKeyboardService } from '@fundamental-ngx/core/menu';
import { Subject } from 'rxjs';
import { NestedListInterface } from './nested-list/nested-list.interface';
import * as i0 from "@angular/core";
/**
 * Nested list keyboard service, which uses MenuKeyboardService, to deal with ArrowUp, ArrowDown, Space, Enter.
 * Also has own handling of ArrowLeft and ArrowRight, to open/close the menu if it has any children.
 */
export declare class NestedListKeyboardService {
    private keyboardService;
    /**
     * Event, that is thrown always, when the open/close i being called on item components.
     * Also triggers changing of elements, to remove closed/hidden elements
     */
    readonly refresh$: Subject<void>;
    /** @hidden */
    private readonly _destroyRef;
    /** @hidden */
    constructor(keyboardService: MenuKeyboardService);
    /**
     * Function called after refresh$ event is triggered.
     * Refresh the list of NestedItems, that the keyboard support should be provided for
     */
    refreshItems(lists: NestedListInterface[]): void;
    /** Recursive function to get all of the NestedItem elements in correct order. */
    private _getItems;
    /** Method that calls the recursive function, getItems() and gathers all of the items in the NestedList */
    private _getAllListItems;
    /**
     * Keyboard handle function. Uses keyboard support service from MenuComponent, to deal with ArrowUp, ArrowDown, Space, Enter.
     * For ArrowRight, if item is not expanded and has children (list or popup), the open function is triggered.
     * Otherwise it follows ArrowDown functionality.
     * For ArrowLeft, if item is expanded and has children (list or popup), the close function is triggered.
     * Otherwise it follows ArrowUp functionality
     */
    private _handleKeyDown;
    static ɵfac: i0.ɵɵFactoryDeclaration<NestedListKeyboardService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<NestedListKeyboardService>;
}
