/**
 * This component, given a set of DOMHighlights, draws highlight rectangles in
 * the same absolute position as the highlighted content, as computed by the
 * range's `getClientRects` method.
 *
 * TODO(mdr): Many things can affect the correct positioning of highlighting,
 *     and this component does not attempt to anticipate them. If we start
 *     using this highlighting library on content with a more dynamic layout,
 *     we should add a hook to allow the parent to `forceUpdate` the
 *     `HighlightingUI`.
 */
import * as React from "react";
import { PerseusI18nContext } from "../../i18n-context";
import type { TrackedSelection } from "./selection-tracker";
import type { DOMHighlight, DOMHighlightSet, DOMRange, ZIndexes } from "./types";
type Props = {
    buildHighlight: (range: DOMRange) => DOMHighlight | null | undefined;
    contentNode: Node;
    editable: boolean;
    highlights: DOMHighlightSet;
    offsetParent: Element;
    onAddHighlight: (range: DOMHighlight) => unknown;
    onRemoveHighlight: (highlightKey: string) => unknown;
    zIndexes: ZIndexes;
};
declare class HighlightingUI extends React.PureComponent<Props> {
    static contextType: React.Context<import("../../i18n-context").I18nContextType>;
    context: React.ContextType<typeof PerseusI18nContext>;
    _handleAddHighlight(highlightToAdd: DOMHighlight): void;
    _selectionIsValid(trackedSelection?: TrackedSelection | null): trackedSelection is TrackedSelection;
    render(): React.ReactNode;
}
export default HighlightingUI;
