@felixgeelhaar/govee-api-client
Version:
Enterprise-grade TypeScript client library for the Govee Developer REST API
66 lines • 3.05 kB
TypeScript
import { Logger } from 'pino';
import { GoveeDevice } from './domain/entities/GoveeDevice';
import { DeviceState } from './domain/entities/DeviceState';
import { Command } from './domain/entities/Command';
import { ColorRgb, ColorTemperature, Brightness } from './domain/value-objects';
import { RetryPolicy } from './infrastructure/retry';
export interface GoveeClientConfig {
apiKey: string;
timeout?: number;
rateLimit?: number;
logger?: Logger;
enableRetries?: boolean;
retryPolicy?: 'development' | 'testing' | 'production' | 'custom' | RetryPolicy;
}
export declare class GoveeClient {
private readonly controlService;
private readonly logger;
constructor(config: GoveeClientConfig);
private validateConfig;
getDevices(): Promise<GoveeDevice[]>;
getDeviceState(deviceId: string, model: string): Promise<DeviceState>;
getControllableDevices(): Promise<GoveeDevice[]>;
getRetrievableDevices(): Promise<GoveeDevice[]>;
findDeviceByName(deviceName: string): Promise<GoveeDevice | undefined>;
findDevicesByModel(model: string): Promise<GoveeDevice[]>;
sendCommand(deviceId: string, model: string, command: Command): Promise<void>;
turnOn(deviceId: string, model: string): Promise<void>;
turnOff(deviceId: string, model: string): Promise<void>;
setBrightness(deviceId: string, model: string, brightness: Brightness): Promise<void>;
setColor(deviceId: string, model: string, color: ColorRgb): Promise<void>;
setColorTemperature(deviceId: string, model: string, colorTemperature: ColorTemperature): Promise<void>;
turnOnWithBrightness(deviceId: string, model: string, brightness: Brightness): Promise<void>;
turnOnWithColor(deviceId: string, model: string, color: ColorRgb, brightness?: Brightness): Promise<void>;
turnOnWithColorTemperature(deviceId: string, model: string, colorTemperature: ColorTemperature, brightness?: Brightness): Promise<void>;
isDeviceOnline(deviceId: string, model: string): Promise<boolean>;
isDevicePoweredOn(deviceId: string, model: string): Promise<boolean>;
getRateLimiterStats(): {
currentRequests: number;
maxRequests: number;
queueSize: number;
windowMs: number;
utilizationPercent: number;
canExecuteImmediately: boolean;
nextAvailableSlot: number;
};
getRetryMetrics(): Readonly<import("./infrastructure/retry").RetryMetrics> | null;
getServiceStats(): {
rateLimiter: {
currentRequests: number;
maxRequests: number;
queueSize: number;
windowMs: number;
utilizationPercent: number;
canExecuteImmediately: boolean;
nextAvailableSlot: number;
};
retries: Readonly<import("./infrastructure/retry").RetryMetrics> | null;
configuration: {
enableRetries: boolean;
rateLimit: number;
};
};
resetRetryMetrics(): void;
isRetryEnabled(): boolean;
}
//# sourceMappingURL=GoveeClient.d.ts.map