import * as React from "react";
import type { CSSCursor } from "./css-cursor";
import type { AriaLive } from "../../types";
import type { KeyboardMovementConstraint } from "../use-draggable";
import type { vec } from "mafs";
type Params = {
    point: vec.Vector2;
    ariaDescribedBy?: string;
    ariaLabel?: string;
    ariaLive?: AriaLive;
    color?: string | undefined;
    constrain?: KeyboardMovementConstraint;
    cursor?: CSSCursor | undefined;
    forwardedRef?: React.ForwardedRef<SVGGElement | null> | undefined;
    /**
     * Represents where this point stands in the overall point sequence.
     * This is used to provide screen readers with context about the point.
     * Example: sequenceNumber={1} ==> "Point 1 at x comma y"
     *
     * Note: This number is 1-indexed, and should restart from 1 for each
     * interactive figure on the graph.
     */
    sequenceNumber?: number;
    onMove?: ((newPoint: vec.Vector2) => unknown) | undefined;
    onDragEnd?: (() => unknown) | undefined;
    onClick?: (() => unknown) | undefined;
    onFocus?: ((event: React.FocusEvent) => unknown) | undefined;
    onBlur?: ((event: React.FocusEvent) => unknown) | undefined;
};
type Return = {
    focusableHandle: React.ReactNode;
    visiblePoint: React.ReactNode;
    focusableHandleRef: React.RefObject<SVGGElement>;
    visiblePointRef: React.RefObject<SVGGElement>;
};
export declare function useControlPoint(params: Params): Return;
export {};
