UNPKG

homebridge-homeconnect

Version:

A Homebridge plugin that connects Home Connect appliances to Apple HomeKit

83 lines 4 kB
import { Logger } from 'homebridge'; import { EventEmitter } from 'events'; import { HomeConnectAPI } from './api.js'; import { HomeAppliance } from './api-types.js'; import { OperationState, OptionValues, ProgramKey } from './api-value-types.js'; import { CommandKV, EventKey, EventKV, EventValue, KVKey, KVValue, OptionKey, OptionValue, ProgramDefinitionKV, ProgramKV, ProgramListKV, SettingKey, SettingKV, SettingValue, StatusKey, StatusKV, StatusValue } from './api-value.js'; import { Scope } from './api-auth-types.js'; interface DeviceExtraValues { connected?: boolean; } type DeviceExtraKey = KVKey<DeviceExtraValues>; type DeviceKey = DeviceExtraKey | OptionKey | StatusKey | SettingKey | EventKey; type DeviceExtraValue<Key> = KVValue<DeviceExtraValues, Key>; type DeviceValue<Key> = DeviceExtraValue<Key> | OptionValue<Key> | StatusValue<Key> | SettingValue<Key> | EventValue<Key>; type Item<KeyU extends DeviceKey = DeviceKey> = { [Key in KeyU]: { key: Key; value: DeviceValue<Key>; unit?: string; }; }[KeyU]; export type OperationStateKey = keyof typeof OperationState; export declare class HomeConnectDevice extends EventEmitter { readonly log: Logger; readonly api: HomeConnectAPI; readonly ha: HomeAppliance; readonly items: { [Key in DeviceKey]?: Item<Key>; }; private stopEvents; private setConnectedScheduled?; private stopScheduled?; private readAllActions?; private readAllScheduled?; private readPrograms?; constructor(log: Logger, api: HomeConnectAPI, ha: HomeAppliance); stop(): void; describe<Key extends DeviceKey>(item: Item<Key>): string; update<Key extends DeviceKey>(items: Item<Key>[]): void; getItem<Key extends DeviceKey>(key: Key): DeviceValue<Key> | undefined; getAppliance(): Promise<HomeAppliance>; getStatus(): Promise<StatusKV[]>; getSettings(): Promise<SettingKV[]>; getSetting<Key extends SettingKey>(settingKey: Key): Promise<SettingKV<Key> | null>; setSetting<Key extends SettingKey>(settingKey: Key, value: SettingValue<Key>): Promise<void>; getAllPrograms(): Promise<ProgramListKV[]>; getAvailablePrograms(): Promise<ProgramListKV[]>; getAvailableProgram<Key extends ProgramKey>(programKey: Key): Promise<ProgramDefinitionKV<Key>>; getSelectedProgram(): Promise<ProgramKV | null>; setSelectedProgram(programKey: ProgramKey, options?: OptionValues): Promise<void>; getActiveProgram(): Promise<ProgramKV | null>; startProgram(programKey?: ProgramKey, options?: OptionValues): Promise<void>; stopProgram(): Promise<void>; getCommands(): Promise<CommandKV[]>; pauseProgram(pause?: boolean): Promise<void>; openDoor(fully?: boolean): Promise<void>; setActiveProgramOption<Key extends OptionKey>(optionKey: Key, value: OptionValue<Key>): Promise<void>; waitConnected(immediate?: boolean): Promise<void>; waitOperationState(states: OperationStateKey[], milliseconds?: number): Promise<void>; inferPowerState(): void; setConnectedState(isConnected?: boolean): void; onConnected(): void; onDisconnected(): void; readAll(): Promise<void>; isOperationState(...states: OperationStateKey[]): boolean; requireConnected(): void; requireIdentify(): void; requireMonitor(): void; requireSettings(): void; requireControl(): void; requireRemoteControl(): void; requireRemoteStart(): void; hasScope(scope: Scope): boolean; pollPrograms(enable?: boolean): void; processEvents(): Promise<void>; eventListener(event: EventKV): void; on<Key extends DeviceKey>(key: Key, listener: (value: DeviceValue<Key>) => void): this; off<Key extends DeviceKey>(key: Key, listener: (value: DeviceValue<Key>) => void): this; onceWait<Key extends DeviceKey>(key: Key): Promise<DeviceValue<Key>>; emit<Key extends DeviceKey>(key: Key, value: DeviceValue<Key>): boolean; } export {}; //# sourceMappingURL=homeconnect-device.d.ts.map