import * as T from '../../../base/lib/types'; import { MountOptions } from '../util/SubContainer'; type MountArray = { mountpoint: string; options: MountOptions; }[]; type SharedOptions = { /** The path within the resource to mount. Use `null` to mount the entire resource */ subpath: string | null; /** Where to mount the resource. e.g. /data */ mountpoint: string; /** * Whether to mount this as a file or directory * * defaults to "directory" * */ type?: 'file' | 'directory' | 'infer'; }; type VolumeOpts = { /** The ID of the volume to mount. Must be one of the volume IDs defined in the manifest */ volumeId: Manifest['volumes'][number]; /** Whether or not the resource should be readonly for this subcontainer */ readonly: boolean; } & SharedOptions; type DependencyOpts = { /** The ID of the dependency */ dependencyId: Manifest['id']; /** The ID of the volume to mount. Must be one of the volume IDs defined in the manifest of the dependency */ volumeId: Manifest['volumes'][number]; /** Whether or not the resource should be readonly for this subcontainer */ readonly: boolean; } & SharedOptions; /** * Immutable builder for declaring filesystem mounts into a subcontainer. * * Supports mounting volumes, static assets, dependency volumes, and backup directories. * Each `mount*` method returns a new `Mounts` instance (immutable builder pattern). * * @typeParam Manifest - The service manifest type * @typeParam Backups - Tracks whether backup mounts have been added (type-level flag) */ export declare class Mounts { readonly volumes: VolumeOpts[]; readonly assets: SharedOptions[]; readonly dependencies: DependencyOpts[]; readonly backups: Backups[]; private constructor(); /** * Create an empty Mounts builder with no mounts configured. * @returns A new Mounts instance ready for chaining mount declarations */ static of(): Mounts; /** * Add a volume mount from the service's own volumes. * @param options - Volume ID, mountpoint, readonly flag, and optional subpath * @returns A new Mounts instance with this volume added */ mountVolume(options: VolumeOpts): Mounts; /** * Add a read-only mount of the service's packaged static assets. * @param options - Mountpoint and optional subpath within the assets directory * @returns A new Mounts instance with this asset mount added */ mountAssets(options: SharedOptions): Mounts; /** * Add a mount from a dependency package's volume. * @param options - Dependency ID, volume ID, mountpoint, readonly flag, and optional subpath * @returns A new Mounts instance with this dependency mount added */ mountDependency(options: DependencyOpts): Mounts; /** * Add a mount of the backup directory. Only valid during backup/restore operations. * @param options - Mountpoint and optional subpath within the backup directory * @returns A new Mounts instance with this backup mount added */ mountBackups(options: SharedOptions): Mounts; /** * Compile all declared mounts into the low-level mount array consumed by the subcontainer runtime. * @throws If any two mounts share the same mountpoint * @returns An array of `{ mountpoint, options }` objects */ build(): MountArray; } export {};