/**
 * FileDeployer — 统一文件部署引擎
 *
 * 根据 FileManifest 中的策略，部署文件到用户项目。
 * SetupService 和 UpgradeService 共享此引擎，消除所有重复代码。
 *
 * 策略实现：
 *   overwrite        — mkdirSync + copyFileSync
 *   overwrite-dir    — 递归复制目录中的所有文件
 *   signature-safe   — safeCopyFile（签名匹配才覆盖）
 *   create-only      — 仅在文件不存在时复制
 *   merge-json       — 读取现有 JSON，合并 autosnippet 键，写回
 *   merge-gitignore  — 增量追加缺失规则 + 迁移旧格式
 *   backup-overwrite — 备份旧文件再覆盖
 *   inject-marker    — 在 <!-- autosnippet:begin/end --> 标记间注入
 *   generate         — 调用自定义生成函数
 */
/** Manifest entry type */
interface ManifestEntry {
    id: string;
    src?: string;
    dest: string | null;
    strategy: string;
    on: string;
    category?: string;
    jsonKey?: string;
    chmod?: boolean;
    generate?: string;
    fallback?: string;
    resolveDest?: string;
    cleanup?: string[];
    requireDir?: string;
}
export declare class FileDeployer {
    force: boolean;
    projectName: string;
    projectRoot: string;
    /** @param {{ projectRoot: string, force?: boolean }} options */
    constructor({ projectRoot, force }: {
        projectRoot: string;
        force?: boolean;
    });
    /**
     * 部署所有适用的文件
     * @param options 可选过滤部署的 category
     * @returns > }}
     */
    deployAll(mode: 'setup' | 'upgrade', { filter }?: {
        filter?: string[];
    }): {
        deployed: string[];
        skipped: string[];
        errors: {
            id: string;
            error: string;
        }[];
    };
    /** 按 category 部署 */
    deployCategory(category: string, mode: 'setup' | 'upgrade'): {
        deployed: string[];
        skipped: string[];
        errors: {
            id: string;
            error: string;
        }[];
    };
    /**
     * @param entry Manifest 条目
     * @returns 是否实际写入了文件
     */
    _deployOne(entry: ManifestEntry, mode: 'setup' | 'upgrade'): boolean;
    /** overwrite — AutoSnippet 完全拥有，始终覆盖 */
    _strategyOverwrite(entry: ManifestEntry): boolean;
    /** overwrite-dir — 递归覆盖目录 */
    _strategyOverwriteDir(entry: ManifestEntry): boolean;
    /** signature-safe — 有 AutoSnippet 签名才覆盖 */
    _strategySignatureSafe(entry: ManifestEntry, mode: 'setup' | 'upgrade'): boolean;
    /** create-only — 仅在不存在时创建 */
    _strategyCreateOnly(entry: ManifestEntry): boolean;
    /** merge-json — 读取现有 JSON，合并 autosnippet 键 */
    _strategyMergeJson(entry: ManifestEntry): boolean;
    /**
     * merge-gitignore — section-based 管理
     *
     * 设计：用 BEGIN/END 标记包裹 AutoSnippet 规则块，整块替换。
     * - 首次：追加 section 到文件末尾
     * - 升级：替换已有 section（规则变更自动生效）
     * - 迁移：清理旧版逐行追加的散落规则
     */
    _strategyMergeGitignore(_entry: ManifestEntry): boolean;
    /** backup-overwrite — 备份旧文件后覆盖 */
    _strategyBackupOverwrite(entry: ManifestEntry): boolean;
    /** inject-marker — 在 autosnippet:begin/end 标记间注入 */
    _strategyInjectMarker(entry: ManifestEntry): boolean;
    /** generate — 自定义生成逻辑 */
    _strategyGenerate(entry: ManifestEntry): boolean;
    _generators: Record<string, (this: FileDeployer) => boolean | void>;
    _resolvers: Record<string, (this: FileDeployer) => string | null>;
    /** 递归复制目录 */
    _copyDirRecursive(srcDir: string, destDir: string, chmod?: boolean): boolean;
    /** chmod +x */
    _chmodExec(filePath: string): void;
    /** 异步触发 Cursor Delivery Pipeline */
    _triggerCursorDeliveryAsync(): Promise<void>;
}
export default FileDeployer;
