import { PanasonicFocusMode } from './connection';
export interface Command {
    serialize(): string;
    deserializeResponse(response: string): any;
}
export declare class InvalidResponseError extends Error {
    readonly response: string;
    constructor(response: string);
}
export declare enum PowerMode {
    POWER_MODE_ON = "p1",
    POWER_MODE_STBY = "p0",
    POWER_MODE_TURNING_ON = "p3"
}
export declare class PowerModeQuery implements Command {
    serialize(): string;
    deserializeResponse(response: string): PowerMode;
}
/**
 * Store camera preset
 */
export declare class PresetRegisterControl implements Command {
    private presetNumber;
    /**
     * @param presetNumber The preset to be stored. 0-99
     */
    constructor(presetNumber: number);
    serialize(): string;
    deserializeResponse(response: string): number;
}
/**
 * Recall camera preset
 */
export declare class PresetPlaybackControl implements Command {
    private presetNumber;
    /**
     * @param presetNumber The preset to be recalled. 0-99
     */
    constructor(presetNumber: number);
    serialize(): string;
    deserializeResponse(response: string): number;
}
/**
 * Reset camera preset
 */
export declare class PresetDeleteControl implements Command {
    private presetNumber;
    /**
     * @param presetNumber The preset to be reset. 0-99
     */
    constructor(presetNumber: number);
    serialize(): string;
    deserializeResponse(response: string): number;
}
/**
 * Get the last preset recalled in the camera
 */
export declare class PresetNumberQuery implements Command {
    serialize(): string;
    deserializeResponse(response: string): number;
}
/**
 * Set camera preset recall speed, within speed table
 */
export declare class PresetSpeedControl implements Command {
    private speed;
    /**
     * @param speed Speed to be set for the camera preset recall. 250-999 or 0. 0 is maximum speed
     */
    constructor(speed: number);
    serialize(): string;
    deserializeResponse(response: string): number;
}
/**
 * Get camera preset recall speed, within speed table
 */
export declare class PresetSpeedQuery implements Command {
    serialize(): string;
    deserializeResponse(response: string): number;
}
interface PanTiltSpeed {
    panSpeed: number;
    tiltSpeed: number;
}
/**
 * Set camera pan and tilt speed (essentially, current virtual joystick position)
 */
export declare class PanTiltSpeedControl implements Command {
    private panSpeed;
    private tiltSpeed;
    /**
     * @param panSpeed Acceptable values are 1-99. 50 is pan stop, 49 is slowest LEFT, 51 is slowest RIGHT, 1 is fastest LEFT, 99 is fastest RIGHT
     * @param tiltSpeed Acceptable values are 1-99. 50 is tilt stop, 49 is slowest DOWN, 51 is slowest UP, 1 is fastest DOWN, 99 is fastest UP
     */
    constructor(panSpeed: number, tiltSpeed: number);
    serialize(): string;
    deserializeResponse(response: string): PanTiltSpeed;
}
interface PanTiltPosition {
    panPosition: number;
    tiltPosition: number;
}
/**
 * Set absolute camera pan and tilt position
 */
export declare class PanTiltPositionControl implements Command {
    private panPosition;
    private tiltPosition;
    /**
     * @param panPosition
     * @param tiltPosition
     */
    constructor(panPosition: number, tiltPosition: number);
    serialize(): string;
    deserializeResponse(response: string): PanTiltPosition;
}
/**
 * Get absolute camera pan and tilt position
 */
export declare class PanTiltPositionQuery implements Command {
    serialize(): string;
    deserializeResponse(response: string): PanTiltPosition;
}
/**
 * Set camera lens zoom speed (essentially, current virtual zoom rocker position)
 */
export declare class ZoomSpeedControl implements Command {
    private speed;
    /**
     * @param speed Speed to be set for the camera zoom. Acceptable values are 1-99. 50 is zoom stop, 49 is slowest WIDE, 51 is slowest TELE, 1 is fastest WIDE, 99 is fastest TELE
     */
    constructor(speed: number);
    serialize(): string;
    deserializeResponse(response: string): number;
}
/**
 * Get camera lens zoom speed (essentially, current virtual zoom rocker position)
 */
export declare class ZoomSpeedQuery implements Command {
    serialize(): string;
    deserializeResponse(response: string): number;
}
/**
 * Set camera lens zoom (an absolute number)
 */
export declare class ZoomPositionControl implements Command {
    private position;
    /**
     * @param position Absolute zoom position to be set. Range: 0x555 (WIDE) - 0xfff (TELE)
     */
    constructor(position: number);
    serialize(): string;
    deserializeResponse(response: string): number;
}
/**
 * Get camera lens zoom (an absolute number)
 */
export declare class ZoomPositionQuery implements Command {
    serialize(): string;
    deserializeResponse(response: string): number;
}
/**
 * Set camera focus speed
 */
export declare class FocusSpeedControl implements Command {
    private speed;
    /**
     * @param speed Speed to be set for the camera focus. Acceptable values are 1-99. 50 is focus stop, 49 is slowest NEAR, 51 is slowest FAR, 1 is fastest NEAR, 99 is fastest FAR
     */
    constructor(speed: number);
    serialize(): string;
    deserializeResponse(response: string): number;
}
/**
 * Set camera focus mode (AUTO/MANUAL)
 */
export declare class AutoFocusOnOffControl implements Command {
    private mode;
    /**
     * @param mode Mode to be set for the camera focus
     */
    constructor(mode: PanasonicFocusMode);
    serialize(): string;
    deserializeResponse(response: string): PanasonicFocusMode;
}
/**
 * Get camera focus mode (AUTO/MANUAL)
 */
export declare class AutoFocusOnOffQuery implements Command {
    serialize(): string;
    deserializeResponse(response: string): PanasonicFocusMode;
}
/**
 * Trigger one-touch focus
 */
export declare class OneTouchFocusControl implements Command {
    serialize(): string;
    deserializeResponse(response: string): void;
}
/**
 * Set camera focus distance (an absolute number)
 */
export declare class FocusPositionControl implements Command {
    private position;
    /**
     * @param position Absolute focus position to be set. Range: 0x555 (NEAR) - 0xfff (FAR)
     */
    constructor(position: number);
    serialize(): string;
    deserializeResponse(response: string): number;
}
/**
 * Get camera focus distance (an absolute number)
 */
export declare class FocusPositionQuery implements Command {
    serialize(): string;
    deserializeResponse(response: string): number;
}
export {};
//# sourceMappingURL=commands.d.ts.map