import type { PluginListenerHandle } from '@capacitor/core'; export interface PositioningData { source: 'GNSS' | 'WIFI' | 'FUSED' | 'MOCK'; timestamp: number; latitude: number; longitude: number; accuracy: number; speed: number; acceleration: number; directionRad: number; isMocked: boolean; mode: 'normal' | 'driving'; predicted?: boolean; speedSource?: 'GNSS' | 'IMU' | 'DELTA' | 'NONE'; speedGnss?: number; speedImu?: number; speedDerived?: number; } export interface SatelliteStatus { satellitesInView: number; usedInFix: number; constellationCounts: { [key: string]: number; }; } export interface DumonGeoOptions { distanceThresholdMeters?: number; speedChangeThreshold?: number; directionChangeThreshold?: number; emitDebounceMs?: number; drivingEmitIntervalMs?: number; wifiScanIntervalMs?: number; enableWifiRtt?: boolean; enableLogging?: boolean; enableForwardPrediction?: boolean; maxPredictionSeconds?: number; emitGnssStatus?: boolean; suppressMockedUpdates?: boolean; keepScreenOn?: boolean; backgroundPollingIntervalMs?: number; backgroundPostMinDistanceMeters?: number; backgroundPostMinAccuracyMeters?: number; backgroundMinPostIntervalMs?: number; backgroundUseImuFallback?: boolean; } export interface PermissionStatus { location: 'granted' | 'denied'; wifi: 'granted' | 'denied'; } export interface DumonGeolocationPlugin { startPositioning(): Promise; stopPositioning(): Promise; getLatestPosition(): Promise; checkAndRequestPermissions(): Promise; setOptions(options: DumonGeoOptions): Promise; getGnssStatus(): Promise; getLocationServicesStatus(): Promise<{ gpsEnabled: boolean; networkEnabled: boolean; }>; startBackgroundTracking(options?: { title?: string; text?: string; channelId?: string; channelName?: string; postUrl?: string; }): Promise; stopBackgroundTracking(): Promise; isBackgroundTrackingActive(): Promise<{ active: boolean; }>; getBackgroundLatestPosition(): Promise; openBackgroundPermissionSettings(): Promise; openNotificationPermissionSettings(): Promise; setAuthTokens(tokens: { accessToken: string; refreshToken: string; }): Promise; clearAuthTokens(): Promise; getAuthState(): Promise<{ present: boolean; }>; setBackgroundPostUrl(options: { url?: string; }): Promise; getBackgroundPostUrl(): Promise<{ url: string | null; }>; configureEdgeToEdge(options: { bgColor: string; style: 'DARK' | 'LIGHT'; overlay?: boolean; }): Promise; setGpsMode(options: { mode: 'normal' | 'driving'; }): Promise; addListener(eventName: 'onPositionUpdate', listenerFunc: (data: PositioningData) => void): PluginListenerHandle; addListener(eventName: 'onGnssStatus', listenerFunc: (data: SatelliteStatus) => void): PluginListenerHandle; }