import type { UmbApiConstructorArgumentsMethodType } from '../index.js'; import type { UmbApi } from '../models/api.interface.js'; import type { UmbExtensionRegistry } from '../registry/extension.registry.js'; import type { ManifestElementAndApi, ManifestCondition, ManifestWithDynamicConditions, ApiLoaderProperty } from '../types/index.js'; import { UmbBaseExtensionInitializer } from './base-extension-initializer.controller.js'; import type { UmbControllerHost, UmbControllerHostElement } from '../../controller-api/index.js'; /** * This Controller manages a single Extension initializing its Element and API. * When the extension is permitted to be used, its Element and API will be instantiated and available for the consumer. * @example * ```ts * const controller = new UmbExtensionApiAndElementInitializer(host, extensionRegistry, alias, (permitted, ctrl) => { console.log("Extension is permitted and this is the element: ", ctrl.component) })); * ``` * @class UmbExtensionElementAndApiInitializer */ export declare class UmbExtensionElementAndApiInitializer = any, ExtensionInterface extends ManifestElementAndApi = ManifestType extends ManifestElementAndApi ? ManifestType : never, ExtensionElementInterface extends UmbControllerHostElement = NonNullable, ExtensionApiInterface extends UmbApi = NonNullable> extends UmbBaseExtensionInitializer { #private; /** * The component that is created for this extension. * @readonly * @type {(HTMLElement | undefined)} */ get component(): ExtensionElementInterface | undefined; /** * The api that is created for this extension. * @readonly * @type {(class | undefined)} */ get api(): ExtensionApiInterface | undefined; get elementProps(): Record | undefined; set elementProps(newVal: Record | undefined); get apiProps(): Record | undefined; set apiProps(newVal: Record | undefined); constructor(host: UmbControllerHost, extensionRegistry: UmbExtensionRegistry, alias: string, constructorArguments: Array | UmbApiConstructorArgumentsMethodType | undefined, onPermissionChanged: (isPermitted: boolean, controller: ControllerType) => void, defaultElement?: string, defaultApi?: ApiLoaderProperty); protected _conditionsAreGood(): Promise; protected _conditionsAreBad(): Promise; destroy(): void; }