/**
 * Render a set of highlights. See HighlightRenderer for more details about how
 * each highlight is rendered.
 *
 * This component manages the state of the "Remove highlight" tooltip. To
 * determine the currently-hovered highlight, it calls the `isHovered` method
 * on each HighlightRenderer.
 */
import * as React from "react";
import { PerseusI18nContext } from "../../i18n-context";
import HighlightRenderer from "./highlight-renderer";
import type { DOMHighlightSet, Position, ZIndexes } from "./types";
type Props = {
    editable: boolean;
    highlights: DOMHighlightSet;
    offsetParent: Element;
    onRemoveHighlight: (highlightKey: string) => unknown;
    zIndexes: ZIndexes;
};
type State = {
    hoveredHighlightKey: string | null | undefined;
    hoveringTooltipFor: string | null | undefined;
};
declare class HighlightSetRenderer extends React.PureComponent<Props, State> {
    static contextType: React.Context<import("../../i18n-context").I18nContextType>;
    context: React.ContextType<typeof PerseusI18nContext>;
    state: State;
    _highlightRenderers: {
        [highlightKey: string]: HighlightRenderer;
    };
    componentDidMount(): void;
    UNSAFE_componentWillReceiveProps(nextProps: Props): void;
    componentWillUnmount(): void;
    /**
     * Given whether we were previously listening to mousemove events, and
     * whether we will now listen to mousemove events, add or remove the
     * listener accordingly.
     */
    _updateEditListeners(wasListening: boolean, willListen: boolean): void;
    _handleMouseMove: (e: MouseEvent) => void;
    _getHoveredHighlightKey(mouseClientPosition: Position): string | null | undefined;
    _renderTooltip(): null | React.ReactNode;
    render(): React.ReactNode;
}
export default HighlightSetRenderer;
