/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { SequenceField as SF } from "../../../feature-libraries/index.js";
import { ChangeAtomId, ChangesetLocalId, RevisionTag } from "../../../core/index.js";
import { TestChange } from "../../testChange.js";
export type TestChangeset = SF.Changeset<TestChange>;
export declare const cases: {
    no_change: TestChangeset;
    insert: TestChangeset;
    modify: TestChangeset;
    modify_insert: TestChangeset;
    remove: TestChangeset;
    revive: TestChangeset;
    pin: TestChangeset;
    move: TestChangeset;
    return: TestChangeset;
    transient_insert: TestChangeset;
};
declare function createInsertChangeset(index: number, count: number, id?: ChangesetLocalId): SF.Changeset<never>;
declare function createRemoveChangeset(startIndex: number, size: number, id?: ChangesetLocalId): SF.Changeset<never>;
declare function createRedundantRemoveChangeset(index: number, size: number, detachEvent: ChangeAtomId): SF.Changeset<never>;
declare function createRedundantReviveChangeset(startIndex: number, count: number, detachEvent: SF.CellId): SF.Changeset<never>;
declare function createReviveChangeset(startIndex: number, count: number, detachEvent: SF.CellId): SF.Changeset<never>;
declare function createMoveChangeset(sourceIndex: number, count: number, destIndex: number, id?: ChangesetLocalId): SF.Changeset<never>;
declare function createReturnChangeset(sourceIndex: number, count: number, destIndex: number, detachEvent: SF.CellId): SF.Changeset<never>;
declare function createModifyChangeset<TNodeChange>(index: number, change: TNodeChange): SF.Changeset<TNodeChange>;
declare function createModifyDetachedChangeset<TNodeChange>(index: number, change: TNodeChange, detachEvent: SF.CellId): SF.Changeset<TNodeChange>;
/**
 * @param count - The number of nodes inserted.
 * @param cellId - The first cell to insert the content into (potentially includes lineage information).
 * Also defines the ChangeAtomId to associate with the mark.
 * @param overrides - Any additional properties to add to the mark.
 */
declare function createInsertMark<TChange = never>(count: number, cellId: ChangesetLocalId | SF.CellId, overrides?: Partial<SF.CellMark<SF.Insert, TChange>>): SF.CellMark<SF.Insert, TChange>;
/**
 * This overload creates a revive that targets empty cells.
 * See `createPinMark` for a revive that targets populated cells.
 * @param count - The number of nodes to revive.
 * If a number is passed, that many dummy nodes will be generated.
 * @param cellId - The first cell to revive content into.
 * The mark id defaults to the local ID of this CellId.
 * @param overrides - Any additional properties to add to the mark.
 * Use this to give the mark a `RevisionTag`
 */
declare function createReviveMark<TChange = never>(count: number, cellId: SF.CellId, overrides?: Partial<SF.CellMark<SF.Insert, TChange>>): SF.CellMark<SF.Insert, TChange>;
declare function createPinMark<TChange = never>(count: number, id: SF.MoveId, overrides?: Partial<SF.CellMark<SF.Insert, TChange>>): SF.CellMark<SF.Insert, TChange>;
/**
 * @param count - The number of nodes to remove.
 * @param markId - The id to associate with the mark.
 * Defines how later edits refer the emptied cells.
 * @param overrides - Any additional properties to add to the mark.
 */
declare function createRemoveMark<TChange = never>(count: number, markId: ChangesetLocalId | ChangeAtomId, overrides?: Partial<SF.CellMark<SF.Remove, TChange>>): SF.CellMark<SF.Remove, TChange>;
/**
 * @param count - The number of nodes to move.
 * @param markId - The id to associate with the marks.
 * Defines how later edits refer the emptied cells.
 * @param overrides - Any additional properties to add to the mark.
 * @returns A pair of marks, the first for moving out, the second for moving in.
 */
