import type { DebugLogFn } from "../debug.js"; import type { DnsOptions, HttpFetch, HttpHooks } from "../qemu/contracts.js"; import type { SshOptions } from "../qemu/ssh.js"; import type { TcpOptions } from "../qemu/tcp.js"; import type { RootfsMode } from "../build/config.js"; import type { SandboxServerOptions } from "../sandbox/server-options.js"; import type { VirtualProvider } from "../vfs/node/index.js"; import type { VfsHooks } from "../vfs/provider.js"; export type EnvInput = string[] | Record; export type VmVfsOptions = { /** mount map (guest path -> provider) */ mounts?: Record; /** vfs hook callbacks */ hooks?: VfsHooks; /** guest path for the fuse mount (default: "/data") */ fuseMount?: string; }; export type VmRootfsOptions = { /** rootfs write mode */ mode?: RootfsMode; /** minimum virtual disk size (`bytes`, or `K`/`M`/`G`/`T` suffix) */ size?: string | number; }; export type VMOptions = { /** sandbox controller options */ sandbox?: SandboxServerOptions; /** rootfs mode override */ rootfs?: VmRootfsOptions; /** whether to boot the vm immediately (default: true) */ autoStart?: boolean; /** http fetch implementation for asset downloads */ fetch?: HttpFetch; /** http interception hooks */ httpHooks?: HttpHooks; /** dns configuration */ dns?: DnsOptions; /** ssh egress configuration */ ssh?: SshOptions; /** explicit host-mapped tcp egress configuration */ tcp?: TcpOptions; /** max intercepted http request body size in `bytes` */ maxHttpBodyBytes?: number; /** max buffered upstream http response body size in `bytes` */ maxHttpResponseBodyBytes?: number; /** whether to allow WebSocket upgrades for guest egress (default: true) */ allowWebSockets?: boolean; /** vfs configuration (null disables vfs integration) */ vfs?: VmVfsOptions | null; /** default environment variables */ env?: EnvInput; /** vm memory size (qemu syntax, default: "1G") */ memory?: string; /** vm cpu count (default: 2) */ cpus?: number; /** startup timeout while waiting for guest readiness in `ms` (`<= 0` disables timeout) */ startTimeoutMs?: number; /** session label for `gondolin list` */ sessionLabel?: string; /** debug log callback */ debugLog?: DebugLogFn | null; }; //# sourceMappingURL=types.d.ts.map