import type { NobjcObject } from "objc-js";
import type { _AVPlayerItemOutput } from "./AVPlayerItemOutput.js";
import type { _AVPlayerItemOutputPullDelegate } from "./AVPlayerItemOutputPullDelegate.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { CMTime } from "../structs/CMTime.js";
export declare class _AVPlayerItemVideoOutput extends _AVPlayerItemOutput {
    static alloc(): _AVPlayerItemVideoOutput;
    static new(): _AVPlayerItemVideoOutput;
    init(): _AVPlayerItemVideoOutput;
    /**
     * @method initWithPixelBufferAttributes: @abstract Returns an instance of AVPlayerItemVideoOutput, initialized with the specified pixel buffer attributes, for video image output. @param pixelBufferAttributes The client requirements for output CVPixelBuffers, expressed using the constants in <CoreVideo/CVPixelBuffer.h>. @result An instance of AVPlayerItemVideoOutput.
     * @deprecated Use init(pixelBufferAttributes: CVPixelBuffer.Attributes) instead
     */
    initWithPixelBufferAttributes$(pixelBufferAttributes: _NSDictionary | null): _AVPlayerItemVideoOutput;
    /**
     * @method initWithOutputSettings: @abstract Returns an instance of AVPlayerItemVideoOutput, initialized with the specified output settings, for video image output. @param outputSettings The client requirements for output CVPixelBuffers, expressed using the constants in AVVideoSettings.h. For uncompressed video output, start with kCVPixelBuffer* keys in <CoreVideo/CVPixelBuffer.h>. In addition to the keys in CVPixelBuffer.h, uncompressed video settings dictionaries may also contain the following keys: AVVideoAllowWideColorKey @result An instance of AVPlayerItemVideoOutput. @discussion This method throws an exception for any of the following reasons: - the output settings dictionary is empty - the settings will yield compressed output - the settings do not honor the requirements listed above for outputSettings
     */
    initWithOutputSettings$(outputSettings: _NSDictionary | null): _AVPlayerItemVideoOutput;
    /**
     * @method hasNewPixelBufferForItemTime: @abstract Query if any new video output is available for an item time. @discussion This method returns YES if there is available video output, appropriate for display, at the specified item time not marked as acquired. If you require multiple objects to acquire video output from the same AVPlayerItem, you should instantiate more than one AVPlayerItemVideoOutput and add each via addOutput:. Each AVPlayerItemVideoOutput maintains a separate record of client acquisition. @param itemTime The item time to query. @result A BOOL indicating if there is newer output.
     */
    hasNewPixelBufferForItemTime$(itemTime: CMTime): boolean;
    /**
     * @method copyPixelBufferForItemTime:itemTimeForDisplay: @abstract Retrieves an image that is appropriate for display at the specified item time, and marks the image as acquired. @discussion The client is responsible for calling CVBufferRelease on the returned CVPixelBuffer when finished with it. Typically you would call this method in response to a CADisplayLink delegate invocation and if hasNewPixelBufferForItemTime: also returns YES. The buffer reference retrieved from copyPixelBufferForItemTime:itemTimeForDisplay: may itself be NULL. A reference to a NULL pixel buffer communicates that nothing should be displayed for the supplied item time. @param itemTime A CMTime that expresses a desired item time. @param itemTimeForDisplay A CMTime pointer whose value will contain the true display deadline for the copied pixel buffer. Can be NULL.
     * @deprecated Use pixelBufferAndDisplayTime(forItemTime:) instead
     */
    copyPixelBufferForItemTime$itemTimeForDisplay$(itemTime: CMTime, outItemTimeForDisplay: NobjcObject | null): NobjcObject | null;
    /**
     * @method setDelegate:queue: @abstract Sets the receiver's delegate and a dispatch queue on which the delegate will be called. @param delegate An object conforming to AVPlayerItemOutputPullDelegate protocol. @param delegateQueue A dispatch queue on which all delegate methods will be called.
     */
    setDelegate$queue$(delegate: _AVPlayerItemOutputPullDelegate | null, delegateQueue: _NSObject | null): void;
    /**
     * @method requestNotificationOfMediaDataChangeWithAdvanceInterval: @abstract Informs the receiver that the AVPlayerItemVideoOutput client is entering a quiescent state. @param interval A wall clock time interval. @discussion Message this method before you suspend your use of a CADisplayLink. The interval you provide will be used to message your delegate, in advance, that it should resume the display link. If the interval you provide is large, effectively requesting wakeup earlier than the AVPlayerItemVideoOutput is prepared to act, the delegate will be invoked as soon as possible. Do not use this method to force a delegate invocation for each sample.
     */
    requestNotificationOfMediaDataChangeWithAdvanceInterval$(interval: number): void;
    /** @property delegate @abstract The receiver's delegate. */
    delegate(): _AVPlayerItemOutputPullDelegate | null;
    /**
     * @property delegateQueue @abstract The dispatch queue where the delegate is messaged.
     */
    delegateQueue(): _NSObject | null;
}
