import { SyncResult } from './sync.types.js'; import type { SyncOptions } from './sync.types.js'; /** @purpose Entries excluded from sync: empty architecture dir, deprecated/domain-specific directives. @invariant Must be kept in sync with cli spec §3.4 exclusion list. */ export declare const EXCLUDED_ENTRIES: Set; /** @purpose DI port for SyncCore — abstracts filesystem access for testability. @invariant All deps must be provided; no optional fields. */ export interface SyncCoreDeps { /** * @purpose Read file from disk. * @param path File path. * @returns File contents as Buffer. */ readFile: (path: string) => Buffer; /** * @purpose Write file to disk. * @param path File path. * @param data File contents. */ writeFile: (path: string, data: Buffer) => void; /** * @purpose Create directory. * @param path Directory path. * @param [opts] Options. */ mkdir: (path: string, opts?: { recursive: boolean; }) => void; /** * @purpose Get file stats. * @param path File path. * @returns Stats object. */ stat: (path: string) => { isDirectory(): boolean; isFile(): boolean; }; /** * @purpose List directory contents. * @param path Directory path. * @returns File names. */ readdir: (path: string) => string[]; /** @purpose Current working directory. */ cwd: string; } /** * @purpose Locate ai/directives/ in the installed gennady package. Delegates to shared resolvePackageDir. * @param cwd Current working directory. * @param [subdir] Subdirectory inside gennady package (defaults to 'ai/directives'). * @returns Absolute path to ai/directives/ or null if the package is not found. */ export declare function resolvePackageDir(cwd: string, subdir?: string): string | null; /** * @purpose Recursively collect a list of files in sourceDir with filter and exclusion support. * @param sourceDir Source directory to scan. * @param [subdirs] Optional list of subdirectories to scan. * @throws If subdir does not exist in sourceDir. * @returns List of relative file paths. */ export declare function scanDirectives(sourceDir: string, subdirs?: string[]): string[]; /** * @purpose Main entry point: compare source and target, return SyncResult. * @param deps Injectable filesystem dependencies. * @param opts Sync options (package, target, dryRun, verbose). * @returns Sync result with file entries and summary counts. */ export declare function collectAndCompare(deps: SyncCoreDeps, opts: SyncOptions): SyncResult;