import { Mark } from '@tiptap/core'; import { type Node as ProseMirrorNode } from '@tiptap/pm/model'; import type { WorkDocumentChangeKind, WorkDocumentMoveRole } from './work-types'; export type { WorkDocumentChangeKind, WorkDocumentMoveRole, } from './work-types'; export interface WorkDocumentChangeIdentity { id: string; actorId?: string; author: string; date: string; } export interface WorkDocumentChange extends WorkDocumentChangeIdentity { kind: WorkDocumentChangeKind; /** Present when a change is one side of a native Word move revision. */ moveRole?: WorkDocumentMoveRole; from: number; to: number; text: string; } interface DocumentChangeOptions { isTracking: () => boolean; createChange: (kind: WorkDocumentChangeKind) => WorkDocumentChangeIdentity; onTrackingChange: (enabled: boolean) => void; } declare module '@tiptap/core' { interface Commands { documentChange: { acceptAllDocumentChanges: () => ReturnType; acceptDocumentChange: (id: string) => ReturnType; acceptDocumentChanges: (ids: readonly string[]) => ReturnType; rejectAllDocumentChanges: () => ReturnType; rejectDocumentChange: (id: string) => ReturnType; rejectDocumentChanges: (ids: readonly string[]) => ReturnType; replaceDocumentTextWithTrackedChange: (from: number, to: number, text: string) => ReturnType; setDocumentTrackChanges: (enabled: boolean) => ReturnType; toggleDocumentTrackChanges: () => ReturnType; }; } } export declare const DocumentChange: Mark; export declare function collectDocumentChanges(document: ProseMirrorNode): WorkDocumentChange[]; /** * Resolves every revision on an immutable document snapshot. A malformed * formatting snapshot returns `null` instead of approximating the baseline. */ export declare function resolveAllDocumentChanges(document: ProseMirrorNode, decision: 'accept' | 'reject'): ProseMirrorNode | null;