import { type CacheDirContext } from "./cacheDir.js"; import { type Logger, type SpawnFn } from "./loader.js"; import { type BrowserAssetName, type BrowserDeps } from "./browsers.js"; export type InstallAction = "installed" | "updated" | "already-up-to-date" | "forced" | "dry-run" | "skipped"; export interface InstallReport { assetId: string; kind: "npm" | "browser" | "tool"; action: InstallAction; installedVersion?: string; notes?: string[]; } export interface InstallerDeps { logger?: Logger; spawn?: SpawnFn; browserDeps?: BrowserDeps; } /** * Per-npm-child cap for bulk installs: the ~1000-package batch legitimately * outlasts the loader's 5-minute single-package default on slow runners, and * must stay under the postinstall's 10-minute outer ceiling so the * diagnosable inner timeout fires first (ADR 01035). */ export declare const BULK_INSTALL_TIMEOUT_MS: number; export interface InstallRuntimeOptions { packages?: string[]; ctx?: CacheDirContext; deps?: InstallerDeps; force?: boolean; dryRun?: boolean; /** Cap per spawned npm child; defaults to BULK_INSTALL_TIMEOUT_MS. Must be ≥ 0; `0` disables. */ installTimeoutMs?: number; } /** * Install the heavy npm packages into /runtime. With no * `packages` filter, installs the full HEAVY_NPM_DEPS set. Returns one * structured report per package — the action describes whether the install * actually fired or whether the package was already current. */ export declare function installRuntime(options?: InstallRuntimeOptions): Promise; export interface InstallBrowsersOptions { names?: BrowserAssetName[]; ctx?: CacheDirContext; deps?: InstallerDeps; force?: boolean; dryRun?: boolean; } /** * Install (or refresh) browser assets into /browsers. Without * `names`, installs every supported asset. */ export declare function installBrowsers(options?: InstallBrowsersOptions): Promise; export interface StatusRow { assetId: string; kind: "npm" | "browser" | "tool"; installed: boolean; installedVersion?: string; expectedVersion?: string; latestKnownVersion?: string; outdated: boolean; } /** * Diff what's recorded in /installed.json against the shim's * declared expectations (`package.json#optionalDependencies` for npm deps, * `latestKnownVersion` from the cache for browsers). The semver-range * check used here lives in `heavyDeps.ts` and is shared with the lazy * installer so both code paths see "satisfies the declared constraint" * the same way. */ export declare function status(ctx?: CacheDirContext): StatusRow[]; //# sourceMappingURL=installer.d.ts.map