import type { Mark, Node as PMNode } from 'prosemirror-model'; export type InlineOp = { type: 'equal'; text: string; marksChanged: boolean; oldMarks: readonly Mark[]; newMarks: readonly Mark[]; } | { type: 'insert'; text: string; marks: readonly Mark[]; } | { type: 'delete'; text: string; marks: readonly Mark[]; } | { type: 'replace'; oldText: string; newText: string; oldMarks: readonly Mark[]; newMarks: readonly Mark[]; } | { type: 'equalAtom'; oldNode: PMNode; newNode: PMNode; marksChanged: boolean; } | { type: 'insertAtom'; node: PMNode; } | { type: 'deleteAtom'; node: PMNode; } | { type: 'replaceAtom'; oldNode: PMNode; newNode: PMNode; }; export type Diff = { type: 'equal'; oldNode: PMNode; newNode: PMNode; } | { type: 'insert'; node: PMNode; } | { type: 'delete'; node: PMNode; } | { type: 'replace'; oldNode: PMNode; newNode: PMNode; } | { type: 'inline'; oldNode: PMNode; newNode: PMNode; attrsChanged: boolean; operations: InlineOp[]; } | { type: 'attrs'; oldNode: PMNode; newNode: PMNode; } | { type: 'container'; oldNode: PMNode; newNode: PMNode; attrsChanged: boolean; children: Diff[]; };