UNPKG

matterbridge-dyson-robot

Version:

A Matterbridge plugin that connects Dyson robot vacuums and air treatment devices to the Matter smart home ecosystem via their local or cloud MQTT APIs.

54 lines 2.54 kB
import { AnsiLogger } from 'matterbridge/logger'; import { Config, ConfigLocalAccount, ConfigRemoteAccount, DeviceConfigLocalMqtt, DysonAccount, DysonAccountLogin } from './config-types.js'; import { DysonIoTCredentialsResponse } from './dyson-cloud-types.js'; import NodePersist from 'node-persist'; import { DysonCloudAPI } from './dyson-cloud-api.js'; import { DeviceConfigRemoteMqtt } from './dyson-mqtt-client.js'; interface PersistTokenData { token: string; created: number; } interface PersistChallengeData { challengeId: string; created: number; } interface PersistData { token: PersistTokenData; challenge: PersistChallengeData; } type PersistKey = keyof PersistData; interface IoTCredentialsData { credentials: DysonIoTCredentialsResponse; created: number; } export declare class DysonCloud<T extends Config = Config> { readonly log: AnsiLogger; readonly config: T; readonly persist: NodePersist.LocalStorage; readonly account?: DysonAccount | undefined; readonly api: Promise<DysonCloudAPI>; constructor(log: AnsiLogger, config: T, persist: NodePersist.LocalStorage, account?: DysonAccount | undefined); createApi(): Promise<DysonCloudAPI>; getIoT(_serialNumber: string): Promise<DysonIoTCredentialsResponse>; getPersistentStorageKey(account: DysonAccountLogin, type: PersistKey): string; getPersistent<K extends PersistKey>(account: DysonAccountLogin, type: K): Promise<PersistData[K] | undefined>; setPersistent<K extends PersistKey>(account: DysonAccountLogin, type: K, value: PersistData[K]): Promise<void>; } export declare class DysonCloudAuth extends DysonCloud { readonly account: DysonAccountLogin; constructor(log: AnsiLogger, config: Config, persist: NodePersist.LocalStorage, account: DysonAccountLogin); startAuth(): Promise<boolean>; finishAuth(otpCode: string): Promise<void>; } export declare class DysonCloudRemote extends DysonCloud<ConfigRemoteAccount> { readonly cache: Map<string, IoTCredentialsData>; constructor(log: AnsiLogger, config: ConfigRemoteAccount, persist: NodePersist.LocalStorage); getDevices(): Promise<DeviceConfigRemoteMqtt[]>; getIoT(serialNumber: string): Promise<DysonIoTCredentialsResponse>; } export declare class DysonCloudLocal extends DysonCloud<ConfigLocalAccount> { constructor(log: AnsiLogger, config: ConfigLocalAccount, persist: NodePersist.LocalStorage); getDevices(): Promise<DeviceConfigLocalMqtt[]>; } export {}; //# sourceMappingURL=dyson-cloud.d.ts.map