/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { TaggedChange } from "../../core/index.js";
import { IdAllocator } from "../../util/index.js";
import { CrossFieldManager, NodeExistenceState, RebaseRevisionMetadata } from "../modular-schema/index.js";
import { Changeset, MarkEffect } from "./types.js";
/**
 * Rebases `change` over `base` assuming they both apply to the same initial state.
 * @param change - The changeset to rebase.
 * @param base - The changeset to rebase over.
 * @returns A changeset that performs the changes in `change` but does so assuming `base` has been applied first.
 */
export declare function rebase<TNodeChange>(change: Changeset<TNodeChange>, base: TaggedChange<Changeset<TNodeChange>>, rebaseChild: NodeChangeRebaser<TNodeChange>, genId: IdAllocator, manager: CrossFieldManager, revisionMetadata: RebaseRevisionMetadata, nodeExistenceState?: NodeExistenceState): Changeset<TNodeChange>;
export type NodeChangeRebaser<TNodeChange> = (change: TNodeChange | undefined, baseChange: TNodeChange | undefined, stateChange?: NodeExistenceState) => TNodeChange | undefined;
export declare function isRedetach(effect: MarkEffect): boolean;
//# sourceMappingURL=rebase.d.ts.map