import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSecureCoding } from "../Foundation/NSSecureCoding.js";
import type { CMTime } from "../structs/CMTime.js";
export declare class _CMIOExtensionStreamFormat extends _NSObject {
    static alloc(): _CMIOExtensionStreamFormat;
    static new(): _CMIOExtensionStreamFormat;
    init(): _CMIOExtensionStreamFormat;
    /**
     * @method streamFormatWithFormatDescription:maxFrameDuration:minFrameDuration:validFrameDurations: @abstract Returns a stream format instance. @param formatDescription The format description of the samples delivered by the stream. @param maxFrameDuration The maximum frame duration. @param minFrameDuration The minimum frame duration. @param validFrameDurations The list of valid CMTime as dictionaries. If nil the full range between min and max is valid. The CMTime in dictionary format are made with CMTimeCopyAsDictionary. @result A CMIOExtensionStreamFormat instance that describes the stream format. @discussion A frame duration is the reciprocal of a frame rate. If a CMIOExtensionStreamFormat's validFrameDurations property is not nil and not empty, the frame duration are discrete and can only have a certain set of value. Current frame duration and maximum frame duration can be changed with the properties CMIOExtensionPropertyStreamFrameDuration and CMIOExtensionPropertyStreamMaxFrameDuration.
     */
    static streamFormatWithFormatDescription$maxFrameDuration$minFrameDuration$validFrameDurations$(formatDescription: NobjcObject, maxFrameDuration: CMTime, minFrameDuration: CMTime, validFrameDurations: _NSArray | null): _CMIOExtensionStreamFormat;
    /**
     * @method initWithFormatDescription:maxFrameDuration:minFrameDuration:validFrameDurations: @abstract Initialize a stream format instance. @param formatDescription The format description of the samples delivered by the stream. @param maxFrameDuration The maximum frame duration. @param minFrameDuration The minimum frame duration. @param validFrameDurations The list of valid CMTime as dictionaries if nil the full range between min and max is valid. The CMTime in dictionary format are made with CMTimeCopyAsDictionary. @result A CMIOExtensionStreamFormat instance that describes the stream format. @discussion A frame duration is the reciprocal of a frame rate. If a CMIOExtensionStreamFormat's validFrameDurations property is not nil and not empty, the frame duration are discrete and can only have a certain set of value. Current frame duration and maximum frame duration can be changed with the properties CMIOExtensionPropertyStreamFrameDuration and CMIOExtensionPropertyStreamMaxFrameDuration.
     */
    initWithFormatDescription$maxFrameDuration$minFrameDuration$validFrameDurations$(formatDescription: NobjcObject, maxFrameDuration: CMTime, minFrameDuration: CMTime, validFrameDurations: _NSArray | null): _CMIOExtensionStreamFormat;
    /**
     * @property formatDescription @abstract The format description of the samples delivered by the stream.
     */
    formatDescription(): NobjcObject;
    /**
     * @property minFrameDuration @abstract The minimum frame duration (AKA maximum frame rate).
     */
    minFrameDuration(): CMTime;
    /**
     * @property maxFrameDuration @abstract The maximum frame duration (AKA minimum frame rate).
     */
    maxFrameDuration(): CMTime;
    /**
     * @property validFrameDurations @abstract The valid frame durations as an array of CMTime as dictionaries. The CMTime in dictionary format are made with CMTimeCopyAsDictionary.
     */
    validFrameDurations(): _NSArray;
}
export interface _CMIOExtensionStreamFormat extends _NSCopying, _NSSecureCoding {
}
