import type { MouseEvent } from "react";
import type { UseStateInitializer, UseStateSetter } from "../types.js";
import type { SimpleHoverModeContext } from "./useHoverModeProvider.js";
/**
 * @since 6.0.0
 */
export interface HoverModeConfigurationOptions extends SimpleHoverModeContext {
    /** @defaultValue `false` */
    disabled?: boolean;
    /**
     * This can be used to override the `HoverModeContext`'s hover time.
     */
    hoverTimeout?: number;
    /**
     * This can be used to override the `HoverModeContext`'s leave time.
     */
    leaveTimeout?: number;
}
/**
 * @since 6.0.0
 */
export interface ControlledHoverModeOptions extends HoverModeConfigurationOptions {
    setVisible: UseStateSetter<boolean>;
}
/**
 * @since 6.0.0
 */
export interface ControlledHoverModeImplementation {
    startShowFlow(id?: string | MouseEvent): void;
    startHideFlow(): void;
    clearVisibilityTimeout(): void;
}
/**
 * @since 6.0.0
 */
export interface UncontrolledHoverModeOptions extends HoverModeConfigurationOptions {
    defaultVisible?: UseStateInitializer<boolean>;
}
/**
 * @since 6.0.0
 */
export interface UncontrolledHoverModeImplementation extends ControlledHoverModeImplementation {
    visible: boolean;
    setVisible: UseStateSetter<boolean>;
}
/**
 * @since 6.0.0
 */
export interface HoverModeImplementation extends ControlledHoverModeImplementation {
    visible?: boolean;
    setVisible?: UseStateSetter<boolean>;
}
/**
 * @since 2.8.0
 * @since 5.0.0 This hook no longer returns `handlers` or
 * `stickyHandlers` and does not hide when an element on the page is clicked.
 * @since 6.0.0 Requires passing the custom hover mode context to
 * work.
 */
export declare function useHoverMode(options: ControlledHoverModeOptions): ControlledHoverModeImplementation;
export declare function useHoverMode(options: UncontrolledHoverModeOptions): UncontrolledHoverModeImplementation;
