import * as fs from 'node:fs/promises'; import * as T from '../../../base/lib/types'; /** * Common interface for objects that have a subpath method (Volume, SubContainer, etc.) */ export interface PathBase { subpath(path: string): string; } /** * @description Represents a volume in the StartOS filesystem. * Provides utilities for reading and writing files within the volume. */ export declare class Volume implements PathBase { readonly id: Id; /** * The absolute path to this volume's root directory */ readonly path: string; constructor(id: Id); /** * Get the absolute path to a file or directory within this volume * @param subpath Path relative to the volume root */ subpath(subpath: string): string; /** * @description Read a file from this volume * @param subpath Path relative to the volume root (e.g. "config.json" or "/data/file.txt") * @param options Optional read options (same as node:fs/promises readFile) */ readFile(subpath: string, options?: Parameters[1]): Promise; /** * @description Write a file to this volume * @param subpath Path relative to the volume root (e.g. "config.json" or "/data/file.txt") * @param data The data to write * @param options Optional write options (same as node:fs/promises writeFile) */ writeFile(subpath: string, data: string | NodeJS.ArrayBufferView | Iterable | AsyncIterable, options?: Parameters[2]): Promise; } /** * Type-safe volumes object that provides Volume instances for each volume defined in the manifest */ export type Volumes = { [K in Manifest['volumes'][number]]: Volume; }; /** * Creates a type-safe volumes object from a manifest */ export declare function createVolumes(manifest: Manifest): Volumes;