/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { ITreeCursor, RevisionTag } from "../../core";
import { ChangesetLocalId, FieldEditor, NodeReviver } from "../modular-schema";
import { Changeset } from "./format";
export interface SequenceFieldEditor extends FieldEditor<Changeset> {
    insert(index: number, cursor: ITreeCursor | ITreeCursor[], id: ChangesetLocalId): Changeset<never>;
    delete(index: number, count: number): Changeset<never>;
    revive(index: number, count: number, detachedBy: RevisionTag, reviver: NodeReviver, detachIndex: number, isIntention?: true): Changeset<never>;
    /**
     *
     * @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 after removing the moving nodes
     * @returns a tuple containing a changeset for the move out and a changeset for the move in
     */
    move(sourceIndex: number, count: number, destIndex: number, id: ChangesetLocalId): [moveOut: Changeset<never>, moveIn: Changeset<never>];
    return(sourceIndex: number, count: number, destIndex: number, detachedBy: RevisionTag, detachIndex: number): Changeset<never>;
}
export declare const sequenceFieldEditor: {
    buildChildChange: <TNodeChange = import("../modular-schema").NodeChangeset>(index: number, change: TNodeChange) => Changeset<TNodeChange>;
    insert: (index: number, cursors: ITreeCursor | ITreeCursor[], id: ChangesetLocalId) => Changeset<never>;
    delete: (index: number, count: number) => Changeset<never>;
    revive: (index: number, count: number, detachedBy: RevisionTag, reviver: NodeReviver, detachIndex?: number | undefined, isIntention?: true | undefined) => Changeset<never>;
    move(sourceIndex: number, count: number, destIndex: number, id: ChangesetLocalId): [moveOut: Changeset<never>, moveIn: Changeset<never>];
    return(sourceIndex: number, count: number, destIndex: number, detachedBy: RevisionTag, detachIndex?: number | undefined): Changeset<never>;
};
//# sourceMappingURL=sequenceFieldEditor.d.ts.map