/**
 * @wix/ricos/next — forward-looking entry point with RicosDocument (JTD) types.
 *
 * Same runtime as @wix/ricos, but typed with the JTD schema (RicosDocument, RicosDocumentNode)
 * instead of the proto schema (RichContent, Node).
 *
 * Draft-related APIs are excluded — they will be removed in the next major version.
 */
import type { WixClient } from '@wix/sdk/client';
import type { CSSProperties, FC, Component } from 'react';
import type { BISettings, VisitorUploads as _VisitorUploads } from './ricos-common/ricos-types.js';
import type { Extractor } from './ricos-content/extractor-infra.js';
import type { ImageMedia, VideoMedia } from './ricos-content/RicosContentAPI/get-media-data.js';
import type { Translatable } from './ricos-content/TranslatableAPI/types.js';
import type { TruncateOptions } from './ricos-content/truncateContent/ricos-truncate.js';
import type { ContentBuilder as _ContentBuilder } from './ricos-content/types/index.js';
import type { RicosDocument, RicosDocumentNode, Decoration, Node_Type as RicosDocumentNodeType_Type, TextData as _TextData, ParagraphData as _ParagraphData, NodeStyle as _NodeStyle, Metadata as _Metadata, GalleryData_Item as _GalleryData_Item } from './ricos-schema/next-schema/index.js';
import type { FocusPosition, TextAlignment, ToolbarsConfig, ViewerPlugin, EditorPluginOptions, AvailableExperiments, ColorPaletteManager, DebugMode, Environment, LinkSettings, MediaSettings, onAtomicBlockFocus, RicosPalette, RicosTypography, RicosCustomStyles, RicosSettingsStyles, RicosNativeStyles, ModalSettings, ToolbarButtonProps, ToolbarPropsResult, ToolbarType, UseToolbarPropsType } from './ricos-types/next/index.js';
import type { GeneralLinkSettings, HistorySettings } from './ricos-types/next/plugin-types.js';
import type { PublicPickMedia as _PublicPickMedia } from './_shared/media/public-pick-media.js';
import { type AudioPluginEditorConfig as _AudioConfig } from './plugin-audio/index.js';
import type { LinkButtonPluginEditorConfig as _LinkButtonConfig, ActionButtonPluginEditorConfig as _ActionButtonConfig } from './plugin-button/types.js';
import { type DividerPluginEditorConfig as _DividerConfig } from './plugin-divider/index.js';
import { type EmojiPluginEditorConfig as _EmojiConfig } from './plugin-emoji/index.js';
import { type GiphyPluginEditorConfig as _GiphyConfig } from './plugin-giphy/index.js';
import { type HashtagPluginEditorConfig as _HashtagConfig } from './plugin-hashtag/index.js';
import { type HeadingsPluginEditorConfig as _HeadingsConfig } from './plugin-headings/index.js';
import type { ImagePluginEditorConfig as _ImageConfig } from './plugin-image/types.js';
import type { LinkPreviewPluginEditorConfig as _LinkPreviewConfig } from './plugin-link-preview/types.js';
import { type TablePluginEditorConfig as _TableConfig } from './plugin-table/index.js';
import type { TextColorPluginEditorConfig as _TextColorConfig, TextHighlightPluginEditorConfig as _TextHighlightConfig } from './plugin-text-color/types.js';
export type { RicosDocument, RicosDocumentNode, Decoration, AppEmbedData, AudioData, BulletedListData, ButtonData, CollapsibleListData, FileData, GalleryData, GalleryData_Item, GIF, GIFData, HeadingData, HTMLData, ImageData, LayoutCellData, LayoutData, Link, Link_Rel, SchemaLinkPreviewData as LinkPreviewData, Media, MentionData, Node, OrderedListData, ParagraphData, PluginContainerData_Spoiler, PollData, ShapeData, ShapeNode, SmartBlockData, TextData, VideoData, ValidationError, } from './ricos-types/next/index.js';
export { SchemaDecoration_Type as Decoration_Type, RichContent, RicosDocumentNodeType as Node_Type, AppEmbedData_AppType, ButtonData_Type, CollapsibleListData_Direction, CollapsibleListData_InitialExpandedItems, DividerData_Alignment, DividerData_LineStyle, DividerData_Width, FontSizeData_fontType, GalleryOptions_ItemStyle_Crop, GalleryOptions_Layout_Orientation, GalleryOptions_Layout_Type, GalleryOptions_Thumbnails_Alignment, GIFData_GIFType, HTMLData_Source, LayoutData_ResponsivenessBehaviour, LayoutData_DesignTarget, Link_Target, PluginContainerData_Alignment, PluginContainerData_Width_Type, PollData_Design_PollDesign_Background_Type, PollData_Layout_PollLayout_Direction, PollData_Layout_PollLayout_Type, PollData_Poll_Settings_Permissions_ViewRole, PollData_Poll_Settings_Permissions_VoteRole, SmartBlockData_ColumnSize, SmartBlockData_Orientation, SmartBlockData_Type, SmartBlockCellData_Type, TextStyle_TextAlignment, TocData_Indentation, TocData_ListStyle, VerticalAlignment as LayoutData_VerticalAlignment_Alignment, LayoutData_BannerPosition as LayoutData_Banner_Position, LayoutData_BannerOrigin as LayoutData_Banner_Origin, validateRicosDocument, } from './ricos-types/next/index.js';
export { type AnchorDecoration, type AppEmbedNode, type AudioNode, type BlockquoteNode, type BulletedListNode, type ButtonNode, type CaptionNode, type CodeBlockNode, type CollapsibleItemBodyNode, type CollapsibleItemNode, type CollapsibleItemTitleNode, type CollapsibleListNode, type ColorPaletteManager, type SetColors, type CustomTextualStyle, type DebugMode, type Environment, type FocusPosition, type TextAlignment, type DividerNode, type EmbedNode, type FileNode, type GalleryNode, type GifNode, type HeadingNode, type HtmlNode, type ImageNode, type LinkDecoration, type LinkPreviewNode, type LinkSettings, type ListItemNode, type onAtomicBlockFocus, type onKeyboardShortcutActionArgs, type onToolbarButtonClickArgs, type OrderedListNode, type ParagraphNode, type PollNode, type RefinedNode, type RicosCustomStyles, type RicosNativeStyles, type RicosPalette, type RicosSettingsStyles, type RicosTypography, type TableCellNode, type TableNode, type TableRowNode, type TextDirection, type TextGroupButtons, type TextNode, type ToolbarSettingsFunctions, type VideoNode, type EditorPluginOptions, type EditorPluginOptionCreator, ToolbarType, RicosPluginToolbarNames, type RicosPluginToolbarNamesValues, type ToolbarButtonProps, type ToolbarsConfig, type QuickActionsConfig, type TextButtonId, type InsertButtonId, type PluginButtonId, type ActionButton, type ButtonClickContext, type CustomButton, type DropdownButton, type DropdownOption, type ExternalToolbarButton, type SeparatorButton, type ToolbarPropsResult, type UseToolbarPropsType, } from './ricos-types/next/index.js';
export type { GeneralLinkSettings, HistorySettings } from './ricos-types/next/plugin-types.js';
/** @deprecated Use EditorPluginOptions */
export type { EditorPluginOptions as EditorPlugin } from './ricos-types/next/index.js';
/**
 * Theme input for `RicosEditor` and `RicosViewer`. Values flow into CSS variables
 * consumed by every plugin, the toolbars, and the settings panels — prefer this
 * over wrapping Ricos with external CSS, because external CSS only reaches the
 * editable area, not the chrome. Pair `colorPalette` (broad colors) with
 * `customStyles` (per-element overrides) for full control.
 */
