export type GraderFilesSnapshot = { /** Every file, named `/` for `recordCompletedRun`. */ files: { name: string; content: string; }[]; /** The stored directory's name under `graders/`: a hash of every path and content. */ dirName: string; }; export declare function snapshotGraderFiles(dir: string): GraderFilesSnapshot; export type TreeEntry = { rel: string; content: string; }; /** A file under the walked directory: its path relative to that directory * with `/` separators, and its absolute path. */ export type TreeFile = { rel: string; full: string; }; /** Files under `dir`, sorted by relative path, read as text. */ export declare function readTreeRefusingSymlinks(dir: string, what: string): TreeEntry[]; /** Files under `dir`, sorted by relative path with `/` separators. Symlinks * are refused: a stored copy must not depend on what a link pointed at. * `what` names the directory in the refusal ("graderFiles", "files"). */ export declare function walkTreeRefusingSymlinks(dir: string, what: string): TreeFile[];