import { Node as ProseMirrorNode } from 'prosemirror-model';
import { Transaction } from 'prosemirror-state';
export type InternalMoveRequest = {
    sourceStart: number;
    sourceEnd: number;
    targetPos: number;
    expectedNodeType?: string;
    canInsertAt: (doc: ProseMirrorNode, pos: number, node: ProseMirrorNode) => boolean;
};
export type InternalMoveResult = {
    ok: true;
    transaction: Transaction;
    mappedTarget: number;
} | {
    ok: false;
    reason: 'invalid-source' | 'same-range' | 'wrong-node-type' | 'invalid-target';
};
type InternalMoveState = {
    doc: ProseMirrorNode;
    tr: Transaction;
};
export declare function canInsertNodeAtPosition(doc: ProseMirrorNode, pos: number, node: ProseMirrorNode): boolean;
export declare function createInternalNodeMoveTransaction(state: InternalMoveState, request: InternalMoveRequest): InternalMoveResult;
export {};
//# sourceMappingURL=internal-node-move.d.ts.map