/// import { EventEmitter } from "events"; import TypedEmitter from "typed-emitter"; import { Properties, PropertyKey } from "./schema"; import { discover } from "./discovery"; declare class PropertyStore extends EventEmitter { private store; get(key: T): Properties[T] | undefined; set(key: T, value: Properties[T]): void; waitForChange(key: T): Promise; } type BigAssEvents = { online: () => void; ready: (fan: BigAssFan) => void; error: (error: Error) => void; }; declare class BigAssDevice { private emitter; on: (event: E, listener: BigAssEvents[E]) => TypedEmitter; once: (event: E, listener: BigAssEvents[E]) => TypedEmitter; emit: (event: E, ...args: Parameters) => boolean; ip: string; port: number; private failCount; protected ready: boolean; protected fatal: boolean; private connection; private tcp_leftovers; private slip_open; private slip_start; protected properties: PropertyStore; constructor(ip: string, port: number); private onReady; private onConnected; private onError; private createConnection; private onTCPChunk; private handlePacket; private fatalError; destroy(): void; private syncAPIUpdate; private receive; private send; private sendQuery; private sendCommands; protected get(property: T): Promise; protected set(property: T, value: Properties[T]): Promise; } type If = Value extends true ? TrueResult : Value extends false ? FalseResult : TrueResult | FalseResult; type AddFeature = { [key in T]: true; } & DeviceCapabilities; type DeviceCapabilities = Properties["deviceCapabilities"]; export declare class BigAssFan extends BigAssDevice { static discover: typeof discover; _features: Capabilities | DeviceCapabilities; constructor(ip: string, port: number); private onOnline; private createProp; private createReadonlyProp; hasFan(): this is BigAssFan>; hasLight(): this is BigAssFan>; hasColorTemperature(): this is BigAssFan & AddFeature<"hasLight">>; hasOccupancy(): this is BigAssFan>; hasSensors(): this is BigAssFan & AddFeature<"hasHumiditySensor">>; hasEco(): this is BigAssFan>; hasUvc(): this is BigAssFan>; name: { get(): Promise; onChange(func: (value: string) => void): void; }; model: { get(): Promise; onChange(func: (value: string) => void): void; }; timeUtc: { get(): Promise; onChange(func: (value: string) => void): void; }; version: { get(): Promise; onChange(func: (value: string) => void): void; }; macAddress: { get(): Promise; onChange(func: (value: string) => void): void; }; private capabilities; deviceId: { get(): Promise; onChange(func: (value: string) => void): void; }; cloudId: { get(): Promise; onChange(func: (value: string) => void): void; }; cloudServerUrl: { get(): Promise; onChange(func: (value: string) => void): void; }; network: { get(): Promise<{ ssid: string; }>; onChange(func: (value: { ssid: string; }) => void): void; }; indicators: { visual: { get(): Promise; set(value: boolean): Promise; onChange(func: (value: boolean) => void): void; }; audible: { get(): Promise; set(value: boolean): Promise; onChange(func: (value: boolean) => void): void; }; }; legacyIr: { get(): Promise; set(value: boolean): Promise; onChange(func: (value: boolean) => void): void; }; group: { get(): Promise<{ name: string; uuid: string; }>; onChange(func: (value: { name: string; uuid: string; }) => void): void; }; private _fanOccupancy; private _fan; fan: If; set(value: import("./proto/fan").OperatingMode): Promise; onChange(func: (value: import("./proto/fan").OperatingMode) => void): void; }; direction: { get(): Promise; set(value: import("./proto/fan").Direction): Promise; onChange(func: (value: import("./proto/fan").Direction) => void): void; }; speedPercent: { get(): Promise; set(value: number): Promise; onChange(func: (value: number) => void): void; }; speed: { get(): Promise; set(value: number): Promise; onChange(func: (value: number) => void): void; }; whoosh: { get(): Promise; set(value: boolean): Promise; onChange(func: (value: boolean) => void): void; }; occupancy: If; set(value: boolean): Promise; onChange(func: (value: boolean) => void): void; }; timeout: { get(): Promise; set(value: number): Promise; onChange(func: (value: number) => void): void; }; isOccupied: { get(): Promise; set(value: boolean): Promise; onChange(func: (value: boolean) => void): void; }; }, null>; comfortSense: { enabled: { get(): Promise; set(value: boolean): Promise; onChange(func: (value: boolean) => void): void; }; idealTemperature: { get(): Promise; set(value: number): Promise; onChange(func: (value: number) => void): void; }; minSpeed: { get(): Promise; set(value: number): Promise; onChange(func: (value: number) => void): void; }; maxSpeed: { get(): Promise; set(value: number): Promise; onChange(func: (value: number) => void): void; }; heatSense: { enabled: { get(): Promise; set(value: boolean): Promise; onChange(func: (value: boolean) => void): void; }; speed: { get(): Promise; set(value: number): Promise; onChange(func: (value: number) => void): void; }; direction: { get(): Promise; set(value: import("./proto/fan").Direction): Promise; onChange(func: (value: import("./proto/fan").Direction) => void): void; }; }; }; commandedRpm: { get(): Promise; set(value: number): Promise; onChange(func: (value: number) => void): void; }; actualRpm: { get(): Promise; set(value: number): Promise; onChange(func: (value: number) => void): void; }; }, null>; private _lightOccupancy; private _colorTemperature; private _light; light: If; set(value: import("./proto/fan").OperatingMode): Promise; onChange(func: (value: import("./proto/fan").OperatingMode) => void): void; }; percent: { get(): Promise; set(value: number): Promise; onChange(func: (value: number) => void): void; }; level: { get(): Promise; set(value: number): Promise; onChange(func: (value: number) => void): void; }; temperature: If; set(value: number): Promise; onChange(func: (value: number) => void): void; }, null>; occupancy: If; set(value: boolean): Promise; onChange(func: (value: boolean) => void): void; }; timeout: { get(): Promise; set(value: number): Promise; onChange(func: (value: number) => void): void; }; isOccupied: { get(): Promise; set(value: boolean): Promise; onChange(func: (value: boolean) => void): void; }; }, null>; dimToWarm: { get(): Promise; set(value: boolean): Promise; onChange(func: (value: boolean) => void): void; }; }, null>; private _uvc; uvc: If; onChange(func: (value: boolean) => void): void; }; life: { get(): Promise; onChange(func: (value: number) => void): void; }; }, null>; private _eco; eco: If; set(value: boolean): Promise; onChange(func: (value: boolean) => void): void; }, null>; private _temperature; private _humidity; sensors: { temperature: If; onChange(func: (value: number) => void): void; }, null>; humidity: If; onChange(func: (value: number) => void): void; }, null>; }; } export {}; //# sourceMappingURL=bigassfan.d.ts.map