export declare const HEAVY_NPM_DEPS: readonly ["webdriverio", "appium", "appium-chromium-driver", "appium-geckodriver", "appium-safari-driver", "sharp", "@ffmpeg-installer/ffmpeg", "@puppeteer/browsers", "geckodriver", "pixelmatch", "pngjs"];
export type HeavyDepName = (typeof HEAVY_NPM_DEPS)[number];
/**
 * Optional peer dependencies that npm will NOT auto-install, but a heavy dep
 * needs for full functionality. `@puppeteer/browsers@3` moved `proxy-agent`
 * from a regular dependency (2.x) to an `optional` peer, so a bare
 * `npm install @puppeteer/browsers` into <cacheDir>/runtime omits it and
 * proxy-based browser downloads break. We install each companion alongside
 * its owner so the cached install matches what 2.x shipped.
 */
export declare const RUNTIME_PEER_COMPANIONS: Record<string, string[]>;
/**
 * Expand a list of runtime package names to include any peer companions
 * (see RUNTIME_PEER_COMPANIONS), preserving order and de-duplicating.
 */
export declare function withPeerCompanions(names: string[]): string[];
export interface ShimPackageJson {
    ddRuntimeDependencies?: Record<string, string>;
    optionalDependencies?: Record<string, string>;
    dependencies?: Record<string, string>;
}
/**
 * Returns the version constraint declared in the shim's own package.json
 * for `name`. The version source differs between the published package and
 * a source/CI checkout, so we check in priority order:
 *   1. `ddRuntimeDependencies` — the published state. The publish step moves the
 *      heavy deps here so npm never auto-installs them.
 *   2. `optionalDependencies` — the source/CI state (kept for Dependabot).
 *   3. `dependencies` — the legacy state, pre lazy-install migration.
 * The first non-empty match wins.
 *
 * Throws for unknown names; the resolver is the only caller and a missing
 * entry is a programming error, not a user-facing one.
 */
export declare function getDeclaredVersion(name: string): string;
/**
 * Pure field-priority resolution, split out from getDeclaredVersion so it can
 * be unit-tested against synthetic manifests without touching the filesystem.
 */
export declare function resolveDeclaredVersion(pkg: ShimPackageJson, name: string): string;
/** Test seam: drop the cached package.json read. */
export declare function _resetCacheForTests(): void;
/**
 * Minimal semver-range check covering the shapes that appear in this
 * repo's `package.json#optionalDependencies`: exact `X.Y.Z`, caret
 * `^X.Y.Z`, tilde `~X.Y.Z`. Anything else (`>=`, `||`, `*`, etc.)
 * degrades to "matches" so callers don't surface false positives.
 *
 * Pulling in the full `semver` package would put a runtime dep into
 * the shim we're explicitly trying to keep lean; this is sufficient
 * for the use sites that compare installed-cache versions against
 * declared ranges.
 */
export declare function satisfiesRange(installed: string, range: string): boolean;
//# sourceMappingURL=heavyDeps.d.ts.map