import { AsyncSeriesBailHook } from './tapable/index'; import { App, AppShadow } from './App'; import type { AppPlugin } from './Plugin'; import type { AppOptions } from './Def'; import { ProtectedEventEmitter } from './utils/ProtectedEventEmitter'; import { Debugger } from './utils/Debugger'; export interface ContainerEvent { destroying: void; destroyed: void; appactivating: { appname: string | null; }; appactivated: { appname: string; }; appactivateerror: { appname: string; error: Error; }; noappactivated: { error: Error; }; appregisteredchange: void; appregistererror: { error: Error; }; } interface ContainerBaseOptions { name: string; root: string | Element; safe?: boolean; loose?: boolean; } export declare abstract class Container extends Debugger implements ProtectedEventEmitter { #private; readonly hooks: Readonly<{ afterrootready: AsyncSeriesBailHook<{ source: unknown; }, void, import("./tapable/index").UnsetAdditionalOptions>; }>; constructor(options: ContainerBaseOptions & ContainerAdditionalOptions); abstract get [Symbol.toStringTag](): string; get apps(): App[]; get name(): string; get options(): ContainerBaseOptions & ContainerAdditionalOptions; get currentMountedApp(): App | null; get isDestroying(): boolean; get isDestroyed(): boolean; on(event: T, listener: (event: ContainerEvent[T]) => unknown, context?: unknown): this; once(event: T, listener: (event: ContainerEvent[T]) => unknown, context?: unknown): this; off(event: T, listener: (event: ContainerEvent[T]) => unknown, context?: unknown): this; /** * Create and register applications. * @param apps App definations to create applications from. * @param plugins Plugins to be installed into each application. * @returns The created applications. */ registerApps, AdditionalOptions = Record>(apps: Array & AppAdditionalOptions & AdditionalOptions>, plugins?: Array<[name: string, pluginFn: AppPlugin]>): AppShadow[]; /** * Create and register an application. * @param app App defination to create application from. * @param plugins Plugins to be installed into the application. * @returns The created application. */ registerApp, AdditionalOptions = Record>(app: AppOptions & AppAdditionalOptions & AdditionalOptions, plugins?: Array<[name: string, pluginFn: AppPlugin]>): AppShadow; /** * Unregister an application. * @param name Name of the application to be registered. * @returns Promise */ unregisterApp(name: string): Promise; toString(): string; protected activateAppByName(name: string | null, source: unknown): Promise | null>; /** * Unload all applications, and disable this container forever. * @returns Promise */ destroy(): Promise; protected throwErrorIfDestroy(): void; } export {};