/**
 * VeSync Bulb Base Class
 */
import { VeSyncBaseDevice } from './vesyncBaseDevice';
import { VeSync } from './vesync';
interface RgbValues {
    red: number;
    green: number;
    blue: number;
}
interface BulbConfig {
    [key: string]: {
        module: string;
        features: string[];
        colorModel: string;
    };
}
export declare const bulbConfig: BulbConfig;
/**
 * VeSync Bulb Base Class
 */
export declare abstract class VeSyncBulb extends VeSyncBaseDevice {
    protected brightness: number;
    protected colorTemp: number;
    protected colorValue: number;
    protected colorHue: number;
    protected colorSaturation: number;
    protected colorMode: string;
    protected features: string[];
    protected rgbValues: RgbValues;
    constructor(details: Record<string, any>, manager: VeSync);
    hasFeature(feature: string): boolean;
    getColorModel(): string;
    getBrightness(): number;
    /**
     * Get bulb details
     */
    getDetails(): Promise<Boolean>;
    /**
     * Update bulb details
     */
    update(): Promise<Boolean>;
    /**
     * Turn bulb on
     */
    turnOn(): Promise<boolean>;
    /**
     * Turn bulb off
     */
    turnOff(): Promise<boolean>;
    /**
     * Set bulb brightness
     */
    setBrightness(brightness: number): Promise<boolean>;
    /**
     * Get bulb brightness
     */
    /**
     * Get color temperature in Kelvin
     */
    getColorTempKelvin(): number;
    /**
     * Get color temperature in percent
     */
    getColorTempPercent(): number;
    /**
     * Get color hue
     */
    getColorHue(): number;
    /**
     * Get color saturation
     */
    getColorSaturation(): number;
    /**
     * Get color value
     */
    getColorValue(): number;
    /**
     * Get RGB values
     */
    getRGBValues(): {
        red: number;
        green: number;
        blue: number;
    };
    /**
     * Set color temperature wrapper to maintain compatibility with consumers
     */
    setColorTemperature(colorTemp: number): Promise<boolean>;
    /**
     * Set color via hue/saturation/value when supported
     */
    setColor(hue: number, saturation: number, value?: number): Promise<boolean>;
    /**
     * Process standard bypass (v1) detail responses shared by multiple bulbs
     */
    protected processStandardBypassDetails(response: any, statusCode: number): boolean;
    /**
     * Set color temperature - Abstract method to be implemented by subclasses
     */
    abstract setColorTemp(colorTemp: number): Promise<boolean>;
    protected static clamp(value: number, min: number, max: number): number;
    protected static hsvToRgb(h: number, s: number, v: number): RgbValues;
}
export {};
