// Type definitions for YouTube
// Project: https://developers.google.com/youtube/
// Definitions by: Daz Wilkin , Ian Obermiller
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
declare namespace YT {
interface EventArgs {
target: Player;
data: any;
}
interface EventHandler {
(event: EventArgs): void;
}
export interface Events {
onReady?: EventHandler;
onPlayback?: EventHandler;
onStateChange?: EventHandler;
onError?: EventHandler;
}
export enum ListType {
search,
user_uploads,
playlist,
}
export interface PlayerVars {
autohide?: number;
autoplay?: number;
cc_load_policy?: any;
color?: string;
controls?: number;
disablekb?: number;
enablejsapi?: number;
end?: number;
fs?: number;
iv_load_policy?: number;
list?: string;
listType?: ListType;
loop?: number;
modestbranding?: number;
origin?: string;
playerpiid?: string;
playlist?: string[];
playsinline?: number;
rel?: number;
showinfo?: number;
start?: number;
theme?: string;
}
export interface PlayerOptions {
width?: string | number;
height?: string | number;
videoId?: string;
playerVars?: PlayerVars;
events?: Events;
}
interface VideoByIdParams {
videoId: string;
startSeconds?: number;
endSeconds?: number;
suggestedQuality?: string;
}
interface VideoByUrlParams {
mediaContentUrl: string;
startSeconds?: number;
endSeconds?: number;
suggestedQuality?: string;
}
export interface VideoData
{
video_id: string;
author: string;
title: string;
}
export class Player {
// Constructor
constructor(id: string, playerOptions: PlayerOptions);
// Queueing functions
loadVideoById(videoId: string, startSeconds?: number, suggestedQuality?: string): void;
loadVideoById(VideoByIdParams: Object): void;
cueVideoById(videoId: string, startSeconds?: number, suggestedQuality?: string): void;
cueVideoById(VideoByIdParams: Object): void;
loadVideoByUrl(mediaContentUrl: string, startSeconds?: number, suggestedQuality?: string): void;
loadVideoByUrl(VideoByUrlParams: Object): void;
cueVideoByUrl(mediaContentUrl: string, startSeconds?: number, suggestedQuality?: string): void;
cueVideoByUrl(VideoByUrlParams: Object): void;
// Properties
size: any;
// Playing
playVideo(): void;
pauseVideo(): void;
stopVideo(): void;
seekTo(seconds:number, allowSeekAhead:boolean): void;
clearVideo(): void;
// Playlist
nextVideo(): void;
previousVideo(): void;
playVideoAt(index: number): void;
// Volume
mute(): void;
unMute(): void;
isMuted(): boolean;
setVolume(volume: number): void;
getVolume(): number;
// Sizing
setSize(width: number, height: number): any;
// Playback
getPlaybackRate(): number;
setPlaybackRate(suggestedRate:number): void;
getAvailablePlaybackRates(): number[];
// Behavior
setLoop(loopPlaylists: boolean): void;
setShuffle(shufflePlaylist: boolean): void;
// Status
getVideoLoadedFraction(): number;
getPlayerState(): number;
getCurrentTime(): number;
getVideoStartBytes(): number;
getVideoBytesLoaded(): number;
getVideoBytesTotal(): number;
// Information
getDuration(): number;
getVideoUrl(): string;
getVideoEmbedCode(): string;
getVideoData(): VideoData;
// Playlist
getPlaylist(): any[];
getPlaylistIndex(): number;
// Event Listener
addEventListener(event: string, handler: EventHandler): void;
// DOM
destroy(): void;
}
export enum PlayerState {
UNSTARTED,
BUFFERING,
CUED,
ENDED,
PAUSED,
PLAYING
}
}