import { AnyPlugin, InferRegistryFromEntries, InitializedPlugin, LoadedPlugin, PluginConfigInput, PluginInstance, PluginRegistry, PluginRegistryEntry, PluginRuntimeConfig, RegisteredPlugin, RegisteredPlugins, UsePluginResult } from "../types.cjs"; import { PluginService } from "./services/plugin.service.cjs"; import { ManagedRuntime } from "effect"; //#region src/runtime/index.d.ts declare class PluginRuntime { private runtime; private registry; readonly __registryType?: R; private pluginCache; constructor(runtime: ManagedRuntime.ManagedRuntime, registry: PluginRegistry); private generateCacheKey; private validatePluginId; private runPromise; usePlugin(pluginId: K, config: PluginConfigInput, plugins?: Record): Promise>; loadPlugin(pluginId: K): Promise>>; instantiatePlugin(pluginId: K, loadedPlugin: LoadedPlugin>): Promise>>; initializePlugin(instance: PluginInstance, config: any, plugins?: Record): Promise>; shutdown(): Promise; evictPlugin(pluginId: K, config: PluginConfigInput, plugins?: Record): Promise; } /** * Creates a plugin runtime with support for both module and remote plugin entries. * * @example * ```typescript * // With module entries (types inferred automatically) * const runtime = createPluginRuntime({ * registry: { * telegram: { module: TelegramPlugin }, * gopher: { remote: "https://cdn.example.com/gopher/remoteEntry.js" } * }, * secrets: { API_KEY: "..." } * }); * * // Types are automatically inferred from module entries! * const { router } = await runtime.usePlugin("telegram", config); * ``` */ declare function createPluginRuntime>(config: PluginRuntimeConfig): PluginRuntime>; //#endregion export { PluginRuntime, createPluginRuntime }; //# sourceMappingURL=index.d.cts.map