export interface RicosTheme {
    /**
     * Global color tokens shared across all plugins, toolbars, and settings panels.
     * @example
     * ```tsx
     * import { fromPlainText, pluginHashtag, RicosEditor } from '@wix/ricos';
     * import React from 'react';
     *
     * export default () => {
     *   // @essential-start
     *   return (
     *     <div style={{ background: '#C9C9C9' }}>
     *       <RicosEditor
     *         initialContent={fromPlainText('This is a #hashtag, see it has a unique color.')}
     *         placeholder="Type here!"
     *         theme={{
     *           colorPalette: {
     *             format: 'color',
     *             bgColor: '#0E092B',
     *             textColor: '#FFFFFF',
     *             accent1: '#D6FF00',
     *           },
     *         }}
     *         plugins={[pluginHashtag()]}
     *       />
     *     </div>
     *   );
     *   // @essential-end
     * };
     * ```
     */
    colorPalette?: RicosPalette;
    /** Typography tokens. `fontFamily` cascades to every text node unless a `customStyles.<element>.fontFamily` overrides it. */
    typography?: RicosTypography;
    /**
     * Per-element style overrides for headings, paragraphs, quotes, plugin cards, and the editor container itself.
     * @example
     * ```tsx
     * import { fromPlainText, RicosEditor } from '@wix/ricos';
     * import React from 'react';
     *
     * export default () => {
     *   // @essential-start
     *   const theme = {
     *     customStyles: {
     *       h2: {
     *         fontFamily: 'Times',
     *         fontSize: '26px',
     *         color: 'orange',
     *         fontStyle: 'italic',
     *         textDecoration: 'underline',
     *       },
     *       h3: {
     *         fontFamily: 'Tahoma',
     *         fontSize: '20px',
     *         color: 'purple',
     *         textDecoration: 'none',
     *       },
     *       quote: {
     *         lineHeight: '24px',
     *         fontWeight: 'bold',
     *         color: 'brown',
     *       },
     *     },
     *   };
     *
     *   return (
     *     <RicosEditor
     *       initialContent={fromPlainText('Apply heading 2 or 3 from the toolbar to see the styles.')}
     *       placeholder="Type here!"
     *       theme={theme}
     *     />
     *   );
     *   // @essential-end
     * };
     * ```
     */
    customStyles?: RicosCustomStyles;
    /** Style overrides for settings modals (z-index layering). Most fields are deprecated — only `modals` is supported going forward. */
    settingsStyles?: RicosSettingsStyles;
    /** React-Native-flavoured style overrides; only consumed when `useNativeStyles` is `true`. */
    nativeStyle?: RicosNativeStyles;
    /** When `true`, applies the Wix Studio default theme on top of the supplied values. */
    useWixStyles?: boolean;
    /** When `true`, switches the renderer to consume `nativeStyle` instead of CSS overrides — used by mobile builds. */
    useNativeStyles?: boolean;
    /**
     * Breakout layout: lets specific nodes flow beyond the content column to viewport edges.
     * `rule` is called once per node at layout time; return `'fullWidth'` for the chosen nodes
     * (typically images and galleries) and `'normal'` for everything else. `fullWidthPadding`
     * overrides `normalPadding` for the `'fullWidth'` case.
     */
    breakout?: {
        rule: ({ node }: {
            node: RicosDocumentNode;
        }) => 'fullWidth' | 'normal';
        normalPadding: {
            start: CSSProperties['paddingInlineStart'];
            end: CSSProperties['paddingInlineEnd'];
        };
        fullWidthPadding?: {
            start: CSSProperties['paddingInlineStart'];
            end: CSSProperties['paddingInlineEnd'];
        };
    };
}
export type OnContentChangeFunction = (content: RicosDocument) => void;
export type OnSelectionChangeFunction = (content: RicosDocument) => void;
/**
 * Imperative API for controlling a mounted `RicosEditor`. Accessed via a
 * React ref — `const editorRef = useRef<RicosEditorType>(null)` — and read
 * inside event handlers (publish flows, programmatic content swaps,
 * focus/undo/redo controls). For UI that needs to react to editor state in
 * render — toolbar enable/disable, undo-stack indicators — prefer the
 * reactive hooks (`useToolbarProps`, `useUndoState`) over polling these
 * methods.
 */
export interface RicosEditorAPI {
    /** Focuses the editor. Optionally moves the cursor to `focusPosition`. */
    focus(focusPosition?: FocusPosition): void;
    /** Removes focus from the editor. */
    blur(): void;
    /** Undoes the last editor action. */
    undo(): void;
    /** Redoes the last undone action. */
    redo(): void;
    /** Returns the current content as a `RicosDocument`. Resolves after any pending async operations. */
    getContent(postId?: string, forPublish?: boolean, shouldRemoveErrorBlocks?: boolean): Promise<RicosDocument>;
    /**
     * Returns a promise of the current content.
     * `publishId` — used for BI (`onPublish` event), set it when called before publishing.
     * `flush` — triggers editor blur to force pending changes (e.g., Android composition mode) before reading content.
     */
    getContentPromise(props: {
        flush?: boolean;
        publishId?: string;
    } | undefined): Promise<RicosDocument>;
    /** Returns content traits: whether the editor is empty, content has changed, and the last change was an edit. */
    getContentTraits(): {
        isEmpty: boolean;
        isContentChanged: boolean;
        isLastChangeEdit: boolean;
    };
    /** Replaces the editor content. Imperative replacement for the removed `injectedContent` prop. */
    setContent(content: RicosDocument): void;
    /**
     * @internal
     * @deprecated Reserved for internal Wix consumers (e.g. React Native app). General consumers
     * should use the top-level editor methods (`undo`, `redo`, `prePublish`) and reactive hooks
     * (`useToolbarProps`, `useUndoState`) instead — `PublicCommands` shape can change without warning.
     */
    getEditorCommands(): PublicCommands;
    /** Returns the DOM element wrapping the editor's content-editable, if mounted. */
    getEditorContainer(): HTMLElement | undefined;
    /** Opens a built-in modal (AI image generation, inline AI, keyboard shortcuts sheet, or AI widget). */
    openModal: (options: {
        type: 'AI_IMAGE' | 'INLINE_AI' | 'SHORTCUTS_SHEET' | 'AI_WIDGET';
    }) => void;
    /**
     * Subscribe to the reactive button list for a toolbar. Re-runs on selection
     * and content changes, so consumers rendering a custom toolbar stay in sync
     * automatically. Must be called inside a React component.
     *
     * @param type - which toolbar's buttons to read:
     *   - `'text'`   — text formatting buttons (bold, italic, link, headings, …)
     *   - `'insert'` — insert-plugin buttons (image, video, divider, …)
     *   - `'plugin'` — context-specific buttons for the currently-selected
     *                  plugin node or decoration. Empty list when nothing is
     *                  selected.
     *   - `'auto'`   — whichever of `'plugin'` / `'text'` is currently relevant
     *                  for the selection (plugin takes priority). Use this for
     *                  a single toolbar that adapts to context; consumers that
     *                  need to branch on which toolbar resolved should call
     *                  the specific variant directly.
     */
    useToolbarProps(type: UseToolbarPropsType): ToolbarPropsResult;
    /**
     * @internal Wixel-only. Combined toolbar buttons + focus signal for the wixel
     * asset-header. Shape may change without warning. Not for general consumers.
     */
    useToolbarWixelProps: () => {
        buttons: Record<string, ToolbarButtonProps>;
        toolbarType: ToolbarType;
        isEditorOrPortalFocused: () => boolean;
    };
    useInlineAiState: (invocationId: string) => unknown;
    /** Runs plugin pre-publish hooks (e.g. poll sync) and returns the content. */
    prePublish(): Promise<RicosDocument>;
    /** Reactive undo/redo state. Must be called inside a React component. */
    useUndoState: () => {
        isUndoStackEmpty: boolean;
        isRedoStackEmpty: boolean;
    };
}
/**
 * Programmatic commands for manipulating editor content, selection, and state.
 * Accessed via `editorRef.getEditorCommands()`.
 * @internal
 */
