UNPKG

homebridge

Version:
119 lines 4.05 kB
/** * Cluster State Map * * Maps Matter cluster names to their typed state interfaces. * Provides IDE autocomplete and type safety for plugin developers when * working with cluster attributes via api.matter?.updateAccessoryState() * and api.matter?.getAccessoryState(). * * State interfaces are defined in clusterTypes.ts and derived from * @matter/main/clusters where possible. */ import type { ColorControlState, DoorLockState, FanControlState, LevelControlState, OnOffState, PowerSourceState, RvcCleanModeState, RvcOperationalState, RvcRunModeState, ServiceAreaState, ThermostatState, ValveConfigurationAndControlState, WindowCoveringState } from './clusterTypes.js'; /** * Maps known cluster names to their typed state interfaces. * * Plugin developers get autocomplete for known clusters while unknown clusters * fall back to `Record<string, unknown>`. * * @example * ```typescript * // With typed overload on api.matter: * await api.matter?.updateAccessoryState(uuid, 'onOff', { onOff: true }) * // ^-- autocomplete! * * const state = await api.matter?.getAccessoryState(uuid, 'levelControl') * // state is Partial<LevelControlState> | undefined * ``` */ export interface ClusterStateMap { onOff: OnOffState; levelControl: LevelControlState; colorControl: ColorControlState; doorLock: DoorLockState; windowCovering: WindowCoveringState; thermostat: ThermostatState; fanControl: FanControlState; rvcOperationalState: RvcOperationalState; rvcRunMode: RvcRunModeState; rvcCleanMode: RvcCleanModeState; serviceArea: ServiceAreaState; powerSource: PowerSourceState; temperatureMeasurement: { measuredValue: number | null; minMeasuredValue?: number | null; maxMeasuredValue?: number | null; }; relativeHumidityMeasurement: { measuredValue: number | null; minMeasuredValue?: number | null; maxMeasuredValue?: number | null; }; illuminanceMeasurement: { measuredValue: number | null; minMeasuredValue?: number | null; maxMeasuredValue?: number | null; }; occupancySensing: { occupancy: { occupied: boolean; }; occupancySensorType?: number; occupancySensorTypeBitmap?: { pir?: boolean; ultrasonic?: boolean; physicalContact?: boolean; }; }; booleanState: { stateValue: boolean; }; valveConfigurationAndControl: ValveConfigurationAndControlState; airQuality: { airQuality: number; }; carbonMonoxideConcentrationMeasurement: { measuredValue: number | null; minMeasuredValue?: number | null; maxMeasuredValue?: number | null; measurementMedium: number; measurementUnit?: number; }; nitrogenDioxideConcentrationMeasurement: { measuredValue: number | null; minMeasuredValue?: number | null; maxMeasuredValue?: number | null; measurementMedium: number; measurementUnit?: number; }; ozoneConcentrationMeasurement: { measuredValue: number | null; minMeasuredValue?: number | null; maxMeasuredValue?: number | null; measurementMedium: number; measurementUnit?: number; }; pm10ConcentrationMeasurement: { measuredValue: number | null; minMeasuredValue?: number | null; maxMeasuredValue?: number | null; measurementMedium: number; measurementUnit?: number; }; pm25ConcentrationMeasurement: { measuredValue: number | null; minMeasuredValue?: number | null; maxMeasuredValue?: number | null; measurementMedium: number; measurementUnit?: number; }; switch: { currentPosition: number; numberOfPositions?: number; }; identify: { identifyTime: number; identifyType: number; }; } //# sourceMappingURL=clusterStateMap.d.ts.map