import PlayerState from "./constants/PlayerStates"; import { EventType } from "./eventNames"; export interface EmitterType { trigger: (eventName: string, event: object) => void; } export interface Options { width?: number | string | undefined; height?: number | string | undefined; videoId?: string | undefined; host?: string | undefined; playerVars?: { autoplay?: 0 | 1 | undefined; cc_lang_pref?: string | undefined; cc_load_policy?: 1 | undefined; color?: "red" | "white" | undefined; controls?: 0 | 1 | undefined; disablekb?: 0 | 1 | undefined; enablejsapi?: 0 | 1 | undefined; end?: number | undefined; fs?: 0 | 1 | undefined; hl?: string | undefined; iv_load_policy?: 1 | 3 | undefined; list?: string | undefined; listType?: "playlist" | "search" | "user_uploads" | undefined; loop?: 0 | 1 | undefined; modestbranding?: 1 | undefined; origin?: string | undefined; playlist?: string | undefined; playsinline?: 0 | 1 | undefined; rel?: 0 | 1 | undefined; start?: number | undefined; widget_referrer?: string | undefined; } | undefined; events?: | { [eventType in EventType]?: (event: CustomEvent) => void; } | undefined; } export interface IframeApiType { Player: { new(elementId: string, options: Options): YouTubePlayer }; } export interface PlayerSize { width: number; height: number; } /** * @see https://developers.google.com/youtube/iframe_api_reference */ export interface YouTubePlayer { addEventListener(event: string, listener: (event: CustomEvent) => void): Promise; destroy(): Promise; getAvailablePlaybackRates(): Promise; getAvailableQualityLevels(): Promise; getCurrentTime(): Promise; getDuration(): Promise; getIframe(): Promise; getOption(module: string, option: string): Promise; getOptions(): Promise; getOptions(module: string): Promise; setOption(module: string, option: string, value: any): Promise; setOptions(): Promise; cuePlaylist( playlist: string | readonly string[], index?: number, startSeconds?: number, suggestedQuality?: string, ): Promise; cuePlaylist(playlist: { listType: string; list?: string | undefined; index?: number | undefined; startSeconds?: number | undefined; suggestedQuality?: string | undefined; }): Promise; loadPlaylist( playlist: string | readonly string[], index?: number, startSeconds?: number, suggestedQuality?: string, ): Promise; loadPlaylist(playlist: { listType: string; list?: string | undefined; index?: number | undefined; startSeconds?: number | undefined; suggestedQuality?: string | undefined; }): Promise; getPlaylist(): Promise; getPlaylistIndex(): Promise; getPlaybackQuality(): Promise; getPlaybackRate(): Promise; getPlayerState(): Promise; getVideoEmbedCode(): Promise; getVideoLoadedFraction(): Promise; getVideoUrl(): Promise; getVolume(): Promise; cueVideoById(videoId: string, startSeconds?: number, suggestedQuality?: string): Promise; cueVideoById(video: { videoId: string; startSeconds?: number | undefined; endSeconds?: number | undefined; suggestedQuality?: string | undefined; }): Promise; cueVideoByUrl(mediaContentUrl: string, startSeconds?: number, suggestedQuality?: string): Promise; cueVideoByUrl(video: { mediaContentUrl: string; startSeconds?: number | undefined; endSeconds?: number | undefined; suggestedQuality?: string | undefined; }): Promise; loadVideoByUrl(mediaContentUrl: string, startSeconds?: number, suggestedQuality?: string): Promise; loadVideoByUrl(video: { mediaContentUrl: string; startSeconds?: number | undefined; endSeconds?: number | undefined; suggestedQuality?: string | undefined; }): Promise; loadVideoById(videoId: string, startSeconds?: number, suggestedQuality?: string): Promise; loadVideoById(video: { videoId: string; startSeconds?: number | undefined; endSeconds?: number | undefined; suggestedQuality?: string | undefined; }): Promise; isMuted(): Promise; mute(): Promise; nextVideo(): Promise; pauseVideo(): Promise; playVideo(): Promise; playVideoAt(index: number): Promise; previousVideo(): Promise; removeEventListener(event: string, listener: (event: CustomEvent) => void): Promise; seekTo(seconds: number, allowSeekAhead: boolean): Promise; setLoop(loopPlaylists: boolean): Promise; setPlaybackQuality(suggestedQuality: string): Promise; setPlaybackRate(suggestedRate: number): Promise; setShuffle(shufflePlaylist: boolean): Promise; getSize(): Promise; setSize(width: number, height: number): Promise; setVolume(volume: number): Promise; stopVideo(): Promise; unMute(): Promise; on(eventType: "stateChange", listener: (event: CustomEvent & { data: number }) => void): void; on(eventType: EventType, listener: (event: CustomEvent) => void): void; }