import type { _NSObject } from "../Foundation/NSObject.js";
import type { _VTFrameProcessorFrame } from "./VTFrameProcessorFrame.js";
import type { _VTFrameProcessorOpticalFlow } from "./VTFrameProcessorOpticalFlow.js";
import type { VTMotionBlurParametersSubmissionMode } from "./VTMotionBlurParametersSubmissionMode.js";
export declare class _VTMotionBlurParameters extends _NSObject {
    static alloc(): _VTMotionBlurParameters;
    static new(): _VTMotionBlurParameters;
    init(): _VTMotionBlurParameters;
    /**
     * Creates a new motion blur parameters object. Returns `nil` if `sourceFrame` or `destinationFrame` is `nil`, `sourceFrame` and reference frames are different pixel formats, or `motionBlurStrength` is out of range. - Parameters: - sourceFrame: Current source frame; must be non `nil`. - nextFrame: Next source frame in presentation time order; for the last frame you can set this to `nil`. - previousFrame: Previous source frame in presentation time order; for the first frame you can set this to `nil`. - nextOpticalFlow: Optional `VTFrameProcessorOpticalFlow` object that contains forward and backward optical flow with `nextFrame`. You only need this object if optical flow is pre-computed. For the last frame this is always `nil`. - previousOpticalFlow: Optional VTFrameProcessorOpticalFlow object that contains forward and backward optical flow with `previousFrame`. You only need to use this if the optical flow is pre-computed. For the first frame this is always `nil`. - motionBlurStrength: Number that indicates the strength of blur applied by the processor. Range is from 1 to 100. Default value is 50. - submissionMode: Provides a hint to let the processor know whether you are submitting frames in presenatation sequence. For more information about supported modes see ``VTMotionBlurParametersSubmissionMode``. - destinationFrame: User-allocated pixel buffer that receives a frame with motion blur applied by the processor.
     */
    initWithSourceFrame$nextFrame$previousFrame$nextOpticalFlow$previousOpticalFlow$motionBlurStrength$submissionMode$destinationFrame$(sourceFrame: _VTFrameProcessorFrame, nextFrame: _VTFrameProcessorFrame | null, previousFrame: _VTFrameProcessorFrame | null, nextOpticalFlow: _VTFrameProcessorOpticalFlow | null, previousOpticalFlow: _VTFrameProcessorOpticalFlow | null, motionBlurStrength: number, submissionMode: VTMotionBlurParametersSubmissionMode, destinationFrame: _VTFrameProcessorFrame): _VTMotionBlurParameters | null;
    /** Current source frame, which must be non `nil`. */
    sourceFrame(): _VTFrameProcessorFrame;
    /**
     * The next source frame in presentation time order, which is `nil` for the last frame.
     */
    nextFrame(): _VTFrameProcessorFrame | null;
    /**
     * Previous source frame in presentation time order, which is `nil` for the first frame.
     */
    previousFrame(): _VTFrameProcessorFrame | null;
    /**
     * Optional frame processor optical flow object that contains forward and backward optical flow with next frame. You only need to use this object if the optical flow is pre-computed. For the last frame this is `nil`.
     */
    nextOpticalFlow(): _VTFrameProcessorOpticalFlow | null;
    /**
     * Optional frame processor optical flow object that contains forward and backward optical flow with previous frame. You only need to use this object if the optical flow is pre-computed. For the first frame this is `nil`.
     */
    previousOpticalFlow(): _VTFrameProcessorOpticalFlow | null;
    /**
     * Number that indicates the strength of motion blur. The range is from 1 to 100; the default value is 50.
     */
    motionBlurStrength(): number;
    /**
     * Ordering of the input frames this submission related to the previous submission.
     */
    submissionMode(): VTMotionBlurParametersSubmissionMode;
    /**
     * Destination frame that contains user-allocated pixel buffer that receive a frame with motion blur applied by the processor.
     */
    destinationFrame(): _VTFrameProcessorFrame;
}
