/**
 * Imaging ver20 module
 * @author Andrew D.Laptev <a.d.laptev@gmail.com>
 * @see https://www.onvif.org/ver20/imaging/wsdl/imaging.wsdl
 */
import { Onvif } from './onvif';
import Service from './service';
import { ReferenceToken } from './interfaces/common';
import { ImagingOptions20, ImagingSettings20, ImagingStatus20, MoveOptions20 } from './interfaces/onvif';
import { Capabilities, GetCurrentPreset, GetImagingSettings, GetMoveOptions, GetOptions, GetPresets, GetStatus, ImagingPreset, Move, SetCurrentPreset, SetImagingSettings, Stop } from './interfaces/imaging.2';
interface VideoSourceTokenExtended {
    videoSourceToken?: ReferenceToken;
}
type GetImagingSettingsExtended = VideoSourceTokenExtended & Omit<GetImagingSettings, 'videoSourceToken'>;
type SetImagingSettingsExtended = VideoSourceTokenExtended & Omit<SetImagingSettings, 'videoSourceToken'>;
type GetOptionsExtended = VideoSourceTokenExtended & Omit<GetOptions, 'videoSourceToken'>;
type MoveExtended = VideoSourceTokenExtended & Omit<Move, 'videoSourceToken'>;
type GetMoveOptionsExtended = VideoSourceTokenExtended & Omit<GetMoveOptions, 'videoSourceToken'>;
type StopExtended = VideoSourceTokenExtended & Omit<Stop, 'videoSourceToken'>;
type GetStatusExtended = VideoSourceTokenExtended & Omit<GetStatus, 'videoSourceToken'>;
type GetPresetsExtended = VideoSourceTokenExtended & Omit<GetPresets, 'videoSourceToken'>;
type GetCurrentPresetExtended = VideoSourceTokenExtended & Omit<GetCurrentPreset, 'videoSourceToken'>;
type SetCurrentPresetExtended = VideoSourceTokenExtended & Omit<SetCurrentPreset, 'videoSourceToken'>;
/**
 * Imaging service
 * @example
 * ```ts
 *   const is = await cam.imaging.getImagingSettings();
 *   is.brightness = 70;
 *   await cam.imaging.setImagingSettings({
 *     imagingSettings: is,
 *     forcePersistence: true,
 *   });
 * ```
 */
export default class Imaging extends Service {
    constructor(onvif: Onvif);
    private videoSourceToken;
    private static backlightCompensationToBuild;
    private static exposureToBuild;
    private static focusConfigurationToBuild;
    private static wideDynamicRangeToBuild;
    private static whiteBalanceToBuild;
    private static imagingSettingsToBuild;
    private static focusMoveToBuild;
    /**
     * Returns the capabilities of the imaging service.
     */
    getServiceCapabilities(): Promise<Capabilities>;
    /**
     * Get the imaging configuration for the requested video source.
     * @param options
     */
    getImagingSettings({ videoSourceToken }?: GetImagingSettingsExtended): Promise<ImagingSettings20>;
    /**
     * Set the imaging configuration for the requested video source.
     * @param options
     */
    setImagingSettings({ videoSourceToken, imagingSettings, forcePersistence, }: SetImagingSettingsExtended): Promise<void>;
    /**
     * Get valid ranges for imaging parameters that have device-specific ranges.
     * @param options
     */
    getOptions({ videoSourceToken }?: GetOptionsExtended): Promise<ImagingOptions20>;
    /**
     * Move the focus lens in absolute, relative, or continuous manner.
     * @param options
     */
    move({ videoSourceToken, focus }: MoveExtended): Promise<void>;
    /**
     * Get valid ranges for focus lens move options.
     * @param options
     */
    getMoveOptions({ videoSourceToken }?: GetMoveOptionsExtended): Promise<MoveOptions20>;
    /**
     * Stop ongoing focus movement for the requested video source.
     * @param options
     */
    stop({ videoSourceToken }?: StopExtended): Promise<void>;
    /**
     * Get imaging status for the requested video source.
     * @param options
     */
    getStatus({ videoSourceToken }?: GetStatusExtended): Promise<ImagingStatus20>;
    /**
     * Get imaging presets available for the requested video source.
     * @param options
     */
    getPresets({ videoSourceToken }?: GetPresetsExtended): Promise<ImagingPreset[]>;
    /**
     * Get the current imaging preset for the requested video source.
     * @param options
     */
    getCurrentPreset({ videoSourceToken }?: GetCurrentPresetExtended): Promise<ImagingPreset>;
    /**
     * Apply an imaging preset to the requested video source.
     * @param options
     */
    setCurrentPreset({ videoSourceToken, presetToken }: SetCurrentPresetExtended): Promise<void>;
}
export {};
