/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import type { ChangesetLocalId, RevisionTag } from "../../core/index.js";
import type { FieldEditor, NodeId } from "../modular-schema/index.js";
import type { CellId, Changeset, MarkList } from "./types.js";
export interface SequenceFieldEditor extends FieldEditor<Changeset> {
    insert(index: number, count: number, firstId: CellId, revision: RevisionTag): Changeset;
    remove(index: number, count: number, id: ChangesetLocalId, revision: RevisionTag): Changeset;
    revive(index: number, count: number, detachEvent: CellId, revision: RevisionTag, isIntention?: true): Changeset;
    /**
     *
     * @param sourceIndex - The index of the first node move
     * @param count - The number of nodes to move
     * @param destIndex - The index the nodes should be moved to, interpreted before detaching the moved nodes
     * @param detachCellId - The local ID to assign to the first cell being emptied by the move
     * @param attachCellId - The ID to assign to the first cell being filled by the move
     * @param revision - The revision to assign to the move marks
     */
    move(sourceIndex: number, count: number, destIndex: number, detachCellId: ChangesetLocalId, attachCellId: CellId, revision: RevisionTag): Changeset;
    moveOut(sourceIndex: number, count: number, id: ChangesetLocalId, revision: RevisionTag): Changeset;
    moveIn(destIndex: number, count: number, moveId: ChangesetLocalId, attachCellId: CellId, revision: RevisionTag): Changeset;
    return(sourceIndex: number, count: number, destIndex: number, detachCellId: CellId, attachCellId: CellId, revision: RevisionTag): Changeset;
}
export declare const sequenceFieldEditor: {
    buildChildChanges: (changes: Iterable<[number, NodeId]>) => MarkList;
    insert: (index: number, count: number, firstId: CellId, revision: RevisionTag | undefined) => MarkList;
    remove: (index: number, count: number, id: ChangesetLocalId, revision: RevisionTag | undefined) => MarkList;
    revive: (index: number, count: number, detachEvent: CellId, revision: RevisionTag | undefined) => MarkList;
    move(sourceIndex: number, count: number, destIndex: number, detachCellId: ChangesetLocalId, attachCellId: CellId, revision: RevisionTag | undefined): MarkList;
    moveOut(sourceIndex: number, count: number, detachCellId: ChangesetLocalId, revision: RevisionTag): MarkList;
    moveIn(destIndex: number, count: number, moveId: ChangesetLocalId, attachCellId: CellId, revision: RevisionTag): MarkList;
    return(sourceIndex: number, count: number, destIndex: number, detachCellId: CellId, attachCellId: CellId, revision: RevisionTag | undefined): MarkList;
};
//# sourceMappingURL=sequenceFieldEditor.d.ts.map