/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { LocalReferencePosition } from "./localReference.js";
import { ISegmentInternal } from "./mergeTreeNodes.js";
import { SortedSet } from "./sortedSet.js";
/**
 * @internal
 */
export type SortedSegmentSetItem = ISegmentInternal | LocalReferencePosition | {
    readonly segment: ISegmentInternal;
};
/**
 * Stores a unique and sorted set of segments, or objects with segments
 *
 * This differs from a normal sorted set in that the keys are not fixed.
 * The segments are sorted via their ordinals which can change as the merge tree is modified.
 * Even though the values of the ordinals can change their ordering and uniqueness cannot, so the order of a set of
 * segments ordered by their ordinals will always have the same order even if the ordinal values on
 * the segments changes. This invariant allows us to ensure the segments stay
 * ordered and unique, and that new segments can be inserted into that order.
 *
 * @internal
 */
export declare class SortedSegmentSet<T extends SortedSegmentSetItem = ISegmentInternal> extends SortedSet<T> {
    private getOrdinal;
    private getOffset;
    protected compare(a: T, b: T): number;
    protected onFindEquivalent(item: T, startIndex: number): {
        exists: boolean;
        index: number;
    };
}
//# sourceMappingURL=sortedSegmentSet.d.ts.map