/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import type { ISegment, Marker } from "./mergeTreeNodes.js";
import { type IMergeTreeAnnotateMsg, type IMergeTreeDeltaOp, type IMergeTreeGroupMsg, type IMergeTreeInsertMsg, type IMergeTreeObliterateMsg, type IMergeTreeRemoveMsg, type AdjustParams, type IMergeTreeAnnotateAdjustMsg, type IMergeTreeObliterateSidedMsg } from "./ops.js";
import type { PropertySet, MapLike } from "./properties.js";
import { type SequencePlace } from "./sequencePlace.js";
/**
 * Creates the op for annotating the markers with the provided properties
 * @param marker - The marker to annotate
 * @param props - The properties to annotate the marker with
 * @returns The annotate op
 *
 * @internal
 */
export declare function createAnnotateMarkerOp(marker: Marker, props: PropertySet): IMergeTreeAnnotateMsg | undefined;
/**
 * Creates the op for annotating the range with the provided properties
 * @param start - The inclusive start position of the range to annotate
 * @param end - The exclusive end position of the range to annotate
 * @param props - The properties to annotate the range with
 * @returns The annotate op
 *
 * @internal
 */
export declare function createAnnotateRangeOp(start: number, end: number, props: PropertySet): IMergeTreeAnnotateMsg;
/**
 * Creates the op for annotating the range with the provided properties
 * @param start - The inclusive start position of the range to annotate
 * @param end - The exclusive end position of the range to annotate
 * @param props - The properties to annotate the range with
 * @returns The annotate op
 *
 * @internal
 */
export declare function createAdjustRangeOp(start: number, end: number, adjust: MapLike<AdjustParams>): IMergeTreeAnnotateAdjustMsg;
/**
 * Creates the op to remove a range
 *
 * @param start - The inclusive start of the range to remove
 * @param end - The exclusive end of the range to remove
 *
 * @internal
 */
export declare function createRemoveRangeOp(start: number, end: number): IMergeTreeRemoveMsg;
/**
 * Creates the op to obliterate a range
 *
 * @param start - The inclusive start of the range to obliterate
 * @param end - The exclusive end of the range to obliterate
 *
 * @internal
 */
export declare function createObliterateRangeOp(start: number, end: number): IMergeTreeObliterateMsg;
/**
 * Creates the op to obliterate a range
 *
 * @param start - The start of the range to obliterate.
 * If a number is provided, the range will start before that index.
 * @param end - The end of the range to obliterate.
 * If a number is provided, the range will end after that index -1.
 * This preserves the previous behavior of not expanding obliteration ranges at the endpoints
 * for uses which predate the availability of endpoint expansion.
 *
 * @internal
 */
export declare function createObliterateRangeOpSided(start: SequencePlace, end: SequencePlace): IMergeTreeObliterateSidedMsg;
/**
 * Creates an op for inserting a segment at the specified position.
 *
 * @param pos - The position to insert the segment at
 * @param segment - The segment to insert
 *
 * @internal
 */
export declare function createInsertSegmentOp(pos: number, segment: ISegment): IMergeTreeInsertMsg;
/**
 * Creates the op for inserting a segment from its JSON representation at
 * the specified position.
 *
 * @internal
 */
export declare function createInsertOp(pos: number, segSpec: unknown): IMergeTreeInsertMsg;
/**
 * Creates a group op from the provided ops.
 *
 * @param ops - The ops to group
 *
 * @internal
 */
export declare function createGroupOp(...ops: IMergeTreeDeltaOp[]): IMergeTreeGroupMsg;
//# sourceMappingURL=opBuilder.d.ts.map