/**
 * Utility for loading multiple assets together.
 *
 * NOTE: A pre-loader is not intended to be re-used. You have one collection of assets to be loaded, use one {@link AssetPreloader} instance for it. For another batch - use a separate instance.
 *
 * @example
 *  const loader = new AssetPreloader();
 *
 *  loader.add("/images/cat.jpg", "image", AssetLevel.CRITICAL );
 *  loader.add("/images/meow.mp3", "sound", AssetLevel.NORMAL );
 *
 *  const assetManager:AssetManager = ...; // Obtain your asset manager
 *
 *  loader.on.progress.add(({global}) => console.log(`loaded ${global.ratio*100}%`));
 *  loader.on.succeeded.add(()=> console.log("preload complete"));
 *
 *  loader.load(assetManager);
 */
export class AssetPreloader {
    /**
     *
     * @return {number}
     */
    get totalAssetCount(): number;
    /**
     *
     * @return {boolean}
     */
    get isResolved(): boolean;
    /**
     * @readonly
     * @type {AssetLoadSpec[][]}
     */
    readonly assets: AssetLoadSpec[][];
    /**
     * @readonly
     */
    readonly on: {
        /**
         * @type {Signal<AssetLoadSpec,number>}
         */
        added: Signal<AssetLoadSpec, number>;
        /**
         * Progress event.
         * Note that the numbers are arbitrary and just signify overall progress and not specific quantifies such as bytes or asset counts.
         * @type {Signal<{global:{current:number, total:number, progress: number}}>}
         */
        progress: Signal<{
            global: {
                current: number;
                total: number;
                progress: number;
            };
        }>;
        /**
         * Single priority has finished loading
         * @type {Signal}
         */
        levelFinished: Signal;
        /**
         * An asset has failed to load
         */
        error: Signal<any, any, any, any, any, any, any, any>;
        /**
         * @type {Signal<{level:number, count:number}[]>}
         */
        started: Signal<{
            level: number;
            count: number;
        }[]>;
        /**
         * Dispatched when all scheduled assets have been successfully loaded (no errors).
         * @type {Signal<number>}
         */
        succeeded: Signal<number>;
        /**
         * All assets are processed, even if some have errored out.
         * This is a more permissive version of {@link succeeded} signal.
         * @type {Signal<number,number>}
         */
        resolved: Signal<number, number>;
    };
    /**
     *
     * @param {string} uri
     * @param {string} type
     * @param {number} [level] defines priority group
     * @param {number} [priority] defines priority within the group
     * @return {AssetPreloader}
     */
    add(uri: string, type: string, level?: number, priority?: number): AssetPreloader;
    /**
     *
     * @param {{uri:string, type:string, level?:number}[]} list
     */
    addAll(list: {
        uri: string;
        type: string;
        level?: number;
    }[]): void;
    /**
     *
     * @param {AssetManager} assetManager
     * @return {this}
     */
    load(assetManager: AssetManager): this;
    #private;
}
/**
 * @deprecated use {@link AssetPreloader} import instead. Renamed in v2.131.7
 * @type {AssetPreloader}
 */
export const Preloader: AssetPreloader;
import { AssetLoadSpec } from "./AssetLoadSpec.js";
import Signal from "../../../core/events/signal/Signal.js";
//# sourceMappingURL=AssetPreloader.d.ts.map