import type { NobjcObject } from "objc-js";
import type { _AVAsset } from "./AVAsset.js";
import type { _AVMediaDataStorage } from "./AVMediaDataStorage.js";
import type { _AVMovieTrack } from "./AVMovieTrack.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSData } from "../Foundation/NSData.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSError } from "../Foundation/NSError.js";
import type { _NSMutableCopying } from "../Foundation/NSMutableCopying.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSURL } from "../Foundation/NSURL.js";
import type { AVMovieWritingOptions } from "./AVMovieWritingOptions.js";
export declare class _AVMovie extends _AVAsset {
    static alloc(): _AVMovie;
    static new(): _AVMovie;
    init(): _AVMovie;
    /**
     * @method movieTypes @abstract Provides the file types the AVMovie class understands. @result An NSArray of UTIs identifying the file types the AVMovie class understands.
     */
    static movieTypes(): _NSArray;
    /**
     * @method movieWithURL:options: @abstract Creates an AVMovie object from a movie header stored in a QuickTime movie file or ISO base media file. @param URL An NSURL object that specifies a file containing a movie header. @param options An NSDictionary object that contains keys for specifying options for the initialization of the AVMovie object. @result An AVMovie object @discussion By default, the defaultMediaDataStorage property will be nil and each associated AVMovieTrack's mediaDataStorage property will be nil. If you want to create an AVMutableMovie from a file and then append sample buffers to any of its tracks, you must first set one of these properties to indicate where the sample data should be written.
     */
    static movieWithURL$options$(URL: _NSURL, options: _NSDictionary | null): _AVMovie;
    /**
     * @method movieWithData:options: @abstract Creates an AVMovie object from a movie header stored in an NSData object. @param data An NSData object containing a movie header. @param options An NSDictionary object that contains keys for specifying options for the initialization of the AVMovie object. @result An AVMovie object @discussion You can use this method to operate on movie headers that are not stored in files; this might include movie headers on the pasteboard (which do not contain media data). In general you should avoid loading an entire movie file with its media data into an instance of NSData! By default, the defaultMediaDataStorage property will be nil and each associated AVMovieTrack's mediaDataStorage property will be nil. If you want to create an AVMutableMovie from an NSData object and then append sample buffers to any of its tracks, you must first set one of these properties to indicate where the sample data should be written.
     */
    static movieWithData$options$(data: _NSData, options: _NSDictionary | null): _AVMovie;
    /**
     * @method initWithURL:options: @abstract Creates an AVMovie object from a movie header stored in a QuickTime movie file or ISO base media file. @param URL An NSURL object that specifies a file containing a movie header. @param options An NSDictionary object that contains keys for specifying options for the initialization of the AVMovie object. @result An AVMovie object @discussion By default, the defaultMediaDataStorage property will be nil and each associated AVMovieTrack's mediaDataStorage property will be nil. If you want to create an AVMutableMovie from a file and then append sample buffers to any of its tracks, you must first set one of these properties to indicate where the sample data should be written.
     */
    initWithURL$options$(URL: _NSURL, options: _NSDictionary | null): _AVMovie;
    /**
     * @method initWithData:options: @abstract Creates an AVMovie object from a movie header stored in an NSData object. @param data An NSData object containing a movie header. @param options An NSDictionary object that contains keys for specifying options for the initialization of the AVMovie object. @result An AVMovie object @discussion You can use this method to operate on movie headers that are not stored in files. In general you should avoid loading an entire movie file with its media data into an instance of NSData! By default, the defaultMediaDataStorage property will be nil and each associated AVMovieTrack's mediaDataStorage property will be nil. If you want to create an AVMutableMovie from an NSData object and then append sample buffers to any of its tracks, you must first set one of these properties to indicate where the sample data should be written.
     */
    initWithData$options$(data: _NSData, options: _NSDictionary | null): _AVMovie;
    /**
     * @method movieHeaderWithFileType:error: @abstract Creates an NSData object containing the movie header of the AVMovie object. @param fileType A UTI indicating the specific file format of the movie header (e.g. AVFileTypeQuickTimeMovie for a QuickTime movie). @param outError If an error occurs reading the movie header, describes the nature of the failure. @result An NSData object. @discussion The movie header will be a pure reference movie, with no base URL, suitable for use on the pasteboard.
     */
    movieHeaderWithFileType$error$(fileType: _NSString, outError: NobjcObject | null): _NSData | null;
    /**
     * @method writeMovieHeaderToURL:fileType:options:error: @abstract Writes the movie header to a destination URL. @param URL An NSURL object indicating where to write the movie header. @param fileType A UTI indicating the specific file format (e.g. AVFileTypeQuickTimeMovie for a QuickTime movie). @param options An NSUInteger whose bits specify options for the writing of the movie header. See AVMovieWritingOptions above. @param outError If an error occurs writing the movie header, describes the nature of the failure. @discussion Note that modifications to instances of AVMutableMovie, to their constituent AVMutableMovieTracks, or to their collections of metadata are committed to storage when their movie headers are written.
     */
    writeMovieHeaderToURL$fileType$options$error$(URL: _NSURL, fileType: _NSString, options: AVMovieWritingOptions, outError: NobjcObject | null): boolean;
    /**
     * @method isCompatibleWithFileType: @abstract Indicates whether a movie header for the AVMovie object can be created for the specified file type. @param fileType A UTI indicating a movie file format (e.g. AVFileTypeQuickTimeMovie for a QuickTime movie). @discussion This method returns a BOOL that indicates whether a movie header of the specified type can be created for the receiver. For example, this method returns NO if the movie contains tracks whose media types or media subtypes are not allowed by the specified file type.
     */
    isCompatibleWithFileType$(fileType: _NSString): boolean;
    /**
     * @method trackWithTrackID: @abstract Provides an instance of AVMovieTrack that represents the track of the specified trackID. @param trackID The trackID of the requested AVMovieTrack. @result An instance of AVMovieTrack; may be nil if no track of the specified trackID is available. @discussion Becomes callable without blocking when the key @"tracks" has been loaded
     * @deprecated Use loadTrack(withTrackID:) instead
     */
    trackWithTrackID$(trackID: number): _AVMovieTrack | null;
    /**
     * @method tracksWithMediaType: @abstract Provides an array of AVMovieTracks of the asset that present media of the specified media type. @param mediaType The media type according to which the receiver filters its AVMovieTracks. (Media types are defined in AVMediaFormat.h) @result An NSArray of AVMovieTracks; may be empty if no tracks of the specified media type are available. @discussion Becomes callable without blocking when the key @"tracks" has been loaded
     * @deprecated Use loadTracks(withMediaType:) instead
     */
    tracksWithMediaType$(mediaType: _NSString): _NSArray;
    /**
     * @method loadTracksWithMediaType:completionHandler: @abstract Loads an array of AVMovieTracks of the asset that present media of the specified media type. @param mediaType The media type according to which AVAsset filters its AVMovieTracks. (Media types are defined in AVMediaFormat.h.) @param completionHandler A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks of the specified media type are available) or an error.
     */
    loadTracksWithMediaType$completionHandler$(mediaType: _NSString, completionHandler: ((arg0: _NSArray, arg1: _NSError) => void) | null): void;
    /**
     * @method tracksWithMediaCharacteristic: @abstract Provides an array of AVMovieTracks of the asset that present media with the specified characteristic. @param mediaCharacteristic The media characteristic according to which the receiver filters its AVMovieTracks. (Media characteristics are defined in AVMediaFormat.h) @result An NSArray of AVMovieTracks; may be empty if no tracks with the specified characteristic are available. @discussion Becomes callable without blocking when the key @"tracks" has been loaded
     * @deprecated Use loadTracks(withMediaCharacteristic:) instead
     */
    tracksWithMediaCharacteristic$(mediaCharacteristic: _NSString): _NSArray;
    /**
     * @method loadTracksWithMediaCharacteristic:completionHandler: @abstract Loads an array of AVMovieTracks of the asset that present media with the specified characteristic. @param mediaCharacteristic The media characteristic according to which AVAsset filters its AVMovieTracks. (Media characteristics are defined in AVMediaFormat.h.) @param completionHandler A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks with the specified characteristic are available) or an error.
     */
    loadTracksWithMediaCharacteristic$completionHandler$(mediaCharacteristic: _NSString, completionHandler: ((arg0: _NSArray, arg1: _NSError) => void) | null): void;
    /**
     * @property URL @abstract The URL with which the instance of AVMovie was initialized; may be nil.
     */
    URL(): _NSURL | null;
    /**
     * @property data @abstract The data block with which the instance of AVMovie was initialized; may be nil.
     */
    data(): _NSData;
    /**
     * @property defaultMediaDataStorage @abstract The default storage container for media data added to a movie. @discussion The value of this property is an AVMediaDataStorage object that indicates where sample data that is added to a movie should be written by default.
     */
    defaultMediaDataStorage(): _AVMediaDataStorage;
    /**
     * @property tracks @abstract The tracks in a movie. @discussion The value of this property is an array of tracks the movie contains; the tracks are of type AVMovieTrack.
     */
    tracks(): _NSArray;
    /**
     * @property canContainMovieFragments @abstract Indicates whether the movie file is capable of being extended by fragments. @discussion The value of this property is YES if an 'mvex' box is present in the 'moov' box. The 'mvex' box is necessary in order to signal the possible presence of later 'moof' boxes.
     */
    canContainMovieFragments(): boolean;
    /**
     * @property containsMovieFragments @abstract Indicates whether the movie file is extended by at least one movie fragment. @discussion The value of this property is YES if canContainMovieFragments is YES and at least one 'moof' box is present after the 'moov' box.
     */
    containsMovieFragments(): boolean;
}
export interface _AVMovie extends _NSCopying, _NSMutableCopying {
}
