import { type HookErrorHandler } from '../utils/errors.js'; /** A ref-like or direct event target observed by {@link useHover}. @public */ export type HoverTarget = EventTarget | { readonly current: EventTarget | null; } | (() => EventTarget | null | undefined) | null | undefined; /** Options for {@link useHover}. @public */ export interface UseHoverOptions { /** Optional target when using the object-form overload. */ readonly target?: HoverTarget; /** Alias for `target`, useful when passing a React ref. */ readonly ref?: HoverTarget; /** Disables listeners and forces the returned state to `false`. */ readonly enabled?: boolean; /** Whether mouseenter/mouseleave listeners use capture. */ readonly capture?: boolean; /** Called after the target becomes hovered. */ readonly onEnter?: (event: MouseEvent) => void; /** Called after the target is no longer hovered. */ readonly onLeave?: (event: MouseEvent) => void; /** Called after each hover transition. */ readonly onChange?: (isHovering: boolean, event: MouseEvent) => void; /** Observes callback failures before the original error is rethrown. */ readonly onError?: HookErrorHandler; } /** * Tracks whether a target is between `mouseenter` and `mouseleave` events. * The subscription follows the current value of a ref on each committed * render, and every native listener is removed when its target changes or the * component unmounts. * * @public */ export declare function useHover(options?: UseHoverOptions): boolean; /** @public */ export declare function useHover(target: HoverTarget, options?: Omit): boolean;