/**
 * DeviceIO ver10 module
 * @author Andrew D.Laptev <a.d.laptev@gmail.com>
 * @see https://www.onvif.org/ver10/deviceio.wsdl
 */
import { Onvif } from './onvif';
import Service from './service';
import { ReferenceToken } from './interfaces/common';
import { AudioOutputConfiguration, AudioOutputConfigurationOptions, AudioSourceConfiguration, AudioSourceConfigurationOptions, DigitalInput, RelayOutput, VideoOutput, VideoOutputConfiguration, VideoOutputConfigurationOptions, VideoSourceConfiguration, VideoSourceConfigurationOptions } from './interfaces/onvif';
import { SetRelayOutputState } from './interfaces/devicemgmt';
import { Capabilities, DigitalInputConfigurationOptions, GetAudioOutputConfiguration, GetAudioOutputConfigurationOptions, GetAudioSourceConfiguration, GetAudioSourceConfigurationOptions, GetDigitalInputConfigurationOptions, GetRelayOutputOptions, GetSerialPortConfiguration, GetSerialPortConfigurationOptions, GetVideoOutputConfiguration, GetVideoOutputConfigurationOptions, GetVideoSourceConfiguration, GetVideoSourceConfigurationOptions, RelayOutputOptions, SendReceiveSerialCommand, SendReceiveSerialCommandResponse, SerialPort, SerialPortConfiguration, SerialPortConfigurationOptions, SetAudioOutputConfiguration, SetAudioSourceConfiguration, SetDigitalInputConfigurations, SetRelayOutputSettings, SetSerialPortConfiguration, SetVideoOutputConfiguration, SetVideoSourceConfiguration } from './interfaces/deviceio';
/**
 * DeviceIO service
 * @example
 * ```typescript
 * await cam.connect();
 * const caps = await cam.deviceIO.getServiceCapabilities();
 * const relays = await cam.deviceIO.getRelayOutputs();
 * const inputs = await cam.deviceIO.getDigitalInputs();
 * await cam.deviceIO.setRelayOutputState({
 *   relayOutputToken: 'RelayOutputToken_1',
 *   logicalState: 'active',
 * });
 * ```
 */
