import { Logger } from "../core/logger";
import { CharChainResult } from "../models";
/**
 * Hilites manager - handles creating and animating hilite rectangles.
 */
export declare class Hilites {
    private _logger;
    private _rootSvg;
    private _hilitesGroup;
    private _activeHilites;
    private _hilitePadding;
    private _hiliteFadeTime;
    constructor(logger: Logger, hilitePadding: number, hiliteFadeTime: number);
    /**
     * Set root SVG element reference.
     */
    setRootSvg(rootSvg: SVGSVGElement): void;
    /**
     * Update settings.
     */
    updateSettings(hilitePadding: number, hiliteFadeTime: number): void;
    /**
     * Show hilites for a specific version.
     * @param data - The CharChainResult data
     * @param versionTag - Version tag to hilite
     * @param color - Hilite color
     */
    showHilites(data: CharChainResult, versionTag: string, color: string): Promise<void>;
    /**
     * Clear all hilites.
     */
    clearHilites(): Promise<void>;
    /**
     * Get node IDs for a specific version.
     * For v0, if not found in taggedNodes, falls back to extracting from base text.
     */
    private getVersionNodeIds;
    /**
     * Create a hilite rectangle for a text element.
     *
     * IMPORTANT: Since hilites are now placed in the same container (viewport group)
     * as the text elements, they share the same coordinate space and transforms.
     * This means getBBox() gives us the correct relative coordinates, and the
     * hilites will automatically pan/zoom with the text when PROLOG is triggered.
     */
    private createHiliteRect;
    /**
     * Animate hilites in using GSAP.
     */
    private animateHilitesIn;
    /**
     * Animate hilites out using GSAP.
     */
    private animateHilitesOut;
    /**
     * Check if hilites are currently active.
     */
    hasActiveHilites(): boolean;
    /**
     * Get the SVG container where hilites should be added.
     * When svg-pan-zoom is active, this returns the viewport group.
     * Otherwise, returns the root SVG.
     *
     * CRITICAL: svg-pan-zoom wraps all content in a <g> viewport element.
     * Hilites MUST be added to this group, not the root SVG, so they
     * transform with the content when PROLOG panning occurs.
     */
    private getSvgContainer;
}
