/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { RevisionTag, TaggedChange } from "../../core";
import { CrossFieldManager, IdAllocator, NodeReviver } from "../modular-schema";
import { Changeset } from "./format";
export declare type NodeChangeInverter<TNodeChange> = (change: TNodeChange, index: number | undefined) => TNodeChange;
/**
 * Inverts a given changeset.
 * @param change - The changeset to produce the inverse of.
 * @returns The inverse of the given `change` such that the inverse can be applied after `change`.
 *
 * WARNING! This implementation is incomplete:
 * - Support for slices is not implemented.
 */
export declare function invert<TNodeChange>(change: TaggedChange<Changeset<TNodeChange>>, invertChild: NodeChangeInverter<TNodeChange>, reviver: NodeReviver, genId: IdAllocator, crossFieldManager: CrossFieldManager): Changeset<TNodeChange>;
export declare function amendInvert<TNodeChange>(invertedChange: Changeset<TNodeChange>, originalRevision: RevisionTag | undefined, reviver: NodeReviver, genId: IdAllocator, crossFieldManager: CrossFieldManager): Changeset<TNodeChange>;
//# sourceMappingURL=invert.d.ts.map