import EventHandler from "./EventHandler";
import HighlightPainter from "./HighlightPainter";
import SerializedRange from "./SerializedRange";
interface MarkerConstructorArgs {
    rootElement?: HTMLElement;
    eventHandler?: EventHandler;
    highlightPainter?: HighlightPainter;
    overlappingHighlight?: "allow" | "dontCreateNewHighlight" | "deleteOverlappedHighlight" | "merge";
}
declare class Marker {
    static normalizeTextCache: any;
    rootElement: Element;
    document: Document;
    window: Window;
    eventHandler: EventHandler;
    highlightPainter: HighlightPainter;
    overlappingHighlight: "allow" | "dontCreateNewHighlight" | "deleteOverlappedHighlight" | "merge";
    state: {
        lastHoverId: string;
        uidToSerializedRange: {
            [key: string]: SerializedRange;
        };
    };
    constructor({ rootElement, highlightPainter, eventHandler, overlappingHighlight, }: MarkerConstructorArgs);
    static clearSelection(win?: Window): void;
    private resolveHighlightElements;
    private static normalizeText;
    private static isBlackListedElementNode;
    private static getRealOffset;
    private static unpaintElement;
    private describeNode;
    private logBoundaryAdjustment;
    private normalizeDeserializedBoundary;
    private convertRangeToSelection;
    private getOverlappingHighlightIds;
    serializeRange(range: Range, options?: {
        uid?: string;
        charsToKeepForTextBeforeAndTextAfter?: number;
    }): SerializedRange | null;
    batchPaint(serializedRanges: SerializedRange[]): {
        errors: any;
    };
    paint(serializedRange: SerializedRange): void;
    unpaint(serializedRange: SerializedRange): void;
    private batchDeserializeRange;
    deserializeRange(serializedRange: SerializedRange): any;
    clickListener: (e: Event) => void;
    mouseoverListener: (e: Event) => void;
    addEventListeners(): void;
    removeEventListeners(): void;
    paintHighlights(highlightId: string): void;
    private highlightHovering;
    private getInnerText;
    private getNormalizedInnerText;
    private findLastChildTextNode;
    private findFirstChildTextNode;
    private findPreviousTextNodeInDomTree;
    private findNextTextNodeInDomTree;
    private forwardOffset;
    private backwardOffset;
    private findElementAtOffset;
    private trimRangeSpaces;
    private convertTextNodeToHighlightElement;
    private buildContext;
    private adjustRangeAroundBlackListedElement;
    getSerializedRangeFromUid(uid: string): SerializedRange | null;
    resolveSerializedRangeOffsetInText(text: any, serializedRange: SerializedRange): number;
}
export default Marker;
export type { MarkerConstructorArgs };
