import { default as React, Dispatch, SetStateAction } from 'react';
import { IEditorTool } from '../hooks/use-visibility';
import { Editor } from '@tiptap/react';
import { IpfsImageFetchPayload, IpfsImageUploadResponse } from '../types';

export interface IEditorToolElement {
    icon: any;
    title: string;
    onClick: () => void;
    isActive: boolean;
    group?: string;
    isNew?: boolean;
}
export declare const fonts: {
    title: string;
    value: string;
    command: (editor: Editor) => void;
}[];
export declare const FONT_SIZES: readonly [8, 9, 10, 11, 12, 14, 16, 18, 24, 30, 32, 36, 48, 60, 72, 96];
export declare const getFontSizeOptions: (editor?: Editor) => {
    title: string;
    value: string;
    label: string;
    command: (editor: Editor) => void;
    isActive: () => boolean | undefined;
}[];
export declare const getCurrentFontSize: (editor: Editor | null, currentSize: string) => string;
export declare const uiValueToPercentage: (uiValue: string) => string;
export declare const percentageToUiValue: (percentage: string) => string;
export declare const LINE_HEIGHT_OPTIONS: {
    value: string;
    label: string;
    uiValue: string;
    description: string;
}[];
export declare const getLineHeightOptions: () => {
    value: string;
    label: string;
    uiValue: string;
    description: string;
}[];
export declare const getCurrentLineHeight: (editor: Editor | null, currentLineHeight?: string) => string;
export declare const ERR_MSG_MAP: {
    IMAGE_SIZE: string;
};
export declare const IMG_UPLOAD_SETTINGS: {
    Extended: {
        maxSize: number;
        errorMsg: string;
    };
    Base: {
        maxSize: number;
        errorMsg: string;
    };
};
export declare const useEditorToolbar: ({ editor, onError, ipfsImageUploadFn, onMarkdownExport, onMarkdownImport, onPdfExport, onHtmlExport, onTxtExport, ipfsImageFetchFn, onDocxImport, fetchV1ImageFn, }: {
    editor: Editor | null;
    onError?: (errorString: string) => void;
    ipfsImageUploadFn?: (file: File) => Promise<IpfsImageUploadResponse>;
    onMarkdownExport?: () => void;
    onMarkdownImport?: () => void;
    onPdfExport?: () => void;
    onHtmlExport?: () => void;
    onTxtExport?: () => void;
    ipfsImageFetchFn?: (_data: IpfsImageFetchPayload) => Promise<{
        url: string;
        file: File;
    }>;
    onDocxImport?: () => void;
    fetchV1ImageFn?: (url: string) => Promise<ArrayBuffer | undefined>;
}) => {
    undoRedoTools: (IEditorToolElement | null)[];
    toolbar: (IEditorToolElement | null)[];
    exportOptions: (IEditorToolElement | null)[];
    importOptions: (IEditorToolElement | null)[];
    bottomToolbar: (IEditorToolElement | null)[];
    toolRef: React.RefObject<HTMLDivElement>;
    toolVisibility: IEditorTool;
    setToolVisibility: React.Dispatch<React.SetStateAction<IEditorTool>>;
    isExportModalOpen: boolean;
    setIsExportModalOpen: React.Dispatch<React.SetStateAction<boolean>>;
    fileExportsOpen: boolean;
    setFileExportsOpen: React.Dispatch<React.SetStateAction<boolean>>;
};
export declare const TextHighlighter: ({ editor, setVisibility, elementRef, }: {
    editor: Editor;
    elementRef: React.RefObject<HTMLDivElement>;
    setVisibility: Dispatch<SetStateAction<IEditorTool>>;
}) => import("react/jsx-runtime").JSX.Element;
export declare const EditorFontFamily: ({ elementRef, editor, setToolVisibility, }: {
    elementRef: React.RefObject<HTMLDivElement>;
    editor: Editor;
    setToolVisibility: Dispatch<SetStateAction<IEditorTool>>;
}) => import("react/jsx-runtime").JSX.Element;
export declare const EditorAlignment: ({ elementRef, editor, setToolVisibility, }: {
    elementRef: React.RefObject<HTMLDivElement>;
    editor: Editor;
    setToolVisibility: Dispatch<SetStateAction<IEditorTool>>;
}) => import("react/jsx-runtime").JSX.Element;
export declare const EditorList: ({ elementRef, editor, setToolVisibility, }: {
    elementRef: React.RefObject<HTMLDivElement>;
    editor: Editor;
    setToolVisibility: Dispatch<SetStateAction<IEditorTool>>;
}) => import("react/jsx-runtime").JSX.Element;
export declare const LinkPopup: ({ elementRef, editor, setToolVisibility, bubbleMenu, setIsLinkPopupOpen, onError, }: {
    elementRef: React.RefObject<HTMLDivElement>;
    editor: Editor;
    setToolVisibility: Dispatch<SetStateAction<IEditorTool>>;
    bubbleMenu?: boolean;
    setIsLinkPopupOpen?: Dispatch<SetStateAction<boolean>>;
    onError?: (errorString: string) => void;
}) => import("react/jsx-runtime").JSX.Element;
export declare const InlineCommentPopup: ({ elementRef, editor, setIsCommentSectionOpen, setIsInlineCommentOpen, inlineCommentData, setInlineCommentData, onInlineComment, }: {
    elementRef: React.RefObject<HTMLDivElement>;
    editor: Editor;
    setIsCommentSectionOpen: Dispatch<SetStateAction<boolean>>;
    setIsInlineCommentOpen: Dispatch<SetStateAction<boolean>>;
    inlineCommentData: {
        highlightedTextContent: string;
        inlineCommentText: string;
        handleClick: boolean;
    };
    setInlineCommentData: (data: {
        highlightedTextContent?: string;
        inlineCommentText?: string;
        handleClick?: boolean;
    }) => void;
    onInlineComment?: () => void;
}) => import("react/jsx-runtime").JSX.Element;
export declare const ScriptsPopup: ({ elementRef, editor, }: {
    elementRef: React.RefObject<HTMLDivElement>;
    editor: Editor;
}) => import("react/jsx-runtime").JSX.Element;
export declare const TextColor: ({ editor, setVisibility, elementRef, }: {
    editor: Editor | null;
    elementRef: React.RefObject<HTMLDivElement>;
    setVisibility: Dispatch<SetStateAction<IEditorTool>>;
}) => import("react/jsx-runtime").JSX.Element;
export declare const TextHeading: ({ editor, setVisibility, elementRef, }: {
    editor: Editor;
    elementRef: React.RefObject<HTMLDivElement>;
    setVisibility: Dispatch<SetStateAction<IEditorTool>>;
}) => import("react/jsx-runtime").JSX.Element;
export declare const FontSizePicker: ({ editor, setVisibility, elementRef, currentSize, onSetFontSize, }: {
    editor: Editor;
    elementRef: React.RefObject<HTMLDivElement>;
    setVisibility: Dispatch<SetStateAction<IEditorTool>>;
    currentSize?: string;
    onSetFontSize: (fontSize: string) => void;
}) => import("react/jsx-runtime").JSX.Element;
export declare const LineHeightPicker: ({ setVisibility, elementRef, currentLineHeight, onSetLineHeight, }: {
    editor: Editor;
    elementRef: React.RefObject<HTMLDivElement>;
    setVisibility: Dispatch<SetStateAction<IEditorTool>>;
    currentLineHeight?: string;
    onSetLineHeight: (lineHeight: string) => void;
}) => import("react/jsx-runtime").JSX.Element;
export declare const TextFormatingPopup: ({ editor, isOpen, setIsOpen, setToolVisibility, }: {
    editor: Editor | null;
    isOpen: boolean;
    setIsOpen: (open: boolean) => void;
    setToolVisibility: Dispatch<SetStateAction<IEditorTool>>;
}) => import("react/jsx-runtime").JSX.Element;
export declare const TextColorPicker: ({ editor }: {
    editor: Editor;
}) => import("react/jsx-runtime").JSX.Element;
export declare const checkActiveListsAndDBlocks: (editor: Editor) => {
    activeListTypes: string[];
    activeListDBlocks: number[];
    activeDBlocks: number[];
    from: number;
    to: number;
    state: import('prosemirror-state').EditorState;
    hasMultipleLists: boolean;
};
