// 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: () => void; supportsGaplessAudio: () => boolean; supportsGaplessShorts: () => boolean; enqueueVideoByPlayerVars: ( ...params: Parameters ) => Return; clearQueue: () => void; 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: () => { airingEnd: number; airingStart: number; allowSeeking: boolean; clipEnd: number; clipStart: number; current: number; displayedStart: number; duration: number; ingestionTime: number; isAtLiveHead: boolean; loaded: number; offset: number; seekableEnd: number; seekableStart: number; viewerLivestreamJoinMediaTime: number; }; 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, startSeconds: number, suggestedQuality: string) => void; loadVideoById: (videoId: string, startSeconds: number, suggestedQuality: string) => void; cueVideoByUrl: (mediaContentUrl: string, startSeconds: number, suggestedQuality: string, playerType: string) => void; loadVideoByUrl: (mediaContentUrl: string, startSeconds: number, suggestedQuality: string, playerType: string) => void; /** * 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; /** * 1: playing * 2: paused */ 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: K extends 'videodatachange' ? PlayerAPIEvents[K]['name'] : never, data: K extends 'videodatachange' ? PlayerAPIEvents[K]['value'] : never, ) => void, options?: boolean | AddEventListenerOptions | undefined, ) => void; removeEventListener: ( type: K, listener: ( this: Document, name: K extends 'videodatachange' ? PlayerAPIEvents[K]['name'] : never, data: K extends 'videodatachange' ? PlayerAPIEvents[K]['value'] : never, ) => void, options?: boolean | EventListenerOptions | undefined, ) => void; getDebugText: () => string; addCueRange: ( ...params: Parameters ) => Return; removeCueRange: (range: unknown[]) => void; 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: (eventType: unknown, breakType: unknown) => void; preloadVideoById: (videoId: string, startSeconds: number, suggestedQuality: string) => void; 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: < Parameters extends unknown[], Return, >( ...params: Parameters ) => Return; updateFullerscreenEduButtonVisibility: ( ...params: Parameters ) => Return; addEmbedsConversionTrackingParams: ( ...params: Parameters ) => Return; }