/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { Stack } from "./collections";
import { ISegment } from "./mergeTree";
import { ReferenceType, ICombiningOp } from "./ops";
import { PropertySet, MapLike } from "./properties";
export declare const reservedTileLabelsKey = "referenceTileLabels";
export declare const reservedRangeLabelsKey = "referenceRangeLabels";
export declare function refTypeIncludesFlag(refPosOrType: ReferencePosition | ReferenceType, flags: ReferenceType): boolean;
export declare const refGetTileLabels: (refPos: ReferencePosition) => string[] | undefined;
export declare const refGetRangeLabels: (refPos: ReferencePosition) => string[] | undefined;
export declare function refHasTileLabel(refPos: ReferencePosition, label: string): boolean;
export declare function refHasRangeLabel(refPos: ReferencePosition, label: string): boolean;
export declare function refHasTileLabels(refPos: ReferencePosition): boolean;
export declare function refHasRangeLabels(refPos: ReferencePosition): boolean;
export interface ReferencePosition {
    properties?: PropertySet;
    refType: ReferenceType;
    getSegment(): ISegment | undefined;
    getOffset(): number;
    addProperties(newProps: PropertySet, op?: ICombiningOp): void;
    isLeaf(): boolean;
    /**
     * @deprecated - use refHasTileLabels
     */
    hasTileLabels(): boolean;
    /**
     * @deprecated - use refHasRangeLabels
     */
    hasRangeLabels(): boolean;
    /**
     * @deprecated - use refHasTileLabel
     */
    hasTileLabel(label: string): boolean;
    /**
     * @deprecated - use refHasRangeLabel
     */
    hasRangeLabel(label: string): boolean;
    /**
     * @deprecated - use refGetTileLabels
     */
    getTileLabels(): string[] | undefined;
    /**
     * @deprecated - use refGetRangeLabels
     */
    getRangeLabels(): string[] | undefined;
}
export declare type RangeStackMap = MapLike<Stack<ReferencePosition>>;
export declare const DetachedReferencePosition = -1;
export declare function minReferencePosition<T extends ReferencePosition>(a: T, b: T): T;
export declare function maxReferencePosition<T extends ReferencePosition>(a: T, b: T): T;
export declare function compareReferencePositions(a: ReferencePosition, b: ReferencePosition): number;
//# sourceMappingURL=referencePositions.d.ts.map