import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnDestroy, Renderer2, ViewContainerRef } from '@angular/core';
import { BehaviorSubject, Observable, ReplaySubject } from 'rxjs';
import { BaseAction, SelectingAction } from '../../actions';
import { BaseModel } from '../../models/base.model';
import { DiagramModel } from '../../models/diagram.model';
import { LinkModel } from '../../models/link.model';
import { NodeModel } from '../../models/node.model';
import { EntityMap, ZonedClass } from '../../utils';
export declare class NgxDiagramComponent implements AfterViewInit, OnDestroy, ZonedClass {
    protected document: any;
    ngZone: NgZone;
    protected renderer: Renderer2;
    protected cdRef: ChangeDetectorRef;
    protected elRef: ElementRef<HTMLElement>;
    diagramModel: DiagramModel;
    allowCanvasZoom: boolean;
    allowCanvasTranslation: boolean;
    inverseZoom: boolean;
    allowLooseLinks: boolean;
    maxZoomOut: number;
    maxZoomIn: number;
    portMagneticRadius: number;
    smartRouting: boolean;
    actionStartedFiring: EventEmitter<BaseAction>;
    actionStillFiring: EventEmitter<BaseAction>;
    actionStoppedFiring: EventEmitter<BaseAction>;
    nodesLayer: ViewContainerRef;
    linksLayer: ViewContainerRef;
    canvas: ElementRef;
    protected nodes$: Observable<EntityMap<NodeModel>>;
    protected links$: Observable<EntityMap<LinkModel>>;
    protected action$: BehaviorSubject<BaseAction>;
    protected nodesRendered$: BehaviorSubject<boolean>;
    protected destroyed$: ReplaySubject<boolean>;
    get host(): HTMLElement;
    constructor(document: any, ngZone: NgZone, renderer: Renderer2, cdRef: ChangeDetectorRef, elRef: ElementRef<HTMLElement>);
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    /**
     * fire the action registered and notify subscribers
     */
    fireAction(): void;
    /**
     * Unregister the action, post firing and notify subscribers
     */
    stopFiringAction(shouldSkipEvent?: boolean): void;
    /**
     * Register the new action, pre firing and notify subscribers
     */
    startFiringAction(action: BaseAction): void;
    selectAction(): BehaviorSubject<SelectingAction>;
    shouldDrawSelectionBox(): boolean;
    getMouseElement(event: MouseEvent): {
        model: BaseModel;
        element: Element;
    };
    onMouseUp(event: MouseEvent): void;
    /**
     * @description Mouse Move Event Handler
     * @param event MouseEvent
     */
    onMouseMove(event: MouseEvent): void;
    onMouseDown(event: MouseEvent): void;
    onMouseWheel(event: WheelEvent): void;
    protected setLayerStyles(x: number, y: number, zoom: number): void;
    protected initNodes(): void;
    protected initLinks(): void;
    protected initSubs(): void;
    protected getNodesLayer(): HTMLDivElement;
    protected getLinksLayer(): HTMLDivElement;
    protected createMouseListeners(): void;
}
