import { ClassConstructor } from 'class-transformer'; import { BehaviorSubject } from 'rxjs'; import { Optional } from '../../common'; import { DeviceExtensionProperties, DeviceExternalResources, GoveeDevice, GoveeDeviceStatus, Product } from '../../data'; import { Version } from './version.info'; export declare class ProductModel { readonly category: string; readonly group: string; readonly modelName: string; readonly ic: number; readonly goodsType: number; constructor(category: string, group: string, modelName: string, ic: number, goodsType: number); } type ClassToType> = Partial<{ [K in keyof Clz]: Clz[K] extends object | Record ? ClassToType : Clz[K]; }>; export type DeviceImageResources = Partial>; export type DeviceConstructorArgs = { id: string; name: string; model: string; iotTopic?: Optional; modelName: string; ic: number; goodsType: number; pactCode: number; pactType: number; category: string; categoryGroup: string; version: Version; deviceExt: ClassToType; } & GoveeDeviceStatus; export declare class DeviceModel { readonly id: string; readonly name: string; readonly model: string; readonly modelName: string; readonly iotTopic?: Optional; readonly bleAddress?: Optional; readonly ic: number; readonly goodsType: number; readonly pactCode: number; readonly pactType: number; readonly version: Version; readonly category: string; readonly categoryGroup: string; readonly status: BehaviorSubject; readonly images?: DeviceImageResources; constructor(args: DeviceConstructorArgs); private product; get productData(): Optional; set productData(product: Optional); } export type BLEDeviceConstructorArgs = { bleAddress: string; bleName: string; } & DeviceConstructorArgs; export type BLEDevice = { get bleAddress(): string; bleName: string; }; export declare const BLEDevice: >(device: TDevice) => ClassConstructor; export type WiFiDeviceConstructorArgs = { wifiAddress: string; wifiSSID: string; } & DeviceConstructorArgs; export type WiFiDevice = { get wifiAddress(): string; get wifiSSID(): string; }; export declare const WiFiDevice: >(device: TDevice) => ClassConstructor; export type IoTDeviceConstructorArgs = { iotTopic: string; } & DeviceConstructorArgs; export type IoTDevice = { get iotTopic(): Optional; } & DeviceModel; export declare const IoTDevice: >(device: TDevice) => ClassConstructor; export declare const createDeviceModel: (device: GoveeDevice, productCategories: Record) => DeviceModel; export {}; //# sourceMappingURL=devices.model.d.ts.map