import type { ChildProcessWithoutNullStreams, SpawnOptionsWithoutStdio } from 'node:child_process'; import type { RuntimeEvent } from '../runtime-events.js'; import type { AcpAuthStatus, AcpElicitationOutcome, AcpElicitationRequest, AcpInitializeRequest, AcpInitializeResponse, AcpLoadSessionRequest, AcpNewSessionRequest, AcpNewSessionResponse, AcpPermissionOutcome, AcpPermissionRequest, AcpPromptRequest, AcpPromptResponse, AcpSetConfigOptionRequest, AcpUsage } from './acp-types.js'; import { type JsonRpcPeerOptions, type JsonRpcRequestOptions } from './json-rpc-peer.js'; export { AcpProtocolError } from './json-rpc-peer.js'; export interface AcpClientSpawnOptions extends JsonRpcPeerOptions { command: string; args?: string[]; cwd?: string; env?: NodeJS.ProcessEnv; spawnOptions?: Omit; onEvent?: (event: RuntimeEvent) => void; onPermissionRequest?: (request: AcpPermissionRequest) => AcpPermissionOutcome | Promise; onElicitation?: (request: AcpElicitationRequest) => AcpElicitationOutcome | Promise; onAuthStatus?: (status: AcpAuthStatus) => void; } export declare class AcpClient { #private; private constructor(); static spawn(options: AcpClientSpawnOptions): Promise; get process(): ChildProcessWithoutNullStreams; request(method: string, params?: unknown, options?: JsonRpcRequestOptions): Promise; initialize(request: AcpInitializeRequest): Promise; newSession(request: AcpNewSessionRequest): Promise; loadSession(request: AcpLoadSessionRequest): Promise>; prompt(request: AcpPromptRequest, options?: JsonRpcRequestOptions): Promise; cancel(sessionId: string): Promise; setConfigOption(request: AcpSetConfigOptionRequest, options?: JsonRpcRequestOptions): Promise<{ configOptions?: unknown; }>; authenticate(methodId: string, options?: JsonRpcRequestOptions): Promise; closeSession(sessionId: string): Promise; close(): void; } export declare function runtimeEventFromPromptUsage(sessionId: string, usage?: AcpUsage): RuntimeEvent | null;