/**
 * Claude Code stream-json 输出解析器
 * 将 Claude Code 的 JSON 流输出转换为标准化日志
 */
import type { MsgStore } from './msg-store.js';
/**
 * Claude Code 解析器
 */
export declare class ClaudeCodeParser {
    private msgStore;
    private buffer;
    private toolEntryMap;
    private currentAssistantIndex;
    private currentAssistantContent;
    private streamingBlocks;
    private streamingRole;
    private streamingMessages;
    private streamingMessageId;
    private lastTurnUsage;
    private hasValidMessages;
    private nonJsonLines;
    private apiRetryEntryIndex;
    private apiRetryEntryId;
    constructor(msgStore: MsgStore);
    /** 使用 MsgStore 共享的索引提供器 */
    private get indexProvider();
    /**
     * 处理原始输出数据
     */
    processData(data: string): void;
    /**
     * 解析单行 JSON
     */
    private parseLine;
    /**
     * 处理消息
     */
    private handleMessage;
    /**
     * 清除 API 重试状态（收到正常消息时调用）
     */
    private clearApiRetryState;
    /**
     * 处理系统消息
     */
    private handleSystemMessage;
    /**
     * 处理 API 重试消息
     * 使用单条 entry 原地更新，避免每次重试刷屏
     */
    private handleApiRetry;
    /**
     * 处理助手消息
     * 通过 message.id 查找 stream_event 阶段创建的 entry，用完整内容 replace
     * 对于 tool_use（不走 stream_event），直接新建 entry
     */
    private handleAssistantMessage;
    /**
     * 追加助手文本
     */
    private appendAssistantText;
    /**
     * 刷新助手文本
     */
    private flushAssistantText;
    /**
     * 处理工具使用
     */
    private handleToolUse;
    /**
     * 格式化工具内容
     */
    private formatToolContent;
    /**
     * 从 TodoWrite 工具调用中提取 todo 数据
     */
    private extractTodoExtras;
    /**
     * 添加思考内容
     */
    private addThinking;
    /**
     * 处理用户消息
     * 跳过 — 用户消息已由 session.service.ts 在收到请求时主动推送，
     * 这里如果再处理 Claude Code 回显的 user message 会导致重复
     */
    private handleUserMessage;
    /**
     * 处理结果消息
     */
    private handleResultMessage;
    /**
     * 处理错误消息
     */
    private handleErrorMessage;
    /**
     * 处理 stream_event（增量流式消息）
     */
    private handleStreamEvent;
    /**
     * 完成解析
     * exitCode 非 0 且没有解析到有效 JSON 消息时，将非 JSON 输出作为错误推送
     */
    finish(exitCode?: number): void;
}
/**
 * 创建解析器并连接到 PTY
 */
export declare function createClaudeCodeParser(msgStore: MsgStore): ClaudeCodeParser;
//# sourceMappingURL=claude-code-parser.d.ts.map