import { Text } from "../../doc/src"; export interface Mapping { mapPos(pos: number, bias?: number, trackDel?: boolean): number; } export declare class ChangeDesc implements Mapping { readonly from: number; readonly to: number; readonly length: number; constructor(from: number, to: number, length: number); readonly invertedDesc: ChangeDesc; mapPos(pos: number, bias?: number, trackDel?: boolean): number; } export declare class Change extends ChangeDesc { readonly from: number; readonly to: number; readonly text: ReadonlyArray; constructor(from: number, to: number, text: ReadonlyArray); invert(doc: Text): Change; apply(doc: Text): Text; map(mapping: Mapping): Change | null; readonly desc: ChangeDesc; } export declare class ChangeSet implements Mapping { readonly changes: ReadonlyArray; readonly mirror: ReadonlyArray; constructor(changes: ReadonlyArray, mirror?: ReadonlyArray); readonly length: number; getMirror(n: number): number | null; append(change: C, mirror?: number): ChangeSet; appendSet(changes: ChangeSet): ChangeSet; static empty: ChangeSet; mapPos(pos: number, bias?: number, trackDel?: boolean): number; /** @internal */ mapInner(pos: number, bias: number, trackDel: boolean, fromI: number, toI: number): number; partialMapping(from: number, to?: number): Mapping; changedRanges(): ChangedRange[]; readonly desc: ChangeSet; } export declare class ChangedRange { readonly fromA: number; readonly toA: number; readonly fromB: number; readonly toB: number; constructor(fromA: number, toA: number, fromB: number, toB: number); join(other: ChangedRange): ChangedRange; addToSet(set: ChangedRange[]): void; }