/**
 * @mergeTarget
 * @module Src/Core/Renderers
 */
import { LisioComponent } from "../components/lisio-component";
import { LisioCSSRules } from "../engine-types";
/**
 * Class representing a CSS renderer.\
 * It aims to manage and apply styles when it's needed.\
 * If something need to be stylized it has to use this class.\
 * To execute his responsability this class provides :
 *  * Provides a method to add CCS rules in cache and prevent repeated CSS
 *  * Provides a method to apply rules
 */
declare class CSSRenderer {
    /**
     * Private attribute to store tag element of page
     * @source
     */
    private _cssStyleSheet;
    /**
     * Private attribute to store all styles of each component type
     * @source
     */
    private _cssRules;
    /**
     * Private attribute to cache already applied styles
     * @source
     */
    private _cssRulesInserted;
    /**
     * @async
     * Public method to apply CSS styles of a component.\
     * This method does :
     *  * Checks if component has CSS styles.
     *  * For each selectors, checks if it was already applied, if not it's applied.
     * @param {string} componentName - Component name
     * @param {LisioComponent[]} children - Component children
     * @returns Returns a promise containing nothing
     * @source
     */
    applyStyleRules(componentName: string, children?: LisioComponent[]): Promise<void>;
    /**
     * Private method to format CSS rules to use in style tag
     * @param {string} cssPropertyName - Name of CSS property
     * @param {string | object} cssPropertyValue - Value of CSS property
     * @returns Returns styles object as a string
     * @source
     */
    private formatCSSRules;
    /**
     * Public method to cache CSS styles to be applied when needed.\
     * This method does :
     *  * Checks if rules was already added.
     *  * Adds properties for each selector
     *  * Caches selector with his linked property
     * @param {string} componentName - Component name
     * @param {LisioCSSRules} rules - CSS rules
     * @returns Returns nothing
     * @source
     */
    addComponentStyle(componentName: string, rules: LisioCSSRules): void;
    /**
     * Constructor of class {@link CSSRenderer | CSSRenderer}
     * @source
     */
    constructor();
}
export { CSSRenderer };
