import WebSocket from 'ws';
import type { CommandArgs, CommandCallback, Device, NodeConfig } from './types.js';
/**
 * Control Aputure Amaran Lights via websocket to the amaran Desktop application.
 *
 * @class LightController
 */
declare class LightController {
    private ws;
    private clientId;
    private deviceList;
    private sceneList;
    private nodeConfigs;
    private commandCallbacks;
    private pendingQueue;
    private onInitializedCallback?;
    private debug;
    constructor(wsUrl: string, clientId?: string, onInitialized?: () => void, debug?: boolean);
    private onConnectionOpen;
    private handleMessage;
    private processResponseType;
    private handleDeviceList;
    private handleSceneList;
    private handleNodeConfig;
    private getNodeConfigs;
    /**
     * Apply a command to all light devices with throttling.
     */
    private applyToAllLights;
    setCCTAndIntensityForAllLights(cct: number, intensity?: number, callback?: CommandCallback): Promise<void>;
    turnOnAllLights(callback?: CommandCallback): Promise<void>;
    turnOffAllLights(callback?: CommandCallback): Promise<void>;
    toggleAllLights(callback?: CommandCallback): Promise<void>;
    setIntensityForAllLights(intensity: number, callback?: CommandCallback): Promise<void>;
    incrementIntensityForAllLights(delta: number, callback?: CommandCallback): Promise<void>;
    incrementCCTForAllLights(delta: number, intensity?: number, callback?: CommandCallback): Promise<void>;
    setHSIForAllLights(hue: number, sat: number, intensity: number, cct?: number, gm?: number, callback?: CommandCallback): Promise<void>;
    setColorForAllLights(color: string, intensity?: number, callback?: CommandCallback): Promise<void>;
    setSystemEffectForAllLights(effectType: string, intensity?: number, callback?: CommandCallback): Promise<void>;
    getFixtureList(callback?: CommandCallback): void;
    getDeviceList(callback?: CommandCallback): void;
    getSceneList(callback?: CommandCallback): void;
    saveScene(name: string, callback?: CommandCallback): void;
    deleteScene(sceneId: string, callback?: CommandCallback): void;
    recallScene(sceneId: string, callback?: CommandCallback): void;
    updateScene(sceneId: string, name?: string, callback?: CommandCallback): void;
    getPresetList(callback?: CommandCallback): void;
    recallPreset(nodeId: string, presetId: string, callback?: CommandCallback): void;
    setPreset(nodeId: string, presetId: string, callback?: CommandCallback): void;
    getSystemEffectList(callback?: CommandCallback): void;
    getQuickshotList(callback?: CommandCallback): void;
    setQuickshot(quickshotId: string, callback?: CommandCallback): void;
    getGroupList(callback?: CommandCallback): void;
    createGroup(name: string, callback?: CommandCallback): void;
    deleteGroup(groupId: string, callback?: CommandCallback): void;
    addToGroup(groupId: string, nodeId: string, callback?: CommandCallback): void;
    removeFromGroup(groupId: string, nodeId: string, callback?: CommandCallback): void;
    getNodeConfig(nodeId: string, callback?: CommandCallback): void;
    turnLightOn(nodeId: string, callback?: CommandCallback): void;
    turnLightOff(nodeId: string, callback?: CommandCallback): void;
    getLightSleepStatus(nodeId: string, callback?: CommandCallback): void;
    toggleLight(nodeId: string, callback?: CommandCallback): void;
    getIntensity(nodeId: string, callback?: CommandCallback): void;
    setIntensity(nodeId: string, intensity: number, callback?: CommandCallback): void;
    incrementIntensity(nodeId: string, delta: number, callback?: CommandCallback): void;
    getCCT(nodeId: string, callback?: CommandCallback): void;
    setCCT(nodeId: string, cct: number, intensity?: number, callback?: CommandCallback): void;
    incrementCCT(nodeId: string, delta: number, intensity?: number, callback?: CommandCallback): void;
    getHSI(nodeId: string, callback?: CommandCallback): void;
    setHSI(nodeId: string, hue: number, sat: number, intensity: number, cct?: number, gm?: number, callback?: CommandCallback): void;
    getRGB(nodeId: string, callback?: CommandCallback): void;
    setRGB(nodeId: string, r: number, g: number, b: number, intensity?: number, callback?: CommandCallback): void;
    getXY(nodeId: string, callback?: CommandCallback): void;
    setXY(nodeId: string, x: number, y: number, intensity?: number, callback?: CommandCallback): void;
    setColor(nodeId: string, color: string, intensity?: number, callback?: CommandCallback): void;
    getSystemEffect(nodeId: string, callback?: CommandCallback): void;
    setSystemEffect(nodeId: string, effectType: string, intensity?: number, callback?: CommandCallback): void;
    getEffect(nodeId: string, callback?: CommandCallback): void;
    setEffect(nodeId: string, effectName: string, args?: CommandArgs, callback?: CommandCallback): void;
    getFanMode(nodeId: string, callback?: CommandCallback): void;
    setFanMode(nodeId: string, mode: number, callback?: CommandCallback): void;
    getFanSpeed(nodeId: string, callback?: CommandCallback): void;
    setFanSpeed(nodeId: string, speed: number, callback?: CommandCallback): void;
    setEffectSpeed(nodeId: string, speed: number, callback?: CommandCallback): void;
    setEffectIntensity(nodeId: string, intensity: number, callback?: CommandCallback): void;
    getDeviceInfo(nodeId: string, callback?: CommandCallback): void;
    updateFirmware(nodeId: string, callback?: CommandCallback): void;
    disconnect(): Promise<void>;
    private waitForPendingCommands;
    private sendCommand;
    private flushPending;
    private isLightNodeId;
    private sleep;
    private log;
    getWebSocket(): WebSocket;
    setClientId(clientId: string): void;
    getDevices(): Device[];
    getScenes(): unknown[];
    getNode(nodeId: string): NodeConfig | undefined;
}
export default LightController;
//# sourceMappingURL=lightControl.d.ts.map