/** * CaptureMemoryPill — top-right diagnostic pill showing native * process memory footprint in MB, polled at 500 ms. * * Color-coded against the device's per-process memory budget, which is read * once at mount via `getDeviceTotalRamMB()` (RAM-aware): * * budget = max(RAM × 0.42, 900 MB) (mirrors warp_guard.hpp * perProcessMemoryBudgetMB) * - green < 55 % of budget (comfortable) * - amber 55–70 % of budget (approaching pressure) * - red > 70 % of budget (close to limit — capture may be killed) * * Why RAM-aware: the old fixed 1500/2200 MB thresholds were tuned for the * iPhone 16 Pro and NEVER tripped on a 4 GB Android phone that jetsams ~1.3 GB * (false comfort exactly where OOM happens). Falls back to 1500/2200 if the * RAM read is unavailable. * * Backed by the `getMemoryFootprintMB()` native module (iOS: * `task_info(TASK_VM_INFO)` `phys_footprint`; Android: `/proc/self/statm` RSS * — resident pages, unthrottled — the SAME number the C++ `[memstat]` logs * report). Returns -1 if the native call fails. * * Mount this pill inside a `settings.debug`-gated branch — it * polls native every 500 ms and is unwanted in production builds. */ import React from 'react'; import { type StyleProp, type ViewStyle } from 'react-native'; export interface CaptureMemoryPillProps { /** Top inset (status bar / notch). Pill pinned `topInset + 56`. */ topInset?: number; /** Polling interval in ms. Default 500. Lower wastes battery * for no visible benefit; higher loses correlation with capture * activity. */ pollIntervalMs?: number; /** * Optional position override. When supplied it REPLACES the default * top-right anchor (`top: topInset + 56, right: 12`), so the pill can be * reused on other screens (e.g. the crop/preview surface) without colliding * with their own corner UI. Pass the full absolute position you want. */ style?: StyleProp; } export declare function CaptureMemoryPill({ topInset, pollIntervalMs, style, }: CaptureMemoryPillProps): React.JSX.Element | null; //# sourceMappingURL=CaptureMemoryPill.d.ts.map