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
TypeScript
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