///
import { EventEmitter } from 'events';
import Task from './tasks/Task';
import { Complete } from './tasks/Task';
import AssetManager from './AssetManager';
import AssetToken from './AssetToken';
export interface Asset {
id?: string;
cache?: string;
complete?: Complete;
remote?: boolean;
timeout?: number;
format?: string;
type?: string;
instance?: boolean;
src?: string;
}
export interface ITaskDefinition {
test: (asset: Asset) => boolean;
priority: number;
prototype: any;
new (manager: AssetManager, asset: Asset): Task;
}
export interface SetupOptions {
maxLoads?: number;
autoStart?: boolean;
cacheAll?: string;
remoteAll?: boolean;
timeoutAll?: number;
}
export interface AssetResult {
result?: any;
subAssets?: AssetToken[];
token: AssetToken;
}
/**
* Class that represents a single multi load.
* @class AssetLoad
* @memberof jibo.loader
*/
declare class AssetLoad extends EventEmitter {
manager: AssetManager;
id: number;
mode: number;
maxLoads: number;
tasks: Array;
results: any;
running: boolean;
numLoaded: number;
numLoading: number;
total: number;
cacheAll: string;
remoteAll: boolean;
timeoutAll: number;
loadedTokens: AssetToken[];
/**
* When an asset is finished.
* @event jibo.loader.AssetLoad#taskDone
* @param {*} result The loader result.
* @param {object} originalAsset The original load asset.
* @param {jibo.loader.AssetLoad} load This loader to add additional assets to.
*/
/**
* When all assets have been completely loaded.
* @event jibo.loader.AssetLoad#complete
* @param {Array|Object} results The results of load.
*/
/**
* Checks how many assets have finished loading.
* @event jibo.loader.AssetLoad#progress
* @param {number} percentage The amount loaded from 0 to 1.
*/
/**
* List of AssetToken objects for all loads that will be or have been performed.
* @type {jibo.loader.AssetToken[]}
* @name jibo.loader.AssetLoad#tokens
*/
readonly tokens: AssetToken[];
/**
* Cancel the load progress.
* @method jibo.loader.AssetLoad#cancel
*/
cancel(): void;
/**
* Starts the load process.
* @method jibo.loader.AssetLoad#start
*/
start(): void;
/**
* Adds loads to an ongoing load. Call this during callbacks/events for individual task
* completion.
* @method jibo.loader.AssetLoad#addAssets
* @param {Object|Array} assets The assets to load.
* @return {jibo.loader.AssetToken[]} The asset tokens of the newly added assets (if they are cached).
*/
addAssets(assets: Asset | Array | {
[id: string]: Asset;
}): AssetToken[];
}
export default AssetLoad;