export enum ExtensionTypeEnum { Assistant = "assistant", Conversational = "conversational", Inference = "inference", Model = "model", SystemMonitoring = "systemMonitoring", } export interface ExtensionType { type(): ExtensionTypeEnum | undefined; } /** * Represents a base extension. * This class should be extended by any class that represents an extension. */ export abstract class BaseExtension implements ExtensionType { /** * Returns the type of the extension. * @returns {ExtensionType} The type of the extension * Undefined means its not extending any known extension by the application. */ type(): ExtensionTypeEnum | undefined { return undefined; } /** * Called when the extension is loaded. * Any initialization logic for the extension should be put here. */ abstract onLoad(): void; /** * Called when the extension is unloaded. * Any cleanup logic for the extension should be put here. */ abstract onUnload(): void; }