fleeta-api-lib
Version:
A comprehensive library for fleet management applications - API, Auth, Device management
122 lines • 3.46 kB
TypeScript
/**
* GPS Data Provider Type Definitions
* Defines interfaces and types for GPS data processing and distribution
*
* Based on official GPS WebSocket protocol:
* - Data encoding: JSON
* - Request format: wsClient.send(JSON.stringify(payload))
* - Coordinate format: "lat_lng" (underscore separator)
* - SequenceId: UNIX timestamp milliseconds (recommended)
*/
import type { DeviceGpsInfo } from '../gps-websocket/types';
/**
* GPS Data Provider configuration interface
*/
export interface GpsDataProviderConfig {
updateThreshold: {
position: number;
speed: number;
interval: number;
};
enableCaching: boolean;
cacheSize: number;
autoFilter: {
excludeInactive: boolean;
excludeInvalidCoords: boolean;
excludeStatic: boolean;
minSpeedThreshold: number;
};
maxDevicesPerUpdate: number;
enableBatching: boolean;
batchInterval: number;
}
/**
* GPS Data request configuration for different actions
*/
export interface GpsDataRequestConfig {
action: string;
userEmail?: string;
sw?: string;
ne?: string;
psn?: string;
psnList?: string[];
groupIdList?: string[];
useCache?: boolean;
cacheTimeout?: number;
}
/**
* GPS Data Provider action types
*/
export type GpsDataProviderAction = 'gpsZoneNoAuth' | 'gpsZoneMyDevices' | 'gpsZoneAllDevices' | 'gpsZoneGroupMyDevices' | 'gpsZoneGroupAllDevices' | 'gpsPsnsMyDevices' | 'gpsPsnsSpecificDevice' | 'gpsPsnsMultiLiveView';
/**
* GPS Data statistics interface
*/
export interface GpsDataStats {
isConnected: boolean;
lastUpdateTime: Date | null;
updateCount: number;
updatesPerMinute: number;
averageUpdateInterval: number;
totalDevices: number;
activeDevices: number;
inactiveDevices: number;
videoSharingDevices: number;
processedUpdates: number;
skippedUpdates: number;
optimizationRatio: number;
errorCount: number;
lastError: string | null;
}
/**
* GPS Data Manager callback types
*/
export interface GlobalGpsStats {
totalProviders: number;
totalDevices: number;
totalUpdatesPerMinute: number;
memoryUsage: {
providers: number;
cachedData: number;
callbacks: number;
};
performance: {
averageProcessingTime: number;
peakProcessingTime: number;
totalProcessedUpdates: number;
};
}
export type GpsManagerDataCallback = (allData: Map<string, DeviceGpsInfo[]>) => void;
export type GpsManagerStatsCallback = (stats: GlobalGpsStats) => void;
export interface GpsDataProvider {
getState(): GpsDataProviderState;
destroy(): void;
clearAllCallbacks(): void;
}
export type GpsManagerProviderCallback = (providerId: string, provider?: GpsDataProvider) => void;
/**
* GPS Data Provider state interface
*/
export interface GpsDataProviderState {
isConnected: boolean;
isInitialized: boolean;
currentDevices: DeviceGpsInfo[];
deviceCount: number;
stats: GpsDataStats;
callbackCount: number;
}
/**
* Data processing result interface
*/
export interface DataProcessingResult {
processed: DeviceGpsInfo[];
skipped: DeviceGpsInfo[];
added: DeviceGpsInfo[];
updated: DeviceGpsInfo[];
removed: string[];
hasSignificantChanges: boolean;
}
/**
* Default configuration values
*/
export declare const DEFAULT_GPS_PROVIDER_CONFIG: Partial<GpsDataProviderConfig>;
//# sourceMappingURL=types.d.ts.map