/**
 * Base class for Tapo Smart Bulbs
 */
import { BaseTapoDevice, TapoCredentials, TapoApiRequest, TapoApiResponse } from '../../types';
import { TapoBulbInfo, HSVColor, RGBColor, NamedColor, LightEffectConfig, BulbCapabilities } from '../../types/bulb';
import { TapoAuth } from '../../core/auth';
import { KlapAuth } from '../../core/klap-auth';
export declare abstract class BaseBulb extends BaseTapoDevice {
    protected auth: TapoAuth;
    protected klapAuth: KlapAuth;
    protected useKlap: boolean;
    private requestQueue;
    private lastRequestTime;
    private readonly minRequestInterval;
    constructor(ip: string, credentials: TapoCredentials);
    /**
     * Get device model - to be implemented by subclasses
     */
    protected abstract getDeviceModel(): string;
    /**
     * Get device capabilities
     */
    getCapabilities(): BulbCapabilities;
    private checkDeviceConnectivity;
    connect(): Promise<void>;
    disconnect(): Promise<void>;
    /**
     * Send request with rate limiting and session management
     */
    protected sendRequest<T>(request: TapoApiRequest): Promise<TapoApiResponse<T>>;
    /**
     * Turn bulb on
     */
    turnOn(): Promise<void>;
    /**
     * Turn bulb off
     */
    turnOff(): Promise<void>;
    /**
     * Toggle bulb state
     */
    toggle(): Promise<void>;
    /**
     * Convenience aliases following Python API pattern
     */
    on(): Promise<void>;
    off(): Promise<void>;
    /**
     * Check if bulb is on
     */
    isOn(): Promise<boolean>;
    /**
     * Get device information
     */
    getDeviceInfo(): Promise<TapoBulbInfo>;
    /**
     * Set brightness level
     */
    setBrightness(brightness: number): Promise<void>;
    /**
     * Get current brightness
     */
    getBrightness(): Promise<number>;
    /**
     * Set color using HSV values
     */
    setColor(color: HSVColor): Promise<void>;
    /**
     * Set color using RGB values
     */
    setColorRGB(color: RGBColor): Promise<void>;
    /**
     * Set color using named color
     */
    setNamedColor(color: NamedColor): Promise<void>;
    /**
     * Get current color in HSV format
     */
    getColor(): Promise<HSVColor | null>;
    /**
     * Set color temperature
     */
    setColorTemperature(temperature: number, brightness?: number): Promise<void>;
    /**
     * Get current color temperature
     */
    getColorTemperature(): Promise<number | null>;
    /**
     * Set light effect
     */
    setLightEffect(config: LightEffectConfig): Promise<void>;
    /**
     * Turn off light effects
     */
    turnOffEffect(): Promise<void>;
    /**
     * Check if device supports a specific feature
     */
    supportsFeature(feature: keyof BulbCapabilities): boolean;
    /**
     * Get device capabilities
     */
    hasColorSupport(): Promise<boolean>;
    hasColorTemperatureSupport(): Promise<boolean>;
    hasEffectsSupport(): Promise<boolean>;
}
