/**
 * @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 MaybeRefOrGetter, type Ref } from 'vue';
import type { CKEditorError, EditorConfig, EventInfo, MultiRootEditor, WatchdogConfig } from 'ckeditor5';
import { type ExtractEditorType } from '@ckeditor/ckeditor5-integrations-common';
import { type EditorWithAttachedWatchdog } from '../utils/wrapWithWatchdogIfPresent.js';
import type { AddRootOptions, MultiRootEditorData, MultiRootEditorErrorDescription, MultiRootEditorRootsAttributes, MultiRootEditorWithWatchdogRelaxedConstructor } from './types.js';
export declare function useMultiRootEditor<TEditorConstructor extends MultiRootEditorWithWatchdogRelaxedConstructor>(options: UseMultiRootEditorOptions<TEditorConstructor>): UseMultiRootEditorResult<ExtractEditorType<TEditorConstructor> & MultiRootEditor>;
export type UseMultiRootEditorOptions<TEditorConstructor extends MultiRootEditorWithWatchdogRelaxedConstructor> = {
    editor: MaybeRefOrGetter<TEditorConstructor>;
    data: MaybeRefOrGetter<MultiRootEditorData>;
    rootsAttributes?: MaybeRefOrGetter<MultiRootEditorRootsAttributes | undefined>;
    config?: MaybeRefOrGetter<EditorConfig | undefined>;
    disabled?: MaybeRefOrGetter<boolean | undefined>;
    watchdogConfig?: MaybeRefOrGetter<WatchdogConfig | undefined>;
    disableWatchdog?: MaybeRefOrGetter<boolean | undefined>;
    disableTwoWayDataBinding?: MaybeRefOrGetter<boolean | undefined>;
    onReady?: (editor: ExtractEditorType<TEditorConstructor> & MultiRootEditor) => void;
    onDestroy?: (editor: ExtractEditorType<TEditorConstructor> & MultiRootEditor) => void;
    onChange?: (event: EventInfo, editor: ExtractEditorType<TEditorConstructor> & MultiRootEditor) => void;
    onFocus?: (event: EventInfo, editor: ExtractEditorType<TEditorConstructor> & MultiRootEditor) => void;
    onBlur?: (event: EventInfo, editor: ExtractEditorType<TEditorConstructor> & MultiRootEditor) => void;
    onUpdateData?: (data: MultiRootEditorData, event: EventInfo | null, editor: ExtractEditorType<TEditorConstructor> & MultiRootEditor) => void;
    onUpdateRootsAttributes?: (rootsAttributes: MultiRootEditorRootsAttributes, event: EventInfo | null, editor: ExtractEditorType<TEditorConstructor> & MultiRootEditor) => void;
    onError?: (error: Error | CKEditorError, description: MultiRootEditorErrorDescription<ExtractEditorType<TEditorConstructor> & MultiRootEditor>) => void;
};
export type UseMultiRootEditorResult<TEditor extends MultiRootEditor> = {
    instance: Ref<EditorWithAttachedWatchdog<TEditor> | undefined>;
    roots: Ref<Array<string>>;
    data: Ref<MultiRootEditorData>;
    rootsAttributes: Ref<MultiRootEditorRootsAttributes>;
    setData(data: MultiRootEditorData): void;
    setRootsAttributes(rootsAttributes: MultiRootEditorRootsAttributes): void;
    addRoot(options: AddRootOptions): Promise<void>;
    removeRoot(name: string): Promise<void>;
};
