/**
 * Recording ver10 module
 * @author Andrew D.Laptev <a.d.laptev@gmail.com>
 * @see https://www.onvif.org/ver10/recording.wsdl
 */
import { Onvif } from './onvif';
import Service from './service';
import { GetRecordingsResponseItem, GetRecordingJobsResponseItem, RecordingConfiguration, RecordingJobConfiguration, TrackConfiguration } from './interfaces/onvif';
import { ReferenceToken } from './interfaces/common';
import { Capabilities, RecordingOptions, CreateRecording, CreateRecordingJob, CreateRecordingJobResponse, CreateTrack, DeleteRecording, DeleteRecordingJob, DeleteTrack, ExportRecordedData, ExportRecordedDataResponse, GetExportRecordedDataState, GetExportRecordedDataStateResponse, GetRecordingConfiguration, GetRecordingJobConfiguration, GetRecordingJobState, GetRecordingOptions, GetTrackConfiguration, OverrideSegmentDuration, SetRecordingConfiguration, SetRecordingJobConfiguration, SetRecordingJobConfigurationResponse, SetRecordingJobMode, SetTrackConfiguration, StopExportRecordedData, StopExportRecordedDataResponse } from './interfaces/recording';
/**
 * Recording service
 */
export default class Recording extends Service {
    constructor(onvif: Onvif);
    private static recordingSourceToBuild;
    private static recordingConfigurationToBuild;
    private static trackConfigurationToBuild;
    private static recordingJobTrackToBuild;
    private static recordingJobSourceToBuild;
    private static recordingJobConfigurationToBuild;
    private static searchScopeToBuild;
    private static storageDestinationToBuild;
    /**
     * Returns the capabilities of the recording service.
     */
    getServiceCapabilities(): Promise<Capabilities>;
    /**
     * Create a new recording.
     * @param options
     */
    createRecording({ recordingConfiguration }: CreateRecording): Promise<ReferenceToken>;
    /**
     * Delete a recording.
     * @param options
     */
    deleteRecording({ recordingToken }: DeleteRecording): Promise<void>;
    /**
     * Return descriptions of all recordings on the device.
     */
    getRecordings(): Promise<GetRecordingsResponseItem[]>;
    /**
     * Change the configuration of a recording.
     * @param options
     */
    setRecordingConfiguration({ recordingToken, recordingConfiguration, }: SetRecordingConfiguration): Promise<void>;
    /**
     * Retrieve the recording configuration for a recording.
     * @param options
     */
    getRecordingConfiguration({ recordingToken }: GetRecordingConfiguration): Promise<RecordingConfiguration>;
    /**
     * Return recording options for a recording token.
     * @param options
     */
    getRecordingOptions({ recordingToken }: GetRecordingOptions): Promise<RecordingOptions>;
    /**
     * Create a new track within a recording.
     * @param options
     */
    createTrack({ recordingToken, trackConfiguration }: CreateTrack): Promise<ReferenceToken>;
    /**
     * Remove a track from a recording.
     * @param options
     */
    deleteTrack({ recordingToken, trackToken }: DeleteTrack): Promise<void>;
    /**
     * Retrieve the configuration for a specific track.
     * @param options
     */
    getTrackConfiguration({ recordingToken, trackToken }: GetTrackConfiguration): Promise<TrackConfiguration>;
    /**
     * Change the configuration of a track.
     * @param options
     */
    setTrackConfiguration({ recordingToken, trackToken, trackConfiguration, }: SetTrackConfiguration): Promise<void>;
    /**
     * Create a new recording job.
     * @param options
     */
    createRecordingJob({ jobConfiguration }: CreateRecordingJob): Promise<CreateRecordingJobResponse>;
    /**
     * Remove a recording job.
     * @param options
     */
    deleteRecordingJob({ jobToken }: DeleteRecordingJob): Promise<void>;
    /**
     * Return a list of all recording jobs on the device.
     */
    getRecordingJobs(): Promise<GetRecordingJobsResponseItem[]>;
    /**
     * Change the configuration for a recording job.
     * @param options
     */
    setRecordingJobConfiguration({ jobToken, jobConfiguration, }: SetRecordingJobConfiguration): Promise<SetRecordingJobConfigurationResponse>;
    /**
     * Return the current configuration for a recording job.
     * @param options
     */
    getRecordingJobConfiguration({ jobToken }: GetRecordingJobConfiguration): Promise<RecordingJobConfiguration>;
    /**
     * Change the mode of a recording job.
     * @param options
     */
    setRecordingJobMode({ jobToken, mode }: SetRecordingJobMode): Promise<void>;
    /**
     * Return the state of a recording job.
     * @param options
     */
    getRecordingJobState({ jobToken }: GetRecordingJobState): Promise<any>;
    /**
     * Export selected recordings to a storage target.
     * @param options
     */
    exportRecordedData(options: ExportRecordedData): Promise<ExportRecordedDataResponse>;
    /**
     * Stop an ExportRecordedData operation.
     * @param options
     */
    stopExportRecordedData({ operationToken }: StopExportRecordedData): Promise<StopExportRecordedDataResponse>;
    /**
     * Retrieve the state of an ExportRecordedData operation.
     * @param options
     */
    getExportRecordedDataState({ operationToken, }: GetExportRecordedDataState): Promise<GetExportRecordedDataStateResponse>;
    /**
     * Request a temporary override of the target segment duration for a recording.
     * @param options
     */
    overrideSegmentDuration({ targetSegmentDuration, expiration, recordingConfiguration, }: OverrideSegmentDuration): Promise<void>;
}
