UNPKG

expo-geofencing

Version:

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

122 lines (121 loc) 3.42 kB
export interface PrivacyZone { id: string; name: string; type: 'hospital' | 'government' | 'school' | 'religious' | 'residential' | 'custom'; center: { latitude: number; longitude: number; }; radius: number; bufferZone?: number; isActive: boolean; metadata?: Record<string, any>; } export interface SecurityConfig { encryptionEnabled: boolean; encryptionKey?: string; dataAnonymization: boolean; privacyZonesEnabled: boolean; minAccuracy: number; locationPrecisionReduction: number; auditLogging: boolean; sensitiveDataMasking: boolean; certificatePinning?: { domains: string[]; certificates: string[]; }; } export interface AuditLogEntry { id: string; timestamp: number; action: string; userId?: string; locationData?: { latitude: number; longitude: number; accuracy: number; }; metadata?: Record<string, any>; hash: string; } export interface LocationProcessingResult { allowed: boolean; processedLocation?: { latitude: number; longitude: number; accuracy: number; }; violations: string[]; appliedPolicies: string[]; } export declare class SecurityManager { private config; private privacyZones; private auditLog; private encryptionKey; constructor(config?: Partial<SecurityConfig>); addPrivacyZone(zone: Omit<PrivacyZone, 'id'>): string; removePrivacyZone(zoneId: string): boolean; updatePrivacyZone(zoneId: string, updates: Partial<PrivacyZone>): boolean; getPrivacyZones(): PrivacyZone[]; getActivePrivacyZones(): PrivacyZone[]; processLocation(location: { latitude: number; longitude: number; accuracy: number; timestamp?: number; userId?: string; }): LocationProcessingResult; private checkPrivacyZoneViolations; private applyLocationProcessingPolicies; private shouldProcessDespiteViolations; private getAppliedPolicies; encryptData(data: any): string; decryptData<T>(encryptedData: string): T; anonymizeLocation(location: { latitude: number; longitude: number; accuracy: number; }): { latitude: number; longitude: number; accuracy: number; }; reducePrecision(location: { latitude: number; longitude: number; accuracy: number; }, decimalPlaces: number): { latitude: number; longitude: number; accuracy: number; }; private calculatePrecisionAccuracy; maskSensitiveData(data: any): any; private maskValue; private logAuditEvent; getAuditLog(filter?: { action?: string; userId?: string; startTime?: number; endTime?: number; }): AuditLogEntry[]; verifyAuditLogIntegrity(): { valid: boolean; corruptedEntries: string[]; }; private generateAuditHash; validateCertificate(domain: string, certificate: string): boolean; private calculateDistance; private toRadians; private generateId; private generateEncryptionKey; private initializeDefaultPrivacyZones; updateConfig(updates: Partial<SecurityConfig>): void; getConfig(): SecurityConfig; performSecurityHealthCheck(): { score: number; recommendations: string[]; issues: string[]; }; }