import { type OpencodeClient as SdkOpencodeClient } from '@opencode-ai/sdk'; import type { Session, Message, Part, Project } from '@opencode-ai/sdk'; import { EventEmitter } from 'events'; export interface PermissionRequestEvent { sessionId: string; permissionId: string; tool: string; description: string; risk?: string; parentSessionId?: string; relatedSessionId?: string; messageId?: string; callId?: string; } export interface PermissionResponseOptions { directory?: string; fallbackDirectories?: string[]; } export interface MessagePart { type: string; text?: string; toolName?: string; args?: Record; result?: string; error?: string; } export type AgentMode = 'primary' | 'subagent' | 'all'; export interface OpencodeAgentInfo { name: string; description?: string; mode?: AgentMode; hidden?: boolean; builtIn?: boolean; native?: boolean; } export interface OpencodeCommandInfo { name: string; description?: string; agent?: string; model?: string; source?: 'command' | 'mcp' | 'skill'; template: string; subtask?: boolean; hints: string[]; } export interface OpencodeAgentConfig { description?: string; mode?: AgentMode; prompt?: string; tools?: Record; [key: string]: unknown; } export interface OpencodeRuntimeConfig { agent?: Record; [key: string]: unknown; } export interface ShellExecutionResult { info?: Message; parts: Part[]; } export interface SessionQueryOptions { directory?: string; } declare class OpencodeClientWrapper extends EventEmitter { private client; private eventStreamManager; private knownSessionDirectories; private commandCacheManager; private providersManager; private sessionsManager; private messagesManager; constructor(); connect(): Promise; private clearEventReconnectTimer; private scheduleEventReconnect; private clearDirectoryEventReconnectTimer; private scheduleDirectoryEventReconnect; private ensureDirectoryEventStream; private startEventListener; private handleEvent; getClient(): SdkOpencodeClient; private normalizeDirectory; private rememberDirectory; getProviders(): Promise<{ providers: Array<{ id: string; name: string; models: Array<{ id: string; name: string; }>; }>; default: Record; }>; getProvidersFull(): Promise<{ providers: Array>; default: Record; }>; getModelCapabilities(providerId: string, modelId: string): Promise<{ input?: { text?: boolean; image?: boolean; audio?: boolean; video?: boolean; pdf?: boolean; }; output?: { text?: boolean; image?: boolean; audio?: boolean; video?: boolean; pdf?: boolean; }; attachment?: boolean; } | null>; listVisionModels(): Promise>; getConfig(): Promise; updateConfig(config: OpencodeRuntimeConfig): Promise; getAgents(): Promise; getOrCreateSession(title?: string): Promise; listProjects(options?: SessionQueryOptions): Promise; listSessions(options?: SessionQueryOptions): Promise; listSessionsAcrossProjects(): Promise; listAllSessions(knownDirectories: string[]): Promise; getSessionById(sessionId: string, options?: SessionQueryOptions): Promise; findSessionAcrossProjects(sessionId: string): Promise; createSession(title?: string, directory?: string): Promise; updateSession(sessionId: string, title: string): Promise; deleteSession(sessionId: string, options?: SessionQueryOptions): Promise; getSessionMessages(sessionId: string): Promise>; getSessionLastActivityTime(sessionId: string): Promise; sendMessage(sessionId: string, text: string, options?: { providerId?: string; modelId?: string; agent?: string; variant?: string; directory?: string; }): Promise<{ info: Message; parts: Part[]; }>; sendMessageParts(sessionId: string, parts: Array<{ type: 'text'; text: string; } | { type: 'file'; mime: string; url: string; filename?: string; }>, options?: { providerId?: string; modelId?: string; agent?: string; variant?: string; directory?: string; }, messageId?: string): Promise<{ info: Message; parts: Part[]; }>; sendMessageAsync(sessionId: string, text: string, options?: { providerId?: string; modelId?: string; agent?: string; variant?: string; directory?: string; }): Promise; sendMessagePartsAsync(sessionId: string, parts: Array<{ type: 'text'; text: string; } | { type: 'file'; mime: string; url: string; filename?: string; }>, options?: { providerId?: string; modelId?: string; agent?: string; variant?: string; directory?: string; }): Promise; sendCommand(sessionId: string, command: string, args: string, options?: { directory?: string; }): Promise<{ info: Message; parts: Part[]; }>; sendShellCommand(sessionId: string, command: string, agent: string, options?: { providerId?: string; modelId?: string; directory?: string; }): Promise; summarizeSession(sessionId: string, providerId: string, modelId: string): Promise; revertMessage(sessionId: string, messageId: string): Promise; abortSession(sessionId: string): Promise; respondToPermission(sessionId: string, permissionId: string, allow: boolean, remember?: boolean, options?: PermissionResponseOptions): Promise<{ ok: boolean; expired?: boolean; }>; replyQuestion(requestId: string, answers: string[][]): Promise<{ ok: boolean; expired?: boolean; }>; rejectQuestion(requestId: string): Promise<{ ok: boolean; expired?: boolean; }>; getCommands(): Promise; private checkOpenCodeVersion; getOpencodeVersion(): string | null; clearCommandsCache(): void; disconnect(): void; } export declare const opencodeClient: OpencodeClientWrapper; export {}; //# sourceMappingURL=client.d.ts.map