import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, Injector, OnDestroy, OnInit } from '@angular/core';
import { MatSidenav } from '@angular/material/sidenav';
import { BreakpointObserver } from '@angular/cdk/layout';
import { Router } from '@angular/router';
import { Subscription } from 'rxjs';
import { AppMenuService } from '../../services/app-menu.service';
import { OUserInfoService, UserInfo } from '../../services/o-user-info.service';
import { OAppSidenavComponentStateService } from '../../services/state/o-app-menu-component-state.service';
import { MenuRootItem } from '../../types/menu-root-item.type';
import { OAppLayoutMode, OSidenavMode } from '../../util/codes';
import * as i0 from "@angular/core";
export declare const DEFAULT_INPUTS_O_APP_SIDENAV: string[];
export declare const DEFAULT_OUTPUTS_O_APP_SIDENAV: string[];
export declare class OAppSidenavComponent extends OAppSidenavComponentStateService implements OnInit, OnDestroy, AfterViewInit {
    protected injector: Injector;
    protected router: Router;
    protected elRef: ElementRef;
    protected cd: ChangeDetectorRef;
    protected media: BreakpointObserver;
    sidenav: MatSidenav;
    protected routerSubscription: Subscription;
    appMenuService: AppMenuService;
    menuRootArray: MenuRootItem[];
    protected _layoutMode: OAppLayoutMode;
    protected _sidenavMode: OSidenavMode;
    protected opened: boolean;
    showEllipsisMenu: boolean;
    _showUserInfo: boolean;
    _showToggleButton: boolean;
    openedSidenavImg: string;
    closedSidenavImg: string;
    onSidenavOpenedChange: EventEmitter<boolean>;
    onSidenavOpenedStart: EventEmitter<void>;
    onSidenavClosedStart: EventEmitter<void>;
    onSidenavToggle: EventEmitter<boolean>;
    afterSidenavToggle: EventEmitter<boolean>;
    protected oUserInfoService: OUserInfoService;
    protected userInfoSubscription: Subscription;
    protected permissionSubscription: Subscription;
    protected userInfo: UserInfo;
    protected mediaWatch: Subscription;
    protected manuallyClosed: boolean;
    onRouteChangeStorageSubscription: Subscription;
    storeState: boolean;
    constructor(injector: Injector, router: Router, elRef: ElementRef, cd: ChangeDetectorRef, media: BreakpointObserver);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    getDataToStore(): any;
    restoreMenuGroupState(): void;
    getComponentKey(): string;
    getRouteKey(): string;
    beforeunloadHandler(): void;
    protected registerLocalStorageServiceRouteChange(): void;
    updateStateStorage(): void;
    refreshMenuRoots(): void;
    onResize(): void;
    get layoutMode(): OAppLayoutMode;
    set layoutMode(val: OAppLayoutMode);
    get sidenavMode(): OSidenavMode;
    set sidenavMode(val: OSidenavMode);
    protected refreshMenuItemUserInfo(): void;
    ngOnDestroy(): void;
    isScreenSmall(): boolean;
    isMobileMode(): boolean;
    isDesktopMode(): boolean;
    isSidenavOpened(): boolean;
    toggleSidenav(): void;
    get showUserInfo(): boolean;
    set showUserInfo(arg: boolean);
    get showToggleButton(): boolean;
    set showToggleButton(arg: boolean);
    onMenuItemClick(): void;
    sidenavClosedStart(): void;
    sidenavOpenedStart(): void;
    sidenavOpenedChange(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<OAppSidenavComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<OAppSidenavComponent, "o-app-sidenav", never, { "opened": { "alias": "opened"; "required": false; }; "showUserInfo": { "alias": "show-user-info"; "required": false; }; "showToggleButton": { "alias": "show-toggle-button"; "required": false; }; "openedSidenavImg": { "alias": "opened-sidenav-image"; "required": false; }; "closedSidenavImg": { "alias": "closed-sidenav-image"; "required": false; }; "layoutMode": { "alias": "layout-mode"; "required": false; }; "sidenavMode": { "alias": "sidenav-mode"; "required": false; }; "storeState": { "alias": "store-state"; "required": false; }; "showEllipsisMenu": { "alias": "show-ellipsis-menu"; "required": false; }; }, { "onSidenavOpenedChange": "onSidenavOpenedChange"; "onSidenavOpenedStart": "onSidenavOpenedStart"; "onSidenavClosedStart": "onSidenavClosedStart"; "onSidenavToggle": "onSidenavToggle"; "afterSidenavToggle": "afterSidenavToggle"; }, never, ["o-app-layout-sidenav-projection-start", "o-app-layout-sidenav-projection-end", "*"], true, never>;
}
