/**
 * 模板同步 / 迁移引擎 — SoloForge 问题二十五
 *
 * 职责：对比模板源与本地安装版本，计算差异，按策略执行同步。
 * 核心不变量：
 *   - 用户修改的模板不得被覆盖
 *   - core knowledge 不得被自动同步修改
 *   - apply 必须用户确认，dry-run 先行
 */
import type { TemplateAssetVersion, KnowledgeMigrationReport, TemplateManifestEntry } from "../knowledge/knowledge_template_contracts.js";
/** 同步选项 */
export interface SyncOptions {
    /** 预演模式，只生成报告不写入文件 */
    dry_run: boolean;
    /** 是否执行实际同步 */
    apply: boolean;
    /** 用户确认标记，apply=true 时必须为 true */
    confirm?: boolean;
    /** 是否包含用户已修改的资产（仅用于报告展示，不影响写入策略） */
    include_user_modified?: boolean;
    /** 目标项目路径 */
    project_path: string;
    /** 模板源路径 */
    source_path: string;
}
/** 同步结果 */
export interface SyncResult {
    /** 整体是否成功 */
    success: boolean;
    /** 是否为预演模式 */
    dry_run: boolean;
    /** 迁移报告 */
    report: KnowledgeMigrationReport;
    /** 备份路径（apply 时生成） */
    backup_path?: string;
}
/**
 * 计算模板资产版本差异
 *
 * 对比当前安装版本（currentHashes）与源版本（sourceHashes），
 * 为每个清单条目生成版本差异记录。
 *
 * 分类规则：
 *   - installed_hash 在清单中存在 && 当前文件哈希 == installed_hash && 源哈希变化 => outdated_unmodified
 *   - 当前文件哈希 != installed_hash && 源哈希变化 => outdated_modified
 *   - 目标文件不存在 => missing
 *   - 源已废弃 => deprecated
 *   - 清单中无对应条目 => 保守处理，视为 user_modified=true
 */
export declare function computeTemplateAssetVersions(manifest: TemplateManifestEntry[], currentHashes: Map<string, string>, sourceHashes: Map<string, string>): TemplateAssetVersion[];
/**
 * 执行模板同步
 *
 * 策略：
 *   - dry_run=true：仅生成报告，不写入任何文件
 *   - apply=true：仅同步 "missing" 和 "outdated_unmodified" 资产
 *   - 永不同步 "outdated_modified"（用户已修改）— 跳过并记录
 *   - 永不同步 core knowledge 变更
 *   - apply 必须有用户确认（confirm=true）
 *   - 写入前必须生成备份路径
 *
 * @returns 同步结果，包含迁移报告
 */
export declare function executeSync(options: SyncOptions, assets: TemplateAssetVersion[], manifest: TemplateManifestEntry[]): SyncResult;
/**
 * 检测资产是否被用户修改
 *
 * @returns 用户是否修改过该资产
 */
export declare function detectUserModification(asset: TemplateAssetVersion): boolean;
/**
 * 生成知识迁移报告
 *
 * 汇总同步过程中的变更情况，包含新增、更新、跳过、废弃、冲突等分类。
 *
 * @param projectPath 项目路径
 * @param assets 所有模板资产版本记录
 * @param applied 已同步的资产 ID 列表
 * @param skipped 跳过的资产 ID 列表
 * @returns 知识迁移报告
 */
export declare function generateMigrationReport(projectPath: string, assets: TemplateAssetVersion[], applied: string[], skipped: string[]): KnowledgeMigrationReport;
/**
 * 验证同步安全性
 *
 * 硬性阻断规则：
 *   - core knowledge 资产被覆盖 => 阻断
 *   - 用户已修改资产被覆盖 => 阻断
 *   - apply=true 但 confirm=false（涉及用户已修改资产时） => 阻断
 *
 * @returns 安全检查结果
 */
export declare function validateSyncSafety(assets: TemplateAssetVersion[]): {
    safe: boolean;
    blocked: string[];
    reason?: string;
};
//# sourceMappingURL=template_sync.d.ts.map