export function enumerateCommentAnchors(doc: import('prosemirror-model').Node): CommentAnchorSpan[];
export function planCommentEffects({ doc, removedRanges, resolvedRanges }: {
    doc: import('prosemirror-model').Node;
    removedRanges: Array<{
        from: number;
        to: number;
        cause: string;
    }>;
    resolvedRanges?: {
        from: number;
        to: number;
        cause: string;
    }[] | undefined;
}): CommentEffectsPlan;
export type CommentAnchorSpan = {
    commentId: string;
    /**
     * `commentRangeStart` node position.
     */
    startPos: number;
    /**
     * `commentRangeEnd` node position.
     */
    endPos: number;
    /**
     * `commentReference` position when present.
     */
    referencePos: number;
};
export type CommentNodeDelete = {
    kind: "commentRangeStart" | "commentRangeEnd" | "commentReference";
    from: number;
    to: number;
    commentId: string;
};
export type CommentEffectsPlan = {
    /**
     * PM ranges to remove.
     */
    nodeDeletes: CommentNodeDelete[];
    /**
     * Comment thread ids to remove.
     */
    entityDeletes: Array<{
        id: string;
        cause: string;
    }>;
    /**
     * Comments whose anchor shrinks.
     */
    entityShrinks: Array<{
        id: string;
        cause: string;
        anchor?: {
            from: number;
            to: number;
        };
    }>;
    /**
     * Comments whose anchor survives but should detach from tracked-change threading.
     */
    entityDetaches: Array<{
        id: string;
        cause: string;
    }>;
    diagnostics: Array<{
        code: string;
        message: string;
    }>;
};
//# sourceMappingURL=comment-effects.d.ts.map