import type { RichContent } from '@wix/ricos/schema';
import type { FileUploadData } from '../plugin-file-upload/types.js';
import type { InlineAiApi } from '../plugin-inline-ai/inline-ai-context-provider.js';
import type { BICallbacks, FocusPosition, PublicCommands, ToolbarButtonProps, ToolbarType } from './index.js';
import type { OnPluginAction } from './plugins-bi-callbacks-types.js';
export interface Helpers extends BICallbacksForHelpers {
    openModal?: (modalProps: Record<string, unknown>) => void;
    closeModal?: () => void;
    /**
     * @description Used to update metadata for external videos (youtube/vimeo, etc.)
     */
    onVideoSelected?: (url: string, updateEntity: (data: {
        oembed: {
            thumbnail_url?: string;
            thumbnail_height?: number;
            thumbnail_width?: number;
            video_url?: string;
            title?: string;
        } | null;
    }) => void) => void;
    getImageUrl?: ({ file_name }: {
        file_name: string;
    }) => string;
    resolveFileUrl?: (data: FileUploadData) => Promise<string>;
    [propName: string]: ((...args: any[]) => any) | undefined;
}
interface BICallbacksForHelpers extends BICallbacks {
    onPluginAdd?(pluginId: string, entryPoint: string, version?: string, contentId?: string): void;
    onPluginAddSuccess?(pluginId: string, entryPoint: string, params: $TSFixMe, version?: string, contentId?: string): void;
    isPreview?: () => boolean;
    onPluginAction?: OnPluginAction;
}
export type OnErrorFunction = (error: string) => void;
export interface EditorStyleClasses {
    editorClassName?: string;
    containerClassName?: string;
}
export declare const DOC_STYLE_TYPES: {
    readonly P: 'paragraph';
    readonly H1: 'headerOne';
    readonly H2: 'headerTwo';
    readonly H3: 'headerThree';
    readonly H4: 'headerFour';
    readonly H5: 'headerFive';
    readonly H6: 'headerSix';
};
export declare const DRAFT_TO_DOC_TYPE_WITH_LISTS: {
    "header-one": string;
    "header-two": string;
    "header-three": string;
    "header-four": string;
    "header-five": string;
    "header-six": string;
    unstyled: string;
    'checkbox-list-item': string;
    'ordered-list-item': string;
    'unordered-list-item': string;
};
type GetContentPromiseProps = {
    flush?: boolean | undefined;
    publishId?: string | undefined;
} | undefined;
export type OpenModalOptions = {
    type: 'AI_IMAGE' | 'INLINE_AI' | 'SHORTCUTS_SHEET' | 'AI_WIDGET';
};
export interface RicosEditorAPI {
    focus(focusPosition?: FocusPosition): void;
    blur(): void;
    undo(): void;
    redo(): void;
    getContent(
    /** @deprecated Use `biSettings` prop on the editor instead. Will be removed in the next major version. */
    postId?: string, 
    /** @deprecated Use `editorRef.prePublish()` for publishing. Will be removed in the next major version. */
    forPublish?: boolean, 
    /** @deprecated Unused. Will be removed in the next major version. */
    shouldRemoveErrorBlocks?: boolean): Promise<RichContent>;
    /**
     * @deprecated Use `editorRef.getContent()` or `editorRef.prePublish()` instead.
     * Will be removed in the next major version.
     */
    getContentPromise(props: GetContentPromiseProps): Promise<RichContent>;
    getContentTraits(): {
        isEmpty: boolean;
        isContentChanged: boolean;
        isLastChangeEdit: boolean;
    };
    /** Replaces the editor content. Imperative replacement for the deprecated `injectedContent` prop. */
    setContent(content: RichContent): void;
    getToolbarProps(type: ToolbarType): {
        buttons: any;
    };
    getEditorCommands(): PublicCommands;
    getEditorContainer(): HTMLElement | undefined;
    openModal: (options: OpenModalOptions) => void;
    useToolbarProps: (type: ToolbarType | 'WIXEL') => {
        buttons: Record<string, ToolbarButtonProps>;
        toolbarType?: ToolbarType;
    };
    /**
     * @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) => InlineAiApi | undefined;
    /** Runs plugin pre-publish hooks (e.g. poll sync) and returns the content. */
    prePublish(): Promise<RichContent>;
    /** Reactive undo/redo state. Must be called inside a React component. */
    useUndoState: () => {
        isUndoStackEmpty: boolean;
        isRedoStackEmpty: boolean;
    };
}
export {};
//# sourceMappingURL=editor-types.d.ts.map