import React from 'react';
import { DragTarget } from "../hooks/usePointerDrag";
import { Point } from '../utils/canvasGraphUtils';
export type VectorHeadStyle = 'arrow' | 'circle' | 'both' | 'none';
export interface CanvasVector {
    x: number;
    y: number;
    color?: string;
    draggable?: boolean;
    headStyle?: VectorHeadStyle;
    label?: string | ((x: number, y: number) => string);
    width?: number;
}
export interface ParallelogramVector {
    x: number;
    y: number;
}
export interface CanvasParallelogram {
    vectorA: ParallelogramVector;
    vectorB: ParallelogramVector;
    fillColor?: string;
    strokeColor?: string;
}
interface GraphCanvasProps {
    width: number;
    height: number;
    scale: number;
    vectors?: CanvasVector[];
    parallelograms?: CanvasParallelogram[];
    snap?: number | ((x: number, y: number) => [number, number]);
    locked?: boolean;
    onVectorsChange?: (updated: CanvasVector[]) => void;
    customDragTargets?: DragTarget[];
    onCustomDragTargetsChange?: (updated: DragTarget[]) => void;
    customDraw?: (ctx: CanvasRenderingContext2D, origin: Point, scale: number) => void;
}
declare const GraphCanvas: React.FC<GraphCanvasProps>;
export default GraphCanvas;
