export interface AudioTrack { enabled: boolean; readonly id: string; kind: string; readonly label: string; language: string; readonly sourceBuffer: SourceBuffer | null; } export interface AudioTrackListEventMap { addtrack: TrackEvent; change: Event; removetrack: TrackEvent; } /** Used to represent a list of the audio tracks contained within a given HTML media element, with each track represented by a separate AudioTrack object in the list. */ export interface AudioTrackList extends EventTarget { readonly length: number; onaddtrack: ((this: AudioTrackList, ev: TrackEvent) => any) | null; onchange: ((this: AudioTrackList, ev: Event) => any) | null; onremovetrack: ((this: AudioTrackList, ev: TrackEvent) => any) | null; getTrackById(id: string): AudioTrack | null; item(index: number): AudioTrack; addEventListener(type: K, listener: (this: AudioTrackList, ev: AudioTrackListEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: AudioTrackList, ev: AudioTrackListEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; [index: number]: AudioTrack; } /** A single video track from a