export interface PublicCommands {
    /**
     * @internal
     * Alpha API. Triggers the inline AI plugin's prompt flow programmatically.
     * Subject to change without warning — internal Wix consumers only.
     */
    triggerInlineAi: (args: {
        invocationId: string;
        prompt: string;
        headless: boolean;
        files?: {
            fileUrl: string;
            mimeType: string;
            fileName: string;
        }[];
        traceParams?: Record<string, string>;
    }) => void;
    /** Returns the current editor content. */
    getContent: () => RicosDocument;
    /** Replaces the editor content. */
    setContent: (content: RicosDocument, options?: {
        skipHistory?: boolean;
    }) => void;
    /** Returns the current selection state. */
    getSelection: () => any;
    /** Returns a slice of content corresponding to the current selection. */
    getSelectionSlice: () => any;
    /** Toggles AI suggestions visibility in the editor. */
    toggleAiSuggestions: (visible: boolean) => void;
    /** Returns blocks that can be targeted by anchor links. */
    getAnchorableBlocks: () => {
        anchorableBlocks: any[];
        pluginsIncluded: string[];
    };
    /** Returns the document-level style configuration. */
    getDocumentStyle: () => any;
    /** Returns the active color of the given type (e.g., text color, highlight). */
    getColor: (colorType: any) => string | undefined;
    /** Returns the font size at the current cursor position. */
    getFontSize: () => string | undefined;
    /** Returns the font family at the current cursor position. */
    getFontFamily: () => string | undefined;
    /** Returns the text alignment at the current cursor position. */
    getTextAlignment: () => TextAlignment;
    /** Returns inline styles applied to the anchor block. */
    getAnchorBlockInlineStyles: () => Record<string, string>;
    /** Returns all inline styles in the current selection. */
    getInlineStylesInSelection: () => Record<string, string>;
    /** Checks if a specific inline style is active in the selection. */
    hasInlineStyle: (style: any) => boolean;
    /** Checks if a specific block type is selected. */
    isBlockTypeSelected: (type: any) => boolean;
    /** Returns `true` if there are no undo actions available. */
    isUndoStackEmpty: () => boolean;
    /** Returns `true` if there are no redo actions available. */
    isRedoStackEmpty: () => boolean;
    /** Checks if the current selection contains a link. */
    hasLinkInSelection: (options?: {
        inclusive?: boolean;
    }) => boolean;
    /** Returns link data for the link in the current selection. */
    getLinkDataInSelection: (options?: {
        inclusive?: boolean;
    }) => any;
    /** Selects a link decoration by its identifier. */
    selectLinkDecoration: (decoration: string, options?: {
        inclusive?: boolean;
    }) => void;
    /** Returns data about the currently selected content. */
    getSelectedData: () => any;
    /** Returns a list of plugins present in the document. */
    getPluginsList: (settings?: {
        isRicosSchema?: boolean;
    }) => any;
    /** Scrolls the editor viewport to a specific block. */
    scrollToBlock: (blockKey: string) => void;
    /** Checks if a block with the given key exists in the document. */
    isBlockInContent: (blockKey: string) => boolean;
    /** Toggles the overlay on a specific block (e.g., for selection highlight). */
    toggleBlockOverlay: (blockKey: string) => void;
    /** Returns the current block spacing configuration. */
    getBlockSpacing: () => any;
    /** Saves the current editor state for later restoration. */
    saveEditorState: () => void;
    /** Restores a previously saved editor state. */
    loadEditorState: () => void;
    /** Saves the current selection state for later restoration. */
    saveSelectionState: () => void;
    /** Restores a previously saved selection state. */
    loadSelectionState: () => void;
    /** Inserts a text decoration (e.g., link, color, bold) at the current selection. */
    insertDecoration: (type: string, data?: any, settings?: any) => void;
    /** Triggers an existing decoration (e.g., toggles bold). */
    triggerDecoration: (type: string) => void;
    /** Removes a decoration from the current selection. */
    deleteDecoration: (type: string) => void;
    /** Inserts multiple anchor decorations at once. */
    insertMultipleAnchors: (anchors: any[]) => void;
    /** Inserts a new block (plugin node) into the document. Returns the block key. */
    insertBlock: (type: string, data?: any, settings?: any) => string;
    /** Inserts a new block with blank lines before and after. Returns the block key. */
    insertBlockWithBlankLines: (type: string, data?: any, settings?: any) => string;
    /** Replaces a block's type and data. */
    setBlock: (blockKey: string, type: string, data?: any, settings?: any) => void;
    /** Updates a block's plugin data. Returns `true` if the block was found and updated. */
    updateBlock: (blockKey: string, pluginType: string, data: any) => boolean;
    /** Deletes a block from the document. */
    deleteBlock: (blockKey: string) => void;
    /** Undoes the last editor action. */
    undo: () => void;
    /** Redoes the last undone action. */
    redo: () => void;
    /** Toggles an inline style (e.g., bold, italic) on the current selection. */
    toggleInlineStyle: (inlineStyle: any) => void;
    /** Sets the block type at the current cursor position (e.g., heading, paragraph). */
    setBlockType: (type: any) => void;
    /** Sets the text alignment for the current block. */
    setTextAlignment: (textAlignment: TextAlignment) => void;
    /** @internal Sets the selection to a specific position in a block. */
    _setSelection: (blockKey: string, selection: any) => void;
    /** Resets document-level styles for a specific node type to defaults. */
    resetDocumentStyleByNodeType: (type: any) => void;
    /** Updates the document-level style configuration. */
    updateDocumentStyle: (documentStyle: any) => void;
    /** Clears all inline styles from selected blocks, optionally excluding specific styles. */
    clearSelectedBlocksInlineStyles: (exclude?: string[]) => void;
    /** Returns the wired (resolved) font styles from the theme. */
    getWiredFontStyles: () => Record<string, string> | undefined;
    /** Checks if an atomic (plugin) block is currently selected. */
    isAtomicBlockInSelection: () => boolean;
    /** Checks if a text block is currently selected. */
    isTextBlockInSelection: () => boolean;
    /** Returns the type of the block at the current cursor position. */
    getAnchorBlockType: () => string;
    /** Returns all block keys in the document. */
    getAllBlocksKeys: () => string[];
    /** Focuses the editor, optionally at a specific position. */
    focus: (focusPosition?: FocusPosition) => void;
    /** Returns the component data for a specific block. */
    getBlockComponentData: (blockKey: string) => any;
    /** Inserts text at the current cursor position. Returns `true` if successful. */
    insertText: (text: string, options?: {
        preventAutolink?: boolean;
    }) => boolean;
    /** Returns the heading level at the current cursor position. */
    getCurrentHeading: () => any;
    /** Inserts a soft line break (shift+enter). */
    softNewLine: () => void;
    /** Clears all editor content. Set `triggerUpdate` to fire onChange. */
    clearEditorContent: (triggerUpdate: boolean) => void;
}
export interface TiptapAdapter {
    getEditorCommands: RicosEditorAPI['getEditorCommands'];
    openModal: RicosEditorAPI['openModal'];
    focus: RicosEditorAPI['focus'];
    blur: RicosEditorAPI['blur'];
    tiptapEditor: any;
    getDocumentStyle: () => any;
    setTiptapContent: (content: any) => void;
    useToolbarProps: RicosEditorAPI['useToolbarProps'];
    useInlineAiState: RicosEditorAPI['useInlineAiState'];
    useUndoState: RicosEditorAPI['useUndoState'];
}
export interface RicosEditorProps {
    /** Array of editor plugins to enable. Each plugin adds editing capabilities (e.g., image, video, table). */
    plugins?: EditorPluginOptions[];
    /** Fires only when document content changes (not on selection changes). */
    onChange?: OnContentChangeFunction;
    /** Fires when the selection/cursor position changes (including during edits). */
    onSelectionChange?: OnSelectionChangeFunction;
    /**
     * Placeholder text displayed when the editor is empty.
     * @example
     * ```tsx
     * import { RicosEditor } from '@wix/ricos';
     * import React from 'react';
     *
     * export default () => {
     *   // @essential-start
     *   return <RicosEditor placeholder={'Type here!'} />;
     *   // @essential-end
     * };
     * ```
     */
    placeholder?: string;
    /**
     * Toolbars configuration — controls the text formatting toolbar, insert
     * plugin toolbars, plugin context toolbars and the quick-actions menu.
     */
    toolbars?: ToolbarsConfig;
    /** Callback fired when the editor transitions between busy and idle states (e.g., during media uploads). */
    onBusyChange?: (isBusy: boolean) => void;
    /** Maximum number of text characters allowed in the editor. When the limit is reached, further text input is ignored and paste actions are canceled if the result would exceed the limit. */
    maxTextLength?: number;
    /** A React component rendered as a side block alongside the editor content. Receives the block `id` as a prop. */
    sideBlockComponent?: FC<{
        id: string;
    }>;
    /** Custom commands to register with the editor. */
    commands?: any[];
    /** Settings for undo/redo history. */
    historySettings?: HistorySettings;
    /** Callback fired when the editor finishes loading and is ready for interaction. */
    onLoad?: (editor: any) => void;
    /** Controls initial cursor/focus position when the editor mounts. */
    autofocus?: FocusPosition;
    /** HTML element or factory function that returns the container element for rendering editor popovers and modals. */
    container?: HTMLElement | (() => HTMLElement | null);
    /** Initial content for the editor. Only used during initialization — not a controlled value. */
    initialContent?: RicosDocument;
    /** Custom keyboard shortcuts to register with the editor. */
    keyboardShortcuts?: any[];
    /** The placeholder to be displayed while the editor is loading. */
    loadingPlaceholder?: React.ReactNode;
    /**
     * Controls focus behavior when tabbing into the editor:
     * - `'edit'`: (default) Immediately enables typing when editor receives keyboard focus.
     * - `'container'`: Shows focus ring but requires Enter/key press to start editing.
     * @defaultValue 'edit'
     */
    tabFocusBehavior?: 'edit' | 'container';
    /** Unified color manager for sharing custom colors across all plugins. */
    colorManager?: ColorPaletteManager;
    modalSettings?: ModalSettings;
    /** Pick media implementation used by media-related plugins (e.g., image, gallery). */
    pickMedia?: _PublicPickMedia;
    /** Visitor upload settings used by file-upload-capable plugins. */
    visitorUploads?: _VisitorUploads;
    /** Maximum file size limit (in bytes) for uploads. */
    fileUploadSizeLimit?: number;
    /** HTML attributes applied to the editor's content-editable element. */
    htmlAttributes?: {
        autoCapitalize?: string;
        spellCheck?: boolean;
        autoComplete?: string;
        autoCorrect?: string;
        tabIndex?: number;
        ariaLabel?: string;
    };
    /** When `true`, renders in mobile-optimized mode. */
    isMobile?: boolean;
    /** Link settings applied globally to all linkable plugins. */
    generalLinkSettings?: GeneralLinkSettings;
    /** Two-letter locale code (e.g., `'en'`, `'he'`). Determines the language and text direction of modals and settings. */
    locale?: string;
    /** Locale for content, when different from UI locale. If not defined, `locale` is used. */
    localeContent?: string;
    /** Callback fired when an error occurs in a Ricos component. */
    onError?: (error: string) => void;
    /** Theme configuration for colors, fonts, and custom styles. */
    theme?: RicosTheme;
    /** Default text alignment direction. */
    textAlignment?: TextAlignment;
    /** Callback fired when an atomic block (plugin) receives focus. */
    onAtomicBlockFocus?: onAtomicBlockFocus;
    /** Domain used to render UGC source code in an isolated sandboxed iframe. */
    iframeSandboxDomain?: string;
    /** When `true`, wraps text around left/right-aligned plugins. */
    textWrap?: boolean;
    /** Debug mode flags for enabling development-time diagnostics. */
    debugMode?: DebugMode[];
    /**
     * Theme variant to apply:
     * - `'businessManager'`: BM theme is applied and cannot be overridden.
     * - `'liveSite'`: liveSite theme is applied and can be overridden via `theme`.
     * @default 'liveSite'
     */
    environment?: Environment;
    /**
     * Base URL of the site, used to resolve page-relative URLs.
     * Used by links, buttons, gallery items, and vertical embeds to construct full hrefs
     * from relative paths (e.g., `/my-page` → `https://example.com/my-site/my-page`).
     *
     * If not provided, fetched automatically from `/_api/ricos-site-pages/base-url`.
     *
     * @example 'https://www.example.com/my-site'
     */
    baseUrl?: string;
    /** Business intelligence configuration for analytics and tracking. */
    biSettings?: BISettings;
    /**
     * Authenticated `WixClient` from `@wix/sdk`. When provided, takes priority over
     * `instance` for authorizing every request the editor makes (media uploads,
     * link previews, etc.). Use this in headless apps where you own the React tree.
     */
    wixClient?: WixClient;
    /**
     * Per-session Wix instance token. Used when no `wixClient` is provided — Ricos
     * builds an internal client from it. Typically set by Wix-served host pages.
     */
    instance?: string;
    /**
     * Metasite ID. Scopes storage and CDN traffic to the owning site when no
     * `wixClient` is given.
     */
    msid?: string;
    /**
     * When `true`, normalises rich content via `normalizeRicosDocument` before
     * rendering. Set to `false` to skip normalisation when content is already
     * known to be valid.
     * @default true
     */
    shouldNormalizeRichContent?: boolean;
    /** Media-upload, capture, and resolution settings shared across media plugins. */
    mediaSettings?: MediaSettings;
    /** @deprecated Use `generalLinkSettings` instead. */
    linkSettings?: LinkSettings;
    /** @deprecated Not used at runtime. */
    experiments?: AvailableExperiments;
}
/** @deprecated Use RicosEditorProps */
export type WixRicosEditorProps = RicosEditorProps;
/** @deprecated Use RicosTheme directly */
export type { RicosTheme as WixRicosTheme } from './ricos-types/next/index.js';
export interface RicosViewerProps {
    /** Optional child element to render inside the viewer. */
    children?: React.ReactElement;
    /** Array of viewer plugins to enable. Each plugin adds rendering capabilities for specific content types. */
    plugins?: (ViewerPlugin | any)[];
    /** SEO settings for server-side rendering. When `true`, enables default SEO mode. */
    seoSettings?: boolean | any;
    /** When `true`, shows a floating toolbar when the user selects text in the viewer. */
    textSelectionToolbar?: boolean;
    /** The rich content to display. Required for the viewer to render anything. */
    content?: RicosDocument;
    /** When `true`, adds anchor elements to content blocks for deep linking. Pass a string to use as a prefix for generated anchor IDs. */
    addAnchors?: boolean | string;
    /** Callback fired when a user clicks on a content node in the viewer. */
    onNodeClick?: ({ node }: {
        node: any;
    }) => void;
    /** When `true`, renders in jsdom-compatible mode for server-side rendering environments. */
    jsdomMode?: boolean;
    /** When `true`, renders in print-optimized mode (e.g., for `window.print()`). */
    isPrint?: boolean;
    /** When `true`, renders in mobile-optimized mode. */
    isMobile?: boolean;
    /** Link settings applied globally to all linkable plugins. */
    generalLinkSettings?: GeneralLinkSettings;
    /** Two-letter locale code (e.g., `'en'`, `'he'`). Determines the language and text direction of modals and settings. */
    locale?: string;
    /** Locale for content, when different from UI locale. If not defined, `locale` is used. */
    localeContent?: string;
    /** Callback fired when an error occurs in a Ricos component. */
    onError?: (error: string) => void;
    /** Theme configuration for colors, fonts, and custom styles. */
    theme?: RicosTheme;
    /** Default text alignment direction. */
    textAlignment?: TextAlignment;
    /** Callback fired when an atomic block (plugin) receives focus. */
    onAtomicBlockFocus?: onAtomicBlockFocus;
    /** Domain used to render UGC source code in an isolated sandboxed iframe. */
    iframeSandboxDomain?: string;
    /** When `true`, wraps text around left/right-aligned plugins. */
    textWrap?: boolean;
    /** Debug mode flags for enabling development-time diagnostics. */
    debugMode?: DebugMode[];
    /**
     * Theme variant to apply:
     * - `'businessManager'`: BM theme is applied and cannot be overridden.
     * - `'liveSite'`: liveSite theme is applied and can be overridden via `theme`.
     * @default 'liveSite'
     */
    environment?: Environment;
    /**
     * Base URL of the site, used to resolve page-relative URLs.
     * Must be provided explicitly. If missing, page links will render as relative paths without the site domain.
     *
     * @example 'https://www.example.com/my-site'
     */
    baseUrl?: string;
    /** Business intelligence configuration for analytics and tracking. */
    biSettings?: BISettings;
    /**
     * Authenticated `WixClient` from `@wix/sdk`. When provided, takes priority over
     * `instance` for authorizing every request the viewer makes. Use this in
     * headless apps where you own the React tree.
     */
    wixClient?: WixClient;
    /**
     * Per-session Wix instance token. Used when no `wixClient` is provided — Ricos
     * builds an internal client from it.
     */
    instance?: string;
    /**
     * Metasite ID. Scopes storage and CDN traffic to the owning site when no
     * `wixClient` is given.
     */
    msid?: string;
    /**
     * When `true`, normalises rich content via `normalizeRicosDocument` before
     * rendering. Set to `false` to skip normalisation when content is already
     * known to be valid.
     * @default true
     */
    shouldNormalizeRichContent?: boolean;
    /** Media-upload, capture, and resolution settings shared across media plugins. */
    mediaSettings?: MediaSettings;
    /** @deprecated Use `generalLinkSettings` instead. */
    linkSettings?: LinkSettings;
    /** @deprecated Not used at runtime. */
    experiments?: AvailableExperiments;
}
export declare const RicosEditor: React.ComponentType<RicosEditorProps & {
    ref?: React.Ref<RicosEditorAPI>;
}>;
export interface RicosEditorType extends Component<RicosEditorProps>, RicosEditorAPI {
}
export { RicosViewer } from './ricos-viewer-next/index.js';
/**
 * Context for sharing the imperative `RicosEditorAPI` with descendants.
 * The wrapped `<RicosEditor>` self-registers into this slot on mount;
 * call `useRicosEditorApi()` inside any descendant to read it.
 *
 * **The provider must wrap exactly one `<RicosEditor>` underneath. Two or
 * more editors race on the shared slot — last to mount wins. Or the sky
 * will fall.**
 */
