import { type NpmRegistryFetchResult } from "@superblocksteam/vite-plugin-file-sync/npm-registry"; import { type Logger } from "../telemetry/logging.js"; /** The lockfile of whichever package manager installs this app. */ export declare function readPackageLock(cwd: string): Promise; export declare function readInstalledPackageLock(cwd: string): Promise; /** * Canonicalize a lockfile for post-install change detection. Every boot, * `stripResolvedFromLockfile` (APPS-4300) removes the `resolved` URLs and * the validation install writes them back, so comparing raw bytes flags * "changed" on EVERY registry-validation boot — re-uploading the full * workspace to DBFS forever. Dropping `resolved` from both sides of the * comparison (same npm v2+ `.packages` shape the strip targets) means only * material resolution changes — added/removed packages, version bumps, * integrity changes — trigger the upload. */ export declare function lockfileComparisonKey(raw: string | null): string | null; export declare function lockfileProvesSafeToSkipRegistryInstall(packageLock: string | null, installedPackageLock: string | null, result: NpmRegistryFetchResult, logger: Logger): boolean; //# sourceMappingURL=app-lockfile.d.mts.map