export default class DeviceIO extends Service {
    constructor(onvif: Onvif);
    private videoSourceToken;
    private static relayOutputToBuild;
    private static digitalInputsToBuild;
    private static serialPortConfigurationToBuild;
    private static serialDataToBuild;
    private static audioSourceConfigurationToBuild;
    private static audioOutputConfigurationToBuild;
    private static videoSourceConfigurationToBuild;
    private static videoOutputConfigurationToBuild;
    /**
     * Returns the capabilities of the device IO service.
     */
    getServiceCapabilities(): Promise<Capabilities>;
    /**
     * Request the available settings and ranges for one or all relay outputs.
     * @param options
     */
    getRelayOutputOptions({ relayOutputToken }?: GetRelayOutputOptions): Promise<RelayOutputOptions[]>;
    /**
     * Returns tokens of available video sources.
     */
    getVideoSources(): Promise<ReferenceToken[]>;
    /**
     * Returns tokens of available audio sources.
     */
    getAudioSources(): Promise<ReferenceToken[]>;
    /**
     * Returns tokens of available audio outputs.
     */
    getAudioOutputs(): Promise<ReferenceToken[]>;
    /**
     * Returns available physical video outputs.
     */
    getVideoOutputs(): Promise<VideoOutput[]>;
    /**
     * Returns the video source configuration for a physical video source.
     * @param options
     */
    getVideoSourceConfiguration({ videoSourceToken, }: GetVideoSourceConfiguration): Promise<VideoSourceConfiguration>;
    /**
     * Returns the video output configuration for a physical video output.
     * @param options
     */
    getVideoOutputConfiguration({ videoOutputToken, }: GetVideoOutputConfiguration): Promise<VideoOutputConfiguration>;
    /**
     * Returns the audio source configuration for a physical audio source.
     * @param options
     */
    getAudioSourceConfiguration({ audioSourceToken, }: GetAudioSourceConfiguration): Promise<AudioSourceConfiguration>;
    /**
     * Returns the audio output configuration for a physical audio output.
     * @param options
     */
    getAudioOutputConfiguration({ audioOutputToken, }: GetAudioOutputConfiguration): Promise<AudioOutputConfiguration>;
    /**
     * Modifies a video source configuration.
     * @param options
     */
    setVideoSourceConfiguration({ configuration, forcePersistence }: SetVideoSourceConfiguration): Promise<void>;
    /**
     * Modifies a video output configuration.
     * @param options
     */
    setVideoOutputConfiguration({ configuration, forcePersistence }: SetVideoOutputConfiguration): Promise<void>;
    /**
     * Modifies an audio source configuration.
     * @param options
     */
    setAudioSourceConfiguration({ configuration, forcePersistence }: SetAudioSourceConfiguration): Promise<void>;
    /**
     * Modifies an audio output configuration.
     * @param options
     */
    setAudioOutputConfiguration({ configuration, forcePersistence }: SetAudioOutputConfiguration): Promise<void>;
    /**
     * Returns valid ranges for video source configuration parameters.
     * @param options
     */
    getVideoSourceConfigurationOptions({ videoSourceToken, }: GetVideoSourceConfigurationOptions): Promise<VideoSourceConfigurationOptions>;
    /**
     * Returns valid ranges for video output configuration parameters.
     * @param options
     */
    getVideoOutputConfigurationOptions({ videoOutputToken, }: GetVideoOutputConfigurationOptions): Promise<VideoOutputConfigurationOptions>;
    /**
     * Returns valid ranges for audio source configuration parameters.
     * @param options
     */
    getAudioSourceConfigurationOptions({ audioSourceToken, }: GetAudioSourceConfigurationOptions): Promise<AudioSourceConfigurationOptions>;
    /**
     * Returns valid ranges for audio output configuration parameters.
     * @param options
     */
    getAudioOutputConfigurationOptions({ audioOutputToken, }: GetAudioOutputConfigurationOptions): Promise<AudioOutputConfigurationOptions>;
    /**
     * Returns relay outputs available on the device.
     */
    getRelayOutputs(): Promise<RelayOutput[]>;
    /**
     * Modifies relay output settings.
     * @param options
     */
    setRelayOutputSettings({ relayOutput }: SetRelayOutputSettings): Promise<void>;
    /**
     * Sets the logical state of a relay output.
     * @param options
     */
    setRelayOutputState({ relayOutputToken, logicalState }: SetRelayOutputState): Promise<void>;
    /**
     * Returns digital inputs available on the device.
     */
    getDigitalInputs(): Promise<DigitalInput[]>;
    /**
     * Returns configuration options for digital inputs.
     * @param options
     */
    getDigitalInputConfigurationOptions({ token, }?: GetDigitalInputConfigurationOptions): Promise<DigitalInputConfigurationOptions>;
    /**
     * Modifies digital input configurations.
     * @param options
     */
    setDigitalInputConfigurations({ digitalInputs }: SetDigitalInputConfigurations): Promise<void>;
    /**
     * Returns serial ports available on the device.
     */
    getSerialPorts(): Promise<SerialPort[]>;
    /**
     * Returns the configuration of a serial port.
     * @param options
     */
    getSerialPortConfiguration({ serialPortToken }: GetSerialPortConfiguration): Promise<SerialPortConfiguration>;
    /**
     * Modifies the configuration of a serial port.
     * @param options
     */
    setSerialPortConfiguration({ serialPortConfiguration, forcePersistance, }: SetSerialPortConfiguration): Promise<void>;
    /**
     * Returns configuration options for a serial port.
     * @param options
     */
    getSerialPortConfigurationOptions({ serialPortToken, }: GetSerialPortConfigurationOptions): Promise<SerialPortConfigurationOptions>;
    /**
     * Sends data to a serial port and optionally receives a response.
     * @param options
     */
    sendReceiveSerialCommand(options: SendReceiveSerialCommand): Promise<SendReceiveSerialCommandResponse>;
}
