import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSData } from "../Foundation/NSData.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSError } from "../Foundation/NSError.js";
export interface _MERAWProcessor {
    /**
     * @method processFrameFromImageBuffer:completionHandler: @abstract Requests that the extension process a video frame. @discussion The completionHandler block must be called for every processFrameFromImageBuffer call when processing is complete. The completion handler block should return either a processed pixelBuffer or an error. @param inputFrame A CVPixelBuffer containing a video frame to be processed. @param completionHandler The handler that will be invoked when a frame is processed and ready to be sent back to caller. This block does not need to be called in the order that frames were submitted. 'imageBuffer' Contains the processed frame if processing was successful, otherwise NULL. The imageBuffer must be allocated using MERAWProcessorPixelBufferManager. 'error' An NSError object that will contain error information if the method fails, otherwise nil. Errors outside of MediaExtensionErrorDomain will be reported as kVTRAWProcessorUnknownErr to the VTRAWProcessingSession client.
     */
    processFrameFromImageBuffer$completionHandler$?(inputFrame: NobjcObject, completionHandler: ((imageBuffer: NobjcObject, error: _NSError) => void) | null): void;
    /**
     * @property metalDeviceID @abstract Requests that processor use the provided MTLDevice for Metal based processing. @discussion This optional property requests that the RAWProcessor use the MTLDevice corresponding to this ID for any Metal-based processing. This is optional and does not need to be implemented If the processor does not use Metal.
     */
    metalDeviceRegistryID?(): number;
    setMetalDeviceRegistryID$?(value: number): void;
    /**
     * @property outputColorAttachments @abstract Returns the color-related CVImageBuffer keys and values that will be attachments to the output pixel buffers. @discussion This is an optional property. Only color-related keys from CVImageBuffer.h are permitted in the returned dictionary.
     */
    outputColorAttachments?(): _NSDictionary;
    /**
     * @property metadataForSidecarFile @abstract The metadata returned is a pre-formatted NSData that represents a fully-formed sidecar file, and should be compatible with the MediaExtension FormatReader. @discussion The metadata will contain the initial processing parameters from the sidecar file, along with any adjustments made on the RAW processor.
     */
    metadataForSidecarFile?(): _NSData;
    /**
     * @property processingParameters @abstract Provides a list of processing parameters which can be changed by the client of the VideoToolbox session to influence processing behavior. @discussion This property value is an array of MERAWProcessingParameters each of which describes the parameter and provides an interface where the processing parameter value may be modified.
     */
    processingParameters?(): _NSArray;
    /**
     * @property readyForMoreMediaData @abstract Indicates the readiness of the RAW Processor to accept more sample buffers. @discussion RAW Processors which operate asynchronously often have a fixed capacity for buffers in flight in the processor. This property allows the processor to signal to the VideoToolbox that its internal buffers are full and it cannot accept more samples at this time. The processor must use MERAWProcessorReadyForMoreMediaDataDidChangeNotification to notify the VideoToolbox when this property changes.
     */
    readyForMoreMediaData?(): boolean;
}
