import { default as HtmlEditorMode } from '../types/HtmlEditorMode';
import { UseHtmlEditorProps, SelectedTableData, ActiveLinkData, SelectedImageData, HandleToolbarAction, SelectedVideoData } from '../types';
/**
 * Owns all editor state, the TipTap instance, and the toolbar action dispatcher.
 *
 * Responsibilities:
 *   - Initialises the TipTap editor with the correct extension set.
 *   - Keeps 6 toolbar-state slices in sync via a single {@link getToolbarSnapshot} call.
 *   - Dispatches every toolbar action string to the matching TipTap command.
 *   - Manages the visual / code mode toggle.
 *
 * @param props - See {@link UseHtmlEditorProps}.
 * @returns Everything the HtmlEditor render shell needs.
 */
export default function useHtmlEditor({ initialContent, onContentChange, initialMode, colorPalette }: UseHtmlEditorProps): {
    editor: import('@tiptap/core').Editor | null;
    mode: HtmlEditorMode;
    handleModeChange: (newMode: HtmlEditorMode) => void;
    handleToolbarAction: HandleToolbarAction;
    showImagePasteWarning: boolean;
    imagePopoverOpen: boolean;
    handleImagePopoverClose: () => void;
    handleCodeChange: (html: string) => void;
    activeActions: string[];
    selectedStyle: string;
    selectedFontSize: number | undefined;
    selectedTextColor: string | undefined;
    selectedBgColor: string | undefined;
    selectedAlignment: string;
    colorPalette: string[] | undefined;
    selectedLink: ActiveLinkData | null;
    selectedText: string;
    selectedImage: SelectedImageData | null;
    selectedVideo: SelectedVideoData | null;
    selectedTable: SelectedTableData | null;
    searchTerm: string;
    searchResults: number;
    searchResultIndex: number;
};
