import type { EmeterRealtime, LightStateLike } from "../klap/types.js"; export interface TplinkDeviceLike { id: string; alias: string; model: string; mac: string; softwareVersion: string; hardwareVersion: string; host: string; port: number; deviceType: "plug" | "bulb" | "device"; supportsEmeter: boolean; emeter: { realtime: EmeterRealtime; getRealtime: () => Promise; }; } export interface PlugLike extends TplinkDeviceLike { deviceType: "plug"; relayState: boolean; inUse: boolean; supportsDimmer: boolean; supportsEmeter: boolean; dimmer: { brightness: number; setBrightness: (value: number) => Promise; }; emeter: { realtime: EmeterRealtime; getRealtime: () => Promise; }; getSysInfo(): Promise; setPowerState(value: boolean): Promise; blink(times?: number, rate?: number): Promise; on(event: "power-update", listener: (value: boolean) => void): this; on(event: "in-use-update", listener: (value: boolean) => void): this; on(event: "brightness-update", listener: (value: number) => void): this; on(event: "emeter-realtime-update", listener: (value: EmeterRealtime) => void): this; on(event: string, listener: (...args: unknown[]) => void): this; } interface BulbSysinfoShape { light_state: LightStateLike; } export interface BulbLike extends TplinkDeviceLike { deviceType: "bulb"; supportsBrightness: boolean; supportsColor: boolean; supportsColorTemperature: boolean; supportsEmeter: boolean; colorTemperatureRange: { min: number; max: number; } | null; sysInfo: BulbSysinfoShape; lighting: { setLightState: (state: Partial) => Promise; }; emeter: { realtime: EmeterRealtime; getRealtime: () => Promise; }; getSysInfo(): Promise; blink(times?: number, rate?: number): Promise; on(event: "lightstate-on", listener: () => void): this; on(event: "lightstate-off", listener: () => void): this; on(event: "lightstate-sysinfo-on", listener: () => void): this; on(event: "lightstate-sysinfo-off", listener: () => void): this; on(event: "lightstate-update", listener: (value: LightStateLike) => void): this; on(event: "lightstate-sysinfo-update", listener: (value: LightStateLike) => void): this; on(event: "emeter-realtime-update", listener: (value: EmeterRealtime) => void): this; on(event: string, listener: (...args: unknown[]) => void): this; } export type TplinkDevice = PlugLike | BulbLike; export declare function isObjectLike(candidate: unknown): candidate is Record; export {}; //# sourceMappingURL=types.d.ts.map