import { TemplateRef } from '@angular/core';
import { ComponentType } from '@angular/cdk/portal';
import { Observable } from 'rxjs';
import { SideMenuSize } from '../models/side-menu-size';
import { SideMenuRef } from '../models/side-menu-ref';
import { SideMenuInjectionData } from '../models/side-menu-injection-data';
import { SideMenuEvent } from '../models/side-menu-event';
import { MatDrawerToggleResult } from '@angular/material/sidenav';
import * as i0 from "@angular/core";
export declare class SideMenuService {
    private _sideMenuComponent;
    private _controlObject;
    private readonly isVersionVisible;
    private readonly allVersionEnabled;
    constructor(isVersionVisible: boolean, allVersionEnabled: boolean);
    /**
     * register SideMenuContainerComponent
     *
     * params menu is SideMenuContainerComponent
     */
    registerSideMenu(menu: any): void;
    isOpened(): boolean;
    /**
     * Open this _sideMenu, and return a Observable that will resolve when it's fully opened (or get rejected if it didn't).
     *
     * @returns Observable<MatDrawerToggleResult>
     */
    open<T>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>, width?: SideMenuSize, injectionData?: SideMenuInjectionData): SideMenuRef;
    private _createPortal;
    /**
     * Close this _sideMenu, and return a Observable that will resolve when it's fully closed (or get rejected if it didn't).
     *
     * @returns Observable<MatDrawerToggleResult>
     */
    close(closeEvent?: SideMenuEvent): Observable<MatDrawerToggleResult>;
    /**
     * Toggle this _sideMenu. This is equivalent to calling close() when it's already opened, or open() when it's closed.
     *
     * @param  isOpen  Whether the _sideMenu should be open.
     *
     * @returns open or close side menu
     */
    private componentIsPresent;
    static ɵfac: i0.ɵɵFactoryDeclaration<SideMenuService, [{ optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<SideMenuService>;
}
