UNPKG

expo-geofencing

Version:

Production-ready geofencing and activity recognition for Expo React Native with offline support, security features, and enterprise-grade reliability

119 lines (118 loc) 3.35 kB
export interface GeofenceEvent { id: string; regionId: string; eventType: 'enter' | 'exit'; timestamp: number; latitude: number; longitude: number; accuracy?: number; userId?: string; metadata?: Record<string, any>; } export interface ActivityEvent { id: string; activity: string; confidence: number; timestamp: number; latitude?: number; longitude?: number; userId?: string; } export interface SystemHealthEvent { id: string; type: 'health_alert' | 'status_change' | 'error'; title: string; message: string; timestamp: number; severity: 'low' | 'medium' | 'high' | 'critical'; metadata?: Record<string, any>; } export interface AnalyticsData { events: GeofenceEvent[]; activities: ActivityEvent[]; healthEvents: SystemHealthEvent[]; summary: { totalEvents: number; totalActivities: number; totalHealthEvents: number; dateRange: { start: number; end: number; }; mostActiveRegions: { regionId: string; count: number; }[]; mostCommonActivities: { activity: string; count: number; }[]; }; } export interface DataManagerConfig { encryptData: boolean; encryptionKey?: string; maxEvents: number; maxActivities: number; maxHealthEvents: number; retentionDays: number; exportFormats: ('json' | 'csv')[]; anonymizeData: boolean; autoCleanup: boolean; } export declare class DataManager { private config; private encryptionKey; private static readonly STORAGE_KEYS; constructor(config?: Partial<DataManagerConfig>); storeGeofenceEvent(event: Omit<GeofenceEvent, 'id'>): Promise<string>; storeActivityEvent(event: Omit<ActivityEvent, 'id'>): Promise<string>; storeHealthEvent(event: Omit<SystemHealthEvent, 'id'>): Promise<string>; getGeofenceEvents(filter?: { regionId?: string; eventType?: 'enter' | 'exit'; startTime?: number; endTime?: number; userId?: string; }): Promise<GeofenceEvent[]>; getActivityEvents(filter?: { activity?: string; startTime?: number; endTime?: number; userId?: string; }): Promise<ActivityEvent[]>; getHealthEvents(filter?: { type?: string; severity?: string; startTime?: number; endTime?: number; }): Promise<SystemHealthEvent[]>; generateAnalytics(timeRange?: { start: number; end: number; }): Promise<AnalyticsData>; exportData(format: 'json' | 'csv', timeRange?: { start: number; end: number; }): Promise<string>; clearAllData(): Promise<void>; clearExpiredData(): Promise<void>; queueForSync(type: string, data: any): Promise<void>; getSyncQueue(): Promise<any[]>; clearSyncQueue(): Promise<void>; setUserConsent(consent: { location: boolean; analytics: boolean; storage: boolean; timestamp: number; version: string; }): Promise<void>; getUserConsent(): Promise<any>; private saveData; private loadData; private generateId; private generateEncryptionKey; private anonymizeCoordinate; private convertToCSV; private setupAutoCleanup; }