import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, Injector, OnDestroy, OnInit } from '@angular/core';
import { MediaObserver } from '@angular/flex-layout';
import { MatSidenav } from '@angular/material/sidenav';
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: MediaObserver;
    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: MediaObserver);
    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": "opened"; "showUserInfo": "show-user-info"; "showToggleButton": "show-toggle-button"; "openedSidenavImg": "opened-sidenav-image"; "closedSidenavImg": "closed-sidenav-image"; "layoutMode": "layout-mode"; "sidenavMode": "sidenav-mode"; "storeState": "store-state"; "showEllipsisMenu": "show-ellipsis-menu"; }, { "onSidenavOpenedChange": "onSidenavOpenedChange"; "onSidenavOpenedStart": "onSidenavOpenedStart"; "onSidenavClosedStart": "onSidenavClosedStart"; "onSidenavToggle": "onSidenavToggle"; "afterSidenavToggle": "afterSidenavToggle"; }, never, ["o-app-layout-sidenav-projection-start", "o-app-layout-sidenav-projection-end", "*"], false, never>;
}
