import { ButtonState, InputSource, SplitVfxType, TransitionType } from '../enums';
/**
 * Class for controlling Roland V-8HD video switcher via MIDI
 * Provides methods to control video transitions, effects, and audio levels
 */
export declare class RolandV8HD {
    private output;
    private readonly MIDI_CHANNEL;
    /**
     * Creates a new instance of RolandV8HD controller
     * Automatically searches for and connects to the Roland V-8HD device
     * @throws {Error} If Roland V-8HD MIDI device is not found
     */
    constructor();
    /**
     * Initializes MIDI connection with Roland V-8HD
     * @private
     * @throws {Error} If Roland V-8HD device cannot be found
     */
    private initializeMidi;
    /**
     * Sends a MIDI Control Change message to the device
     * @private
     * @param {CC} cc - Control Change number
     * @param {number} value - Value to send (0-127)
     */
    private sendControlChange;
    /**
     * Sets the video fader position
     * @param {number} position - Position value (0-127, bottom to top)
     * @throws {Error} If position is out of range
     */
    setVideoFader(position: number): void;
    /**
     * Sets the transition type
     * @param {TransitionType} type - Type of transition (MIX or WIPE)
     */
    setTransitionType(type: TransitionType): void;
    /**
     * Sets the Mix/Wipe transition time
     * @param {number} seconds - Transition time in seconds (0.0-4.0)
     * @throws {Error} If time is out of range
     */
    setMixWipeTime(seconds: number): void;
    /**
     * Sets the PinP 1 transition time
     * @param {number} seconds - Transition time in seconds (0.0-4.0)
     * @throws {Error} If time is out of range
     */
    setPinP1Time(seconds: number): void;
    /**
     * Sets the PinP 2 transition time
     * @param {number} seconds - Transition time in seconds (0.0-4.0)
     * @throws {Error} If time is out of range
     */
    setPinP2Time(seconds: number): void;
    /**
     * Sets the DSK transition time
     * @param {number} seconds - Transition time in seconds (0.0-4.0)
     * @throws {Error} If time is out of range
     */
    setDSKTime(seconds: number): void;
    /**
     * Sets the PinP 1 input source
     * @param {InputSource} source - Source to use for PinP 1
     */
    setPinP1Source(source: InputSource): void;
    /**
     * Sets the PinP 1 horizontal position
     * @param {number} percent - Position as percentage (-50 to 50%)
     * @throws {Error} If position is out of range
     */
    setPinP1PositionH(percent: number): void;
    /**
     * Sets the PinP 1 vertical position
     * @param {number} percent - Position as percentage (-50 to 50%)
     * @throws {Error} If position is out of range
     */
    setPinP1PositionV(percent: number): void;
    /**
     * Sets the PinP 1 size
     * @param {number} percent - Size as percentage (10-100%)
     * @throws {Error} If size is out of range
     */
    setPinP1Size(percent: number): void;
    /**
     * Sets the PinP 1 view zoom
     * @param {number} percent - Zoom as percentage (100-1000%)
     * @throws {Error} If zoom is out of range
     */
    setPinP1ViewZoom(percent: number): void;
    /**
     * Sets the PinP 2 input source
     * @param {InputSource} source - Source to use for PinP 2
     */
    setPinP2Source(source: InputSource): void;
    /**
     * Sets the PinP 2 horizontal position
     * @param {number} percent - Position as percentage (-50 to 50%)
     * @throws {Error} If position is out of range
     */
    setPinP2PositionH(percent: number): void;
    /**
     * Sets the PinP 2 vertical position
     * @param {number} percent - Position as percentage (-50 to 50%)
     * @throws {Error} If position is out of range
     */
    setPinP2PositionV(percent: number): void;
    /**
     * Sets the PinP 2 size
     * @param {number} percent - Size as percentage (10-100%)
     * @throws {Error} If size is out of range
     */
    setPinP2Size(percent: number): void;
    /**
     * Sets the PinP 2 view zoom
     * @param {number} percent - Zoom as percentage (100-1000%)
     * @throws {Error} If zoom is out of range
     */
    setPinP2ViewZoom(percent: number): void;
    /**
     * Sets the DSK source
     * @param {InputSource} source - Source to use for DSK
     */
    setDSKSource(source: InputSource): void;
    /**
     * Sets the DSK level
     * @param {number} level - Level value (0-127)
     * @throws {Error} If level is out of range
     */
    setDSKLevel(level: number): void;
    /**
     * Sets the DSK gain
     * @param {number} gain - Gain value (0-127, converts to 0-255)
     * @throws {Error} If gain is out of range
     */
    setDSKGain(gain: number): void;
    /**
     * Sets the DSK mix level
     * @param {number} level - Mix level value (0-127, converts to 0-255)
     * @throws {Error} If level is out of range
     */
    setDSKMixLevel(level: number): void;
    /**
     * Sets the SPLIT/VFX A switch state
     * @param {ButtonState} state - ON or OFF state, defaults to ON
     */
    setSplitVfxASwitch(state?: ButtonState): void;
    /**
     * Sets the SPLIT/VFX A effect type
     * @param {SplitVfxType} type - Effect type to use
     */
    setSplitVfxAType(type: SplitVfxType): void;
    /**
     * Sets the SPLIT/VFX B switch state
     * @param {ButtonState} state - ON or OFF state, defaults to ON
     */
    setSplitVfxBSwitch(state?: ButtonState): void;
    /**
     * Sets the SPLIT/VFX B effect type
     * @param {SplitVfxType} type - Effect type to use
     */
    setSplitVfxBType(type: SplitVfxType): void;
    /**
     * Sets the OUTPUT FADE knob counter-clockwise value
     * @param {number} value - Fade value (0-63)
     * @throws {Error} If value is out of range
     */
    setOutputFadeCCW(value: number): void;
    /**
     * Sets the OUTPUT FADE knob clockwise value
     * @param {number} value - Fade value (0-63)
     * @throws {Error} If value is out of range
     */
    setOutputFadeCW(value: number): void;
    /**
     * Sets the audio input level for a specific input channel
     * @param {number} input - Input channel (1-8)
     * @param {number} level - Level value (0-127)
     * @throws {Error} If input or level is out of range
     */
    setAudioInputLevel(input: number, level: number): void;
    /**
     * Sets the audio level for the AUDIO IN source
     * @param {number} level - Level value (0-127)
     * @throws {Error} If level is out of range
     */
    setAudioInLevel(level: number): void;
    /**
     * Sets the audio output level
     * @param {number} level - Level value (0-127)
     * @throws {Error} If level is out of range
     */
    setAudioOutputLevel(level: number): void;
    /**
     * Sets the CUT button state
     * @param {ButtonState} state - ON or OFF state, defaults to ON
     */
    setCutButton(state?: ButtonState): void;
    /**
     * Sets the AUTO button state
     * @param {ButtonState} state - ON or OFF state, defaults to ON
     */
    setAutoButton(state?: ButtonState): void;
    /**
     * Triggers the H CUT I video switch
     * Performs an immediate cut transition
     */
    triggerHCutI(): void;
    /**
     * Triggers the H AUTO TAKE I video switch
     * Performs an auto transition based on current settings
     */
    triggerHAutoTakeI(): void;
    /**
     * Sets the audio input mute state for a specific input channel
     * @param {number} input - Input channel (1-8)
     * @param {ButtonState} state - Mute state (ON to mute, OFF to unmute)
     * @throws {Error} If input is out of range
     */
    setAudioInputMute(input: number, state: ButtonState): void;
    /**
     * Sets the AUDIO IN mute state
     * @param {ButtonState} state - Mute state (ON to mute, OFF to unmute)
     */
    setAudioInMute(state: ButtonState): void;
    /**
     * Sets the audio output mute state
     * @param {ButtonState} state - Mute state (ON to mute, OFF to unmute)
     */
    setAudioOutputMute(state: ButtonState): void;
    /**
     * Closes the MIDI connection and releases resources
     * Call this method when finished using the controller
     */
    close(): void;
}
//# sourceMappingURL=RolandV8HD.d.ts.map