import type { ManifestBase } from '../types/index.js'; import type { UmbExtensionRegistry } from '../registry/extension.registry.js'; import type { SpecificManifestTypeOrManifestBase } from '../types/map.types.js'; import { UmbControllerBase } from '../../class-api/index.js'; import type { UmbElement } from '../../element-api/index.js'; import { type Observable } from '../../../external/rxjs/index.js'; /** * Base class for extension initializers, which are responsible for loading and unloading extensions. */ export declare abstract class UmbExtensionInitializerBase> extends UmbControllerBase { #private; protected host: UmbElement; protected extensionRegistry: UmbExtensionRegistry; loaded: Observable; /** * @param {UmbElement} host The host element to attach the initializer to. * @param {UmbExtensionRegistry} extensionRegistry The extension registry to observe. * @param {Key} manifestType The manifest type to initialize extensions for. * @param {Observable} [activeGate] An optional observable that gates instantiation. While it emits `false` the * observed set is treated as empty, so all extensions of the type unload; when it emits `true` * they instantiate. Lets a subclass defer extensions until some external state is ready (e.g. an * authorized user) and tear them down again when it is lost. Omit for the default always-on behaviour. */ constructor(host: UmbElement, extensionRegistry: UmbExtensionRegistry, manifestType: Key, activeGate?: Observable); /** * Perform any logic required to instantiate the extension. */ abstract instantiateExtension(manifest: T): Promise | void; /** * Perform any logic required to unload the extension. */ abstract unloadExtension(manifest: T): Promise | void; }