import { Graph } from "../../../../graph";
import { Component } from "../../../../lib/Component";
import { Layer, LayerContext, LayerProps } from "../../../../services/Layer";
import { Camera, TCameraProps } from "../../../../services/camera/Camera";
import { ICamera } from "../../../../services/camera/CameraService";
import { EventedComponent } from "../../EventedComponent/EventedComponent";
export type TGraphLayerProps = LayerProps & {
    camera: ICamera;
    root: HTMLDivElement;
};
export type TGraphLayerContext = LayerContext & {
    canvas: HTMLCanvasElement;
    ctx: CanvasRenderingContext2D;
    root: HTMLDivElement;
    ownerDocument: Document;
    graph: Graph;
};
export type GraphMouseEvent = CustomEvent<{
    target: EventedComponent;
    sourceEvent: MouseEvent;
    pointerPressed: boolean;
}>;
export declare class GraphLayer extends Layer<TGraphLayerProps, TGraphLayerContext> {
    $: Component & {
        camera: Camera;
    };
    private camera;
    private targetComponent;
    private prevTargetComponent;
    private canEmulateClick?;
    private pointerStartTarget?;
    private pointerStartEvent?;
    private pointerPressed;
    private eventByTargetComponent?;
    private fixedTargetComponent?;
    constructor(props: TGraphLayerProps);
    protected afterInit(): void;
    /**
     * Attaches DOM event listeners to the root element.
     * All event listeners are registered with the rootOn wrapper method to ensure they are properly cleaned up
     * when the layer is unmounted. This eliminates the need for manual event listener removal.
     */
    private attachListeners;
    handleEvent(e: Event): void;
    private dispatchNativeEvent;
    private applyEventToTargetComponent;
    private updateTargetComponent;
    private onRootPointerMove;
    private handleMouseDownEvent;
    private onRootPointerStart;
    private onRootPointerEnd;
    private tryEmulateClick;
    updateChildren(): import("../../../../lib/CoreComponent").ComponentDescriptor<TCameraProps, TGraphLayerContext>[];
}
