/**
 * @module        core/claudeJsonl
 * @description   解析 Claude CLI 自身写的 ACP session 历史 jsonl
 *
 * @layer         core
 *
 * Claude CLI 把每个 ACP session 的完整对话写在
 *   ~/.claude/projects/<encoded-cwd>/<sessionId>.jsonl
 * 一个 sessionId 一个 jsonl 文件（1:1）。
 *
 * 把它解析成 ChatMessage[] 后，Console 就能展示 `sps agent --chat` /
 * `sps agent --name foo` 创建的 CLI 会话历史，而不必双写到
 * ~/.coral/chat-sessions/.
 */
import type { ChatMessage } from '../services/ChatService.js';
export interface JsonlSummary {
    /** 文件存在且至少含一条非 meta user/assistant 消息 */
    exists: boolean;
    /** 解析出的可展示消息条数 */
    messageCount: number;
    /** 最后一条消息的 ISO 时间 */
    lastMessageAt: string | null;
    /** 第一条非 meta user 消息的纯文本（作为 title 候选） */
    firstUserText: string | null;
    /** 文件 mtime（ISO），用于排序兜底 */
    fileMTime: string | null;
}
/** 文件是否存在（不解析内容） */
export declare function jsonlExists(cwd: string, sessionId: string): boolean;
/**
 * 读 jsonl 并转成 ChatMessage[]。
 * - 跳过 isMeta / system / progress / queue-operation / file-history-snapshot / attachment / last-prompt
 * - sidechain（subagent）目前一并跳过 —— 主对话流更纯
 * - 每个 assistant record 是一条 ChatMessage（一次模型 turn 内的多 record 不再合并 —— Claude 的 jsonl 已经分好了）
 * - tool_use 块映射为 ChatMessageBlock; thinking 不展示
 */
export declare function parseJsonlMessages(cwd: string, sessionId: string): ChatMessage[];
/**
 * 摘要（list() 用）。复用 parseJsonlMessages 保持计数与真实可展示条数一致 ——
 * 大文件下会读全文，但解析本身仍是 O(n) 行扫，对 list 的 SLA 足够。
 */
export declare function summarizeJsonl(cwd: string, sessionId: string): JsonlSummary;
//# sourceMappingURL=claudeJsonl.d.ts.map