+type PeerTubeP2PInfoButtonOptions = {
+ p2pEnabled: boolean
+}
+
+type WebtorrentPluginOptions = {
+ playerElement: HTMLVideoElement
+
+ autoplay: boolean
+ videoDuration: number
+
+ videoFiles: VideoFile[]
+
+ startTime: number | string
+
+ playerRefusedP2P: boolean
+}
+
+type P2PMediaLoaderPluginOptions = {
+ redundancyUrlManager: RedundancyUrlManager
+ type: string
+ src: string
+
+ startTime: number | string
+}
+
+type VideoJSPluginOptions = {
+ playlist?: PlaylistPluginOptions
+
+ peertube: PeerTubePluginOptions
+
+ webtorrent?: WebtorrentPluginOptions
+
+ p2pMediaLoader?: P2PMediaLoaderPluginOptions
+}
+
+type LoadedQualityData = {
+ qualitySwitchCallback: (resolutionId: number, type: 'video') => void
+ qualityData: {
+ video: {
+ id: number
+ label: string
+ selected: boolean
+ }[]
+ }
+}
+
+type ResolutionUpdateData = {
+ auto: boolean
+ resolutionId: number
+ id?: number
+}
+
+type AutoResolutionUpdateData = {
+ possible: boolean
+}
+
+type PlayerNetworkInfo = {
+ source: 'webtorrent' | 'p2p-media-loader'
+
+ http: {
+ downloadSpeed: number
+ uploadSpeed: number
+ downloaded: number
+ uploaded: number
+ }
+
+ p2p: {
+ downloadSpeed: number
+ uploadSpeed: number
+ downloaded: number
+ uploaded: number
+ numPeers: number
+ }
+
+ // In bytes
+ bandwidthEstimate: number
+}
+
+type PlaylistItemOptions = {
+ element: VideoPlaylistElement
+
+ onClicked: () => void
+}