import { MutableRefObject, MouseEvent } from 'react';
import { Editor } from '@tiptap/react';
import { MentionPopoverRef } from './MentionPopover';
import { MentionState } from './extensions/MentionExtension';
import { OpenLinkPopover } from './extensions/LinkKeyboardShortcutExtension';
import { RichTextEditorProps } from '../types';
type LinkPopoverState = {
    open: boolean;
    anchorRect: DOMRect | null;
    initialHref: string;
    initialDisplayText: string;
};
type YouTubePopoverState = {
    open: boolean;
    anchorRect: DOMRect | null;
};
type YouTubeEmbedPromptState = {
    open: boolean;
    anchorRect: DOMRect | null;
    url: string;
    from: number;
    to: number;
};
export type RichTextEditorContextValue = {
    editor: Editor;
    disabled: boolean;
    allowTextFormat: boolean;
    allowTextAlignment: boolean;
    allowLists: boolean;
    allowChecklist: boolean;
    allowCode: boolean;
    allowBlockquote: boolean;
    allowLink: boolean;
    allowMedia: boolean;
    allowMention: boolean;
    allowDragDrop: boolean;
    onImageUpload: RichTextEditorProps["onImageUpload"];
    allowedMimeTypes: `image/${string}`[];
    mentionState: MentionState;
    mentionPopoverRef: MutableRefObject<MentionPopoverRef | null>;
    linkPopoverState: LinkPopoverState;
    youtubePopoverState: YouTubePopoverState;
    youtubeEmbedPromptState: YouTubeEmbedPromptState;
    onEditorClick: (event: MouseEvent) => void;
    openLinkPopover: OpenLinkPopover;
    closeLinkPopover: () => void;
    removeLinkPopover: () => void;
    saveLinkPopover: (href: string, displayText: string) => void;
    embedYoutubeFromPrompt: () => void;
    closeYoutubeEmbedPrompt: () => void;
    openYoutubePopover: (anchorRect: DOMRect) => void;
    closeYoutubePopover: () => void;
    saveYoutubePopover: (url: string) => void;
};
export declare const RichTextEditorContext: import('react').Context<RichTextEditorContextValue | null>;
export declare const useRichTextEditorContext: () => RichTextEditorContextValue;
export {};
