import PluginExtension from './extensions/PluginExtension';
import { IManifiestInfo } from './interfaces/IManifiestInfo';
import { ExtendsOf } from './interfaces/ExtendsOf';
import IDependencyDescriptor from './extensions/IDependencyDescriptor';
import { PluginLogger } from './PluginLogger';
/**
 * Manifiest required to register and hydrate a Eureka Plugin
 */
export default abstract class PluginManifiest<T extends PluginExtension> {
    private pluginType;
    private dependencies;
    private instance;
    private hydratedCompleted;
    /**
     * @ignore
     * Register a new Manifiest plugin for hydration
     * @param pluginToExport Plugin Type to register
     * @param dependencies Dependency List
     */
    constructor(pluginToExport: ExtendsOf<T>, dependencies: IDependencyDescriptor);
    /**
     * Get the manifiest info for the plugin
     */
    getManifiest(): IManifiestInfo;
    /**
     * @ignore
     * Hydrate the plugin according to the manifiest data
     * @param resolutions Dependecy resolutions list
     */
    hydrate(resolutions: {
        [key: string]: any;
    }, logger: PluginLogger): Promise<void>;
    /**
     * @ignore
     * Get the plugin instance
     */
    protected getPlugin(): T;
}
