dumon-geolocation/dist/esm/definitions.d.ts
2025-10-13 00:21:31 +08:00

94 lines
3.0 KiB
TypeScript

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;
predicted?: boolean;
}
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;
}
export interface PermissionStatus {
location: 'granted' | 'denied';
wifi: 'granted' | 'denied';
}
export interface DumonGeolocationPlugin {
startPositioning(): Promise<void>;
stopPositioning(): Promise<void>;
getLatestPosition(): Promise<PositioningData>;
checkAndRequestPermissions(): Promise<PermissionStatus>;
setOptions(options: DumonGeoOptions): Promise<void>;
getGnssStatus(): Promise<SatelliteStatus | null>;
getLocationServicesStatus(): Promise<{
gpsEnabled: boolean;
networkEnabled: boolean;
}>;
startBackgroundTracking(options?: {
title?: string;
text?: string;
channelId?: string;
channelName?: string;
postUrl?: string;
}): Promise<void>;
stopBackgroundTracking(): Promise<void>;
isBackgroundTrackingActive(): Promise<{
active: boolean;
}>;
getBackgroundLatestPosition(): Promise<PositioningData | null>;
openBackgroundPermissionSettings(): Promise<void>;
openNotificationPermissionSettings(): Promise<void>;
setAuthTokens(tokens: {
accessToken: string;
refreshToken: string;
}): Promise<void>;
clearAuthTokens(): Promise<void>;
getAuthState(): Promise<{
present: boolean;
}>;
setBackgroundPostUrl(options: {
url?: string;
}): Promise<void>;
getBackgroundPostUrl(): Promise<{
url: string | null;
}>;
configureEdgeToEdge(options: {
bgColor: string;
style: 'DARK' | 'LIGHT';
overlay?: boolean;
}): Promise<void>;
setGpsMode(options: {
mode: 'normal' | 'driving';
}): Promise<void>;
addListener(eventName: 'onPositionUpdate', listenerFunc: (data: PositioningData) => void): PluginListenerHandle;
addListener(eventName: 'onGnssStatus', listenerFunc: (data: SatelliteStatus) => void): PluginListenerHandle;
}