/** * Device Detection and Type Registry for Eufy Security Devices * * This module provides comprehensive device type detection, classification, and capability * mapping for Eufy security devices. It serves as the central registry for all supported * device types and their corresponding capabilities. * * Key Features: * - Device type classification (cameras, doorbells, sensors, locks, etc.) * - Capability detection (battery, pan/tilt, floodlight, etc.) * - Human-readable model name resolution * - Support validation for device compatibility * * Architecture: * - Static device type sets for efficient lookup operations * - Helper functions for device capability detection * - Model name registry for user-friendly device identification * - Compatibility layer between Eufy device types and client interfaces * * Performance Optimizations: * - Uses Set data structures for O(1) device type lookups * - Minimizes memory footprint with shared type constants * - Efficient capability detection through bitwise operations where applicable * * @public * @since 1.0.0 */ /** * Camera device types supported by the client - Matching original eufy-security-client Device.isCamera() * These devices provide video streaming capabilities */ export declare const CAMERA_DEVICE_TYPES: Set; /** * Doorbell device types supported by the client - Matching original eufy-security-client Device.isDoorbell() * These devices provide video streaming AND doorbell functionality */ export declare const DOORBELL_DEVICE_TYPES: Set; /** * Floodlight camera device types supported by the client - Matching original eufy-security-client Device.isFloodLight() * These combine camera functionality with light functionality */ export declare const FLOODLIGHT_DEVICE_TYPES: Set; /** * Motion sensor device types supported by the client - Matching original eufy-security-client Device.isSensor() */ export declare const SENSOR_DEVICE_TYPES: Set; /** * Smart lock device types supported by the client - Matching original eufy-security-client Device.isLock() */ export declare const LOCK_DEVICE_TYPES: Set; /** * Base station device types - Matching original eufy-security-client Device.isStation() * These are hub devices that manage other devices */ export declare const BASE_STATION_DEVICE_TYPES: Set; /** * Battery-powered device types - Matching original eufy-security-client Device.hasBattery() * Used to determine if Battery interface should be added */ export declare const BATTERY_DEVICE_TYPES: Set; /** * Pan/tilt capable device types - Matching original eufy-security-client Device.isPanAndTiltCamera() * These support pan and tilt camera controls */ export declare const PAN_TILT_DEVICE_TYPES: Set; /** * All device types that the client can support * Combination of cameras, doorbells, floodlights, sensors, and locks */ export declare const SUPPORTED_DEVICE_TYPES: Set; export declare const SOLO_CAMERA_TYPES: Set; export declare const INDOOR_CAMERA_TYPES: Set; export declare const WIRED_DOORBELL_TYPES: Set; export declare const BATTERY_DOORBELL_TYPES: Set; export declare const DUAL_DOORBELL_TYPES: Set; export declare const LOCK_BLE_TYPES: Set; export declare const LOCK_WIFI_TYPES: Set; export declare const LOCK_KEYPAD_TYPES: Set; export declare const CAMERA_1_TYPES: Set; export declare const CAMERA_E_TYPES: Set; export declare const CAMERA_2_TYPES: Set; export declare const CAMERA_3_TYPES: Set; export declare const GARAGE_CAMERA_TYPES: Set; export declare const SMART_SAFE_TYPES: Set; export declare const SMART_TRACK_TYPES: Set; export declare const SMART_DROP_TYPES: Set; export declare const KEYPAD_TYPES: Set; /** * Device Detection Functions * * These functions provide efficient device type classification and capability detection * for Eufy security devices. They match the original eufy-security-client Device static * methods while optimizing for client-specific use cases. */ /** * Determines if a device type represents a camera-capable device. * * This includes traditional cameras, video doorbells, and floodlight cameras * that can provide video streaming functionality. * * @param deviceType - The Eufy device type identifier * @returns True if the device can provide video streaming capabilities */ export declare function isCamera(deviceType: number): boolean; /** * Determines if a device type represents a video doorbell. * * Video doorbells combine camera functionality with doorbell-specific features * like chime integration and visitor detection. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a video doorbell */ export declare function isDoorbell(deviceType: number): boolean; /** * Determines if a device type represents a wired video doorbell. * * Wired doorbells have continuous power and don't require battery management. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a wired doorbell */ export declare function isWiredDoorbell(deviceType: number): boolean; /** * Determines if a device type represents a battery-powered video doorbell. * * Battery doorbells require power management and charging monitoring. * * @param deviceType - The Eufy device type identifier * @returns True if the device is battery-powered */ export declare function isBatteryDoorbell(deviceType: number): boolean; /** * Determines if a device type represents a dual-camera doorbell. * * Dual doorbells have both front-facing and package detection cameras. * * @param deviceType - The Eufy device type identifier * @returns True if the device has dual camera functionality */ export declare function isDoorbellDual(deviceType: number): boolean; /** * Determines if a device type represents a floodlight camera. * * Floodlight cameras combine video recording with powerful LED lighting * for enhanced security and visibility. * * @param deviceType - The Eufy device type identifier * @returns True if the device has integrated floodlight functionality */ export declare function isFloodlight(deviceType: number): boolean; /** * Determines if a device type represents a sensor device. * * Sensors include motion detectors and entry sensors for security monitoring. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a sensor */ export declare function isSensor(deviceType: number): boolean; /** * Determines if a device type represents an entry sensor. * * Entry sensors detect door/window opening and closing events. * * @param deviceType - The Eufy device type identifier * @returns True if the device is an entry sensor */ export declare function isEntrySensor(deviceType: number): boolean; /** * Determines if a device type represents a motion sensor. * * Motion sensors detect movement within their detection range. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a motion sensor */ export declare function isMotionSensor(deviceType: number): boolean; /** * Determines if a device type represents a smart lock. * * Smart locks provide keyless entry with remote control capabilities. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a smart lock */ export declare function isLock(deviceType: number): boolean; /** * Determines if a device type represents a Bluetooth-enabled smart lock. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a Bluetooth smart lock */ export declare function isLockBle(deviceType: number): boolean; /** * Determines if a device type represents a WiFi-enabled smart lock. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a WiFi smart lock */ export declare function isLockWifi(deviceType: number): boolean; /** * Determines if a device type represents a smart lock with keypad functionality. * * @param deviceType - The Eufy device type identifier * @returns True if the device has keypad input capabilities */ export declare function isLockKeypad(deviceType: number): boolean; /** * Determines if a device type represents a base station or hub device. * * Base stations coordinate other devices but don't have direct client interfaces. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a base station */ export declare function isBaseStation(deviceType: number): boolean; /** * Determines if a device type represents an indoor camera. * * Indoor cameras are optimized for interior use and may have different * features compared to outdoor cameras. * * @param deviceType - The Eufy device type identifier * @returns True if the device is designed for indoor use */ export declare function isIndoorCamera(deviceType: number): boolean; /** * Determines if a device type represents a SoloCam series camera. * * SoloCam devices are standalone cameras that don't require a base station. * * @param deviceType - The Eufy device type identifier * @returns True if the device is part of the SoloCam series */ export declare function isSoloCameras(deviceType: number): boolean; /** * Determines if a device type supports pan and tilt functionality. * * Pan/tilt cameras can be remotely controlled to change viewing direction. * * @param deviceType - The Eufy device type identifier * @returns True if the device supports pan and tilt controls */ export declare function isPanAndTiltCamera(deviceType: number): boolean; /** * Determines if a device type represents a garage-specific camera. * * Garage cameras are designed for monitoring garage doors and vehicles. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a garage camera */ export declare function isGarageCamera(deviceType: number): boolean; /** * Determines if a device type represents a smart safe. * * Smart safes provide secure storage with digital access controls. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a smart safe */ export declare function isSmartSafe(deviceType: number): boolean; /** * Determines if a device type represents a smart tracking device. * * Smart trackers help locate lost items or monitor movement. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a smart tracker */ export declare function isSmartTrack(deviceType: number): boolean; /** * Determines if a device type represents a smart drop box. * * Smart drop boxes provide secure package delivery reception. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a smart drop box */ export declare function isSmartDrop(deviceType: number): boolean; /** * Determines if a device type represents a security keypad. * * Keypads provide numeric input for security system control. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a keypad */ export declare function isKeyPad(deviceType: number): boolean; /** * Determines if a device type represents a first-generation camera product. * * Includes original eufyCam and eufyCam E models. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a generation 1 camera */ export declare function isCamera1Product(deviceType: number): boolean; /** * Determines if a device type represents a second-generation camera product. * * Includes eufyCam 2, 2C, and Pro variants. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a generation 2 camera */ export declare function isCamera2Product(deviceType: number): boolean; /** * Determines if a device type represents a third-generation camera product. * * Includes eufyCam 3, 3C, and Professional variants. * * @param deviceType - The Eufy device type identifier * @returns True if the device is a generation 3 camera */ export declare function isCamera3Product(deviceType: number): boolean; /** * Determines if a device type includes battery power capability. * * Battery-powered devices require power management and charging monitoring. * * @param deviceType - The Eufy device type identifier * @returns True if the device has battery power */ export declare function hasBattery(deviceType: number): boolean; /** * Determines if a device type supports pan and tilt camera controls. * * Alias for isPanAndTiltCamera() for consistency with capability naming. * * @param deviceType - The Eufy device type identifier * @returns True if the device supports pan and tilt functionality */ export declare function canPanTilt(deviceType: number): boolean; /** * Determines if a device type is supported by this client. * * This is the primary compatibility check for device registration. * * @param deviceType - The Eufy device type identifier * @returns True if the device is supported by the client */ export declare function isDeviceSupported(deviceType: number): boolean; /** * Analyzes a device type and returns a comprehensive capability profile. * * This function provides a complete overview of what features and interfaces * a device supports, enabling efficient interface assignment and feature * detection throughout the client. * * Performance Optimization: Uses efficient Set.has() lookups for O(1) complexity * across all capability checks. * * @param deviceType - The Eufy device type identifier * @returns Object containing boolean flags for each device capability */ export declare function getDeviceCapabilities(deviceType: number): { camera: boolean; doorbell: boolean; floodlight: boolean; sensor: boolean; lock: boolean; battery: boolean; panTilt: boolean; supported: boolean; }; export declare const MODEL_NAMES: Record; /** * Retrieves a human-readable product name for a given device model identifier. * * This function maps Eufy's internal model codes (like T8114, T8210) to * user-friendly product names that are displayed in the client interface. * * @param model - The Eufy device model identifier (e.g., "T8114", "T8210") * @returns Human-readable product name, or the original model if not found */ export declare function getProductName(model: string): string; /** * Gets a human-readable device type name based on device type number. * * This function provides a simple mapping from device type numbers to * user-friendly type names for display purposes. * * @param deviceType - The Eufy device type identifier * @returns Human-readable device type name */ export declare function getDeviceTypeName(deviceType: number): string; //# sourceMappingURL=device-detection.d.ts.map