/**
 * EvidenceCollector.js — 从 Analyst 工具调用中收集结构化证据
 *
 * Bootstrap 质量门控核心组件: 将 Analyst 阶段的 toolCall 序列转化为
 * 类型化的证据地图、探索日志和负空间信号，供 Producer 阶段直接引用。
 *
 * 被 bootstrap-gate.js (buildAnalysisArtifact) 调用。
 *
 * 设计原则:
 * - 不保留原始工具返回值 (体积过大)
 * - 按工具类型萃取关键信息 (代码片段、搜索命中、类结构)
 * - 记录负空间: 搜索但未找到的模式 → 告知 Producer "这不存在"
 * - 预算控制: 代码片段总量 ≤ 32KB (Layer 2 Detail)
 *
 * @module EvidenceCollector
 */
/** 代码片段 */
export interface CodeSnippet {
    startLine: number;
    endLine: number;
    content: string;
    analystNote?: string;
}
/** 文件证据条目 */
export interface EvidenceEntry {
    filePath: string;
    codeSnippets: CodeSnippet[];
    summary: string;
    role?: string;
}
/** 探索日志条目 */
export interface ExplorationEntry {
    round: number;
    tool: string;
    intent: string;
    resultSummary: string;
    effective: boolean;
}
/** 负空间信号 */
export interface NegativeSignal {
    searchPattern: string;
    result: 'not_found' | 'empty' | 'irrelevant';
    implication: string;
}
/** 收集结果 */
export interface EvidenceCollectorResult {
    evidenceMap: Map<string, EvidenceEntry>;
    explorationLog: ExplorationEntry[];
    negativeSignals: NegativeSignal[];
}
/** 工具调用参数 */
interface ToolCallArgs {
    filePath?: string;
    filePaths?: string[];
    startLine?: number;
    pattern?: string;
    patterns?: string[];
    query?: string;
    className?: string;
    protocolName?: string;
    directory?: string;
    path?: string;
    rootClass?: string;
    methodName?: string;
    finding?: string;
    dimensionId?: string;
    [key: string]: unknown;
}
/** 工具调用 */
export interface ToolCall {
    tool?: string;
    name?: string;
    params?: ToolCallArgs;
    args?: ToolCallArgs;
    result?: ToolResult;
}
/** 搜索匹配条目 */
interface SearchMatch {
    file?: string;
    line?: number;
    context?: string;
}
/** EvidenceCollector 选项 */
interface EvidenceCollectorOptions {
    snippetBudget?: number;
}
/** 工具结果对象 (所有可能的结果属性联合) */
interface ToolResultObject {
    files?: Array<{
        path?: string;
        filePath?: string;
        content?: string;
        startLine?: number;
    }>;
    path?: string;
    filePath?: string;
    content?: string;
    startLine?: number;
    matches?: SearchMatch[];
    batchResults?: Record<string, {
        matches?: SearchMatch[];
    }>;
    className?: string;
    superClass?: string;
    protocols?: string[];
    methods?: Array<string | {
        name?: string;
        selector?: string;
    }>;
    properties?: unknown[];
    protocolName?: string;
    conformers?: string[];
    summary?: string;
    entries?: unknown[];
    children?: unknown[];
    classes?: unknown[];
    hierarchy?: unknown[];
    [key: string]: unknown;
}
/** 工具结果类型 */
type ToolResult = string | ToolResultObject | null | undefined;
export declare class EvidenceCollector {
    #private;
    /** @param [options.snippetBudget=32000] 代码片段总字符预算 */
    constructor(options?: EvidenceCollectorOptions);
    /**
     * 处理单个工具调用，提取证据
     *
     * @param toolCall { tool/name, params/args, result }
     * @param [round=0] 调用序号
     */
    processToolCall(toolCall: ToolCall, round?: number): void;
    /**
     * 构建收集结果
     *
     * @returns {{
     *   evidenceMap: Map<string, EvidenceEntry>,
     *   explorationLog: ExplorationEntry[],
     *   negativeSignals: NegativeSignal[]
     * }}
     */
    build(): {
        evidenceMap: Map<string, EvidenceEntry>;
        explorationLog: ExplorationEntry[];
        negativeSignals: NegativeSignal[];
    };
}
export default EvidenceCollector;
