UNPKG

@nolawnchairs/chromecast

Version:
1,469 lines (1,312 loc) 43.8 kB
export declare type HandlerFn = (value: any) => void; declare namespace cast { export namespace framework { export interface CastOptions { autoJoinPolicy: chrome.cast.AutoJoinPolicy; language?: string; receiverApplicationId?: string; resumeSavedSession?: boolean; } export class RemotePlayerController { constructor(player: RemotePlayer); playOrPause(): void; stop(): void; seek(): void; muteOrUnmute(): void; setVolumeLevel(): void; getFormattedTime(timeInSec: number): string; getSeekPosition(currentTime: number, duration: number): number; getSeekTime(currentPosition: number, duration: number): number; addEventListener( type: RemotePlayerEventType, handler: (event: RemotePlayerChangedEvent) => void ): void; removeEventListener( type: RemotePlayerEventType, handler: (event: RemotePlayerChangedEvent) => void ): void; } export interface RemotePlayer { isConnected: boolean; isMediaLoaded: boolean; duration: number; currentTime: number; volumeLevel: number; canControlVolume: boolean; isPaused: boolean; isMuted: boolean; canPause: boolean; canSeek: boolean; displayName: string; statusText: string; title: string; displayStatus: string; mediaInfo?: chrome.cast.media.MediaInfo; imageUrl: string | null; playerState: chrome.cast.media.PlayerState | null; savedPlayerState: SavedPlayerState | null; controller: RemotePlayerController | null; } export interface CastSession { } interface SavedPlayerState { mediaInfo: chrome.cast.media.PlayerState | null; currentTime: number; isPaused: boolean; } class RemotePlayerChangedEvent<T = any> extends EventData { constructor(type: RemotePlayerEventType, field: string, value: T); field: string; value: T; } abstract class EventData { constructor(type: string); type: string; } enum RemotePlayerEventType { ANY_CHANGE = "anyChanged", IS_CONNECTED_CHANGED = "isConnectedChanged", IS_MEDIA_LOADED_CHANGED = "isMediaLoadedChanged", DURATION_CHANGED = "durationChanged", CURRENT_TIME_CHANGED = "currentTimeChanged", IS_PAUSED_CHANGED = "isPausedChanged", VOLUME_LEVEL_CHANGED = "volumeLevelChanged", CAN_CONTROL_VOLUME_CHANGED = "canControlVolumeChanged", IS_MUTED_CHANGED = "isMutedChanged", CAN_PAUSE_CHANGED = "canPauseChanged", CAN_SEEK_CHANGED = "canSeekChanged", DISPLAY_NAME_CHANGED = "displayNameChanged", STATUS_TEXT_CHANGED = "statusTextChanged", TITLE_CHANGED = "titleChanged", DISPLAY_STATUS_CHANGED = "displayStatusChanged", MEDIA_INFO_CHANGED = "mediaInfoChanged", IMAGE_URL_CHANGED = "imageUrlChanged", PLAYER_STATE_CHANGED = "playerStateChanged", LIVE_SEEKABLE_RANGE_CHANGED = "liveSeekableRange" } } } declare type AbstractMetaData = chrome.cast.media.GenericMediaMetadata | chrome.cast.media.MovieMediaMetadata | chrome.cast.media.MusicTrackMediaMetadata | chrome.cast.media.PhotoMediaMetadata declare class Media { static setDefaultImageProperties(w: number, h: number): void; static newEntity(mediaId: string, mimeType: string, title?: string, image?: string, meta?: AbstractMetaData): chrome.cast.media.MediaInfo; } export interface Options { autoJoinPolicy?: string; receiverApplicationId?: string; language?: string; resumeSavedSession?: boolean; } export declare class CastOptions { constructor(); setOptions(options: Options): void; readonly options: cast.framework.CastOptions; } export declare class Chromecast { constructor(); /** * Whether or not the chromecase service has been * established and can accept media requests */ static isReady(): boolean; static initializeCastService(options?: Options): Promise<void>; static setStartingStateListener(listener: () => void): void; static setReadyStateListner(listener: () => void): void; static setShutownStateListener(listener: () => void): void; static setResumeStateListener(listener: () => void): ResumeState; static setErrorListener(listener: (e: chrome.cast.Error) => void): void; static readonly controller: cast.framework.RemotePlayerController; static readonly player: cast.framework.RemotePlayer; static readonly session: cast.framework.CastSession; static readonly AutoJoinPolicy: { CUSTOM_CONTROLLER_SCOPED: string; TAB_AND_ORIGIN_SCOPED: string; ORIGIN_SCOPED: string; PAGE_SCOPED: string; }; static disconnect(): void; static on(event: EventType, fn: HandlerFn): void; static onAnyEvent(listener: (event: EventType, value: any) => void): void; static off(event: EventType): void; static unregisterAll(): void; static getCurrentMedia(): chrome.cast.media.MediaInfo | null; static newMediaEntity(mediaId: string, mimeType: string): chrome.cast.media.MediaInfo; static newMediaEntity(mediaId: string, mimeType: string, title: string): chrome.cast.media.MediaInfo; static newMediaEntity(mediaId: string, mimeType: string, title: string, image: string): chrome.cast.media.MediaInfo; static newMediaEntity(mediaId: string, mimeType: string, title?: string, image?: string, meta?: AbstractMetaData): chrome.cast.media.MediaInfo; static enqueue(item: chrome.cast.media.MediaInfo): void; static enqueueItems(items: chrome.cast.media.MediaInfo[]): void; static appendToQueue(item: chrome.cast.media.MediaInfo): void; static removeFromQueue(item: number): void; static reorderQueue(from: number, to: number): void static clearQueue(): void; static startQueue(): void; static startQueue(startTime: number): void; static playNext(): void; static playPrevious(): void; static getCastDeviceName(): string } export declare class Controller { static togglePlay(): void; static toggleMute(): void; static seek(seconds: number): void; static seekToTime(seconds: number): void; static seekToPercentage(ratio: number): void; static stop(): void; static stop(drainQueue: boolean): void; static adjustVolume(volume: number): void; static rewind(): void; } export declare interface ResumeState { items: chrome.cast.media.MediaInfo[] currentItem: number } export type EventType = 'isConnected' | 'isMediaLoaded' | 'duration' | 'currentTime' | 'isPaused' | 'volumeLevel' | 'canControlVolume' | 'isMuted' | 'canPause' | 'canSeek' | 'displayName' | 'statusText' | 'title' | 'displayStatus' | 'imageUrl' | 'mediaInfo' | 'playerState' | & QueueEventType export declare type QueueEventType = 'queueLoad' | 'queueComplete' | 'queueInsert' | 'queueRemove' | 'queueItem' | 'queueUpdate' // Type definitions for Chrome Cast application development // Project: https://developers.google.com/cast/ // Definitions by: Thomas Stig Jacobsen <https://github.com/eXeDK> // Stefan Ullinger <https://github.com/stefanullinger> // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped //////////////////// // Cast // @see https://code.google.com/p/chromium/codesearch#chromium/src/ui/file_manager/externs/chrome_cast.js //////////////////// declare namespace chrome.cast { /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.AutoJoinPolicy */ export enum AutoJoinPolicy { CUSTOM_CONTROLLER_SCOPED = "custom_controller_scoped", TAB_AND_ORIGIN_SCOPED = "tab_and_origin_scoped", ORIGIN_SCOPED = "origin_scoped", PAGE_SCOPED = "page_scoped" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.DefaultActionPolicy */ export enum DefaultActionPolicy { CREATE_SESSION = "create_session", CAST_THIS_TAB = "cast_this_tab" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.Capability */ export enum Capability { VIDEO_OUT = "video_out", AUDIO_OUT = "audio_out", VIDEO_IN = "video_in", AUDIO_IN = "audio_in", MULTIZONE_GROUP = "multizone_group" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.ErrorCode */ export enum ErrorCode { CANCEL = "cancel", TIMEOUT = "timeout", API_NOT_INITIALIZED = "api_not_initialized", INVALID_PARAMETER = "invalid_parameter", EXTENSION_NOT_COMPATIBLE = "extension_not_compatible", EXTENSION_MISSING = "extension_missing", RECEIVER_UNAVAILABLE = "receiver_unavailable", SESSION_ERROR = "session_error", CHANNEL_ERROR = "channel_error", LOAD_MEDIA_FAILED = "load_media_failed" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.ReceiverAvailability */ export enum ReceiverAvailability { AVAILABLE = "available", UNAVAILABLE = "unavailable" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.SenderPlatform */ export enum SenderPlatform { CHROME = "chrome", IOS = "ios", ANDROID = "android" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.ReceiverType */ export enum ReceiverType { CAST = "cast", DIAL = "dial", HANGOUT = "hangout", CUSTOM = "custom" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.ReceiverAction */ export enum ReceiverAction { CAST = "cast", STOP = "stop" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.SessionStatus */ export enum SessionStatus { CONNECTED = "connected", DISCONNECTED = "disconnected", STOPPED = "stopped" } /** * @const {!Array<number>} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.VERSION */ export var VERSION: Array<number>; /** * @type {boolean} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.isAvailable */ export var isAvailable: boolean; /** * @param {!chrome.cast.ApiConfig} apiConfig * @param {function()} successCallback * @param {function(chrome.cast.Error)} errorCallback */ export function initialize( apiConfig: chrome.cast.ApiConfig, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void; /** * @param {function(!chrome.cast.Session)} successCallback * @param {function(chrome.cast.Error)} errorCallback * @param {chrome.cast.SessionRequest=} opt_sessionRequest * @param {string=} opt_label */ export function requestSession( successCallback: (session: chrome.cast.Session) => void, errorCallback: (error: chrome.cast.Error) => void, sessionRequest?: chrome.cast.SessionRequest, label?: string ): void /** * @param {string} sessionId The id of the session to join. */ export function requestSessionById( sessionId: string ): void /** * @param {chrome.cast.ReceiverActionListener} listener */ export function addReceiverActionListener( listener: (receiver: chrome.cast.Receiver, receiverAction: chrome.cast.ReceiverAction) => void ): void /** * @param {chrome.cast.ReceiverActionListener} listener */ export function removeReceiverActionListener( listener: (receiver: chrome.cast.Receiver, receiverAction: chrome.cast.ReceiverAction) => void ): void /** * @param {string} message The message to log. */ export function logMessage( message: string ): void /** * @param {!Array<chrome.cast.Receiver>} receivers * @param {function()} successCallback * @param {function(chrome.cast.Error)} errorCallback */ export function setCustomReceivers( receivers: Array<chrome.cast.Receiver>, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {!chrome.cast.Receiver} receiver * @param {function()} successCallback * @param {function(chrome.cast.Error)} errorCallback */ export function setReceiverDisplayStatus( receiver: chrome.cast.Receiver, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {string} escaped A string to unescape. * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.unescape */ export function unescape( escaped: string ): string export class ApiConfig { /** * @param {!chrome.cast.SessionRequest} sessionRequest * @param {function(!chrome.cast.Session)} sessionListener * @param {function(!chrome.cast.ReceiverAvailability,Array<Object>)} * receiverListener * @param {chrome.cast.AutoJoinPolicy=} opt_autoJoinPolicy * @param {chrome.cast.DefaultActionPolicy=} opt_defaultActionPolicy * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.ApiConfig */ constructor( sessionRequest: chrome.cast.SessionRequest, sessionListener: (session: chrome.cast.Session) => void, receiverListener: (receiverAvailability: chrome.cast.ReceiverAvailability) => void, autoJoinPolicy?: chrome.cast.AutoJoinPolicy, defaultActionPolicy?: chrome.cast.DefaultActionPolicy ); sessionRequest: chrome.cast.SessionRequest; sessionListener: (session: chrome.cast.Session) => void; receiverListener: (receiverAvailability: chrome.cast.ReceiverAvailability) => void; autoJoinPolicy?: chrome.cast.AutoJoinPolicy; defaultActionPolicy: chrome.cast.DefaultActionPolicy; } export class Error { /** * @param {!chrome.cast.ErrorCode} code * @param {string=} opt_description * @param {Object=} opt_details * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Error */ constructor( code: chrome.cast.ErrorCode, description?: string, details?: Object ); code: chrome.cast.ErrorCode; description?: string; details?: string; } export class Image { /** * @param {string} url * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Image */ constructor(url: string); url: string; height?: number; width?: number; } export class SenderApplication { /** * @param {!chrome.cast.SenderPlatform} platform * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.SenderApplication */ constructor( platform: chrome.cast.SenderPlatform ); platform: chrome.cast.SenderPlatform; url?: string; packageId?: string; } export class SessionRequest { /** * @param {string} appId * @param {!Array<chrome.cast.Capability>=} opt_capabilities * @param {number=} opt_timeout * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.SessionRequest */ constructor( appId: string, capabilities?: Array<chrome.cast.Capability>, timeout?: number ); appId: string; capabilities: Array<chrome.cast.Capability>; requestSessionTimeout: number; language?: string; } export class Session { /** * @param {string} sessionId * @param {string} appId * @param {string} displayName * @param {!Array<chrome.cast.Image>} appImages * @param {!chrome.cast.Receiver} receiver * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Session */ constructor( sessionId: string, appId: string, displayName: string, appImages: Array<chrome.cast.Image>, receiver: chrome.cast.Receiver ); sessionId: string; appId: string; displayName: string; appImages: Array<chrome.cast.Image>; receiver: chrome.cast.Receiver; senderApps: Array<chrome.cast.SenderApplication>; namespaces: Array<{ name: string }>; media: Array<chrome.cast.media.Media>; status: chrome.cast.SessionStatus /** * @param {number} newLevel * @param {function()} successCallback * @param {function(chrome.cast.Error)} errorCallback */ setReceiverVolumeLevel( newLevel: number, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {boolean} muted * @param {function()} successCallback * @param {function(chrome.cast.Error)} errorCallback */ setReceiverMuted( muted: boolean, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {function()} successCallback * @param {function(chrome.cast.Error)} errorCallback */ leave( successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {function()} successCallback * @param {function(chrome.cast.Error)} errorCallback */ stop( successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {string} namespace * @param {!Object|string} message * @param {!function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ sendMessage( namespace: string, message: string, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {function(boolean)} listener */ addUpdateListener( listener: (isAlive: boolean) => void ): void /** * @param {function(boolean)} listener */ removeUpdateListener( listener: (isAlive: boolean) => void ): void /** * @param {string} namespace * @param {function(string,string)} listener */ addMessageListener( namespace: string, listener: (namespace: string, message: string) => void ): void /** * @param {string} namespace * @param {function(string,string)} listener */ removeMessageListener( namespace: string, listener: (namespace: string, message: string) => void ): void /** * @param {function(!chrome.cast.media.Media)} listener */ addMediaListener( listener: (media: chrome.cast.media.Media) => void ): void /** * @param {function(!chrome.cast.media.Media)} listener */ removeMediaListener( listener: (media: chrome.cast.media.Media) => void ): void /** * @param {!chrome.cast.media.LoadRequest} loadRequest * @param {function(!chrome.cast.media.Media)} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ loadMedia( loadRequest: chrome.cast.media.LoadRequest, successCallback: (media: chrome.cast.media.Media) => void, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {!chrome.cast.media.QueueLoadRequest} queueLoadRequest * @param {function(!chrome.cast.media.Media)} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ queueLoad( queueLoadRequest: chrome.cast.media.QueueLoadRequest, successCallback: (media: chrome.cast.media.Media) => void, errorCallback: (error: chrome.cast.Error) => void ): void } export class Receiver { /** * @param {string} label * @param {string} friendlyName * @param {Array<chrome.cast.Capability>=} opt_capabilities * @param {chrome.cast.Volume=} opt_volume * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Receiver */ constructor( label: string, friendlyName: string, capabilities?: Array<chrome.cast.Capability>, volume?: chrome.cast.Volume ); label: string; friendlyName: string; capabilities: Array<chrome.cast.Capability>; volume: chrome.cast.Volume; receiverType: chrome.cast.ReceiverType; displayStatus: chrome.cast.ReceiverDisplayStatus; } export class ReceiverDisplayStatus { /** * @param {string} statusText * @param {!Array<chrome.cast.Image>} appImages * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.ReceiverDisplayStatus */ constructor( statusText: string, appImages: Array<chrome.cast.Image> ); statusText: string; appImages: Array<chrome.cast.Image>; } export class Volume { /** * @param {?number=} opt_level * @param {?boolean=} opt_muted * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Volume */ constructor( level?: number, muted?: boolean ); level?: number; muted?: boolean; } } declare namespace chrome.cast.media { export var DEFAULT_MEDIA_RECEIVER_APP_ID: string; /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.MediaCommand */ export enum MediaCommand { PAUSE = "pause", SEEK = "seek", STREAM_VOLUME = "stream_volume", STREAM_MUTE = "stream_mute" } /** * @enum {number} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.MetadataType */ export enum MetadataType { GENERIC, TV_SHOW, MOVIE, MUSIC_TRACK, PHOTO } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.PlayerState */ export enum PlayerState { IDLE = "IDLE", PLAYING = "PLAYING", PAUSED = "PAUSED", BUFFERING = "BUFFERING" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.ResumeState */ export enum ResumeState { PLAYBACK_START = "PLAYBACK_START", PLAYBACK_PAUSE = "PLAYBACK_PAUSE" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.StreamType */ export enum StreamType { BUFFERED = "BUFFERED", LIVE = "LIVE", OTHER = "OTHER" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.IdleReason */ export enum IdleReason { CANCELLED = "CANCELLED", INTERRUPTED = "INTERRUPTED", FINISHED = "FINISHED", ERROR = "ERROR" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.RepeatMode */ export enum RepeatMode { OFF = "REPEAT_OFF", ALL = "REPEAT_ALL", SINGLE = "REPEAT_SINGLE", ALL_AND_SHUFFLE = "REPEAT_ALL_AND_SHUFFLE" } export class QueueItem { /** * @param {!chrome.cast.media.MediaInfo} mediaInfo * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueItem */ constructor( mediaInfo: chrome.cast.media.MediaInfo ); activeTrackIds: Array<Number>; autoplay: boolean; customData: Object; itemId: number; media: chrome.cast.media.MediaInfo; preloadTime: number; startTime: number; } export class QueueLoadRequest { /** * @param {!Array<chrome.cast.media.QueueItem>} items * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueLoadRequest */ constructor( items: Array<chrome.cast.media.QueueItem> ); customData: Object; items: Array<chrome.cast.media.QueueItem>; repeatMode: chrome.cast.media.RepeatMode; startIndex: number; } export class QueueInsertItemsRequest { /** * @param {!Array<chrome.cast.media.QueueItem>} * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueInsertItemsRequest */ constructor( itemsToInsert: Array<chrome.cast.media.QueueItem> ); customData: Object; insertBefore: number; items: Array<chrome.cast.media.QueueItem>; } export class QueueRemoveItemsRequest { /** * @param {!Array<number>} * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueRemoveItemsRequest */ constructor( itemIdsToRemove: Array<number> ); customData: Object; itemIds: Array<number>; } export class QueueReorderItemsRequest { /** * @param {!Array<number>} * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueReorderItemsRequest */ constructor( itemIdsToReorder: Array<number> ); customData: Object; insertBefore: number; itemIds: Array<number>; } export class QueueUpdateItemsRequest { /** * @param {!Array<chrome.cast.media.QueueItem>} * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueUpdateItemsRequest */ constructor( itemsToUpdate: Array<chrome.cast.media.QueueItem> ); customData: Object; item: Array<chrome.cast.media.QueueItem>; } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.TrackType */ export enum TrackType { TEXT = "TEXT", AUDIO = "AUDIO", VIDEO = "VIDEO" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.TextTrackType */ export enum TextTrackType { SUBTITLES = "SUBTITLES", CAPTIONS = "CAPTIONS", DESCRIPTIONS = "DESCRIPTIONS", CHAPTERS = "CHAPTERS", METADATA = "METADATA" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.TextTrackEdgeType */ export enum TextTrackEdgeType { NONE = "NONE", OUTLINE = "OUTLINE", DROP_SHADOW = "DROP_SHADOW", RAISED = "RAISED", DEPRESSED = "DEPRESSED" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.TextTrackWindowType */ export enum TextTrackWindowType { NONE = "NONE", NORMAL = "NORMAL", ROUNDED_CORNERS = "ROUNDED_CORNERS" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.TextTrackFontGenericFamily */ export enum TextTrackFontGenericFamily { SANS_SERIF = "SANS_SERIF", MONOSPACED_SANS_SERIF = "MONOSPACED_SANS_SERIF", SERIF = "SERIF", MONOSPACED_SERIF = "MONOSPACED_SERIF", CASUAL = "CASUAL", CURSIVE = "CURSIVE", SMALL_CAPITALS = "SMALL_CAPITALS" } /** * @enum {string} * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.TextTrackFontStyle */ export enum TextTrackFontStyle { NORMAL = "NORMAL", BOLD = "BOLD", BOLD_ITALIC = "BOLD_ITALIC", ITALIC = "ITALIC" } export class GetStatusRequest { /** * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.GetStatusRequest */ constructor(); customData: Object; } export class PauseRequest { /** * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.PauseRequest */ constructor(); customData: Object; } export class PlayRequest { /** * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.PlayRequest */ constructor(); customData: Object; } export class SeekRequest { /** * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.SeekRequest */ constructor(); currentTime: number; resumeState: chrome.cast.media.ResumeState; customData: Object; } export class StopRequest { /** * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.StopRequest */ constructor(); customData: Object; } export class VolumeRequest { /** * @param {!chrome.cast.Volume} volume * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.VolumeRequest */ constructor( volume: chrome.cast.Volume ); volume: chrome.cast.Volume; customData: Object; } export class LoadRequest { /** * @param {!chrome.cast.media.MediaInfo} mediaInfo * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.LoadRequest */ constructor( mediaInfo: chrome.cast.media.MediaInfo ); activeTrackIds: Array<number>; autoplay: boolean; currentTime: number; customData: Object; media: chrome.cast.media.MediaInfo; } export class EditTracksInfoRequest { /** * @param {Array<number>=} opt_activeTrackIds * @param {chrome.cast.media.TextTrackStyle=} opt_textTrackStyle * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.EditTracksInfoRequest */ constructor( activeTrackIds?: Array<number>, textTrackStyle?: chrome.cast.media.TextTrackStyle ); activeTrackIds: Array<number>; textTrackStyle: chrome.cast.media.TextTrackStyle; } export class GenericMediaMetadata { images: Array<chrome.cast.Image>; metadataType: chrome.cast.media.MetadataType; releaseDate: string; /** @deprecated. Use releaseDate instead. */ releaseYear: number; subtitle: string; title: string; /** @deprecated. Use metadataType instead. */ type: chrome.cast.media.MetadataType; } export class MovieMediaMetadata { /** * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.MovieMediaMetadata */ constructor(); images: Array<chrome.cast.Image>; metadataType: chrome.cast.media.MetadataType; releaseDate: string; /** @deprecated. Use releaseDate instead. */ releaseYear: number; subtitle: string; title: string; studio: string; /** @deprecated. Use metadataType instead. */ type: chrome.cast.media.MetadataType; } export class TvShowMediaMetadata { /** * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.TvShowMediaMetadata */ constructor(); metadataType: chrome.cast.media.MetadataType; seriesTitle: string; title: string; season: number; episode: number; images: Array<chrome.cast.Image>; originalAirdate: string; /** @deprecated. Use metadataType instead. */ type: chrome.cast.media.MetadataType; /** @deprecated. Use title instead. */ episodeTitle: string; /** @deprecated. Use season instead. */ seasonNumber: number; /** @deprecated. Use episode instead. */ episodeNumber: number; /** @deprecated. Use originalAirdate instead. */ releaseYear: number; } export class MusicTrackMediaMetadata { /** * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.MusicTrackMediaMetadata */ constructor(); metadataType: chrome.cast.media.MetadataType; albumName: string; title: string; albumArtist: string; artist: string; composer: string; songName: string; trackNumber: number; discNumber: number; images: Array<chrome.cast.Image>; releaseDate: string; /** @deprecated. Use metadataType instead. */ type: chrome.cast.media.MetadataType; /** @deprecated. Use artist instead. */ artistName: string; /** @deprecated. Use releaseDate instead. */ releaseYear: number; } export class PhotoMediaMetadata { /** * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.PhotoMediaMetadata */ constructor(); metadataType: chrome.cast.media.MetadataType; title: string; artist: string; location: string; images: Array<chrome.cast.Image>; latitude: number; longitude: number; width: number; height: number; creationDateTime: string; /** @deprecated. Use metadataType instead. */ type: chrome.cast.media.MetadataType; } export class MediaInfo { /** * @param {string} contentId * @param {string} contentType * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.MediaInfo */ constructor( contentId: string, contentType: string ); contentId: string; streamType: chrome.cast.media.StreamType; contentType: string; metadata: Object; duration: number; tracks: Array<chrome.cast.media.Track>; textTrackStyle: chrome.cast.media.TextTrackStyle; customData: Object; } export class Media { /** * @param {string} sessionId * @param {number} mediaSessionId * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.Media */ constructor( sessionId: string, mediaSessionId: number ); activeTrackIds: Array<number>; currentItemId: number; customData: Object; idleReason: chrome.cast.media.IdleReason; items: Array<chrome.cast.media.QueueItem>; loadingItemId: number; media: chrome.cast.media.MediaInfo; mediaSessionId: number; playbackRate: number; playerState: chrome.cast.media.PlayerState; preloadedItemId: number; repeatMode: chrome.cast.media.RepeatMode; sessionId: string; supportedMediaCommands: Array<chrome.cast.media.MediaCommand>; volume: chrome.cast.Volume; /** @deprecated. Use getEstimatedTime instead */ currentTime: number; /** * @param {chrome.cast.media.GetStatusRequest} getStatusRequest * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ getStatus( getStatusRequest: chrome.cast.media.GetStatusRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {chrome.cast.media.PlayRequest} playRequest * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ play( playRequest: chrome.cast.media.PlayRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {chrome.cast.media.PauseRequest} pauseRequest * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ pause( pauseRequest: chrome.cast.media.PauseRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {!chrome.cast.media.SeekRequest} seekRequest * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ seek( seekRequest: chrome.cast.media.SeekRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {chrome.cast.media.StopRequest} stopRequest * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ stop( stopRequest: chrome.cast.media.StopRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {!chrome.cast.media.VolumeRequest} volumeRequest * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ setVolume( volumeRequest: chrome.cast.media.VolumeRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {!chrome.cast.media.EditTracksInfoRequest} editTracksInfoRequest * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ editTracksInfo( editTracksInfoRequest: chrome.cast.media.EditTracksInfoRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {!chrome.cast.media.MediaCommand} command * @return {boolean} */ supportsCommand( command: chrome.cast.media.MediaCommand ): boolean /** * @param {function(boolean)} listener */ addUpdateListener( listener: (isAlive: boolean) => void ): void /** * @param {function(boolean)} listener */ removeUpdateListener( listener: (isAlive: boolean) => void ): void /** * @return {number} * @suppress {deprecated} Uses currentTime member to compute estimated time. */ getEstimatedTime(): number /** * @param {!chrome.cast.media.QueueItem} item * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ queueAppendItem( item: chrome.cast.media.QueueItem, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {!chrome.cast.media.QueueInsertItemsRequest} queueInsertItemsRequest * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ queueInsertItems( queueInsertItemsRequest: chrome.cast.media.QueueInsertItemsRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {!number} itemId * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ queueJumpToItem( itemId: number, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {!number} itemId * @param {!number} newIndex * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ queueMoveItemToNewIndex( itemId: number, newIndex: number, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ queueNext( successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ queuePrev( successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {!number} itemId * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ queueRemoveItem( itemId: number, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {!chrome.cast.media.QueueReorderItemsRequest} queueReorderItemsRequest * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ queueReorderItems( queueReorderItemsRequest: chrome.cast.media.QueueReorderItemsRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {!chrome.cast.media.RepeatMode} repeatMode * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ queueSetRepeatMode( repeatMode: chrome.cast.media.RepeatMode, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void /** * @param {!chrome.cast.media.QueueUpdateItemsRequest} queueUpdateItemsRequest * @param {function()} successCallback * @param {function(!chrome.cast.Error)} errorCallback */ queueUpdateItems( queueUpdateItemsRequest: chrome.cast.media.QueueUpdateItemsRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void ): void } export class Track { /** * @param {number} trackId * @param {!chrome.cast.media.TrackType} trackType * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.Track */ constructor( trackId: number, trackType: chrome.cast.media.TrackType ); trackId: number; trackContentId: string; trackContentType: string; type: chrome.cast.media.TrackType; name: string; language: string; subtype: chrome.cast.media.TextTrackType; customData: Object; } export class TextTrackStyle { /** * @constructor * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.TextTrackStyle */ constructor(); foregroundColor: string; backgroundColor: string; edgeType: chrome.cast.media.TextTrackEdgeType; edgeColor: string; windowType: chrome.cast.media.TextTrackWindowType; windowColor: string; windowRoundedCornerRadius: number; fontScale: number; fontFamily: string; fontGenericFamily: chrome.cast.media.TextTrackFontGenericFamily; fontStyle: chrome.cast.media.TextTrackFontStyle; customData: Object; } } /** * @namespace * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.timeout */ declare namespace chrome.cast.media.timeout { export var load: number; export var getStatus: number; export var play: number; export var pause: number; export var seek: number; export var stop: number; export var setVolume: number; export var editTracksInfo: number; export var queueInsert: number; export var queueLoad: number; export var queueRemove: number; export var queueReorder: number; export var queueUpdate: number; }