/** * CaptureFrameCounterOverlay — a live "k / n" keyframe counter shown at the * user-perceived BOTTOM-CENTRE during a panorama capture. * * ┌──────────────────────────────────────────────────┐ * │ (camera preview / pan in progress) │ * │ │ * │ ● 3 / 6 │ ← bottom-centre * └──────────────────────────────────────────────────┘ * * Replaces the time countdown (item 5) as the primary capture HUD: instead * of "seconds left" it shows how many keyframes have been captured out of * the configured maximum, so the user can see the capture filling up and * understand WHY it auto-finalizes at the cap (the parent stops + stitches * when `framesCaptured` reaches `framesMax`). * * Pure-presentational + `pointerEvents="none"` (never steals taps); renders * nothing when `!visible` so the host can mount it unconditionally. Pins * itself to the user-perceived BOTTOM-CENTRE across all four orientations AND * both host configs, via the shared {@link placeAtUserEdge} model: it combines * the physical device orientation with the measured `jsLandscape` (whether the * OS already rotated the framebuffer) so a portrait-LOCKED host (device tilted) * and a NON-locked host (framebuffer rotated) both render identically — upright * at the user's bottom-centre. The status pill ({@link CaptureStatusOverlay}) * anchors to the top-centre by the same model, so the two never collide. */ import React from 'react'; import { type StyleProp, type ViewStyle } from 'react-native'; import { type DeviceOrientation } from './useDeviceOrientation'; export interface CaptureFrameCounterOverlayProps { /** Show / hide. Driven by the host while a capture is recording. */ visible: boolean; /** Keyframes accepted so far this capture (the engine's live count). */ framesCaptured: number; /** Configured keyframe cap — the capture auto-finalizes when reached. */ framesMax: number; /** Physical device orientation (from `useDeviceOrientation`). */ orientation: DeviceOrientation; /** Outer style passthrough. */ style?: StyleProp; } export declare function CaptureFrameCounterOverlay({ visible, framesCaptured, framesMax, orientation, style, }: CaptureFrameCounterOverlayProps): React.JSX.Element | null; /** * Flex alignment that pins content to the user-perceived TOP-CENTRE for a * given device hold, plus the rotation that makes it read upright: * * portrait → layout top edge, centred, 0° * landscape-left → layout left edge, centred, +90° * landscape-right → layout right edge, centred, -90° * portrait-upside-down → layout bottom edge, centred, 180° * * `inset` is the distance from the user's top edge (larger values push the * content further down the screen) — exported so other top-anchored overlays * (e.g. the too-fast pill) can stack BELOW the counter by passing a bigger * inset, and stay correctly placed + upright in every orientation. */ export declare function topCenterForOrientation(orientation: DeviceOrientation, inset: number): { container: ViewStyle; rotate: string; }; //# sourceMappingURL=CaptureFrameCounterOverlay.d.ts.map