import type { SlateElement, YooEditor, YooptaPathIndex } from '../types';
export type ToggleBlockOptions = {
    /**
     * Position of the block to toggle
     * @default editor.path.current
     */
    at?: YooptaPathIndex;
    /**
     * Scope of the toggle operation:
     * - 'auto': automatically determine from context (default)
     * - 'block': transform the entire block (Paragraph → Heading)
     * - 'element': insert element in current leaf with injectElementsFromPlugins
     *
     * @default 'auto'
     */
    scope?: 'auto' | 'block' | 'element';
    /**
     * Whether to preserve existing content
     * - true: keep text and transfer to new block/element
     * - false: start with empty content
     * @default true
     */
    preserveContent?: boolean;
    /**
     * Focus after toggle
     * @default false
     */
    focus?: boolean;
    /**
     * Custom element structure created with editor.y()
     * If provided, this will be used instead of default structure
     */
    elements?: SlateElement;
};
/**
 * Toggle block type or insert element in leaf with injectElementsFromPlugins
 *
 * Behavior depends on scope:
 * - scope: 'block' → transforms the block (Paragraph → Heading)
 * - scope: 'element' → inserts element in current leaf with injectElementsFromPlugins
 * - scope: 'auto' → automatically determines based on context
 *
 * @example
 * // Transform block
 * editor.toggleBlock('Heading', { preserveContent: true });
 *
 * // Insert element in leaf
 * editor.toggleBlock('Paragraph', { scope: 'element', preserveContent: false });
 *
 * // With custom structure
 * editor.toggleBlock('Accordion', {
 *   elements: editor.y('accordion-list', { ... })
 * });
 */
export declare function toggleBlock(editor: YooEditor, type: string, options?: ToggleBlockOptions): string;
//# sourceMappingURL=toggleBlock.d.ts.map