import EventEmitter from 'events'; export type ShellyDevicePropertyValue = string | number | boolean | null | undefined; export interface ShellyColorOptions { switch?: boolean; red?: number; green?: number; blue?: number; white?: number; gain?: number; } export interface ShellyDevice extends EventEmitter { id: string; type: string; host: string; online: boolean; lastSeen?: number; [key: string]: ShellyDevicePropertyValue | ((...args: unknown[]) => unknown); setRelay?(index: number, value: boolean): Promise; setColor?(options: ShellyColorOptions): Promise; setWhite?(temperatureOrIndex: number, brightnessOrOn?: number | boolean, on?: boolean): Promise; setRoller?(index: number, command: string, position?: number): Promise; setRollerPosition?(position: number): Promise; setRollerState?(command: string): Promise; setAuthCredentials?(username: string, password: string): void; } export interface ShelliesLibrary extends EventEmitter { start(networkInterface?: string): void; stop(): void; getDevice(type: string, id: string): ShellyDevice | undefined; staleTimeout: number; request: { timeout: (timeout: number) => void; }; } export interface RegisteredDevice { id: string; type: string; host: string; enabled: boolean; } export interface NormalizedDeviceEvent { id: string; type: string; host: string; online: boolean; } export interface NormalizedDeviceChangeEvent { id: string; property: string; newValue: string | number | boolean; oldValue: string | number | boolean | null; } export declare enum ShelliesAdapterEventType { DEVICE_DISCOVERED = "shelly-v1:device:discovered", DEVICE_CHANGED = "shelly-v1:device:changed", DEVICE_OFFLINE = "shelly-v1:device:offline", DEVICE_ONLINE = "shelly-v1:device:online", ERROR = "shelly-v1:error" } export interface ShelliesAdapterCallbacks { onDeviceDiscovered?: (event: NormalizedDeviceEvent) => void | Promise; onDeviceChanged?: (event: NormalizedDeviceChangeEvent) => void | Promise; onDeviceOffline?: (event: NormalizedDeviceEvent) => void | Promise; onDeviceOnline?: (event: NormalizedDeviceEvent) => void | Promise; onError?: (error: Error) => void | Promise; }