export declare const RicosEditorApiContext: {
    Provider: React.ComponentType<{
        value: {
            ricosEditorApi: RicosEditorAPI | null;
            setRicosEditorApi: (api: RicosEditorAPI | null) => void;
        };
        children: React.ReactNode;
    }>;
    displayName?: string;
};
export declare const RicosEditorApiProvider: FC<{
    children?: import("react").ReactNode | undefined;
}>;
/**
 * Returns the current `RicosEditorAPI` from the nearest `RicosEditorApiProvider`,
 * or `null` if no provider is mounted or the editor has not finished mounting.
 */
export declare const useRicosEditorApi: () => RicosEditorAPI | null;
/**
 * HOC that injects the current `RicosEditorAPI` (or `null`) as an `editor`
 * prop. Useful when migrating class components off the legacy
 * `withEditorContext` HOC.
 */
export declare const withRicosEditorApi: <P extends object>(Component: React.ComponentType<P & {
    editor: RicosEditorAPI | null;
}>) => React.FC<P>;
type ContentLimits = {
    nodeCount: number;
} | {
    wordCount: number;
} | {
    maxPlugins: number;
};
type MediaUrlResolvers = {
    image?: (fileId: string) => string;
    video?: (fileId: string) => string;
    thumbnail?: (fileId: string) => string;
};
export declare const createEmptyContent: (metadata?: {
    version?: number;
    id?: string;
    createdTimestamp?: Date;
    updatedTimestamp?: Date;
}) => RicosDocument;
export declare const ensureContentId: (content?: RicosDocument) => RicosDocument;
export declare const fromPlainText: (text: string) => RicosDocument;
export declare const fromCKEditorHtml: (s: string, interceptorFn?: any) => RicosDocument;
export declare const fromRichTextHtml: (s: string, interceptor?: any) => RicosDocument;
export declare const translateContent: (content: RicosDocument, translatables: Translatable[]) => RicosDocument;
export declare const truncateRichContent: (content: RicosDocument, limits: ContentLimits, options?: TruncateOptions) => RicosDocument;
/**
 * Truncate a `RicosDocument` by node count, word count, or plugin count, returning
 * the (possibly) truncated document and a flag indicating whether anything was cut.
 */
