import { RetryOptions } from '../types/retry-options'; import { tplinkTapoConnectWrapperType } from '../types/wrapper-types'; /** * Service class for handling individual device control operations * Encapsulates device interaction logic with proper error handling and resource management */ export declare class DeviceControlService { /** Device instance cache for session continuity */ private static deviceCache; /** Cache TTL in milliseconds (5 minutes) */ private static readonly DEVICE_CACHE_TTL; /** Cleanup interval for cached devices */ private static cleanupInterval; /** * Get or create a cached device instance for session continuity */ private static getOrCreateDevice; /** * Start cleanup timer for expired cached devices */ private static startCleanupTimer; /** * Clean up expired cached devices */ private static cleanupExpiredDevices; /** * Clear all cached devices (useful for testing or cleanup) */ static clearDeviceCache(): void; /** * Get device information including energy usage data for supported devices */ static getDeviceInfo(email: string, password: string, targetIp: string, retryOptions?: RetryOptions): Promise; /** * Get energy usage information for devices that support energy monitoring */ static getEnergyUsage(email: string, password: string, targetIp: string, retryOptions?: RetryOptions): Promise; /** * Turn device on */ static turnOn(email: string, password: string, targetIp: string, retryOptions?: RetryOptions): Promise; /** * Turn device off */ static turnOff(email: string, password: string, targetIp: string, retryOptions?: RetryOptions): Promise; /** * Set device brightness */ static setBrightness(email: string, password: string, targetIp: string, brightness: number, retryOptions?: RetryOptions): Promise; /** * Set device color using named color */ static setColor(email: string, password: string, targetIp: string, colour: string, retryOptions?: RetryOptions): Promise; /** * Execute operation with retry logic */ private static executeWithRetry; /** * Safely disconnect device */ private static safeDisconnect; /** * Check if object is empty */ private static isEmpty; }