import { IObjectManager } from '../database/IObjectManager'; import { IExtensionEvents } from './IExtension'; import * as express from 'express'; import { ExtensionObject } from './ExtensionObject'; import { ExtensionRepository } from './ExtensionRepository'; import { ExtensionListItem } from '../../../common/entities/extension/ExtensionListItem'; import { UIExtensionDTO } from '../../../common/entities/extension/IClientUIConfig'; export declare class ExtensionManager implements IObjectManager { static EXTENSION_API_PATH: string; repository: ExtensionRepository; events: IExtensionEvents; extObjects: { [key: string]: ExtensionObject; }; router: express.Router; constructor(); init(): Promise; getExtensionListWithInstallStatus(): Promise; cleanUp(): Promise; /** * Install an extension from the repository * @param extensionId - The repository extension ID (not to be confused with the unique internal extensionId used in extObjects) */ installExtension(extensionId: string): Promise; /** * Reload an extension by cleaning up and re-initializing it * @param configKey - The key used in Config.Extensions.extensions map (typically the folder name) */ reloadExtension(configKey: string): Promise; /** * Delete an extension by cleaning up, removing its folder, and removing it from configuration * @param configKey - The key used in Config.Extensions.extensions map (typically the folder name) */ deleteExtension(configKey: string): Promise; getUIExtensionConfigs(): UIExtensionDTO[]; private initEvents; private createUniqueExtensionObject; /** * Initialize a single extension * @param configKey The key used in Config.Extensions.extensions map (typically the folder name) * @returns Promise that resolves when the extension is initialized */ private initSingleExtension; /** * Initialize all extensions */ private initExtensions; private cleanUpSingleExtension; private cleanUpExtensions; private downloadFile; private unzipFile; }