/**
 * Diff Ownership Store — 持久化文件归属快照，绑定 stateDir。
 * CAP-011 实验性: 只做 advisory 冲突报告，不 hard block。
 *
 * 存储: JSON 文件，原子写入，路径绑定 stateDir。
 * 每个 task_id 下的快照按时间顺序追加。
 */
import { type FileSnapshot, type CasCheckResult, type DiffOwnership } from "./diff_ownership.js";
export interface ConflictReport {
    file_path: string;
    expected_hash: string | null;
    current_hash: string | null;
    inferred_ownership: DiffOwnership;
    severity: "advisory";
    message: string;
}
export interface ScopeBaselineResult {
    snapshots: FileSnapshot[];
    advisory_summary: string | null;
    total_files_found: number;
    files_excluded: number;
    files_captured: number;
    exceeded_limit: boolean;
}
export interface TaskSnapshotState {
    task_id: string;
    baseline_captured_at: string | null;
    snapshots: FileSnapshot[];
}
export declare class DiffOwnershipStore {
    private filePath;
    private states;
    private loaded;
    constructor(stateDir: string);
    private ensureLoaded;
    private persist;
    /**
     * 为任务捕获基线快照。在任务开始执行时调用一次。
     *
     * @param taskId - 任务 ID
     * @param filePaths - 待捕获的文件路径列表
     * @returns 文件快照数组
     */
    captureBaseline(taskId: string, filePaths: string[]): FileSnapshot[];
    /**
     * 从作用域路径捕获基线，将目录展开为其包含的文件。
     * 应用排除规则和大小限制。超出限制时返回建议性摘要。
     * 不做硬性阻止 — 调用方收到摘要后自行决定。
     */
    captureBaselineFromScope(taskId: string, scopePaths: string[], options?: {
        maxFiles?: number;
        maxTotalBytes?: number;
    }): ScopeBaselineResult;
    /**
     * 记录任务对文件的写入。
     *
     * @param taskId - 任务 ID
     * @param filePath - 写入的文件路径
     * @returns 文件快照
     */
    recordWrite(taskId: string, filePath: string): FileSnapshot;
    /**
     * 写前执行 CAS 检查。检查失败时返回建议性冲突报告。
     * 不阻止写入 — 调用方自行决定处理方式。
     */
    preWriteCheck(taskId: string, filePath: string): {
        cas: CasCheckResult;
        conflict: ConflictReport | null;
    };
    /**
     * 获取任务的所有快照。
     *
     * @param taskId - 任务 ID
     * @returns 文件快照数组
     */
    getSnapshots(taskId: string): FileSnapshot[];
    /**
     * 获取任务的归属摘要。
     *
     * @param taskId - 任务 ID
     * @returns 按归属类型分组的文件计数
     */
    getOwnershipSummary(taskId: string): Record<DiffOwnership, number>;
    /**
     * 清理已完成/失败任务的状态。
     *
     * @param taskId - 任务 ID
     */
    clearTask(taskId: string): void;
    clear(): void;
}
//# sourceMappingURL=diff_ownership_store.d.ts.map