/**
 * System-memory probing for memory-adaptive render behaviour.
 *
 * The render pipeline tunes itself to the host's RAM in several places —
 * frame-cache sizes (`config.ts`), Chrome heap + GPU budget flags
 * (`browserManager.ts`), and worker count (`parallelCoordinator.ts`).
 * They all need the same "how much memory does this box have" reading, so
 * it lives here once instead of being re-derived inline.
 */
/** Parse cgroup v2/v1 memory limits from sysfs file contents into MiB. */
export declare function parseCgroupLimitMb(v2Content: string | null, v1Content: string | null): number | null;
/** Test-only: reset the cached cgroup memory probe. */
export declare function _resetCgroupLimitCacheForTests(): void;
/**
 * Actual Linux cgroup memory ceiling in MiB, or null when the process is not
 * cgroup-limited. Unlike getSystemTotalMb this never falls back to host RAM.
 */
export declare function getCgroupMemoryLimitMb(): number | null;
/** Total physical RAM in MiB. */
export declare function getSystemTotalMb(): number;
/**
 * Total-RAM ceiling (MiB) at or below which the host is treated as
 * memory-constrained. Tuned to the 8 GB laptops in
 * heygen-com/hyperframes#1218 / #1219: on those boxes the default render
 * shape (probe Chrome + a throwaway calibration Chrome + N capture
 * workers) thrashes, so the pipeline collapses to its cheapest form.
 *
 * `<=` deliberately includes machines that report exactly 8192 MiB —
 * real "8 GB" hardware reports anywhere from ~7600 to 8192 MiB once
 * firmware/integrated-GPU reservations are subtracted, and a strict `<`
 * would skip the optimisation on the very hardware that needs it.
 */
export declare const LOW_MEMORY_TOTAL_MB_THRESHOLD = 8192;
/**
 * True when the host should run the low-memory render profile.
 *
 * Keyed on total physical RAM, not free memory: free memory swings
 * moment to moment and is underreported on macOS, whereas total RAM is a
 * stable proxy for "how many concurrent Chrome instances can this box
 * survive". Accepts an explicit `totalMb` so callers (and tests) can pass
 * a known value instead of re-probing.
 *
 * Caveat: Linux cgroup v1/v2 memory limits are consulted when readable, so
 * Docker and serverless runtimes, including Lambda tiers with readable cgroup
 * ceilings, inherit the tighter container limit instead of the host's physical
 * RAM. Environments that hide cgroup files should set
 * `PRODUCER_LOW_MEMORY_MODE` explicitly rather than relying on auto-detection.
 * Hosts whose *effective* total RAM is genuinely <= the threshold (laptops,
 * small VMs, small Lambda tiers, small containers) are detected correctly.
 */
export declare function isLowMemorySystem(totalMb?: number): boolean;
//# sourceMappingURL=systemMemory.d.ts.map