import { Rect } from "./dom"; declare global { interface Node { cmView: ContentView | undefined; cmIgnore: boolean | undefined; } } export declare const enum dirty { not = 0, child = 1, node = 2 } export declare abstract class ContentView { parent: ContentView | null; dom: Node | null; constructor(parent: ContentView | null, dom: Node | null); abstract length: number; abstract children: ContentView[]; dirty: number; readonly childGap: number; readonly overrideDOMText: ReadonlyArray | null; readonly posAtStart: number; readonly posAtEnd: number; posBefore(view: ContentView): number; posAfter(view: ContentView): number; coordsAt(pos: number): Rect | null; syncInto(parent: HTMLElement, pos: Node | null): Node | null; syncDOMChildren(): void; sync(): void; domFromPos(pos: number): { node: Node; offset: number; } | null; localPosFromDOM(node: Node, offset: number): number; domBoundsAround(from: number, to: number, offset?: number): { startDOM: Node | null; endDOM: Node | null; from: number; to: number; } | null; markDirty(): void; markParentsDirty(): void; setParent(parent: ContentView): void; replaceChildren(from: number, to: number, children?: ContentView[]): void; ignoreMutation(rec: MutationRecord): boolean; ignoreEvent(event: Event): boolean; childPos(pos: number, bias?: number): { i: number; off: number; }; } export declare function syncNodeInto(parent: HTMLElement, pos: Node | null, dom: Node): Node | null; export declare class ChildCursor { children: ContentView[]; pos: number; gap: number; i: number; off: number; constructor(children: ContentView[], pos: number, gap?: number, i?: number); findPos(pos: number, bias?: number): this; }