declare function createMoveMarks<TChange = never>(count: number, markId: ChangesetLocalId | ChangeAtomId, overrides?: Partial<SF.CellMark<(SF.MoveOut & SF.MoveIn) | {
    changes?: TChange;
}, TChange>>): [moveOut: SF.CellMark<SF.MoveOut, TChange>, moveIn: SF.CellMark<SF.MoveIn, never>];
/**
 * @param count - The number of nodes to move out.
 * @param markId - The id to associate with the mark.
 * Defines how later edits refer the emptied cells.
 * @param overrides - Any additional properties to add to the mark.
 */
declare function createMoveOutMark<TChange = never>(count: number, markId: ChangesetLocalId | ChangeAtomId, overrides?: Partial<SF.CellMark<SF.MoveOut, TChange>>): SF.CellMark<SF.MoveOut, TChange>;
/**
 * @param count - The number of nodes moved in.
 * @param cellId - The first cell to move the content into (potentially includes lineage information).
 * Also defines the ChangeAtomId to associate with the mark.
 * @param overrides - Any additional properties to add to the mark.
 */
declare function createMoveInMark(count: number, cellId: ChangesetLocalId | SF.CellId, overrides?: Partial<SF.CellMark<SF.MoveIn, never>>): SF.CellMark<SF.MoveIn, never>;
/**
 * @param count - The number of nodes to attach.
 * @param markId - The id to associate with the mark.
 * @param cellId - The cell to return the nodes to.
 * If undefined, the mark targets populated cells and is therefore muted.
 * @param overrides - Any additional properties to add to the mark.
 */
declare function createReturnToMark(count: number, markId: ChangesetLocalId | ChangeAtomId, cellId?: SF.CellId, overrides?: Partial<SF.CellMark<SF.MoveIn, never>>): SF.CellMark<SF.MoveIn, never>;
/**
 * @param changes - The changes to apply to the node.
 * @param cellId - Describes the cell that the target node used to reside in. Used when the target node is removed.
 */
declare function createModifyMark<TChange>(changes: TChange, cellId?: SF.CellId): SF.CellMark<SF.NoopMark, TChange>;
declare function createSkipMark(count: number): SF.CellMark<SF.NoopMark, never>;
declare function createTomb(revision: RevisionTag | undefined, localId?: ChangesetLocalId, count?: number): SF.CellMark<SF.NoopMark, never>;
declare function createAttachAndDetachMark<TChange>(attach: SF.CellMark<SF.Attach, TChange>, detach: SF.CellMark<SF.Detach, TChange>, overrides?: Partial<SF.CellMark<SF.AttachAndDetach, TChange>>): SF.CellMark<SF.AttachAndDetach, TChange>;
declare function overrideCellId<TMark extends SF.HasMarkFields<unknown>>(cellId: SF.CellId, mark: TMark): TMark;
export declare const MarkMaker: {
    onEmptyCell: typeof overrideCellId;
    insert: typeof createInsertMark;
    revive: typeof createReviveMark;
    skip: typeof createSkipMark;
    tomb: typeof createTomb;
    pin: typeof createPinMark;
    remove: typeof createRemoveMark;
    modify: typeof createModifyMark;
    move: typeof createMoveMarks;
    moveOut: typeof createMoveOutMark;
    moveIn: typeof createMoveInMark;
    returnTo: typeof createReturnToMark;
    attachAndDetach: typeof createAttachAndDetachMark;
};
export declare const ChangeMaker: {
    insert: typeof createInsertChangeset;
    remove: typeof createRemoveChangeset;
    redundantRemove: typeof createRedundantRemoveChangeset;
    revive: typeof createReviveChangeset;
    redundantRevive: typeof createRedundantReviveChangeset;
    move: typeof createMoveChangeset;
    return: typeof createReturnChangeset;
    modify: typeof createModifyChangeset;
    modifyDetached: typeof createModifyDetachedChangeset;
};
export {};
//# sourceMappingURL=testEdits.d.ts.map