/**
 * @mergeTarget
 * @module Src/Core/Renderers
 */
import { LisioComponent } from "../components/lisio-component";
/**
 * Class representing a HTML renderer.\
 * It aims to interact and modify the DOM.\
 * If something need to interact or modify the DOM it has to use this class.\
 * To execute his responsability this class provides :
 *  * Provides a method to render a component
 *  * Provides a method to remove a component
 */
declare class HTMLRenderer {
    /**
     * Private attribute to store an instance of a DOM parser
     * @source
     */
    private _domParser;
    /**
     * Private attribute to story the body element
     * @source
     */
    private _body;
    /**
     * Private attribute to keep in track unique component already rendered
     * @source
     */
    private _setOfComponentName;
    /**
     * @async
     * Public method to render a component
     * @param {LisioComponent} component - Component to render
     * @param {boolean} hasToLoadAssets - Indicates if component has to load asset
     * @param {"append" | "before"} insertMode - Indicates insert mode.\
     *  * "append" to append component at the end of children of referer element
     *  * "before" to insert component before referer element
     * @param {Element} refererElement - Element to append or insert before
     * @param {boolean} isHidden - Indicates if component is hidden. Default false
     * @param {boolean} hasToBeUnique - Indicates if component has to be unique. Default false
     * @returns Returns a promise containing nothing
     * @source
     */
    renderComponent(component: LisioComponent, hasToLoadAssets: boolean, insertMode: "append" | "before", refererElement?: Element, isHidden?: boolean, hasToBeUnique?: boolean): Promise<void>;
    /**
     * Public method to remove a component
     * @param {LisioComponent} component - Component to remove
     * @returns Returns nothing
     * @source
     */
    removeElement(component: LisioComponent): void;
    /**
     * @async
     * Private method to convert a component to HTML element.\
     * This method does :
     *  * Convert component and all his children into temporary DOM
     *  * Extract element from temporary DOM to insert it into current DOM
     *  * Attach defined event listeners to corresponding HTML element
     * @param {LisioComponent} component - Component to convert
     * @param {boolean} hasToLoadAssets - Indicates if component has to load asset
     * @param {boolean} isHidden - Indicates if element is hidden. Default false
     * @returns Returns a promise containing the corresponded HTML element
     * @source
     */
    private convertComponentToHTMLElement;
    /**
     * Constructor of class {@link HTMLRenderer | HTMLRenderer}
     * @source
     */
    constructor();
}
export { HTMLRenderer };
