/**
 * The status of a library
 * @enum Status
 * @property {string} LOADING - the library is loading
 * @property {string} LOADED - the library is loaded
 * @property {string} ERROR - the library failed to load
 */
export declare enum Status {
    LOADING = "loading",
    LOADED = "loaded",
    ERROR = "error"
}
/**
 * A library is a set of script and style dependencies
 * that can be loaded dynamically
 * @interface Library
 * @property {string} name - global variable object name that the script will give to the library
 * @property {Dependency[]} dependencies - a set of script and style dependencies
 * @property {Status} status - the status of the library e.g. LOADED
 * @example
 *
 * const library: Library = {
 *    name: 'Quill',
 *    dependencies: [
 *    {
 *      name: 'quill',
 *      url: 'https://cdn.quilljs.com/1.3.6/quill.js',
 *      type: 'js',
 *      requires: [],
 *      loaded: false,
 *      error: false,
 *    },
 *    {
 *      name: 'quill',
 *      url: 'https://cdn.quilljs.com/1.3.6/quill.snow.css',
 *      type: 'css',
 *      requires: [],
 *      loaded: false,
 *      error: false,
 *     },
 *     ],
 *     status: Status.LOADING,
 * };
 */
export interface Library {
    /** global variable object name that the script will give to the library */
    name: string;
    /** a set of script and style dependencies */
    dependencies: Dependency[];
    /** the status of the library e.g. LOADED */
    status: Status;
}
/**
 * A dependency is a script or style that can be loaded dynamically
 */
export interface Dependency {
    /** an identifier for the dependency */
    name: string;
    /**
     * the url of the dependency
     * @example
     * https://cdn.quilljs.com/1.3.6/quill.js
     */
    url: string;
    /** the type of the dependency. Is it a style or script? */
    type: 'js' | 'css';
    /**
     * an array of dependencies corresponds to the Dependency.name
     * that must be loaded before this dependency
     * @example
     * ['quill-better-table']
     * where 'quill-better-table' is the name of the dependency
     * const betterTable: Dependency = {
     *   name: 'quill-better-table',
     *   url: 'https://cdn.quilljs.com/1.3.6/quill.js',
     *   type: 'js',
     *   requires: ['quill-better-table'],
     * }
     */
    requires: string[];
    /** the status of the dependency */
    status?: Status;
    /** the number of times the dependency has been loaded */
    retries?: number;
}
/**
 * Configuration for different policies
 */
export interface Policy {
    /** Maximum number of retry attempts */
    maxAttempts: number;
    /** Time between retries in milliseconds */
    retryInterval: number;
    /** Time in milliseconds before considering a load attempt as failed */
    timeout: number;
}
//# sourceMappingURL=eui-loader.model.d.ts.map