import { MutableRefObject } from 'react';
import { MentionCallbacks } from './extensions/MentionExtension';
import { OnYoutubePaste } from './extensions/YoutubeExtension';
import { OpenLinkPopover } from './extensions/LinkKeyboardShortcutExtension';
import { RichTextEditorProps } from '../types';
/**
 * Parameters for the useRichTextEditor hook.
 * @property {MutableRefObject<RichTextEditorProps["onImageUpload"]>} onImageUploadRef - Stable ref to the image upload callback, used by extensions without re-creating the editor.
 * @property {MutableRefObject<MentionCallbacks>} mentionCallbacksRef - Stable ref to mention event callbacks (input change, item select).
 * @property {MutableRefObject<OnYoutubePaste>} onYoutubePasteRef - Stable ref to the YouTube paste handler used by the YouTube extension.
 * @property {MutableRefObject<OpenLinkPopover | null>} openLinkPopoverRef - Stable ref to the function that opens the link popover, wired to the `Ctrl/Cmd+K` keyboard shortcut extension.
 * @property {`image/${string}`[]} [allowedMimeTypes] - MIME types accepted for image upload via paste and drop.
 */
export type UseRichTextEditorParams = Pick<RichTextEditorProps, "value" | "defaultValue" | "onChange" | "onJsonChange" | "contentType" | "onMarkdownChange" | "extensions" | "placeholder" | "disabled" | "allowTextFormat" | "allowTextAlignment" | "allowLists" | "allowChecklist" | "allowCode" | "allowBlockquote" | "allowLink" | "allowMedia" | "allowMention" | "onImageUpload" | "isAllowedImageSrc"> & {
    allowedMimeTypes?: `image/${string}`[];
    onImageUploadRef: MutableRefObject<RichTextEditorProps["onImageUpload"]>;
    mentionCallbacksRef: MutableRefObject<MentionCallbacks>;
    onYoutubePasteRef: MutableRefObject<OnYoutubePaste>;
    openLinkPopoverRef: MutableRefObject<OpenLinkPopover | null>;
};
/**
 * Internal hook that initializes and manages the TipTap editor instance for RichTextEditor.
 *
 * Conditionally registers TipTap extensions based on the `allow*` feature flags so that
 * only the capabilities needed for a given editor configuration are included. Handles both
 * controlled mode (via `value` + `onChange`) and uncontrolled mode (via `defaultValue`),
 * and syncs the `disabled` prop to the editor's editable state.
 *
 * @param params - Configuration derived from RichTextEditorProps plus stable callback refs.
 * @returns The TipTap `Editor` instance, or `null` during SSR / before mount.
 */
export declare const useRichTextEditor: ({ value, defaultValue, onChange, onJsonChange, contentType, onMarkdownChange, extensions, placeholder, disabled, allowTextFormat, allowTextAlignment, allowLists, allowChecklist, allowCode, allowBlockquote, allowLink, allowMedia, allowMention, allowedMimeTypes, isAllowedImageSrc, onImageUploadRef, mentionCallbacksRef, onYoutubePasteRef, openLinkPopoverRef, }: UseRichTextEditorParams) => import('@tiptap/core').Editor;
