import { BlockNoteEditor } from "@blocknote/core";
import { Transaction } from "prosemirror-state";
import { Transform } from "prosemirror-transform";
export declare function getApplySuggestionsTr(editor: BlockNoteEditor<any, any, any>): Transaction;
/**
 * A helper function to enable rebasing prosemirror operations.
 *
 * The idea is as follows:
 * - There's an update U we want to apply to the editor state E
 * - However, the update U cannot be applied directly to E. For example, because E contains suggestions, or other
 *    formatting incompatible with U
 * - We can however apply U to a "clean" document E', the projection (one that has no suggestions or other formatting)
 * - We can then use the inverse mapping of E' to E to get U' (the rebased update) which can be applied to E
 *
 * This function takes a `projectionTr`, which is the transaction that turns E into E'
 * It returns a helper object that can be used to rebase operations done to E' onto E
 */
export declare function rebaseTool(editor: BlockNoteEditor<any, any, any>, projectionTr: Transaction): {
    doc: import("prosemirror-model").Node;
    /**
     * Return a new transform that has the projection applied.
     * You can add new operations to this transform and later rebase those on the original document with `rebaseTr`
     */
    tr: () => Transform;
    /**
     * Invert map created by the projection.
     * You can use this to map positions on the "clean" document (the projection) to positions on the original document
     */
    invertMap: import("prosemirror-transform").Mapping;
    /**
     * Return a new transaction based on the editor state with all the steps you made to `tr`.
     * These steps are rebased on the original document.
     */
    rebaseTr: (tr: Transform) => Transaction;
};
export type RebaseTool = ReturnType<typeof rebaseTool>;