export declare const truncateContent: (content: RicosDocument, limits: {
    blocksCount?: number;
    wordsCount?: number;
    maxPlugins?: number;
}, options?: TruncateOptions) => {
    content: RicosDocument;
    isTruncated: boolean;
};
export declare const getContentLength: (content: RicosDocument) => number;
export declare const getMediaData: (content: RicosDocument, mediaUrlResolvers?: MediaUrlResolvers) => (ImageMedia | VideoMedia)[];
export declare const getPluginData: <T>(content: RicosDocument, type: RicosDocumentNodeType_Type) => T[];
export declare const getText: (content: RicosDocument) => string[];
export declare const toHtml: (content: RicosDocumentNode[] | RicosDocument, interceptorFn?: any, separator?: string) => string;
export type InterceptorToHtml = (context: {
    node: RicosDocumentNode;
    result: string | string[];
}) => string | string[];
export declare const toPlainText: (content: RicosDocument, options?: {
    urlShortener?: (url: string) => Promise<string>;
    getVideoUrl?: (fileId: string) => Promise<string>;
    getVideoEmbeddedUrl?: (url: string) => Promise<string>;
    getAudioUrl?: (fileId: string) => Promise<string>;
    getGifUrl?: (url: string) => Promise<string>;
    delimiter?: string;
    addLinksToText?: boolean;
}) => Promise<string>;
export declare const toPlainTextSync: (content: RicosDocument, options?: {
    urlShortener?: (url: string) => string;
    getVideoUrl?: (fileId: string) => string;
    getVideoEmbeddedUrl?: (url: string) => string;
    getAudioUrl?: (fileId: string) => string;
    getGifUrl?: (url: string) => string;
    delimiter?: string;
    addLinksToText?: boolean;
}) => string;
export declare const toTranslatables: (content: Pick<RicosDocument, 'nodes'>) => Translatable[];
export declare function isRichContent(content: any): content is RicosDocument;
export declare const isRichContentEmpty: (contentState: RicosDocument) => boolean;
export declare const isRichContentEqual: (a: RicosDocument | undefined, b: RicosDocument | undefined) => boolean;
export declare const modify: (content: RicosDocument) => {
    filter: (predicate: (node: RicosDocumentNode) => boolean) => {
        filter: (predicate: (node: RicosDocumentNode) => boolean) => any;
        set: (setter: (node: RicosDocumentNode) => RicosDocumentNode | RicosDocumentNode[]) => RicosDocument;
    };
    set: (setter: (node: RicosDocumentNode) => RicosDocumentNode | RicosDocumentNode[]) => RicosDocument;
};
export { readYXmlFragment, writeYXmlFragment } from './plugin-collab/y-adapter.js';
export { ACTION_BUTTON_TYPE, AUDIO_TYPE, CODE_BLOCK_TYPE, COLLAPSIBLE_LIST_TYPE, compare, createContent, DIVIDER_TYPE, EMBED_TYPE, EMOJI_TYPE, EXTERNAL_MENTIONS_TYPE, FILE_UPLOAD_TYPE, GALLERY_TYPE, getTextDirection, GIPHY_TYPE, HASHTAG_TYPE, HEADINGS_DROPDOWN_TYPE, HTML_TYPE, IMAGE_TYPE, type ImageMedia, INDENT_TYPE, isContentStateEmpty, LINE_SPACING_TYPE, LINK_BUTTON_TYPE, LINK_PREVIEW_TYPE, LINK_TYPE, MENTION_TYPE, POLL_TYPE, RICOS_ANCHOR_TYPE, RICOS_CAPTION_TYPE, RICOS_DIVIDER_TYPE, RICOS_FILE_TYPE, RICOS_GALLERY_TYPE, RICOS_GIPHY_TYPE, RICOS_IMAGE_TYPE, RICOS_LINK_BUTTON_TYPE, RICOS_LINK_PREVIEW_TYPE, RICOS_LINK_TYPE, RICOS_MENTION_TYPE, RICOS_POLL_TYPE, RICOS_SHAPE_TYPE, RICOS_VERTICAL_EMBED_TYPE, RICOS_VIDEO_TYPE, SHAPE_TYPE, SPOILER_TYPE, TABLE_TYPE, TOC_TYPE, TEXT_COLOR_TYPE, TEXT_HIGHLIGHT_TYPE, TIPTAP_SHAPE_TYPE, Version, VERTICAL_EMBED_TYPE, VIDEO_TYPE, type VideoMedia, } from './ricos-content/index.js';
export type ListItemData = {
    text: _TextData[];
    data: _ParagraphData;
};
export { extractMedia } from './ricos-content/lib/extract-media.js';
export type { Extractor } from './ricos-content/extractor-infra.js';
export declare const extract: (nodes: RicosDocumentNode | RicosDocumentNode[]) => Extractor<RicosDocumentNode>;
export declare const createParagraphNode: (nodes?: RicosDocumentNode[], data?: _ParagraphData, style?: _NodeStyle) => RicosDocumentNode;
export declare const createTextNode: (text: string, decorations?: Decoration[]) => RicosDocumentNode;
export declare const initializeMetadata: (metadata?: {
    version?: number;
    id?: string;
    createdTimestamp?: Date;
    updatedTimestamp?: Date;
}) => _Metadata;
/**
 * Imperative content builder. Each `add*` method returns a `RicosDocument` whose `nodes`
 * include the newly-added node(s). Pass a `generateId` callback to produce unique node IDs.
 */
