import { ReactNode } from 'react'; type ExtractArgs = T[keyof T] extends (...args: infer A) => any ? A : any[]; type EventState> = T & { (key?: keyof T, fun?: T[keyof T]): EventState; (target?: Partial): EventState; }; type Vec2 = [x: number, y: number]; interface HoverState { _active: boolean; active: boolean; device: 'mouse' | 'pointer' | 'touch'; _value: Vec2; value: Vec2; delta: Vec2; offset: Vec2; movement: Vec2; event: Event; target: El; isHoverStart: boolean; isHovering: boolean; isHoverEnd: boolean; hover: (self: HoverState) => void; hoverStart(e: Event): void; hovering(e: Event): void; hoverEnd(e: Event): void; mount(target: El): void; clean(target?: El): void; ref(target: El | null): void; } type HoverArg = Partial> | HoverState['hover']; declare const useHover: (arg?: HoverArg) => EventState>; interface HoverProps extends Partial> { children: (state: HoverState) => ReactNode; } declare const Hover: (props: HoverProps) => ReactNode; export { Hover, type HoverProps, useHover as default, useHover };