/** * Service Factory * * Helper functions for creating and configuring HomeKit services * with reduced boilerplate code. */ import type { API, Characteristic, CharacteristicValue, Service } from 'homebridge'; import type { GoveePlatformAccessoryWithControl, GoveePlatform } from '../types.js'; type HapCharacteristic = API['hap']['Characteristic']; type HapService = API['hap']['Service']; /** * Service factory context */ export interface ServiceFactoryContext { platform: GoveePlatform; accessory: GoveePlatformAccessoryWithControl; hapChar: HapCharacteristic; hapServ: HapService; } /** * Speed control configuration */ export interface SpeedControlConfig { maxSpeed: number; stepSize: number; validValues: number[]; onSet: (value: number) => Promise; } /** * On/Off control configuration */ export interface OnOffConfig { activeCharacteristic?: boolean; onSet: (value: number | boolean) => Promise; } /** * Lock control configuration */ export interface LockConfig { onSet: (value: number) => Promise; } /** * Night light configuration */ export interface NightLightConfig { characteristicClass?: Characteristic; onSet?: (value: boolean) => Promise; } /** * Display light configuration */ export interface DisplayLightConfig { characteristicClass?: Characteristic; onSet?: (value: boolean) => Promise; } /** * Create an Air Purifier service with common configuration */ export declare function createAirPurifierService(ctx: ServiceFactoryContext, config: { onOff: OnOffConfig; speed?: SpeedControlConfig; lock?: LockConfig; manualOnly?: boolean; }): Service; /** * Create a Fan service with common configuration */ export declare function createFanService(ctx: ServiceFactoryContext, config: { onOff: OnOffConfig; speed?: SpeedControlConfig; }): Service; /** * Create a Lightbulb service with common configuration */ export declare function createLightbulbService(ctx: ServiceFactoryContext, config: { name?: string; onSet: (value: boolean) => Promise; brightness?: { onSet: (value: number) => Promise; }; color?: { onSetHue: (value: number) => Promise; }; }): Service; /** * Create an Air Quality Sensor service */ export declare function createAirQualitySensorService(ctx: ServiceFactoryContext, config?: { includePM25?: boolean; }): Service; /** * Create a Humidity Sensor service */ export declare function createHumiditySensorService(ctx: ServiceFactoryContext): Service; /** * Add a custom characteristic to a service */ export declare function addCustomCharacteristic(ctx: ServiceFactoryContext, service: Service, characteristicClass: any, onSet?: (value: CharacteristicValue) => Promise): Characteristic | undefined; /** * Update air purifier state (Active + CurrentAirPurifierState) */ export declare function updateAirPurifierState(service: Service, hapChar: HapCharacteristic, isOn: boolean): void; /** * Get valid values array for speed control */ export declare function getSpeedValidValues(maxSpeed: number): number[]; /** * Calculate step size from max speed */ export declare function getSpeedStepSize(maxSpeed: number): number; declare const _default: { createAirPurifierService: typeof createAirPurifierService; createFanService: typeof createFanService; createLightbulbService: typeof createLightbulbService; createAirQualitySensorService: typeof createAirQualitySensorService; createHumiditySensorService: typeof createHumiditySensorService; addCustomCharacteristic: typeof addCustomCharacteristic; updateAirPurifierState: typeof updateAirPurifierState; getSpeedValidValues: typeof getSpeedValidValues; getSpeedStepSize: typeof getSpeedStepSize; }; export default _default;