import type { _AVPlayerItemMetadataOutput } from "./AVPlayerItemMetadataOutput.js";
import type { _AVPlayerItemOutputPushDelegate } from "./AVPlayerItemOutputPushDelegate.js";
import type { _AVPlayerItemTrack } from "./AVPlayerItemTrack.js";
import type { _NSArray } from "../Foundation/NSArray.js";
export interface _AVPlayerItemMetadataOutputPushDelegate extends _AVPlayerItemOutputPushDelegate {
    /**
     * @method metadataOutput:didOutputTimedMetadataGroups:fromPlayerItemTrack: @abstract A delegate callback that delivers a new collection of metadata items. @param output The AVPlayerItemMetadataOutput source. @param groups An NSArray of AVTimedMetadataGroups that may contain metadata items with requested identifiers, according to the format descriptions associated with the underlying tracks. @param track An instance of AVPlayerItemTrack that indicates the source of the metadata items in the group. @discussion Each group provided in a single invocation of this method will have timing that does not overlap with any other group in the array. Note that for some timed metadata formats carried by HTTP live streaming, the timeRange of each group must be reported as kCMTimeIndefinite, because its duration will be unknown until the next metadata group in the stream arrives. In these cases, the groups parameter will always contain a single group. Groups are typically packaged into arrays for delivery to your delegate according to the chunking or interleaving of the underlying metadata data. Note that if the item carries multiple metadata tracks containing metadata with the same metadata identifiers, this method can be invoked for each one separately, each with reference to the associated AVPlayerItemTrack. Note that the associated AVPlayerItemTrack parameter can be nil which implies that the metadata describes the asset as a whole, not just a single track of the asset.
     */
    metadataOutput$didOutputTimedMetadataGroups$fromPlayerItemTrack$?(output: _AVPlayerItemMetadataOutput, groups: _NSArray, track: _AVPlayerItemTrack | null): void;
}
