import { Capabilities } from './capabilities'; import { Arguments } from '../runtime'; export interface ComponentCapabilitiesVersions { '3.4': { asyncLifecycleCallbacks?: boolean; destructor?: boolean; }; '3.13': { asyncLifecycleCallbacks?: boolean; destructor?: boolean; updateHook?: boolean; }; } export interface ComponentCapabilities extends Capabilities { asyncLifeCycleCallbacks: boolean; destructor: boolean; updateHook: boolean; } export interface ComponentManager { capabilities: ComponentCapabilities; createComponent(factory: object, args: Arguments): ComponentStateBucket; getContext(instance: ComponentStateBucket): unknown; } export interface ComponentManagerWithAsyncLifeCycleCallbacks extends ComponentManager { didCreateComponent(instance: ComponentStateBucket): void; } export interface ComponentManagerWithUpdateHook extends ComponentManager { updateComponent(instance: ComponentStateBucket, args: Arguments): void; } export interface ComponentManagerWithAsyncUpdateHook extends ComponentManagerWithAsyncLifeCycleCallbacks, ComponentManagerWithUpdateHook { didUpdateComponent(instance: ComponentStateBucket): void; } export interface ComponentManagerWithDestructors extends ComponentManager { destroyComponent(instance: ComponentStateBucket): void; }