import React, { MutableRefObject } from "react"; import { InfiniteCanvasNode, InfiniteCanvasPath, InfiniteCanvasPosition } from "../types"; export interface CanvasWindow { x?: number; y?: number; width?: number; height?: number; zoom?: number; } export interface Engine { nodeRefs: MutableRefObject<{ [key: string]: any; }>; nodes: InfiniteCanvasNode[]; paths: InfiniteCanvasPath[]; offset: InfiniteCanvasPosition; zoom: number; grid?: any[][]; widthScale?: number; heightScale?: number; generatePath: (start: InfiniteCanvasPosition, end: InfiniteCanvasPosition) => { x: number; y: number; }[]; setZoom: React.Dispatch>; setOffset: React.Dispatch>; setNodes: React.Dispatch>; setPaths: React.Dispatch>; nodeBounds: { width: number; height: number; x: number; y: number; } | null; canvasBounds: { width: number; height: number; } | null; } export interface EngineOptions { windowRef: MutableRefObject; initialWindow: CanvasWindow; scalingFactor: number; } export declare const useEngine: (options: EngineOptions) => [Engine];