import type { Logger } from "pino"; import type { ZodType } from "zod"; import type { ExposeProviderRegistrationApi } from "@/types"; import type { AuthStore } from "../../auth/store.js"; import type { PluginInstanceSettings, SettingsConfig } from "../../settings.js"; import type { FileFolder } from "../files/fileFolder.js"; import type { EngineEventBus } from "../ipc/events.js"; import type { Processes } from "../processes/processes.js"; import type { PluginEventInput } from "./events.js"; import type { PluginInference } from "./inference.js"; import type { PluginRegistrar } from "./registry.js"; export type PluginApi = { instance: PluginInstanceSettings; settings: TSettings; engineSettings: SettingsConfig; logger: Logger; auth: AuthStore; dataDir: string; tmpDir: string; registrar: PluginRegistrar; exposes: ExposeProviderRegistrationApi; fileStore: FileFolder; inference: PluginInference; processes: Processes; mode: "runtime" | "validate"; engineEvents?: EngineEventBus; events: { emit: (event: PluginEventInput) => void; }; }; export type PluginInstance = { load?: () => Promise; unload?: () => Promise; preStart?: () => Promise; postStart?: () => Promise; systemPrompt?: (() => Promise | string | null) | string | null; }; export type PromptChoice = { value: TValue; name: string; description?: string; }; export type PromptSelectConfig = { message: string; choices: Array>; }; export type PromptInputConfig = { message: string; default?: string; placeholder?: string; }; export type PromptConfirmConfig = { message: string; default?: boolean; }; export type PluginPrompt = { input: (config: PromptInputConfig) => Promise; confirm: (config: PromptConfirmConfig) => Promise; select: (config: PromptSelectConfig) => Promise; }; export type PluginOnboardingApi = { instanceId: string; pluginId: string; dataDir: string; auth: AuthStore; prompt: PluginPrompt; note: (message: string, title?: string) => void; }; export type PluginOnboardingResult = { settings?: Record; }; export type PluginModule = { settingsSchema: ZodType; create: (api: PluginApi) => PluginInstance | Promise; onboarding?: (api: PluginOnboardingApi) => Promise; }; export declare function definePlugin(module: PluginModule): PluginModule; //# sourceMappingURL=types.d.ts.map