/** * Device Catalog * * Centralized registry of all supported Dyson device models. * Single source of truth for product types, features, and metadata. */ import type { DeviceFeatures } from '../devices/types.js'; /** * Device series classification */ export type DeviceSeries = 'pure-cool-link' | 'pure-cool' | 'hot-cool-link' | 'hot-cool' | 'humidify-cool' | 'big-quiet' | 'cool'; /** * MQTT protocol used for the fan power (on/off) command. * * - `fmod`: legacy field carrying power *and* mode (`OFF`/`FAN`/`AUTO`). * Accepted by most purifier models. * - `fpwr`: dedicated power field (`ON`/`OFF`), with `auto`/`fnsp` carrying * mode/speed separately. Used by the Pure Cool Link series and by newer * fans (e.g. CF1) that do NOT honour `fmod` for power. * * Defaults to `fmod` when unspecified — see {@link getPowerProtocol}. */ export type PowerProtocol = 'fmod' | 'fpwr'; /** * Device model definition */ export interface DeviceModel { /** Product type code (e.g., '438', '527') */ productType: string; /** Human-readable model name */ modelName: string; /** Short model code (e.g., 'TP04', 'HP07') */ modelCode: string; /** Device series classification */ series: DeviceSeries; /** Device features */ features: DeviceFeatures; /** Whether this is a formaldehyde-detecting model */ formaldehyde: boolean; /** * Fan power command protocol. Defaults to `fmod` when omitted. * Set to `fpwr` for devices that only respond to the dedicated power field. */ powerProtocol?: PowerProtocol; } /** * Complete catalog of all supported Dyson devices */ export declare const DEVICE_CATALOG: readonly DeviceModel[]; /** * Get device model by product type * * @param productType - Dyson product type code * @returns Device model or undefined if not found */ export declare function getDeviceByProductType(productType: string): DeviceModel | undefined; /** * Check if a product type is supported * * @param productType - Dyson product type code * @returns True if product type is supported */ export declare function isProductTypeSupported(productType: string): boolean; /** * Get all supported product types * * @returns Array of product type codes */ export declare function getSupportedProductTypes(): string[]; /** * Get device features by product type * * @param productType - Dyson product type code * @returns Device features or default features if not found */ export declare function getDeviceFeatures(productType: string): DeviceFeatures; /** * Get the fan power command protocol by product type. * * @param productType - Dyson product type code * @returns `'fpwr'` for devices that require the dedicated power field, * otherwise `'fmod'` (the default for unspecified / unknown types) */ export declare function getPowerProtocol(productType: string): PowerProtocol; /** * Get device model name by product type * * @param productType - Dyson product type code * @returns Model name with code (e.g., "Dyson Pure Cool Tower (TP04)") */ export declare function getDeviceModelName(productType: string): string; /** * Get product type to model name mapping (for config schema) * * @returns Record of product type codes to display names */ export declare function getProductTypeDisplayNames(): Record; /** * Get devices by series * * @param series - Device series to filter by * @returns Array of devices in that series */ export declare function getDevicesBySeries(series: DeviceSeries): DeviceModel[]; /** * Get devices with heating capability * * @returns Array of devices that support heating */ export declare function getHeatingDevices(): DeviceModel[]; /** * Get devices with humidifier capability * * @returns Array of devices that support humidification */ export declare function getHumidifierDevices(): DeviceModel[]; //# sourceMappingURL=deviceCatalog.d.ts.map