import { DeepMaybeObservable, ConfigurableEventFilter, ReadonlyObservable } from '@usels/core'; import { ConfigurableWindow } from '../../shared/configurable.mjs'; import { MaybeEventTarget } from '../../types.mjs'; import '@legendapp/state'; type UseMouseCoordType = "page" | "client" | "screen" | "movement"; type UseMouseSourceType = "mouse" | "touch" | null; interface UseMouseOptions extends ConfigurableEventFilter, ConfigurableWindow { /** Coordinate type. Default: "page" */ type?: UseMouseCoordType; /** Track touch events. Default: true */ touch?: boolean; /** Reset coordinates on touchend. Default: false */ resetOnTouchEnds?: boolean; /** Event target. Default: window */ target?: MaybeEventTarget; /** Initial coordinate values. Default: { x: 0, y: 0 } */ initialValue?: { x: number; y: number; }; } interface UseMouseReturn { /** X coordinate */ x$: ReadonlyObservable; /** Y coordinate */ y$: ReadonlyObservable; /** Event source type: "mouse" | "touch" | null */ sourceType$: ReadonlyObservable; } /** * Framework-agnostic mouse/touch position tracker. * * Monitors `mousemove` and optionally `touchstart`/`touchmove`/`touchend` * events on a target (default: window) and exposes reactive coordinates. */ declare function createMouse(options?: DeepMaybeObservable): UseMouseReturn; export { type UseMouseCoordType, type UseMouseOptions, type UseMouseReturn, type UseMouseSourceType, createMouse };