import { BlockModel } from '../../../models/index';
import { CalloutRenderer, CommonBlocksRenderer, HeadingRenderer, ListRenderer, ParagraphRenderer, QuoteRenderer, CodeRenderer, ImageRenderer, CollapsibleRenderer, TableRenderer } from '../../renderer/blocks/index';
import { BlockManager } from '../../base/block-manager';
import { ContentRenderer } from '../../renderer/content/content-renderer';
/**
 * Manages all block rendering operations in the BlockEditor
 */
export declare class BlockRenderer {
    private parent;
    /** @hidden */
    contentRenderer: ContentRenderer;
    /** @hidden */
    paragraphRenderer: ParagraphRenderer;
    /** @hidden */
    headingRenderer: HeadingRenderer;
    /** @hidden */
    listRenderer: ListRenderer;
    /** @hidden */
    codeRenderer: CodeRenderer;
    /** @hidden */
    imageRenderer: ImageRenderer;
    /** @hidden */
    quoteRenderer: QuoteRenderer;
    /** @hidden */
    calloutRenderer: CalloutRenderer;
    /** @hidden */
    collapsibleRenderer: CollapsibleRenderer;
    /** @hidden */
    commonBlocksRenderer: CommonBlocksRenderer;
    /** @hidden */
    tableRenderer: TableRenderer;
    /**
     * Creates a new BlockRendererManager instance
     *
     * @param {BlockManager} manager The parent BlockManager instance
     */
    constructor(manager: BlockManager);
    private addEventListeners;
    private removeEventListeners;
    /**
     * Initializes all the renderers used by this manager
     *
     * @returns {void}
     */
    private initializeRenderers;
    /**
     * Creates a new block element based on the given block model.
     *
     * @param {BlockModel} block - The block model to create the element for.
     * @returns {HTMLElement} The created block element.
     * @hidden
     */
    createBlockElement(block: BlockModel): HTMLElement;
    /**
     * Creates a new block element based on the given model and replaces it with current element.
     *
     * @param {string} currentBlockId - The current block Id to replace
     * @param {string} newBlockId - The new block Id to create element for.
     * @returns {HTMLElement} The replaced block element.
     * @hidden
     */
    createAndReplaceBlockElement(currentBlockId: string, newBlockId: string): HTMLElement;
    /**
     * Inserts a new block element into the DOM.
     *
     * @param {HTMLElement} blockElement - The block element to insert.
     * @param {HTMLElement} targetElement - The target element to insert the block element relative to.
     * @param {boolean} isAfter - Whether to insert the block element after the target element.
     * @returns {void}
     * @hidden
     */
    insertBlockElementInDOM(blockElement: HTMLElement, targetElement?: HTMLElement, isAfter?: boolean): void;
    /**
     * Renders the content of a block element based on the given block model.
     *
     * @param {BlockModel} block - The block model to render.
     * @param {HTMLElement} blockElement - The block element to render the content into.
     * @returns {void}
     * @hidden
     */
    renderBlockContent(block: BlockModel, blockElement: HTMLElement): void;
    private populateClassListsForContent;
    /**
     * Renders the content for nested type blocks (e.g., Callout, Toggle).
     *
     * @param {BlockModel} block - The block model to render.
     * @param {HTMLElement} blockElement - The block element to render the content into.
     * @returns {void}
     * @hidden
     */
    renderNestedTypeBlockContent(block: BlockModel, blockElement: HTMLElement): void;
    /**
     * Re-renders the content of a block
     *
     * @param {BlockModel} block The block model to re-render
     * @returns {void}
     * @hidden
     */
    reRenderBlockContent(block: BlockModel): void;
    /**
     * Renders multiple blocks
     *
     * @param {BlockModel} blocks Array of block models to render
     * @returns {void}
     * @hidden
     */
    renderBlocks(blocks: BlockModel[]): void;
    /**
     * Updates the CSS class for a block
     *
     * @param {HTMLElement} blockElement The block element to update
     * @param {string} customClass The CSS class to apply
     * @returns {void}
     * @hidden
     */
    updateBlockCssClass(blockElement: HTMLElement, customClass: string): void;
    /**
     * Updates the indentation attribute for a block
     *
     * @param {HTMLElement} blockElement The block element to update
     * @param {number} indentValue The indentation value to set
     * @returns {void}
     * @hidden
     */
    updateBlockIndentAttribute(blockElement: HTMLElement, indentValue: number): void;
    /**
     * Inserts a block element into the DOM
     *
     * @param {HTMLElement} blockElement The block element to insert
     * @param {HTMLElement} afterElement Optional element to insert after
     * @returns {void}
     * @hidden
     */
    private insertBlockIntoDOM;
    /**
     * Clears the editor and renders the default block
     *
     * @returns {void}
     * @hidden
     */
    clearEditorAndRenderDefaultBlock(): void;
    handleBlockUIUpdates(options: any): void;
    private getParentElementToInsert;
    destroy(): void;
}
