import { BaseSensor } from './base-sensor'; import { CustomSensorId, SensorEventPayloads, SensorId } from './types'; import { PubSub } from '@packages/internal/common/pubsub'; import { DeviceOrientationSensor } from './deviceorientation/deviceorientation'; import { GeolocationSensor } from './geolocation/geolocation'; import { DeviceMotionSensor } from './devicemotion/devicemotion'; import { ManualSensor } from './manual/manual-sensor'; /** * Maps built-in sensor IDs to their concrete sensor types. */ type BuiltInSensorMap = { geolocation: GeolocationSensor; deviceorientation: DeviceOrientationSensor; devicemotion: DeviceMotionSensor; manual: ManualSensor; }; /** * Registry for managing position sensors. * * @example * ```ts * // Enable built-in sensors * blueDot.Sensors.get('geolocation')?.enable(); * blueDot.Sensors.get('deviceorientation')?.enable(); * * // Register and enable a custom sensor * const customSensor = blueDot.Sensors.register(new MyCustomSensor()); * customSensor.enable(); * ``` */ export declare class SensorRegistry extends PubSub { #private; constructor(); /** * Register a sensor. * @param sensor The sensor to register * @returns The sensor if registered, undefined if already registered */ register(sensor: T & { id: CustomSensorId; }): T | undefined; /** * Get a registered sensor by ID. * @param sensorId The ID of the sensor to get * @returns The sensor, or undefined if not found */ get(sensorId: K): K extends keyof BuiltInSensorMap ? BuiltInSensorMap[K] | undefined : BaseSensor | undefined; /** * Unregister a sensor. * @param sensor The sensor to unregister */ unregister(sensor: BaseSensor): void; /** * Unregister a sensor. * @param sensorId The ID of the sensor to unregister */ unregister(sensorId: SensorId): void; /** * Get all registered sensors. * @returns An iterator of [sensorId, sensor] pairs */ getAll(): IterableIterator<[SensorId, BaseSensor]>; /** * Destroy the registry and clean up all sensors. */ destroy(): void; } export {};