/**
* RemoteSelectionRings — renders colored outline rings + name tags over
* elements selected by remote participants.
*
* Each participant's presence payload may contain a `selection` key with an
* opaque descriptor (e.g. a CSS selector). The `resolveRect` callback maps
* a descriptor to a DOMRect (or null when the element isn't found). Rings
* are rendered as absolutely-positioned outlines anchored to the container.
*
* Usage:
*
* {content}
* document.querySelector(selector)?.getBoundingClientRect() ?? null}
* containerRef={containerRef}
* />
*
*/
import { type RefObject } from "react";
import type { OtherPresence } from "./types.js";
/**
* Selection descriptors may be a plain string (treated as the resolver
* input) or an object carrying a resolver input plus a human label
* ("Editing hero section").
*/
export type SelectionDescriptor = string | {
selector: string;
label?: string;
};
export interface RemoteSelectionRingsProps {
/** Remote participants. */
others: OtherPresence[];
/**
* Key inside presence payload that carries the selection descriptor.
* Default: "selection"
*/
selectionKey?: string;
/**
* Resolver: maps a selection descriptor to a DOMRect relative to the
* viewport. Return null when the element is not found.
*/
resolveRect: (descriptor: string) => DOMRect | null;
/**
* Container element ref. Rings are positioned relative to this element's
* bounding box.
*/
containerRef: RefObject;
/** Additional CSS class for the overlay div. */
className?: string;
}
export declare function RemoteSelectionRings({ others, selectionKey, resolveRect, containerRef, className, }: RemoteSelectionRingsProps): import("react").JSX.Element;
//# sourceMappingURL=RemoteSelectionRings.d.ts.map