import type { McpServer } from "@agentclientprotocol/sdk"; export declare const ACP_MCP_BOOTSTRAP_FILE_ENV = "SELESAI_ACP_MCP_BOOTSTRAP_FILE"; export declare const ACP_MCP_BOOTSTRAP_STATUS_ENV = "SELESAI_ACP_MCP_BOOTSTRAP_STATUS"; export declare const ACP_MCP_BOOTSTRAP_LAUNCH_FLAG = "--selesai-acp-mcp-stdio"; export declare const ACP_MCP_BOOTSTRAP_TIMEOUT_MS = 30000; export declare const ACP_MCP_BOOTSTRAP_DATA_FILE = "servers.json"; export declare const ACP_MCP_BOOTSTRAP_STATUS_FILE = "status.json"; export interface EditorStdioMcpServer { name: string; command: string; args: string[]; env: Array<{ name: string; value: string; }>; } export type BootstrapFailureCode = "invalid_data" | "configuration_conflict" | "registration_failed" | "connection_failed" | "authentication_required" | "session_rebound"; export interface SessionMcpBootstrap { /** Absolute fixed extension module path for `--extension`; absent when no MCP server was supplied. */ extensionPath?: string; /** Private paths the owned RPC child must receive in its process environment. */ environment: Readonly>; /** Resolves only after all required stdio servers report connected; rejects on failure, abort, or timeout. */ waitForReady(options?: { signal?: AbortSignal; timeoutMs?: number; }): Promise; /** Monitors post-readiness startup/rebind failures until the owning RPC child closes. */ waitForFailure(options: { signal: AbortSignal; }): Promise; /** Idempotent. Call only after the owned RpcClient/child and its MCP launchers have stopped. */ cleanup(): void; } /** Validate and copy the stable ACP stdio shape without interpreting command, argv, or env strings. */ export declare function validateEditorMcpServers(input: unknown): EditorStdioMcpServer[]; /** Create protected per-session input/status files; callers own cleanup after the RPC child exits. */ export declare function prepareSessionMcpBootstrap(input: readonly McpServer[]): SessionMcpBootstrap;