/**
 * Scope Lease — 追踪任务对文件的 advisory 租约。
 *
 * CAP-011 实验性: advisory only, 不 hard block, 不阻止写入。
 * 职责: 记录哪个任务正在操作哪些文件，供其他任务查询冲突。
 *
 * 生命周期:
 * - 任务进入 executing 时 acquire
 * - 任务完成/失败/取消时 release
 * - 其他任务写前可 queryLease 查询 advisory 冲突
 */
/** 租约条目 */
export interface LeaseEntry {
    task_id: string;
    file_paths: string[];
    acquired_at: string;
    released_at: string | null;
}
/** 租约冲突信息 */
export interface LeaseConflict {
    file_path: string;
    leased_by: string;
    lease_acquired_at: string;
    severity: "advisory";
    message: string;
}
/** 租约摘要 */
export interface LeaseSummary {
    active_leases: number;
    total_files_leased: number;
    leased_by_task: Record<string, string[]>;
}
/** 范围租约存储 */
export declare class ScopeLeaseStore {
    private filePath;
    private leases;
    private loaded;
    /**
     * 创建范围租约存储实例。
     * @param stateDir - 状态存储目录路径
     */
    constructor(stateDir: string);
    /** 从磁盘加载租约数据（首次访问时自动调用） */
    private ensureLoaded;
    /** 将租约数据持久化到磁盘 */
    private persist;
    /**
     * 为任务获取文件范围租约。
     * @param taskId - 任务 ID
     * @param filePaths - 任务操作的文件路径列表
     * @returns 创建的租约条目
     */
    acquire(taskId: string, filePaths: string[]): LeaseEntry;
    /**
     * 释放任务的文件范围租约。
     * 释放前检查是否有其他活跃任务持有重叠路径。
     * @param taskId - 任务 ID
     * @returns 释放结果，包含是否成功和冲突警告
     */
    release(taskId: string): {
        released: boolean;
        warnings: string[];
    };
    /**
     * 查询指定文件是否存在与其他任务的租约冲突。
     * @param taskId - 当前任务 ID（排除自身）
     * @param filePath - 要查询的文件路径
     * @returns 租约冲突信息，无冲突时返回 null
     */
    queryLease(taskId: string, filePath: string): LeaseConflict | null;
    /**
     * 获取所有活跃的租约列表。
     * @returns 活跃租约条目数组
     */
    getActiveLeases(): LeaseEntry[];
    /**
     * 获取指定任务的租约信息。
     * @param taskId - 任务 ID
     * @returns 对应的租约条目，未找到时返回 null
     */
    getLeaseForTask(taskId: string): LeaseEntry | null;
    /**
     * 获取租约摘要统计。
     * @returns 租约摘要信息
     */
    getSummary(): LeaseSummary;
    /**
     * 清除所有租约数据。
     */
    clear(): void;
}
//# sourceMappingURL=scope_lease.d.ts.map