/** * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal */ import { Interval } from './interval.js'; import { OrderedSet } from './ordered-set.js'; import * as Impl from './impl/segmentation.js'; declare namespace Segmentation { interface Segment { index: I; start: number; end: number; } const create: (segs: ArrayLike) => Segmentation; const ofOffsets: (offsets: ArrayLike, bounds: Interval) => Segmentation; const count: (segs: Segmentation) => number; const getSegment: (segs: Segmentation, value: T) => number; const projectValue: (segs: Segmentation, set: OrderedSet, value: T) => Interval; /** Segment iterator that mutates a single segment object to mark all the segments. */ const transientSegments: (segs: Segmentation, set: OrderedSet, segment?: Segment) => Impl.SegmentIterator; type SegmentIterator = Impl.SegmentIterator; } interface Segmentation { '@type': 'segmentation'; /** All segments are defined by offsets [offsets[i], offsets[i + 1]) for i \in [0, count - 1] */ readonly offsets: ArrayLike; /** Segment index of the i-th element */ readonly index: ArrayLike; readonly count: number; } export { Segmentation };