/**
 * @name Options
 * @description The options to use for the ripple
 * @param duration <number> The duration of the ripple animation
 * @param timingFunction <string> The timing function of the ripple animation
 * @param disabled <boolean> Whether the ripple is disabled
 * @param className <string> The class name to apply to the ripple
 * @param opacity <number> The opacity of the ripple
 * @param containerClassName <string> The class name to apply to the ripple container
 * @param ignoreNonLeftClick <boolean> Whether to ignore non left clicks
 * @param onSpawn <function> A function that is called when the ripple is spawned
 * @param cancelAutomatically <boolean> Whether to cancel the ripple automatically
 * @param ref <React.RefObject<T>> The ref to the ripple host element
 * @returns <Options> The options to use for the ripple
  

 */
export type Options<T extends HTMLElement = any> = {
    duration: number;
    timingFunction: string;
    disabled?: boolean;
    className: string;
    opacity: number;
    containerClassName: string;
    ignoreNonLeftClick: boolean;
    onSpawn?: (ctx: {
        /** the ripple element */
        readonly ripple: HTMLDivElement;
        /** cancels the current ripple animation */
        readonly cancelRipple: () => void;
        /** the ref to the ripple host element */
        readonly ref: React.RefObject<T>;
        /** the event that triggered the ripple (ts: casting required) */
        readonly event: unknown;
        /** the ripple container element */
        readonly container: HTMLDivElement;
    }) => void;
    cancelAutomatically: boolean;
    ref: React.RefObject<T>;
};
export type MinimalEvent = {
    clientX: number;
    clientY: number;
    nativeEvent?: {
        which?: number;
        type?: string;
    };
};
/**
 * @name useRipple
 * @description Creates a ripple hook with the specified options
 * @param inputOptions The options to use for the ripple
 * @returns A tuple containing the ref and the event handler
 * @example
 * const [ref, event] = useRipple();
 * const [ref, event] = useRipple({color: 'blue'});
 *
  

 */
export declare function useRipple<T extends HTMLElement = any>(inputOptions?: Partial<Options<T>>): readonly [import('react').RefObject<any>, (event: MinimalEvent) => void];
/**
 * @name customRipple
 * @description Creates a custom ripple hook with the specified options
 * @param inputOptions The options to use for the ripple
 * @returns A function that takes override options and returns a ripple hook
 * @example
 * const useCustomRipple = customRipple({color: 'red'});
 * const [ref, event] = useCustomRipple({color: 'blue'});
 * const [ref, event] = useCustomRipple();
 * const [ref, event] = useCustomRipple({color: 'blue', duration: 1000});
 * const [ref, event] = useCustomRipple({color: 'blue', duration: 1000, opacity: 0.5});
 * const [ref, event] = useCustomRipple({color: 'blue', duration: 1000, opacity: 0.5, className: 'my-ripple'});
 *
  

 */
export declare function customRipple<T extends HTMLElement = any>(inputOptions?: Partial<Omit<Options<T>, "ref">>): (overrideOptions?: Partial<Options<T>>) => readonly [import('react').RefObject<any>, (event: MinimalEvent) => void];
//# sourceMappingURL=use-ripple.d.ts.map