import type { TurboModule } from 'react-native'; import { TurboModuleRegistry } from 'react-native'; export interface Spec extends TurboModule { // Lifecycle ready(config: Object): Promise; start(): Promise; stop(): Promise; startGeofences(): Promise; startPeriodic(): Promise; getState(): Promise; setConfig(config: Object): Promise; reset(config?: Object): Promise; // Location getCurrentPosition(options: Object): Promise; getLastKnownLocation(options?: Object): Promise; watchPosition(options: Object): Promise; stopWatchPosition(watchId: number): Promise; changePace(isMoving: boolean): Promise; getOdometer(): Promise; setOdometer(value: number): Promise; // Geofencing addGeofence(geofence: Object): Promise; addGeofences(geofences: Object[]): Promise; removeGeofence(identifier: string): Promise; removeGeofences(): Promise; getGeofences(): Promise; getGeofence(identifier: string): Promise; geofenceExists(identifier: string): Promise; // Persistence getLocations(query?: Object): Promise; getCount(): Promise; destroyLocations(): Promise; destroyLocation(uuid: string): Promise; insertLocation(location: Object): Promise; // HTTP Sync sync(): Promise; // Permissions requestPermission(): Promise; getPermissionStatus(): Promise; requestNotificationPermission(): Promise; getNotificationPermissionStatus(): Promise; requestMotionPermission(): Promise; getMotionPermissionStatus(): Promise; requestTemporaryFullAccuracy(purposeKey: string): Promise; canScheduleExactAlarms(): Promise; // Utilities isPowerSaveMode(): Promise; getProviderState(): Promise; getSensors(): Promise; getDeviceInfo(): Promise; } export default TurboModuleRegistry.getEnforcing('TraceletReactNative');