import { ChangeSet, ChangedRange } from "../../state/src"; declare type A = ReadonlyArray; export interface RangeValue { map(mapping: ChangeSet, from: number, to: number): Range | null; bias: number; collapsed?: boolean; } export interface RangeComparator { compareRange(from: number, to: number, activeA: T[], activeB: T[]): void; compareCollapsed(from: number, to: number, byA: T, byB: T): void; comparePoints(pos: number, pointsA: T[], pointsB: T[]): void; } export interface RangeIterator { advance(pos: number, active: A): void; advanceCollapsed(pos: number, value: T): void; point(value: T): void; ignoreRange(value: T): boolean; ignorePoint(value: T): boolean; } export declare class Range { readonly from: number; readonly to: number; readonly value: T; constructor(from: number, to: number, value: T); /** @internal */ map(changes: ChangeSet, oldOffset: number, newOffset: number): Range | null; /** @internal */ move(offset: number): Range; /** @internal Here so that we can put active ranges on a heap * and take them off at their end */ readonly heapPos: number; } export declare type RangeFilter = (from: number, to: number, value: T) => boolean; export declare class RangeSet { length: number; size: number; local: A>; children: A>; constructor(length: number, size: number, local: A>, children: A>); update(added?: A>, filter?: RangeFilter | null, filterFrom?: number, filterTo?: number): RangeSet; /** @internal */ updateInner(added: A>, filter: RangeFilter | null, filterFrom: number, filterTo: number, offset: number, length: number): RangeSet; grow(length: number): RangeSet; collect(target: Range[], offset: number): void; map(changes: ChangeSet): RangeSet; private mapInner; forEach(f: (from: number, to: number, value: T) => void): void; private forEachInner; iter(): { next: () => Range | void; }; compare(other: RangeSet, textDiff: A, comparator: RangeComparator, oldLen: number): void; static iterateSpans(sets: A>, from: number, to: number, iterator: RangeIterator): void; static of(ranges: A> | Range): RangeSet; static empty: RangeSet; } export {};