/**
 * Claude Code Agent SDK Adapter
 *
 * 通过 @anthropic-ai/claude-agent-sdk 的 query() API
 * 实现与 Claude Code 的结构化交互。
 *
 * 核心特性：
 * - 支持 autoAccept 模式自动确认所有权限
 * - 支持 AskUserQuestion 拦截并转发到聊天面板
 * - 支持 turn_complete 事件精确判断 AI 就绪状态
 */
import { EventEmitter } from 'events';
import type { AdapterSessionConfig, BaseProviderAdapter, ConversationMessage, SessionStatus } from './types.js';
/**
 * Claude Code Agent SDK Adapter
 */
export declare class ClaudeSdkAdapter extends EventEmitter implements BaseProviderAdapter {
    readonly providerId = "claude-code";
    readonly displayName = "Claude Code";
    private sessions;
    private sdkQueries;
    private inputStreams;
    private abortControllers;
    private sdkModule;
    private pendingPermissions;
    private pendingQuestions;
    private activeToolUseIds;
    private recentToolNames;
    private toolInputBuffers;
    startSession(sessionId: string, config: AdapterSessionConfig): Promise<void>;
    sendMessage(sessionId: string, message: string): Promise<void>;
    /**
     * 解析消息内容，提取图片和文本
     * 支持 [图片: url] 标记格式
     */
    private parseMessageContent;
    sendConfirmation(sessionId: string, accept: boolean): Promise<void>;
    sendQuestionAnswer(sessionId: string, answers: Record<string, string>): Promise<void>;
    abortCurrentTurn(sessionId: string): Promise<void>;
    terminateSession(sessionId: string): Promise<void>;
    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 idleCommands;
    private idleTimers;
    private idlePollLoops;
    private lastActivityAt;
    /**
     * 设置空闲命令配置
     */
    setIdleCommands(sessionId: string, commands: {
        idleInputCommand: string;
        nonInputCommand: string;
    }): void;
    /**
     * 启动空闲检测定时器
     */
    private startIdleDetection;
    /**
     * 停止空闲检测定时器
     */
    private stopIdleDetection;
    /**
     * 检测空闲状态并执行命令
     */
    private checkIdleState;
    /**
     * 发送空闲提示到 SDK
     */
    private sendIdlePrompt;
    private isMessagePollingIdleCommand;
    private buildMessagePollingIdlePrompt;
    /**
     * 获取当前会话的空闲轮询驱动器。
     * 主流程：惰性创建 -> 绑定会话状态与命令读取 -> 统一派发 poll/普通 idle prompt。
     */
    private getIdlePollLoop;
    /**
     * 发送手动快捷键 token 序列，和空闲自动命令共用解析逻辑。
     */
    sendShortcutInput(sessionId: string, command: string): Promise<void>;
    /**
     * 执行空闲命令（支持 [enter], [wait:n] 等 token）
     */
    private executeIdleCommand;
    /**
     * 更新活动时间（在收到输出或状态变化时调用）
     */
    private updateActivity;
    /**
     * 恢复之前的会话
     * 注意：SDK 的 resume 功能需要 providerSessionId
     */
    resumeSession(sessionId: string, providerSessionId: string, config: AdapterSessionConfig): Promise<void>;
    private loadSdk;
    /**
     * 查找 Claude Code 可执行文件路径
     * 支持 Windows / macOS / Linux
     */
    private findClaudeExecutable;
    /**
     * 从面板配置的命令行中提取实际可执行文件，避免把参数一起传给 PATH 查找。
     */
    private extractExecutableCommand;
    /**
     * 按当前 Bridge 进程的 PATH/PATHEXT 直接查找可执行文件，避免依赖 which/where 和 shell 解析。
     */
    private resolveExecutableFromPath;
    private getWindowsPathExtensions;
    private shouldUseDefaultClaudeFallbacks;
    private isWindowsWrapperPath;
    private resolveWindowsWrapper;
    /**
     * 从 wrapper 脚本解析 cli.js 路径
     */
    private resolveCliJsFromWrapper;
    private buildQueryOptions;
    private createPermissionHandler;
    private consumeStream;
    /**
     * Apply Claude SDK usage snapshots to the adapter session.
     * Main flow: accept assistant-step or final-result usage, then keep the largest observed totals.
     */
    private applyUsage;
    private handleSdkMessage;
    private handleToolUse;
    /**
     * 处理 SDK 流式事件
     * 用于检测工具调用开始、增量更新和结束
     *
     * 注意：此方法只更新状态，不发送时间线事件
     * 时间线事件由 handleToolUse 发送，这样能获取完整的工具参数
     */
    private handleStreamEvent;
    /**
     * 提取工具名后缀
     * 用于匹配不同格式的工具名
     * 例如：aws-mcp__get_profile -> get_profile
     */
    private extractToolNameSuffix;
    private emitEvent;
    private cleanupSession;
}
//# sourceMappingURL=ClaudeSdkAdapter.d.ts.map