import { type CurrentReadable } from '../core/current-value.js';
import { type PointerClick, type PointerFrameRequestMode, type PointerState } from '../core/pointer.js';
export type { PointerClick, PointerFrameRequestMode, PointerKind, PointerPoint, PointerState } from '../core/pointer.js';
/**
 * Configuration for pointer input handling in `usePointer`.
 */
export interface UsePointerOptions {
    /**
     * Enables pointer listeners.
     *
     * @default true
     */
    enabled?: boolean;
    /**
     * Frame wake-up strategy for pointer-driven state changes.
     *
     * @default 'auto'
     */
    requestFrame?: PointerFrameRequestMode;
    /**
     * Requests pointer capture on pointer down.
     *
     * @default true
     */
    capturePointer?: boolean;
    /**
     * Tracks pointer move/up outside canvas while pointer is pressed.
     *
     * @default true
     */
    trackWhilePressedOutsideCanvas?: boolean;
    /**
     * Enables click/tap synthesis on pointer up.
     *
     * @default true
     */
    clickEnabled?: boolean;
    /**
     * Maximum press duration to consider pointer up a click (milliseconds).
     *
     * @default 350
     */
    clickMaxDurationMs?: number;
    /**
     * Maximum pointer travel from down to up to consider pointer up a click (pixels).
     *
     * @default 8
     */
    clickMaxMovePx?: number;
    /**
     * Allowed pointer buttons for click synthesis.
     *
     * @default [0]
     */
    clickButtons?: number[];
    /**
     * Called after pointer move state update.
     */
    onMove?: (state: PointerState, event: PointerEvent) => void;
    /**
     * Called after pointer down state update.
     */
    onDown?: (state: PointerState, event: PointerEvent) => void;
    /**
     * Called after pointer up/cancel state update.
     */
    onUp?: (state: PointerState, event: PointerEvent) => void;
    /**
     * Called when click/tap is synthesized.
     */
    onClick?: (click: PointerClick, state: PointerState, event: PointerEvent) => void;
}
/**
 * Reactive state returned by `usePointer`.
 */
export interface UsePointerResult {
    /**
     * Current pointer state.
     */
    state: CurrentReadable<PointerState>;
    /**
     * Last synthesized click/tap event.
     */
    lastClick: CurrentReadable<PointerClick | null>;
    /**
     * Clears last click snapshot.
     */
    resetClick: () => void;
}
/**
 * Tracks normalized pointer coordinates and click/tap snapshots for the active `FragCanvas`.
 */
export declare function usePointer(options?: UsePointerOptions): UsePointerResult;
//# sourceMappingURL=use-pointer.d.ts.map