// TODO: fully type definitions for youtube-player import { VideoDetails } from './video-details'; import { GetPlayerResponse } from './get-player-response'; import { PlayerAPIEvents } from './player-api-events'; export interface YoutubePlayer { getInternalApiInterface: (...params: Parameters) => Return; getApiInterface: (...params: Parameters) => Return; cueVideoByPlayerVars: () => void; loadVideoByPlayerVars: () => void; preloadVideoByPlayerVars: (...params: Parameters) => Return; getAdState: (...params: Parameters) => Return; sendAbandonmentPing: (...params: Parameters) => Return; setLoopRange: (...params: Parameters) => Return; getLoopRange: (...params: Parameters) => Return; setAutonavState: (...params: Parameters) => Return; seekToLiveHead: (...params: Parameters) => Return; requestSeekToWallTimeSeconds: (...params: Parameters) => Return; seekToStreamTime: (...params: Parameters) => Return; startSeekCsiAction: (...params: Parameters) => Return; getStreamTimeOffset: (...params: Parameters) => Return; getVideoData: () => VideoDetails; setInlinePreview: (...params: Parameters) => Return; updateDownloadState: (...params: Parameters) => Return; queueOfflineAction: (...params: Parameters) => Return; pauseVideoDownload: (...params: Parameters) => Return; resumeVideoDownload: (...params: Parameters) => Return; refreshAllStaleEntities: (...params: Parameters) => Return; isOrchestrationLeader: (...params: Parameters) => Return; getAppState: (...params: Parameters) => Return; updateLastActiveTime: (...params: Parameters) => Return; setBlackout: (...params: Parameters) => Return; setUserEngagement: (...params: Parameters) => Return; updateSubtitlesUserSettings: (...params: Parameters) => Return; getPresentingPlayerType: (...params: Parameters) => Return; canPlayType: (...params: Parameters) => Return; updatePlaylist: (...params: Parameters) => Return; updateVideoData: (...params: Parameters) => Return; updateEnvironmentData: (...params: Parameters) => Return; sendVideoStatsEngageEvent: (...params: Parameters) => Return; productsInVideoVisibilityUpdated: (...params: Parameters) => Return; setSafetyMode: (...params: Parameters) => Return; isAtLiveHead: (...params: Parameters) => Return; getVideoAspectRatio: (...params: Parameters) => Return; getPreferredQuality: (...params: Parameters) => Return; getPlaybackQualityLabel: (...params: Parameters) => Return; setPlaybackQualityRange: (quality: string) => void; onAdUxClicked: (...params: Parameters) => Return; getFeedbackProductData: (...params: Parameters) => Return; getStoryboardFrame: (...params: Parameters) => Return; getStoryboardFrameIndex: (...params: Parameters) => Return; getStoryboardLevel: (...params: Parameters) => Return; getNumberOfStoryboardLevels: (...params: Parameters) => Return; getCaptionWindowContainerId: (...params: Parameters) => Return; getAvailableQualityLabels: () => string[]; addUtcCueRange: (...params: Parameters) => Return; showAirplayPicker: (...params: Parameters) => Return; dispatchReduxAction: (...params: Parameters) => Return; getPlayerResponse: () => GetPlayerResponse; getHeartbeatResponse: (...params: Parameters) => Return; changeMarkerVisibility: (...params: Parameters) => Return; setAutonav: (...params: Parameters) => Return; isNotServable: (...params: Parameters) => Return; channelSubscribed: (...params: Parameters) => Return; channelUnsubscribed: (...params: Parameters) => Return; togglePictureInPicture: (...params: Parameters) => Return; supportsGaplessAudio: () => boolean; supportsGaplessShorts: () => boolean; enqueueVideoByPlayerVars: (...params: Parameters) => Return; clearQueue: (...params: Parameters) => Return; getAudioTrack: (...params: Parameters) => Return; setAudioTrack: (...params: Parameters) => Return; getAvailableAudioTracks: (...params: Parameters) => Return; getMaxPlaybackQuality: (...params: Parameters) => Return; getUserPlaybackQualityPreference: (...params: Parameters) => Return; getSubtitlesUserSettings: (...params: Parameters) => Return; resetSubtitlesUserSettings: (...params: Parameters) => Return; setMinimized: (...params: Parameters) => Return; setOverlayVisibility: (...params: Parameters) => Return; confirmYpcRental: (...params: Parameters) => Return; toggleSubtitlesOn: (...params: Parameters) => Return; isSubtitlesOn: (...params: Parameters) => Return; queueNextVideo: (...params: Parameters) => Return; handleExternalCall: (...params: Parameters) => Return; logApiCall: (...params: Parameters) => Return; isExternalMethodAvailable: (...params: Parameters) => Return; setScreenLayer: (...params: Parameters) => Return; getCurrentPlaylistSequence: (...params: Parameters) => Return; getPlaylistSequenceForTime: (...params: Parameters) => Return; shouldSendVisibilityState: (...params: Parameters) => Return; syncVolume: (...params: Parameters) => Return; highlightSettingsMenuItem: (...params: Parameters) => Return; openSettingsMenuItem: (...params: Parameters) => Return; getVisibilityState: (...params: Parameters) => Return; isMutedByMutedAutoplay: (...params: Parameters) => Return; setGlobalCrop: (...params: Parameters) => Return; setInternalSize: (...params: Parameters) => Return; seekBy: (seconds: number) => void; showControls: () => void; hideControls: () => void; cancelPlayback: () => void; getProgressState: () => Return; isInline: () => boolean; setInline: (isInline: boolean) => void; setLoopVideo: (value: boolean) => void; getLoopVideo: () => boolean; getVideoContentRect: () => Return; getVideoStats: () => Return; getStoryboardFormat: () => Return; toggleFullscreen: () => Return; isFullscreen: () => boolean; getPlayerSize: () => Return; toggleSubtitles: () => void; setCenterCrop: (param: Parameter) => void; setFauxFullscreen: (param: Parameter) => void; setSizeStyle: (params: Parameter) => void; handleGlobalKeyDown: () => void; handleGlobalKeyUp: () => void; wakeUpControls: () => void; cueVideoById: (videoId: string) => void; loadVideoById: (videoId: string) => void; cueVideoByUrl: (...params: Parameters) => Return; loadVideoByUrl: (...params: Parameters) => Return; /** * Note: This doesn't resume playback, it plays from the start. */ playVideo: () => void; pauseVideo: () => void; stopVideo: () => void; clearVideo: () => void; getVideoBytesLoaded: () => number; getVideoBytesTotal: () => number; getVideoLoadedFraction: () => number; getVideoStartBytes: () => number; cuePlaylist: () => void; loadPlaylist: () => void; nextVideo: () => void; previousVideo: () => void; playVideoAt: () => void; setShuffle: (param: Parameter) => void; setLoop: (param: Parameter) => void; getPlaylist: () => Return; getPlaylistIndex: () => number; getPlaylistId: () => string | undefined; loadModule: (moduleName: string) => void; unloadModule: (moduleName: string) => void; setOption: (optionName: string, key: string, value: T) => void; getOption: (optionName: string, key: string) => T | null | undefined; getOptions: () => string[]; mute: () => void; unMute: () => void; isMuted: () => boolean; /** * @param volume 0-100 */ setVolume: (volume: number) => void; getVolume: () => number; seekTo: (seconds: number) => void; getPlayerMode: () => Return; getPlayerState: () => number; getAvailablePlaybackRates: () => number[]; getPlaybackQuality: () => string; setPlaybackQuality: (quality: string) => void; getAvailableQualityLevels: () => string[]; /** * @return float between start and end in seconds */ getCurrentTime: () => number; /** * @return int song duration in seconds */ getDuration: () => number; addEventListener: ( type: K, listener: ( this: Document, name: PlayerAPIEvents[K]['name'], data: PlayerAPIEvents[K]['value'] ) => void, options?: boolean | AddEventListenerOptions | undefined, ) => void; removeEventListener: ( type: K, listener: ( this: Document, name: PlayerAPIEvents[K]['name'], data: PlayerAPIEvents[K]['value'] ) => void, options?: boolean | EventListenerOptions | undefined, ) => void; getDebugText: () => string; addCueRange: (...params: Parameters) => Return; removeCueRange: (...params: Parameters) => Return; setSize: (size: { width: number; height: number }) => void; destroy: (...params: Parameters) => Return; getSphericalProperties: () => Return; setSphericalProperties: (param: Parameter) => void; mutedAutoplay: () => void; /** * @return string HTMLIFrameElement */ getVideoEmbedCode: () => string; /** * @return string full URL of the video (include playlist id) */ getVideoUrl: () => string; getMediaReferenceTime: () => number; getSize: () => { width: number; height: number }; logImaAdEvent: (...params: Parameters) => Return; preloadVideoById: (...params: Parameters) => Return; setAccountLinkState: (...params: Parameters) => Return; updateAccountLinkingConfig: (...params: Parameters) => Return; getAvailableQualityData: (...params: Parameters) => Return; setCompositeParam: (...params: Parameters) => Return; getStatsForNerds: (...params: Parameters) => Return; showVideoInfo: () => void; hideVideoInfo: () => void; isVideoInfoVisible: () => boolean; getPlaybackRate: () => number; setPlaybackRate: (playbackRate: number) => void; updateFullerscreenEduButtonSubtleModeState: (...params: Parameters) => Return; updateFullerscreenEduButtonVisibility: (...params: Parameters) => Return; addEmbedsConversionTrackingParams: (...params: Parameters) => Return; }