/**
 * @mergeTarget
 * @module Src/Core
 */
/**
 * Class representing an assets loader.\
 * It aims to dynamically laod assets when they are needed.\
 * If something need to dynamically laod assets it has to use this class.\
 * To execute his responsability this class provides :
 *  * Provides a method to render component
 *  * Provides a method to add and apply CSS styles
 */
declare class AssetsLoader {
    /**
     * Private attribute to store assets folder path
     */
    private _assetsFolderPath;
    /**
     * Private attribute to store instance of {@link AssetsLoader | AssetsLoader}
     * @source
     */
    private static _current;
    /**
     * Private attribute to cache already loaded assets
     * @source
     */
    private _assets;
    /**
     * @static
     * Getter for attribute {@link _current | _current}
     * @returns Returns _current attribute
     * @source
     */
    static get current(): AssetsLoader;
    /**
     * Private attribute to store intersection callback handler
     * @source
     */
    private _intersectionCallbackHandler;
    /**
     * Private attribute to store an instance of intersection observer
     * @source
     */
    private _intersectionObserver;
    /**
     * Getter for attribute {@link _intersectionObserver | _intersectionObserver}
     * @returns Returns _intersectionObserver attribute
     * @source
     */
    get intersectionObserver(): IntersectionObserver;
    /**
     * Public method to handle intersection
     * @param {IntersectionObserverEntry[]} entries - All intersected elements
     * @returns Returns a promise containing nothing
     * @source
     */
    private intersectionObserverCallback;
    /**
     * Public method to load json assets
     * @typeParam T - The type of asset loaded
     * @param {string} pathName
     * @returns Returns a promise containing loaded asset
     * @throws If status of response is 404 see {@link Src/Core.CoreErrorCodes.ASSET_NOT_FOUND | CoreErrorCodes.ASSET_NOT_FOUND}, if is 500 basic internal error
     * @source
     */
    loadAsset<T>(pathName: string): Promise<T>;
    /**
     * Constructor of class {@link AssetsLoader | AssetsLoader}
     * @param {string} assetsFolderPath - Path of assets folder
     * @param {(entry: IntersectionObserverEntry) => Promise<void>} intersectionCallbackHandler - Handler of intersection callback
     * @throws If singleton already initialize.\
     * See {@link Src/Core.CoreErrorCodes.SINGLETON_NOT_UNIQUE | CoreErrorCodes.SINGLETON_NOT_UNIQUE}
     * @source
     */
    constructor(assetsFolderPath: string, intersectionCallbackHandler: (entry: IntersectionObserverEntry) => Promise<void>);
}
export { AssetsLoader };
