import { EventEmitter } from 'node:events'; import { type AdapterSessionConfig, type BaseProviderAdapter, type ConversationMessage, type SessionStatus } from './types.js'; export declare class OpencodeSdkAdapter extends EventEmitter implements BaseProviderAdapter { readonly providerId = "opencode"; readonly displayName = "OpenCode"; private sessions; private listenerWakeHooks; private sdkModule?; startSession(sessionId: string, config: AdapterSessionConfig): Promise; sendMessage(sessionId: string, message: string, options?: { keepWaitingStatus?: boolean; }): Promise; sendConfirmation(sessionId: string, accept: boolean): Promise; sendQuestionAnswer(_sessionId: string, _answers: Record): Promise; setIdleCommands(sessionId: string, commands: { idleInputCommand: string; nonInputCommand: string; }): void; abortCurrentTurn(sessionId: string): Promise; terminateSession(sessionId: string): Promise; getConversation(sessionId: string): ConversationMessage[]; hasSession(sessionId: string): boolean; getProviderSessionId(sessionId: string): string | undefined; getSessionStatus(sessionId: string): SessionStatus | undefined; getSessionPid(sessionId: string): number | undefined; cleanup(): void; private loadSdk; private waitForServer; private recordStartupOutput; private formatStartupExitMessage; private dispatchInitialPrompt; private startSseLoop; private runSseLoop; private handleOpenCodeEvent; private handlePartUpdate; private getTodoStoreDir; private syncTodosFromToolCall; private emitEvent; private startIdleDetection; private stopIdleDetection; private checkIdleState; private toIdlePrompt; private isMessagePollingIdleCommand; }