import { NestedListDirective, NestedListModel, PreparedNestedListComponent, NestedListKeyboardService, NestedListStateService } from '@fundamental-ngx/core/nested-list';
import * as i0 from '@angular/core';
import { AfterContentInit, AfterViewInit, OnInit, QueryList } from '@angular/core';
import { Nullable } from '@fundamental-ngx/cdk/utils';

declare class SideNavigationMainDirective {
    /** @hidden */
    list: NestedListDirective;
    /** @hidden */
    classSideNavMainNavigation: boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<SideNavigationMainDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SideNavigationMainDirective, "[fdSideNavigationMain], [fd-side-nav-main]", never, {}, {}, ["list"], never, true, never>;
}

interface SideNavigationModel {
    condensed?: boolean;
    mainNavigation: NestedListModel;
    utilityNavigation?: NestedListModel;
}

declare class SideNavigationUtilityDirective {
    /** @hidden */
    list: NestedListDirective;
    /** @hidden */
    classSideNavUtility: boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<SideNavigationUtilityDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SideNavigationUtilityDirective, "[fdSideNavigationUtility], [fd-side-nav-utility]", never, {}, {}, ["list"], never, true, never>;
}

interface SideNavigationInterface {
    additionalShellbarCssClass: string;
}

/**
 * @deprecated use the vertical navigation component instead.
 * The side-navigation is a wrapping component representing
 * a left navigation that can always display or expand/collapse using the menu icon within the global navigation.
 */
declare class SideNavigationComponent implements AfterContentInit, AfterViewInit, OnInit, SideNavigationInterface {
    private keyboardService;
    private nestedListState;
    /**
     * Side navigation configuration, to pass whole model object, instead of creating HTML from scratch
     */
    sideNavigationConfiguration: Nullable<SideNavigationModel>;
    /** Whether condensed mode is included */
    condensed: boolean;
    /**
     * The screen width, in pixels, at which to automatically collapse the side navigation on window resize.
     */
    collapseWidth: number;
    /** Whether clicking on elements should change selected state of items */
    set selectable(selectable: boolean);
    /** @hidden */
    sideNavUtility: SideNavigationUtilityDirective;
    /** @hidden */
    sideNavMain: SideNavigationMainDirective;
    /** @hidden */
    preparedNestedList: QueryList<PreparedNestedListComponent>;
    /** @hidden */
    additionalShellbarCssClass: string;
    /** @hidden */
    private readonly _cdr;
    /** @hidden */
    private readonly _destroyRef;
    /** @hidden */
    constructor(keyboardService: NestedListKeyboardService, nestedListState: NestedListStateService);
    /** @hidden */
    onResize(): void;
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngAfterContentInit(): void;
    /** @hidden */
    ngAfterViewInit(): void;
    /**
     * @hidden
     * Method that returns 1 deep level of lists.
     */
    private getLists;
    static ɵfac: i0.ɵɵFactoryDeclaration<SideNavigationComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SideNavigationComponent, "fd-side-nav", never, { "sideNavigationConfiguration": { "alias": "sideNavigationConfiguration"; "required": false; }; "condensed": { "alias": "condensed"; "required": false; }; "collapseWidth": { "alias": "collapseWidth"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; }, {}, ["sideNavUtility", "sideNavMain"], ["*"], true, never>;
}

/**
 * @deprecated
 */
declare class SideNavigationModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<SideNavigationModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<SideNavigationModule, never, [typeof SideNavigationComponent, typeof SideNavigationMainDirective, typeof SideNavigationUtilityDirective], [typeof SideNavigationComponent, typeof SideNavigationMainDirective, typeof SideNavigationUtilityDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<SideNavigationModule>;
}

export { SideNavigationComponent, SideNavigationMainDirective, SideNavigationModule, SideNavigationUtilityDirective };
export type { SideNavigationInterface, SideNavigationModel };
