import { CommandMode, DenonClient, Playing, RaceStatus } from "./denonClient.js";
import * as DenonProtocol from "./denonProtocol.js";
export declare class DenonClientHeosCli extends DenonClient {
    readonly controlMode = DenonProtocol.ControlMode.HEOSCLI;
    protected static readonly PROTOCOL: {
        GLOBAL_CHANGE_EVENT_REGEX: RegExp;
        PID_REGEX: RegExp;
        EVENT_SUB: {
            SET: {
                COMMAND: string;
                PARAMS: string;
                EXP_RES: RegExp;
            };
            VALUES: {
                ON: {
                    VALUE: string;
                    MAP: boolean;
                };
                OFF: {
                    VALUE: string;
                    MAP: boolean;
                };
            };
        };
        PLAYERS: {
            GET: {
                COMMAND: string;
                PARAMS: string;
                EXP_RES: RegExp;
            };
        };
        PLAY_STATE: {
            GET: {
                COMMAND: string;
                PARAMS: string;
                EXP_RES: RegExp;
            };
            SET: {
                COMMAND: string;
                PARAMS: string;
                EXP_RES: RegExp;
            };
            EVENT: {
                COMMAND: string;
                EXP_RES: RegExp;
            };
            VALUES: {
                PLAY: {
                    VALUE: string;
                    MAP: Playing;
                };
                PAUSE: {
                    VALUE: string;
                    MAP: Playing;
                };
                STOP: {
                    VALUE: string;
                    MAP: Playing;
                };
            };
        };
        PLAY_NEXT: {
            SET: {
                COMMAND: string;
                PARAMS: string;
                EXP_RES: RegExp;
            };
        };
        PLAY_PREVIOUS: {
            SET: {
                COMMAND: string;
                PARAMS: string;
                EXP_RES: RegExp;
            };
        };
        MUTE: {
            GET: {
                COMMAND: string;
                PARAMS: string;
                EXP_RES: RegExp;
            };
            SET: {
                COMMAND: string;
                PARAMS: string;
                EXP_RES: RegExp;
            };
            EVENT: {
                EVENT: string;
                EXP_RES: RegExp;
            };
            VALUES: {
                ON: {
                    VALUE: string;
                    MAP: boolean;
                };
                OFF: {
                    VALUE: string;
                    MAP: boolean;
                };
            };
        };
        VOLUME: {
            GET: {
                COMMAND: string;
                PARAMS: string;
                EXP_RES: RegExp;
            };
            SET: {
                COMMAND: string;
                PARAMS: string;
                EXP_RES: RegExp;
            };
            EVENT: {
                EVENT: string;
                EXP_RES: RegExp;
            };
        };
        VOLUME_UP: {
            SET: {
                COMMAND: string;
                PARAMS: string;
                EXP_RES: RegExp;
            };
        };
        VOLUME_DOWN: {
            SET: {
                COMMAND: string;
                PARAMS: string;
                EXP_RES: RegExp;
            };
        };
    };
    private player_id;
    constructor(serialNumber: string, host: string, connect_timeout: number, response_timeout: number, debugLogCallback?: (message: string, ...parameters: any[]) => void, powerUpdateCallback?: (power: boolean) => void, muteUpdateCallback?: (mute: boolean) => void, volumeUpdateCallback?: (volume: number) => void);
    private findPlayerId;
    protected subscribeToChangeEvents(): Promise<void>;
    protected sendCommand(command: any, commandMode: CommandMode, { value, passPayload }: {
        value?: string;
        passPayload?: boolean;
    }): Promise<string>;
    protected responseRouter(response: string): void;
    private genericResponseHandler;
    private getPlayingInternal;
    getPlaying(raceStatus?: RaceStatus): Promise<Playing>;
    setPlaying(playing: Playing): Promise<Playing>;
    setPlayNext(): Promise<void>;
    setPlayPrevious(): Promise<void>;
    getPower(raceStatus?: RaceStatus): Promise<boolean>;
    setPower(power: boolean): Promise<boolean>;
    getMute(raceStatus?: RaceStatus): Promise<boolean>;
    setMute(mute: boolean): Promise<boolean>;
    getVolume(raceStatus?: RaceStatus): Promise<number>;
    setVolume(volume: number): Promise<number>;
    setVolumeUp(volumeIncrement: number): Promise<void>;
    setVolumeDown(volumeDecrement: number): Promise<void>;
}