export type RicosContentBuilder = {
    [K in keyof _ContentBuilder]: _ContentBuilder[K] extends (arg: infer A) => unknown ? (arg: A) => RicosDocument : _ContentBuilder[K];
};
export declare const setupContentBuilder: (generateId: () => string) => RicosContentBuilder;
/** Context passed to `getCountableNodes` filter fn — the node's ancestors and previous sibling at visit time. */
export type NodeFilterContext = {
    parents: RicosDocumentNode[];
    previousSibling: RicosDocumentNode | undefined;
};
export declare const getCountableNodes: (filterFn: (node: RicosDocumentNode, context: NodeFilterContext) => boolean) => (container: RicosDocumentNode | RicosDocument) => RicosDocumentNode[];
export { type BISettings } from './ricos-common/ricos-types.js';
export { extractUoUParams } from './_shared/extract-uou-params.js';
export { parseInstance } from './_shared/request-service-provider/parse-instance.js';
/**
 * Returns a default `Link` shaped for `/next`. Same runtime as the legacy
 * `getInitialLinkData`; the loose return type defers to the consumer's
 * destination shape (typically `ButtonData['link']`).
 */
export declare const getInitialLinkData: (options?: {
    target?: string;
    nofollow?: boolean;
    sponsored?: boolean;
    noreferrer?: boolean;
}) => any;
export { resolveFileUrl } from './ricos-media/index.js';
export declare const getAnchorableNodesQuery: (contentExtractor: Extractor<RicosDocumentNode>, selectedNodeId: any) => RicosDocumentNode[];
export declare const convertItemData: (args: {
    items: _GalleryData_Item[];
    relValue?: string;
    anchorTarget?: string;
    baseUrl?: string;
}) => any[];
export { getAbsoluteUrl } from './_shared/media/get-absolute-url.js';
export { PLUGIN_TOOLBAR_BUTTON_ID } from './_shared/plugin-toolbar/plugin-toolbar-buttons-ids.js';
export { quickStartViewerPlugins } from './_shared/quick-start-viewer-plugins/quick-start-viewer-plugins.js';
export { generateKey, isHexColor } from './wix-rich-content-common/index.js';
export { Tooltip } from './wix-rich-content-common/lib/tooltip.js';
export { RicosWidget, type RicosWidgetProps, } from './ui-components/wixel-assistant/ricos-assistant-widget.js';
export { BUTTON_TYPES, FORMATTING_BUTTONS, INSERT_PLUGIN_BUTTONS, } from './editor-common/index.js';
type _DeprecatedColorCallbacks = 'onColorAdded' | 'getUserColors' | 'onTextColorAdded' | 'onBackgroundColorAdded' | 'onBorderColorAdded' | 'getTextColors' | 'getBorderColors' | 'getBackgroundColors' | 'onTitleColorAdded' | 'onSubtitleColorAdded' | 'onLinkColorAdded' | 'getTitleColors' | 'getSubtitleColors' | 'getLinkColors';
type _PluginFactory<C extends {
    type: string;
}> = (config?: Omit<C, 'type'>) => C;
type _Clean<T> = Omit<T, _DeprecatedColorCallbacks>;
export { pluginAiSuggestions } from './plugin-ai-suggestions/options.js';
export { pluginCollab } from './plugin-collab/options.js';
export { pluginAi } from './plugin-ai/index.js';
/** The available audio source button types for the toolbar insert menu. */
export { audioButtonsTypes } from './plugin-audio/index.js';
/** Audio source button type: `'audio'` (file upload), `'soundCloud'`, or `'spotify'`. */
export type AudioButton = 'audio' | 'soundCloud' | 'spotify';
/** Configuration for the Audio editor plugin. Pass to `pluginAudio()`. */
export interface AudioPluginEditorConfig {
    /**
     * Controls which audio source buttons appear in the toolbar insert menu.
     * By default, only the file-upload (`'audio'`) button is shown.
     * Add `'soundCloud'` and `'spotify'` to enable embedding from those services.
     * @defaultValue `['audio']`
     */
    exposeButtons?: AudioButton[];
    /**
     * When `true`, disables the download button on newly inserted audio blocks.
     * @defaultValue true
     */
    disableDownload?: boolean;
    /**
     * Resolves an audio file ID to a full playback URL.
     * Called when rendering audio nodes that store a relative source (e.g. Wix Media).
     * If not provided, a default Wix Media resolver is used.
     */
    getAudioUrl?: (src: {
        id: string;
    }) => string;
}
/** Configuration for the Audio viewer plugin. Pass to `pluginAudioViewer()`. */
export interface AudioPluginViewerConfig {
    /**
     * Resolves an audio file ID to a full playback URL.
     * Called when rendering audio nodes that store a relative source (e.g. Wix Media).
     * If not provided, a default Wix Media resolver is used.
     */
    getAudioUrl?: (src: {
        id: string;
    }) => string;
}
type _ViewerPluginFactory<C = any> = (config?: C) => ViewerPlugin;
export declare const pluginAudio: (config?: AudioPluginEditorConfig) => _AudioConfig;
export declare const pluginAudioViewer: _ViewerPluginFactory<AudioPluginViewerConfig>;
export type LinkButtonPluginEditorConfig = _Clean<_LinkButtonConfig>;
export declare const pluginLinkButton: _PluginFactory<_Clean<_LinkButtonConfig>>;
export declare const pluginActionButton: _PluginFactory<_Clean<_ActionButtonConfig>>;
export declare const pluginActionButtonViewer: _ViewerPluginFactory;
export declare const pluginLinkButtonViewer: _ViewerPluginFactory;
/**
 * Configuration for the Code Block editor plugin. Currently has no options — pass none.
 *
 * Note: There is no `pluginCodeBlockViewer` — code blocks render natively without a viewer plugin.
 */
