/**
 * RippleContainer - Component to render ripple effects
 *
 * Use with the useRipple hook for Material-style button ripples.
 *
 * @example
 * ```tsx
 * import { useRipple, RippleContainer } from '@countermeasure/web-components/react/primitives/ripple'
 *
 * function Button({ children }) {
 *   const { ripples, onPointerDown, onAnimationEnd } = useRipple()
 *   return (
 *     <button onPointerDown={onPointerDown} className="relative overflow-hidden">
 *       {children}
 *       <RippleContainer ripples={ripples} onAnimationEnd={onAnimationEnd} />
 *     </button>
 *   )
 * }
 * ```
 */
interface Ripple {
    id: number;
    x: number;
    y: number;
    size: number;
}
interface UseRippleReturn {
    /** Array of active ripples to render */
    ripples: Ripple[];
    /** Handler to attach to onPointerDown */
    onPointerDown: (event: React.PointerEvent<HTMLElement>) => void;
    /** Handler to remove completed ripples */
    onAnimationEnd: (id: number) => void;
}
export declare function useRipple(duration?: number): UseRippleReturn;
interface RippleContainerProps {
    ripples: Ripple[];
    onAnimationEnd: (id: number) => void;
    color?: string;
    duration?: number;
}
export declare function RippleContainer({ ripples, onAnimationEnd, color, duration, }: RippleContainerProps): import("react/jsx-runtime").JSX.Element;
export {};
//# sourceMappingURL=ripple.d.ts.map