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