import { type SpillId, type SpillOptions, type SpillRecord, type SpillState } from './spillover-types.js'; /** * Defense-in-depth: assert the given path is NOT a symbolic link. * * Symlinks pointing outside the spill directory could be used to bypass * the containment check (assertInside). This function uses lstat (which * does NOT follow symlinks) to detect symbolic links and reject them. * * Note: this check is redundant with the entry.isFile() check in * listSpills() (which rejects symlinks on most platforms), but * provides belt-and-suspenders defense for the writeRecord and * hydrate entry points. */ export declare function assertNotSymlink(path: string): void; export declare function spillDir(projectRoot: string, sessionId: string): string; export declare function spillPath(projectRoot: string, sessionId: string, spillId: SpillId): string; export declare function createSpillId(now?: Date): SpillId; export declare function spill(options: SpillOptions, payload: Readonly>): SpillRecord; export declare function hydrate(projectRoot: string, sessionId: string, spillId: SpillId): SpillRecord | null; export declare function listSpills(projectRoot: string, sessionId: string, options?: { readonly state?: SpillState; }): readonly SpillRecord[]; export declare function pruneExpiredSpills(projectRoot: string, sessionId: string): readonly string[];