"use strict";
/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.MergeTreeDeltaType = exports.ReferenceType = void 0;
/**
 * Flags enum that dictates behavior of a ReferencePosition
 */
var ReferenceType;
(function (ReferenceType) {
    ReferenceType[ReferenceType["Simple"] = 0] = "Simple";
    /**
     * Allows this reference to be located using the `findTile` API on merge-tree.
     */
    ReferenceType[ReferenceType["Tile"] = 1] = "Tile";
    ReferenceType[ReferenceType["NestBegin"] = 2] = "NestBegin";
    ReferenceType[ReferenceType["NestEnd"] = 4] = "NestEnd";
    ReferenceType[ReferenceType["RangeBegin"] = 16] = "RangeBegin";
    ReferenceType[ReferenceType["RangeEnd"] = 32] = "RangeEnd";
    /**
     * When a segment is marked removed (locally or with ack), this reference will slide to the first
     * valid option of:
     * 1. the start of the next furthest segment
     * 2. the end of the next nearest segment
     * 3. DetachedReferencePosition
     */
    ReferenceType[ReferenceType["SlideOnRemove"] = 64] = "SlideOnRemove";
    /**
     * When a segment is marked removed (locally or with ack), this reference will remain on that segment.
     */
    ReferenceType[ReferenceType["StayOnRemove"] = 128] = "StayOnRemove";
    /**
     * Specifies that the reference position should never be added to the segment it refers to.
     * This is useful for comparison/iteration purposes
     */
    ReferenceType[ReferenceType["Transient"] = 256] = "Transient";
})(ReferenceType = exports.ReferenceType || (exports.ReferenceType = {}));
// Note: Assigned positive integers to avoid clashing with MergeTreeMaintenanceType
exports.MergeTreeDeltaType = {
    INSERT: 0,
    REMOVE: 1,
    ANNOTATE: 2,
    GROUP: 3,
};
//# sourceMappingURL=ops.js.map