/**
 * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
 */
import { type Dispatch, type SetStateAction, type JSX } from 'react';
import type { WatchdogConfig, MultiRootEditor, EventInfo } from 'ckeditor5';
import { type RootEditableOptionsAttribute } from './EditorEditable.js';
import type { EditorErrorDetails } from '../ckeditor.js';
export declare const useMultiRootEditor: (props: MultiRootHookProps) => MultiRootHookReturns;
export type AddRootOptions = {
    name: string;
    data?: string;
    attributes?: Record<string, unknown>;
    isUndoable?: boolean;
    modelElement?: string;
    editableOptions?: RootEditableOptionsAttribute;
    [key: string]: unknown;
};
export type MultiRootHookProps = {
    id?: any;
    semaphoreElement?: HTMLElement;
    isLayoutReady?: boolean;
    disabled?: boolean;
    data: Record<string, string>;
    rootsAttributes?: Record<string, Record<string, unknown>>;
    editor: typeof MultiRootEditor;
    watchdogConfig?: WatchdogConfig;
    disableWatchdog?: boolean;
    disableTwoWayDataBinding?: boolean;
    onReady?: (editor: MultiRootEditor) => void;
    onAfterDestroy?: (editor: MultiRootEditor) => void;
    onError?: (error: Error, details: EditorErrorDetails) => void;
    onChange?: (event: EventInfo, editor: MultiRootEditor) => void;
    onFocus?: (event: EventInfo, editor: MultiRootEditor) => void;
    onBlur?: (event: EventInfo, editor: MultiRootEditor) => void;
    config?: Record<string, unknown>;
};
export type MultiRootHookReturns = {
    editor: MultiRootEditor | null;
    editableElements: Array<JSX.Element>;
    toolbarElement: JSX.Element;
    data: Record<string, string>;
    setData: Dispatch<SetStateAction<Record<string, string>>>;
    attributes: Record<string, Record<string, unknown>>;
    setAttributes: Dispatch<SetStateAction<Record<string, Record<string, unknown>>>>;
    addRoot: (options: AddRootOptions) => Promise<void>;
    removeRoot: (name: string) => Promise<void>;
};
