import type { SyncCmdDeps } from '../../../shared/common/sync/sync-deps.type.js'; import { SyncSkillsResult } from './sync-skills.types.js'; import type { SyncSkillsFileEntry, SyncSkillsOptions } from './sync-skills.types.js'; /** * @purpose Recursively scan sourceDir for skill directories and return a map of skillName → {relativePath → Buffer}. * @param sourceDir Source directory (ai/skills/). * @param [skillNames] Optional filter: only scan these skill names. * @throws If a requested skillName does not exist in sourceDir. * @returns Map of skill names to their file contents. */ export declare function scanSkills(sourceDir: string, skillNames?: string[]): Map>; /** * @purpose Compare a single source file with its target counterpart and produce a file entry. * @param skillName Skill directory name. * @param relativePath File path relative to skill root. * @param sourceData Source file contents. * @param targetData Target file contents (undefined if absent). * @param targetSkillDir Absolute path to target skill directory. * @param dryRun When true, skips actual file writes. * @param writeFile Injectable file writer. * @param mkdir Injectable directory creator. * @returns SyncSkillsFileEntry with comparison result. */ export declare function syncFile(skillName: string, relativePath: string, sourceData: Buffer, targetData: Buffer | undefined, targetSkillDir: string, dryRun: boolean, writeFile: (path: string, data: Buffer) => void, mkdir: (path: string, opts?: { recursive: boolean; }) => void): SyncSkillsFileEntry; /** * @purpose Recursively collect file paths in an orphan skill directory for deletion reporting. * @param dir Orphan skill directory path. * @param deps Injectable filesystem dependencies. * @returns Array of relative file paths inside the orphan directory. */ export declare function collectOrphanFiles(dir: string, deps: SyncCmdDeps): string[]; /** * @purpose Delete a single orphan skill from the target directory. * @param skillName Orphan skill name. * @param targetDir Absolute path to the target skills directory. * @param dryRun When true, only produces preview entries. * @param deps Injectable filesystem dependencies. * @returns Array of SyncSkillsFileEntry for the deleted (or deleteFailed) skill. */ export declare function deleteOrphan(skillName: string, targetDir: string, dryRun: boolean, deps: SyncCmdDeps): SyncSkillsFileEntry[]; /** * @purpose Main entry point: compare source skills with target, handle orphan deletion. * @param deps Injectable filesystem dependencies (SyncCmdDeps). * @param opts Sync-skills options. * @throws On invalid sourceDir, unwritable target, or write failures. * @returns SyncSkillsResult with entries and computed summaries. */ export declare function collectAndCompareSkills(deps: SyncCmdDeps, opts: SyncSkillsOptions): SyncSkillsResult;