import type { HighlightToken } from "./types"; import { WikitextHighlighter } from "./highlighter"; export type EditorDebugEvent = { type: "attach"; contentEditable: string; } | { type: "input"; inputType?: string; data?: string | null; domLinesCount: number; payloadLength: number; cursorOffsetCalculated: number | null; cursorOffsetUsed: number | null; } | { type: "keydown"; key: string; shiftKey: boolean; ctrlKey: boolean; altKey: boolean; metaKey: boolean; prevented: boolean; } | { type: "insertNewLine"; cursorOffset: number; beforeLength: number; afterLength: number; beforePreview: string; afterPreview: string; } | { type: "update:start"; reason: "external" | "input" | "insertNewLine"; textLength: number; lines: number; cursorOffsetOverride: number | null; } | { type: "computeLines:start"; lines: number; lastLines: number; } | { type: "computeLines:diff"; startLineIndex: number; minLen: number; wasNoop: boolean; } | { type: "computeLines:tokenizeLine"; i: number; isFirstLine: boolean; lineLength: number; lineSameAsCached: boolean; stateBefore: number; stateAfter: number; convergedAtLine: boolean; } | { type: "update:domPatch"; lineIndex: number; reusedExistingElement: boolean; innerHtmlChanged: boolean; htmlLength: number; safeHtmlWasPlaceholder: boolean; } | { type: "update:restoreCursor"; requestedOffset: number; resolvedLineIndex: number | null; resolvedInnerOffset: number | null; lineTextLength: number | null; } | { type: "extractLines:start"; containerChildCount: number; containerTextContentLength: number; } | { type: "extractLines:processText"; rawLength: number; normalizedLength: number; splitCount: number; sample: string; } | { type: "extractLines:br"; bufferLengthBeforeFlush: number; emittedLineIndex: number; } | { type: "extractLines:block"; tag: string; innerTextLength: number; emittedLineIndex: number; } | { type: "extractLines:flush"; emittedLineIndex: number; emittedLineLength: number; emittedLineSample: string; } | { type: "extractLines:done"; lines: number; lastLineLength: number; } | { type: "cursor:calc"; lineIndex: number; offsetInLine: number; absoluteOffset: number; rangeStartNode: string; rangeStartOffset: number; } | { type: "cursor:setInLine"; requestedInnerOffset: number; walkedTextNodes: number; fellBackToEnd: boolean; } | { type: "warn"; message: string; data?: Record; }; export declare class WikitextEditor extends WikitextHighlighter { private lastLines; private cachedTokens; private cachedStates; private container?; private lineElements; private inputHandler?; private keydownHandler?; private pasteHandler?; private applyingUpdate; debug?: (event: EditorDebugEvent) => void; private debugEmit; resetCache(): void; attach(container: HTMLElement): void; private insertNewLine; update(text: string, cursorOffsetOverride?: number | null, reason?: "external" | "input" | "insertNewLine"): void; highlight(text: string): string; tokenize(text: string): HighlightToken[][]; private computeLines; private getCursorOffsetFromElements; private restoreCursorOffset; private setCursorInLine; private normalizeLineText; private readDomLines; }