export declare function assertSafeRelativePath(relativePath: string, allowInstallerState?: boolean): void; export interface RootIdentity { readonly canonicalPath: string; readonly dev: string; readonly ino: string; } export interface PathIdentity { readonly dev: string; readonly ino: string; readonly kind: 'file' | 'directory'; } export interface StableFileBytes { readonly bytes: Buffer; readonly identity: PathIdentity; } export declare class NodeFileSystem { exists(absolutePath: string): Promise; readText(absolutePath: string): Promise; readBytes(absolutePath: string): Promise; readStableBytes(absolutePath: string, betweenObservations?: () => void | Promise): Promise; readNames(absolutePath: string): Promise; ensureDirectory(absolutePath: string): Promise; createDirectoryExclusive(absolutePath: string): Promise; rootIdentity(root: string): Promise; pathIdentity(absolutePath: string): Promise; writeTextCreate(absolutePath: string, content: string): Promise; writeBytesCreate(absolutePath: string, content: Uint8Array): Promise; appendTextDurable(absolutePath: string, content: string): Promise; writeTextAtomic(absolutePath: string, content: string, fault?: (phase: 'after-temp-sync' | 'before-rename' | 'after-rename') => void | Promise): Promise; removeFile(absolutePath: string): Promise; removeTree(absolutePath: string): Promise; removeEmptyDirectory(absolutePath: string): Promise; assertNoSymlinkOrCaseCollision(root: string, relativePath: string, allowInstallerState?: boolean): Promise; } export declare function pruneEmptyParents(root: string, absoluteFile: string, filesystem: NodeFileSystem): Promise; export declare function treeHash(root: string, options?: { readonly includeInstallerState?: boolean; }): Promise;