import { Overlay, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';
import { Injector, EventEmitter } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
export interface ActiveContextMenuSub {
    id: number;
    isTriggerHovered: BehaviorSubject<boolean>;
    isMenuHovered: BehaviorSubject<boolean>;
    submenu: boolean;
}
export interface ActiveContextMenu extends ActiveContextMenuSub {
    overlayRef: OverlayRef;
    component: any;
    menuClose: EventEmitter<void>;
    menuAction: EventEmitter<any>;
}
export declare class ContextMenuService {
    private overlay;
    private scrollStrategy;
    private injector;
    menus: ActiveContextMenu[];
    id: number;
    constructor(overlay: Overlay, scrollStrategy: ScrollStrategyOptions, injector: Injector);
    /**
     *
     * @param $event triggering event
     * @param menuComponent the component to be shown
     * @param submenu is a menu within a menu
     * @param level if submenu, what level
     */
    show($event: MouseEvent, menuComponent: any, context: any, menuClose: EventEmitter<any>, menuAction: EventEmitter<any>, submenu?: boolean, level?: number): ActiveContextMenu;
    getCurrentLevel(): number;
    closeAll(context?: any, idx?: number): void;
    destroyMenu(menu: ActiveContextMenu, context?: any): void;
    close(menu: ActiveContextMenu, menuIndex: number, context?: any): void;
    checkOutsideClick($event: MouseEvent): void;
    closeSubMenu(id: number): void;
}
