import { CropBoxBounds } from "../../../../lib/type/components/cropBox";
import { ArrowLikeElement } from "../../../../lib/type/editor/ArrowLikeElement";
type Point = {
    x: number;
    y: number;
};
export declare const getArrowEndpoints: (element: ArrowLikeElement) => {
    start: Point;
    end: Point;
};
export declare const getArrowBoundingRect: (element: ArrowLikeElement) => {
    x: number;
    y: number;
    width: number;
    height: number;
};
export declare const drawArrowElement: (context: CanvasRenderingContext2D, element: ArrowLikeElement, drawHandlesOptions?: {
    drawState: boolean;
    dotRadius: number;
}) => void;
export declare const getMousePositionOnArrowHandle: (mouseX: number, mouseY: number, element: ArrowLikeElement, dotRadius: number) => number | null;
export declare const isMouseOnArrow: (mouseX: number, mouseY: number, element: ArrowLikeElement, tolerance?: number) => boolean;
export declare const resizeArrowElement: (element: ArrowLikeElement, handleIndex: number, newMouseX: number, newMouseY: number, clipArea?: CropBoxBounds) => {
    startX: number;
    startY: number;
    endX: number;
    endY: number;
    x: number;
    y: number;
    width: number;
    height: number;
    x2: number;
    y2: number;
    arrowType: "line";
    theta: number;
    slashLength: number;
    borderWidth: number;
    color: string;
    id: string;
    drawNode?: boolean | undefined;
    dotRadius?: number | undefined;
} | {
    startX: number;
    startY: number;
    endX: number;
    endY: number;
    x: number;
    y: number;
    width: number;
    height: number;
    x2: number;
    y2: number;
    arrowType: "filled";
    borderWidth: number;
    color: string;
    id: string;
    drawNode?: boolean | undefined;
    dotRadius?: number | undefined;
};
export declare const moveArrowElement: (element: ArrowLikeElement, deltaX: number, deltaY: number, clipArea: CropBoxBounds) => {
    startX: number;
    startY: number;
    endX: number;
    endY: number;
    x: number;
    y: number;
    width: number;
    height: number;
    x2: number;
    y2: number;
    arrowType: "line";
    theta: number;
    slashLength: number;
    borderWidth: number;
    color: string;
    id: string;
    drawNode?: boolean | undefined;
    dotRadius?: number | undefined;
} | {
    startX: number;
    startY: number;
    endX: number;
    endY: number;
    x: number;
    y: number;
    width: number;
    height: number;
    x2: number;
    y2: number;
    arrowType: "filled";
    borderWidth: number;
    color: string;
    id: string;
    drawNode?: boolean | undefined;
    dotRadius?: number | undefined;
};
export declare const updateArrowDrawNodeState: (element: ArrowLikeElement, drawState: boolean, dotRadius: number) => {
    drawNode: boolean;
    dotRadius: number;
    arrowType: "line";
    startX: number;
    startY: number;
    endX: number;
    endY: number;
    x2: number;
    y2: number;
    theta: number;
    slashLength: number;
    width: number;
    height: number;
    borderWidth: number;
    color: string;
    id: string;
    x: number;
    y: number;
} | {
    drawNode: boolean;
    dotRadius: number;
    arrowType: "filled";
    startX: number;
    startY: number;
    endX: number;
    endY: number;
    x2: number;
    y2: number;
    width: number;
    height: number;
    borderWidth: number;
    color: string;
    id: string;
    x: number;
    y: number;
};
export {};
