/**
 * @mergeTarget
 * @module Src/Core
 */
import { LisioComponent } from "../index.js";
import { LisioCSSRules } from "./engine-types.js";
/**
 * Class representing an engine.\
 * It aims to behave as proxy of html and css renderer.\
 * If something need to render html or css it has to use this class.\
 * To execute his responsability this class provides :
 *  * Provides a method to render a component
 *  * Provides a method to add and apply CSS styles
 */
declare class Engine {
    /**
     * Private attribute to store an instance of html renderer
     */
    private _htmlRenderer;
    /**
     * Private attribute to store an instance of css renderer
     */
    private _cssRenderer;
    /**
     * Private attribute to store instance of {@link Engine | Engine}
     * @source
     */
    private static _current;
    /**
     * @static
     * Getter for attribute {@link _current | _current}
     * @returns Returns _current attribute
     * @source
     */
    static get current(): Engine;
    /**
     * @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 add and apply root CSS styles
     * @param {LisioCSSRules} rules - CSS rules to add and apply
     * @returns Returns nothing
     * @source
     */
    initRoot(rules: LisioCSSRules): void;
    /**
     * Public method to add CSS styles of a component
     * @param {string} componentName - Component name of CSS rules
     * @param {LisioCSSRules} rules - CSS rules to add
     * @returns Returns nothing
     * @source
     */
    addStyleRules(componentName: string, rules: LisioCSSRules): void;
    /**
     * Constructor of class {@link Engine | Engine}
     * @throws If singleton already initialize.\
     * See {@link Src/Core.CoreErrorCodes.SINGLETON_NOT_UNIQUE | CoreErrorCodes.SINGLETON_NOT_UNIQUE}
     * @source
     */
    constructor();
}
export { Engine };
