/**
 * Track mouse position globally or within a target
 */
export declare function useMouse(options?: MouseOptions): MouseRef;
/**
 * Track mouse position relative to an element
 */
// eslint-disable-next-line pickier/no-unused-vars
export declare function useMouseInElement(element: HTMLElement | (() => HTMLElement | null) | null, options?: Omit<MouseOptions, 'target'>): ElementMouseRef;
/**
 * Track pointer (unified mouse + touch + pen)
 */
export declare function usePointer(options?: MouseOptions): MouseRef;
/**
 * useMouse - Reactive mouse/pointer position tracking
 *
 * Track mouse position, movement, and button states.
 *
 * @example
 * ```ts
 * const mouse = useMouse()
 * mouse.subscribe(state => {
 *   console.log(`Mouse at ${state.x}, ${state.y}`)
 * })
 *
 * // Track within a specific element
 * const elementMouse = useMouseInElement(myElement)
 * ```
 */
export declare interface MouseState {
  x: number
  y: number
  pageX: number
  pageY: number
  clientX: number
  clientY: number
  movementX: number
  movementY: number
  buttons: number
  isPressed: boolean
  isInside: boolean
}
export declare interface MouseOptions {
  target?: Window | HTMLElement | null
  touch?: boolean
  resetOnLeave?: boolean
  type?: 'page' | 'client' | 'screen' | 'movement'
}
export declare interface MouseRef {
  get: () => MouseState
  subscribe: (fn: (state: MouseState) => void) => () => void
  stop: () => void
}
export declare interface ElementMouseState extends MouseState {
  elementX: number
  elementY: number
  elementWidth: number
  elementHeight: number
  isOutside: boolean
}
export declare interface ElementMouseRef {
  get: () => ElementMouseState
  subscribe: (fn: (state: ElementMouseState) => void) => () => void
  stop: () => void
}
