import { Editor, Mark } from '@tiptap/core';
import { CommentAnnotation } from '@veltdev/types';

interface TiptapVeltCommentConfig {
    context?: any;
}

declare const triggerAddComment: (editor: Editor, config?: TiptapVeltCommentConfig) => Promise<void>;
interface AddCommentRequest {
    editorId?: string;
    editor: Editor;
    context?: unknown;
}
/**
 * Creates a comment annotation for the currently selected text in the editor
 * This function handles the entire flow from getting the selected text to creating
 * the actual comment through the Velt service
 */
declare const addComment: ({ editorId, editor, context: clientContext, }: AddCommentRequest) => Promise<void>;
declare const addTiptapVeltComment: (editor: Editor, config?: TiptapVeltCommentConfig) => Promise<void>;
interface TiptapVeltCommentsOptions {
    HTMLAttributes: Record<string, any>;
    persistVeltMarks: boolean;
    editorId?: string;
}
declare module '@tiptap/core' {
    interface Commands<ReturnType> {
        tiptapVeltComments: {
            setVeltComment: (annotationId?: string, multiThreadAnnotationId?: string, from?: number, to?: number) => ReturnType;
        };
    }
}
declare const TiptapVeltComments: Mark<TiptapVeltCommentsOptions, any>;

declare function highlightComments(editor: Editor, commentAnnotations: CommentAnnotation[], editorId?: string): void;
interface RenderCommentsRequest {
    editor: Editor;
    editorId?: string;
    commentAnnotations?: CommentAnnotation[];
}
declare const renderComments: ({ editor, editorId, commentAnnotations }: RenderCommentsRequest) => void;

export { AddCommentRequest, RenderCommentsRequest, TiptapVeltComments, TiptapVeltCommentsOptions, addComment, addTiptapVeltComment, TiptapVeltComments as default, highlightComments, renderComments, triggerAddComment };
