UNPKG

fleeta-api-lib

Version:

A comprehensive library for fleet management applications - API, Auth, Device management

137 lines 4.56 kB
/** * GPS Data Filtering Utilities * Provides functions for filtering GPS device data based on various criteria */ import type { DeviceGpsInfo } from '../../gps-websocket/types'; /** * GPS Data Subscriber interface */ interface GpsDataSubscriber { filter?: { psnList?: string[]; activeOnly?: boolean; videoOnly?: boolean; boundingBox?: { sw: { lat: number; lng: number; }; ne: { lat: number; lng: number; }; }; speedRange?: { min: number; max: number; }; }; } /** * Apply basic auto-filtering to device data * @param devices - Raw device data * @param autoFilter - Auto-filter configuration * @returns Filtered device data */ export declare function applyAutoFilter(devices: DeviceGpsInfo[], autoFilter: { excludeInactive: boolean; excludeInvalidCoords: boolean; excludeStatic: boolean; minSpeedThreshold: number; }): DeviceGpsInfo[]; /** * Apply subscriber-specific filtering to device data * @param devices - Device data to filter * @param filter - Subscriber filter configuration * @returns Filtered device data */ export declare function applySubscriberFilter(devices: DeviceGpsInfo[], filter?: GpsDataSubscriber['filter']): DeviceGpsInfo[]; /** * Filter devices by status * @param devices - Device data * @param status - Status to filter by * @returns Filtered devices */ export declare function filterByStatus(devices: DeviceGpsInfo[], status: 'all' | 'active' | 'inactive' | 'video'): DeviceGpsInfo[]; /** * Filter devices within a specific radius from a center point * @param devices - Device data * @param center - Center coordinate * @param radiusKm - Radius in kilometers * @returns Devices within radius */ export declare function filterByRadius(devices: DeviceGpsInfo[], center: { lat: number; lng: number; }, radiusKm: number): DeviceGpsInfo[]; /** * Filter devices by speed range * @param devices - Device data * @param minSpeed - Minimum speed (km/h) * @param maxSpeed - Maximum speed (km/h) * @returns Devices within speed range */ export declare function filterBySpeed(devices: DeviceGpsInfo[], minSpeed: number, maxSpeed?: number): DeviceGpsInfo[]; /** * Group devices by their properties * @param devices - Device data to group * @param groupBy - Property to group by * @returns Grouped devices */ export declare function groupDevices(devices: DeviceGpsInfo[], groupBy: 'status' | 'video' | 'speed' | 'region'): Record<string, DeviceGpsInfo[]>; /** * Sort devices by various criteria * @param devices - Device data to sort * @param sortBy - Sort criteria * @param ascending - Sort direction * @returns Sorted devices */ export declare function sortDevices(devices: DeviceGpsInfo[], sortBy: 'psn' | 'speed' | 'distance' | 'lastUpdate', ascending?: boolean, referencePoint?: { lat: number; lng: number; }): DeviceGpsInfo[]; /** * Find devices near a specific device * @param devices - All device data * @param targetPsn - Target device PSN * @param radiusKm - Search radius in kilometers * @returns Devices near the target device */ export declare function findNearbyDevices(devices: DeviceGpsInfo[], targetPsn: string, radiusKm: number): DeviceGpsInfo[]; /** * Validate if coordinates are valid GPS coordinates * @param lat - Latitude * @param lng - Longitude * @returns True if coordinates are valid */ export declare function isValidCoordinate(lat: number, lng: number): boolean; /** * Check if device is within bounding box * @param device - Device to check * @param boundingBox - Bounding box coordinates * @returns True if device is within bounds */ export declare function isWithinBoundingBox(device: DeviceGpsInfo, boundingBox: { sw: { lat: number; lng: number; }; ne: { lat: number; lng: number; }; }): boolean; /** * Create a combined filter function from multiple filter criteria * @param filters - Array of filter functions * @returns Combined filter function */ export declare function createCombinedFilter(...filters: Array<(device: DeviceGpsInfo) => boolean>): (device: DeviceGpsInfo) => boolean; /** * Create a filter function for device search * @param searchQuery - Search query string * @returns Filter function for search */ export declare function createSearchFilter(searchQuery: string): (device: DeviceGpsInfo) => boolean; export {}; //# sourceMappingURL=filtering.d.ts.map