import type { BotmuxPluginManifest, InstalledPluginRecord, PluginRuntime } from './types.js'; export interface PluginApplyContext { runtime: PluginRuntime; pluginId: string; pluginDir: string; packageName: string; version: string; manifest: BotmuxPluginManifest; } export interface PluginServiceDefinition { mode?: 'manual' | 'auto'; port?: number; pm2: { script: string; cwd?: string; args?: string[]; env?: Record; autorestart?: boolean; killTimeoutMs?: number; watchDelayMs?: number; }; /** Build the plugin's advertised URLs. `host` is already URL-ready — an IPv6 * literal arrives bracketed (`[::1]`) — so interpolate it straight into a URL * (`http://${host}:${port}/`) without re-formatting. */ urls?(ctx: { host: string; env: Record; port?: number; }): { openUrl?: string; healthUrl?: string; }; } export interface PluginConfigApi { path: string; get(key?: string): T | undefined; set(key: string, value: unknown): void; replace(value: Record): void; } export interface PluginCommandContext extends PluginApplyContext { args: string[]; api?: Record; } export interface PluginCliCommand { name: string; description?: string; run(ctx: PluginCommandContext): void | string | number | Promise; } export interface RegisteredPluginCommand extends PluginCliCommand { pluginId: string; } export declare function loadPluginServiceDefinition(record: InstalledPluginRecord): Promise; export declare function collectPluginCliCommands(pluginIds?: readonly string[]): Promise; //# sourceMappingURL=runtime.d.ts.map