import { AfterContentInit, ChangeDetectorRef, ElementRef, OnDestroy, QueryList } from '@angular/core';
import { Observable } from 'rxjs';
import { ContentDensityObserver } from '@fundamental-ngx/core/content-density';
import { FdLanguage } from '@fundamental-ngx/i18n';
import { NestedItemDirective } from '../nested-item/nested-item.directive';
import { NestedItemService } from '../nested-item/nested-item.service';
import { NestedListKeyboardService } from '../nested-list-keyboard.service';
import { NestedListStateService } from '../nested-list-state.service';
import { NestedListInterface } from './nested-list.interface';
import * as i0 from "@angular/core";
/**
 * <div fd-nested-list>
 *  <div fd-nested-list>
 *  </div>
 * </div>
 */
export declare class NestedListDirective implements AfterContentInit, NestedListInterface, OnDestroy {
    private _nestedItemService;
    private _nestedListKeyboardService;
    private _elementRef;
    private _changeDetectionRef;
    private readonly _nestedListStateService;
    private _language$;
    /** In case the user wants to no use icons for items in this list */
    textOnly: boolean;
    /** Aria defines role description for the Nested List Tree. */
    ariaRoledescriptionTree: string;
    /** Aria defines role description for the Nested List MenuBar. */
    ariaRoledescriptionMenuBar: string;
    /** Aria defines aria label for the selected item when the list with disabled selection. */
    ariaLabelSelected: string;
    /** @hidden */
    fdNestedListItemClass: boolean;
    /** @hidden */
    hidden: boolean;
    /**
     * @hidden
     * This variable is mostly to keep track of this list's children. There is not usage of it inside this directive,
     * but it's used by services and NestedItemDirective by itself,
     */
    nestedItems: QueryList<NestedItemDirective>;
    /** @hidden */
    private _nestedListHeader;
    /** @hidden */
    private _role;
    /** @hidden */
    private _ariaRoledescription;
    /** @hidden */
    private _ariaHaspopup;
    /** @hidden */
    private _tabindex;
    /** @hidden */
    private _subscriptions;
    /** @hidden */
    private readonly _translationResolver;
    /** @hidden */
    constructor(_nestedItemService: NestedItemService, _nestedListKeyboardService: NestedListKeyboardService, _elementRef: ElementRef, _changeDetectionRef: ChangeDetectorRef, _nestedListStateService: NestedListStateService, _language$: Observable<FdLanguage>, _contentDensityObserver: ContentDensityObserver);
    /** @hidden */
    ngOnDestroy(): void;
    /** @hidden */
    ngAfterContentInit(): void;
    /** @hidden */
    detectChanges(): void;
    /** @hidden */
    private _handleNestedLevel;
    /**
     * @hidden
     * Method, that checks how deep is the list element
     */
    private _getNestedLevel;
    /** @hidden */
    private _setAriaAttributes;
    /** @hidden */
    private _setAccessibilityProperties;
    static ɵfac: i0.ɵɵFactoryDeclaration<NestedListDirective, [{ optional: true; }, null, null, null, null, null, null]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<NestedListDirective, "[fdNestedList], [fd-nested-list]", never, { "textOnly": { "alias": "textOnly"; "required": false; }; "ariaRoledescriptionTree": { "alias": "ariaRoledescriptionTree"; "required": false; }; "ariaRoledescriptionMenuBar": { "alias": "ariaRoledescriptionMenuBar"; "required": false; }; "ariaLabelSelected": { "alias": "ariaLabelSelected"; "required": false; }; }, {}, ["_nestedListHeader", "nestedItems"], never, true, never>;
}
