/** * LiveCursorOverlay — renders remote users' cursors over an absolutely- * positioned container. * * Cursor positions are expected as normalized coordinates (0–1 relative to * the container's content size) so different zoom/scroll positions map * correctly. Pass a `mapCoords` prop to handle non-identity transforms * (e.g. a zoomed canvas). * * The agent uses the same pointer shape with an "AI" label. * * Cursors fade out after 10 seconds of no movement. */ import { type RefObject } from "react"; import type { OtherPresence, NormalizedPoint } from "./types.js"; export interface CursorMapFn { /** Convert normalized coords to pixel offsets within the overlay container. */ (norm: NormalizedPoint): { x: number; y: number; }; } export interface LiveCursorOverlayProps { /** Remote participants with presence payload. */ others: OtherPresence[]; /** * Key inside presence payload that carries the cursor position. * Default: "cursor" * Expected shape: { x: number; y: number } (normalized 0–1). */ cursorKey?: string; /** * Override coordinate mapping. Default: scale by container clientWidth/Height. * Pass this when the container uses transform: scale() or has virtual scroll. */ mapCoords?: CursorMapFn; /** * Container element ref. Required when mapCoords is not provided — * used to compute pixel positions from normalized coords. */ containerRef?: RefObject; /** Additional CSS class for the overlay div. */ className?: string; } export declare function LiveCursorOverlay({ others, cursorKey, mapCoords, containerRef, className, }: LiveCursorOverlayProps): import("react").JSX.Element; //# sourceMappingURL=LiveCursorOverlay.d.ts.map