import type { Pausable } from "../use-pausable/index.js"; import type { Position } from "../utils/basic.js"; export type UseMouseCoordType = 'page' | 'client' | 'screen' | 'movement'; export type UseMouseSourceType = 'mouse' | 'touch' | null; export type UseMouseEventExtractor = (event: MouseEvent | Touch) => [x: number, y: number] | null | undefined; export interface UseMouseOptions { /** * Type of coordinates to extract from the event. * * @defaultValue 'page' */ type?: UseMouseCoordType | UseMouseEventExtractor; /** * Target element to attach the event listeners. * * @defaultValue window */ target?: Window | EventTarget | null | undefined; /** * Whether to enable touch events. * * @defaultValue true */ touch?: boolean; /** * Whether to enable scroll events. * * @defaultValue true */ scroll?: boolean; /** * Whether to reset the position when touch ends. * * @defaultValue false */ resetOnTouchEnds?: boolean; /** * Initial position. * * @defaultValue { x: 0, y: 0 } */ initialValue?: Position; /** * Whether to start to update position immediately. * * @defaultValue false */ immediate?: boolean; } export interface UseMouseReturns extends Position, Pausable { /** * mouse event position. */ position: Position; /** * Source type of the event. */ sourceType: UseMouseSourceType; /** * stop the mouse event listener immediately. */ stop(): void; } /** * A React Hook that tracks mouse position. * * @param {UseMouseOptions} options - `UseMouseOptions`, options to configure the hook, see {@link UseMouseOptions} * @returns {UseMouseReturns} `UseMouseReturns`, see {@link UseMouseReturns} */ export declare function useMouse(options?: UseMouseOptions): UseMouseReturns;