import { Application, ComponentLoader, ComponentLoadOption, FoxpageComponent, StructureNode } from '@foxpage/foxpage-types';
/**
 * component loader
 *
 * @export
 * @class ComponentLoaderImpl
 * @implements {ComponentLoader}
 */
export declare class ComponentLoaderImpl implements ComponentLoader {
    app?: Application;
    opt: ComponentLoadOption;
    /**
     * the loaded components map
     *
     * @private`
     */
    private loadedMap;
    /**
     * miss load componentMap
     *
     * @private
     */
    private missLoadMap;
    /**
     * id -> version map
     *
     * @private
     */
    private resolvedVersionMap;
    /**
     * all dependencies
     * "name":"version" list
     * @private
     * @type {string[]}
     */
    private dependencies;
    /**
     * dependencies loaded map
     *
     * @private
     */
    private loadedDependencyMap;
    /**
     * dependencies miss load
     * key: "name":"version", value: {name, version}
     * @private
     * @type {FPPackageDependency[]}
     */
    private missLoadDependencyMap;
    /**
     * for record the missed package version that had fetched from server
     * "name":"version" | "name":""  -> "name":"version",
     * @private
     */
    private missedVersionMap;
    private logger;
    constructor(appId: string, opt: ComponentLoadOption);
    /**
     * load components
     * @param {StructureNode[]} schemas
     */
    load(schemas: StructureNode[]): Promise<void>;
    /**
     * get loaded components
     *
     * @return {*} {Map<string, FoxpageComponent>}
     */
    getLoadedComponents(): Map<string, FoxpageComponent>;
    /**
     *  get loaded dependencies
     *
     * @return {*}  {Map<string, FoxpageComponent>}
     */
    getLoadedDependencies(): Map<string, FoxpageComponent>;
    /**
     * destroy: clear all source
     *
     */
    destroy(): Promise<void>;
    /**
     * download the missed packages
     *
     * @private
     * @return {*}
     */
    private downloadMisses;
    /**
     * resolve the missed packages
     *
     * @private
     * @param {(Map<string, Package | null>)} loadedMap
     */
    private resolveMisses;
    /**
     * resolve the component
     * for divide the available or invalid
     * @private
     * @param {StructureNode[]} schemas
     */
    private resolveComponents;
    /**
     * resolve the dependencies
     *
     * @private
     */
    private resolveDependencies;
    /**
     * get the missed packages
     *
     * @private
     * @return {PackageNamedVersion} namedVersions
     */
    private getMissedPackages;
    private componentFormatter;
    private generateStructureNode;
    private setResolveVersion;
    private isComponent;
    private generateKey;
    private splitKey;
}
