import type { SpecificManifestTypeOrManifestBase } from '../types/map.types.js'; import type { ManifestBase } from '../types/index.js'; import type { UmbExtensionRegistry } from '../registry/extension.registry.js'; import type { UmbBaseExtensionInitializer } from './base-extension-initializer.controller.js'; import { UmbControllerBase } from '../../class-api/index.js'; import type { UmbControllerHost } from '../../controller-api/index.js'; export type PermittedControllerType = ControllerType & { manifest: Required>; }; export interface UmbBaseExtensionsInitializerArgs { single?: boolean; } /** * This abstract Controller holds the core to manage a multiple Extensions. * When one or more extensions are permitted to be used, then the extender of this class can instantiate the relevant single extension initiator relevant for this type. * @abstract * @class UmbBaseExtensionsInitializer */ export declare abstract class UmbBaseExtensionsInitializer, ControllerType extends UmbBaseExtensionInitializer = UmbBaseExtensionInitializer, MyPermittedControllerType extends ControllerType = PermittedControllerType> extends UmbControllerBase { #private; protected _extensions: Array; asPromise(): Promise; constructor(host: UmbControllerHost, extensionRegistry: UmbExtensionRegistry, type: ManifestTypeName | Array, filter: undefined | null | ((manifest: ManifestType) => boolean), onChange?: (permittedManifests: Array) => void, controllerAlias?: string, args?: UmbBaseExtensionsInitializerArgs); protected _init(): void; protected abstract _createController(manifest: ManifestType): ControllerType; protected _extensionChanged: (isPermitted: boolean, controller: ControllerType) => void; hostDisconnected(): void; destroy(): void; }