import { type NpmRegistryClient } from "@superblocksteam/vite-plugin-file-sync/npm-registry"; import { type Logger } from "../telemetry/logging.js"; /** * The dev-server image ships each template's node_modules twice: npm's tree, * and inside it at `node_modules/.pnpm-seed` the same packages laid out by * pnpm. Without the pnpm tree, an app converted to pnpm replaces npm's tree on * every fresh pod (~23s for app-fullstack); with it, pnpm only installs what * the app changed. * * A pnpm app whose node_modules pnpm didn't lay out (no `.modules.yaml`) gets * the pnpm tree renamed into place, with npm's tree moved inside it at * `node_modules/.npm-tree`. The tree an app doesn't use stays where it is: * inside node_modules, which npm, pnpm, file watchers and file sync all skip, * and it goes with the pod. Deleting it in the background made the install * it ran next to 1 to 3s slower in a gVisor pod. Best-effort: when this * fails, the install is only slower. */ export declare function usePnpmSeed(cwd: string, isPnpm: boolean, logger: Logger): Promise; export declare function installPackages(cwd: string, logger: Logger, npmRegistryClient?: NpmRegistryClient): Promise; /** * Resolve whether the org routes installs through a configured npm registry, as * a tri-state mirroring AppShell's `deriveHasAnyRegistryConfigured` * (`shell.ts`): `configured`/`stale` → `true` (rows known to exist), * `not-configured` → `false` (deliberate "no rows"), `unreachable` → * `undefined` ("we don't know" — renderers fall back to the default variant). * Left `undefined` when no client is wired in or the resolution itself throws. * * Single derivation site shared by the startup-install classifier * (`buildInstallParseContext`) and the CLI auto-upgrade path, so both classify * a registry-blocked failure the same way. */ export declare function resolveHasAnyRegistryConfigured(npmRegistryClient?: NpmRegistryClient): Promise; //# sourceMappingURL=install-packages.d.mts.map