import { Signal } from "@preact/signals-core";
import { Graph } from "../../../graph";
import { Component } from "../../../lib";
import { TComponentContext, TComponentProps, TComponentState } from "../../../lib/Component";
import { HitBox, HitBoxData } from "../../../services/HitTest";
import { EventedComponent } from "../EventedComponent/EventedComponent";
import { TGraphLayerContext } from "../layers/graphLayer/GraphLayer";
export type GraphComponentContext = TComponentContext & TGraphLayerContext & {
    graph: Graph;
};
export declare class GraphComponent<Props extends TComponentProps = TComponentProps, State extends TComponentState = TComponentState, Context extends GraphComponentContext = GraphComponentContext> extends EventedComponent<Props, State, Context> {
    hitBox: HitBox;
    private unsubscribe;
    constructor(props: Props, parent: Component);
    protected onDrag({ onDragStart, onDragUpdate, onDrop, isDraggable, }: {
        onDragStart?: (_event: MouseEvent) => void | boolean;
        onDragUpdate?: (diff: {
            prevCoords: [number, number];
            currentCoords: [number, number];
            diffX: number;
            diffY: number;
        }, _event: MouseEvent) => void;
        onDrop?: (_event: MouseEvent) => void;
        isDraggable?: (event: MouseEvent) => boolean;
    }): () => void;
    protected subscribeSignal<T>(signal: Signal<T>, cb: (v: T) => void): void;
    protected unmount(): void;
    setHitBox(minX: number, minY: number, maxX: number, maxY: number, force?: boolean): void;
    protected willIterate(): void;
    protected isVisible(): boolean;
    getHitBox(): [number, number, number, number];
    removeHitBox(): void;
    destroyHitBox(): void;
    onHitBox(_: HitBoxData): boolean;
}
