import { ApplicationRef, ChangeDetectorRef, ElementRef, Injector, NgZone, OnDestroy } from '@angular/core';
import { Nullable } from '@angular-ru/cdk/typings';
import { Subscription } from 'rxjs';
import { MousePosition } from '../interfaces/table-builder.internal';
import { ContextMenuService } from '../services/context-menu/context-menu.service';
import { FilterableService } from '../services/filterable/filterable.service';
import * as i0 from "@angular/core";
export interface PositionState {
    key: Nullable<string>;
    opened: Nullable<boolean>;
    position: MousePosition;
}
export declare abstract class AbstractModalViewLayerDirective<T, K extends PositionState> implements OnDestroy {
    protected readonly cd: ChangeDetectorRef;
    abstract width: Nullable<number>;
    abstract height: Nullable<number>;
    abstract maxHeight: Nullable<number>;
    protected menu: ElementRef<HTMLDivElement>;
    protected subscription: Nullable<Subscription>;
    protected readonly app: ApplicationRef;
    protected readonly filterable: FilterableService<T>;
    protected readonly ngZone: NgZone;
    protected readonly contextMenu: ContextMenuService<T>;
    isViewed: boolean;
    isRendered: boolean;
    isShowed: boolean;
    minHeight: Nullable<number>;
    constructor(cd: ChangeDetectorRef, injector: Injector);
    get left(): number;
    get top(): number;
    get overflowX(): number;
    get overflowY(): number;
    get calculatedHeight(): number;
    abstract get state(): Partial<K>;
    abstract close(event: MouseEvent): void;
    ngOnDestroy(): void;
    protected update(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractModalViewLayerDirective<any, any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractModalViewLayerDirective<any, any>, never, never, {}, {}, never>;
}
//# sourceMappingURL=abstract-modal-view-layer.directive.d.ts.map