/** * Copyright (c) 2018-2019 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose */ import { Iterator as _Iterator } from '../iterator.js'; import { OrderedSet } from './ordered-set.js'; import { Segmentation } from './segmentation.js'; import { SortedArray } from './sorted-array.js'; /** Pairs of min and max indices of sorted, non-overlapping ranges */ type SortedRanges = SortedArray; declare namespace SortedRanges { function ofSortedRanges(array: ArrayLike): SortedArray; function start(ranges: SortedRanges): T; function end(ranges: SortedRanges): number; function min(ranges: SortedRanges): T; function max(ranges: SortedRanges): T; function size(ranges: SortedRanges): number; function count(ranges: SortedRanges): number; function startAt(ranges: SortedRanges, index: number): T; function endAt(ranges: SortedRanges, index: number): number; function minAt(ranges: SortedRanges, index: number): T; function maxAt(ranges: SortedRanges, index: number): T; function areEqual(a: SortedRanges, b: SortedRanges): boolean; function forEach(ranges: SortedRanges, f: (value: T, i: number) => void): void; /** Returns if a value of `set` is included in `ranges` */ function has(ranges: SortedRanges, set: OrderedSet): boolean; /** Returns if a value of `set` is included in `ranges` from given index */ function hasFrom(ranges: SortedRanges, set: OrderedSet, from: number): boolean; function firstIntersectionIndex(ranges: SortedRanges, set: OrderedSet): number; function firstIntersectionIndexFrom(ranges: SortedRanges, set: OrderedSet, from: number): number; function transientSegments(ranges: SortedRanges, set: OrderedSet): Iterator; class Iterator implements _Iterator> { private ranges; private set; private value; private curIndex; hasNext: boolean; private updateValue; move(): Segmentation.Segment; constructor(ranges: SortedRanges, set: OrderedSet); } } export { SortedRanges };