import { getGeolocationProNative } from '../native/getNativeModule'; type NativePedometer = { pedometerIsSupported?: () => Promise>; pedometerStart?: (sessionId: string | null) => Promise>; pedometerStop?: () => Promise>; pedometerGetSnapshot?: () => Promise>; pedometerOnAppForeground?: () => void; pedometerGetDiagnostics?: () => Promise>; }; let cached: NativePedometer | null = null; /** Lazy native resolve — avoids throwing at import time if module loads later. */ export function getPedometerNative(): NativePedometer | null { if (cached) return cached; try { const n = getGeolocationProNative(); if (n && typeof n === 'object') { cached = n as NativePedometer; return cached; } } catch { /* not linked yet */ } return null; } export async function callNative( method: keyof NativePedometer, fallback: T, invoke: (native: NativePedometer) => Promise, ): Promise { const native = getPedometerNative(); if (!native || typeof native[method] !== 'function') { return fallback; } try { return await invoke(native); } catch { return fallback; } }