export type DiscoveredFile = { readonly relPath: string; readonly absPath: string; }; export type WalkOptions = { readonly root: string; readonly include: readonly string[]; readonly exclude: readonly string[]; readonly respectGitignore?: boolean; }; export interface IFileWalker { walk(opts: WalkOptions): Promise; } export interface IFileReader { read(absPath: string): Promise; exists(absPath: string): Promise; } export interface IFileWriter { write(absPath: string, content: string): Promise; ensureDir(absPath: string): Promise; }