export interface CodeBlockPluginEditorConfig {
}
export { pluginCodeBlock } from './plugin-code-block/index.js';
export declare const pluginCodeBlockViewer: _ViewerPluginFactory;
export type { CollapsibleListComponentData } from './plugin-collapsible-list/types-next.js';
export { pluginCollapsibleList } from './plugin-collapsible-list/index.js';
export declare const pluginCollapsibleListViewer: _ViewerPluginFactory;
/** Configuration for the Divider editor plugin. Currently has no options — pass none. */
export interface DividerPluginEditorConfig {
}
/** Configuration for the Divider viewer plugin. Currently has no options — pass none. */
export interface DividerPluginViewerConfig {
}
export { DIVIDER_BUTTONS } from './plugin-divider/index.js';
export declare const pluginDivider: (config?: DividerPluginEditorConfig) => _DividerConfig;
export declare const pluginDividerViewer: _ViewerPluginFactory<DividerPluginViewerConfig>;
/**
 * Configuration for the Emoji editor plugin. Currently has no options — pass none.
 *
 * Note: There is no corresponding `pluginEmojiViewer` — emojis are stored as plain Unicode
 * text in the document and render naturally without any viewer plugin.
 */
export interface EmojiPluginEditorConfig {
}
export declare const pluginEmoji: (config?: EmojiPluginEditorConfig) => _EmojiConfig;
export declare const pluginEmojiViewer: _ViewerPluginFactory;
export { type FilePluginEditorConfig, pluginFileUpload, } from './plugin-file-upload/index.js';
export { fileExtensionToType, FileTypes, } from './plugin-file-upload/lib/file-extension-to-type.js';
export declare const pluginFileUploadViewer: _ViewerPluginFactory;
export { pluginFontFamily } from './plugin-font-family/index.js';
export declare const pluginFontFamilyViewer: _ViewerPluginFactory;
export { type GalleryPluginEditorConfig, pluginGallery, } from './plugin-gallery/index.js';
export declare const pluginGalleryViewer: _ViewerPluginFactory;
/** Configuration for the Giphy editor plugin. Pass to `pluginGiphy()`. */
export interface GiphyPluginEditorConfig {
    /**
     * Override the Giphy proxy URL. Called with `'search'` or `'trending'` to get the endpoint URL
     * for the corresponding Giphy API operation. Return `undefined` to fall back to the default proxy.
     *
     * @example
     * getGiphyUrl: (path) => `https://my-proxy.com/giphy/${path}`
     */
    getGiphyUrl?: (path: 'search' | 'trending') => string | undefined;
}
/** Configuration for the Giphy viewer plugin. Currently has no options — pass none. */
export interface GiphyPluginViewerConfig {
}
export declare const pluginGiphy: (config?: GiphyPluginEditorConfig) => _GiphyConfig;
export declare const pluginGiphyViewer: _ViewerPluginFactory;
/** Configuration for the Hashtag editor plugin. Currently has no options — pass none. */
export interface HashtagPluginEditorConfig {
}
/** Configuration for the Hashtag viewer plugin. Pass to `pluginHashtagViewer()`. */
export interface HashtagPluginViewerConfig {
    /**
     * Converts hashtag text to a URL. When provided, hashtags are rendered as anchor links.
     * Receives the hashtag text without the `#` prefix.
     *
     * @example
     * createHref: (text) => `/search?q=${encodeURIComponent('#' + text)}`
     */
    createHref?: (text: string) => string;
    /**
     * Callback fired when a user clicks (or presses Enter/Space on) a hashtag in the viewer.
     * Receives the click event and the hashtag text.
     */
    onClick?: (event: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>, text: string) => void;
}
export declare const pluginHashtag: (config?: HashtagPluginEditorConfig) => _HashtagConfig;
export declare const pluginHashtagViewer: _ViewerPluginFactory<HashtagPluginViewerConfig>;
/** Heading levels that can appear in the headings dropdown. `'P'` represents paragraph (no heading). */
export type HeadingType = 'P' | 'H1' | 'H2' | 'H3' | 'H4' | 'H5' | 'H6';
/** Configuration for the Headings editor plugin. Pass to `pluginHeadings()`. */
export interface HeadingsPluginEditorConfig {
    /**
     * Restricts which heading levels appear in the headings dropdown.
     * @defaultValue All headings are shown: `['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P']`
     */
    customHeadings?: HeadingType[];
    /**
     * When `true`, each heading entry in the dropdown shows a preview of its current
     * font size and family (resolved from the theme), and clicking opens a sub-panel
     * for in-content style customization.
     * @defaultValue false
     */
    allowHeadingCustomization?: boolean;
}
export declare const pluginHeadings: (config?: HeadingsPluginEditorConfig) => _HeadingsConfig;
export { htmlButtonsTypes, pluginHtml } from './plugin-html/index.js';
export declare const pluginHtmlViewer: _ViewerPluginFactory;
export declare const pluginImage: _PluginFactory<_Clean<_ImageConfig>>;
export declare const pluginImageViewer: _ViewerPluginFactory;
export { pluginIndent } from './plugin-indent/index.js';
export declare const pluginIndentViewer: _ViewerPluginFactory;
export { pluginInlineAi } from './plugin-inline-ai/index.js';
export { pluginLineSpacing } from './plugin-line-spacing/index.js';
export declare const pluginLineSpacingViewer: _ViewerPluginFactory;
export { pluginLink } from './plugin-link/index.js';
export declare const pluginLinkViewer: _ViewerPluginFactory;
export { LinkPreviewProviders } from './plugin-link-preview/index.js';
export type LinkPreviewPluginEditorConfig = _Clean<_LinkPreviewConfig>;
export declare const pluginLinkPreview: _PluginFactory<_Clean<_LinkPreviewConfig>>;
export declare const pluginLinkPreviewViewer: _ViewerPluginFactory;
export { type MentionsPluginEditorConfig, pluginMentions, } from './plugin-mentions/index.js';
export declare const pluginMentionsViewer: _ViewerPluginFactory;
export { pluginShape, SHAPE_RICOS_DEFAULTS } from './plugin-shape/index.js';
export declare const pluginShapeViewer: _ViewerPluginFactory;
export { pluginSmartBlock } from './plugin-smart-block/index.js';
export declare const pluginSmartBlockViewer: _ViewerPluginFactory;
export { pluginPoll, type PollPluginEditorConfig, } from './plugin-social-polls/index.js';
export declare const pluginPollViewer: _ViewerPluginFactory;
/** Configuration for the Spoiler editor plugin. Currently has no options — pass none. */
export interface SpoilerPluginEditorConfig {
}
/** Configuration for the Spoiler viewer plugin. Currently has no options — pass none. */
export interface SpoilerPluginViewerConfig {
}
export { pluginSpoiler, SpoilerEditorWrapper } from './plugin-spoiler/index.js';
export declare const initSpoilersContentState: (contentState: $TSFixMe) => any;
export declare const pluginSpoilerViewer: _ViewerPluginFactory;
export declare const SpoilerViewerWrapper: FC<any>;
/** Configuration for the Table editor plugin. Currently has no options — pass none. */
export interface TablePluginEditorConfig {
}
/** Configuration for the Table viewer plugin. Currently has no options — pass none. */
export interface TablePluginViewerConfig {
}
export { TABLE_BUTTONS } from './plugin-table/index.js';
export declare const pluginTable: (config?: TablePluginEditorConfig) => _TableConfig;
export declare const pluginTableViewer: _ViewerPluginFactory<TablePluginViewerConfig>;
export { pluginToc } from './plugin-toc/index.js';
export declare const pluginTocViewer: _ViewerPluginFactory;
export declare const pluginTextColor: _PluginFactory<_Clean<_TextColorConfig>>;
export declare const pluginTextHighlight: _PluginFactory<_Clean<_TextHighlightConfig>>;
export declare const pluginTextColorViewer: _ViewerPluginFactory;
export declare const pluginTextHighlightViewer: _ViewerPluginFactory;
export { pluginVerticalEmbed, verticalEmbedProviders, } from './plugin-vertical-embed/index.js';
export declare const pluginVerticalEmbedViewer: _ViewerPluginFactory;
export { pluginVideo, videoButtonsTypes, type VideoPluginEditorConfig, } from './plugin-video/index.js';
export declare const pluginVideoViewer: _ViewerPluginFactory;
export { TextSelectionToolbar, TwitterButton, } from './text-selection-toolbar/index.js';
//# sourceMappingURL=index.d.ts.map