UNPKG

@7sage/vidstack

Version:

UI component library for building high-quality, accessible video and audio experiences on the web.

1,423 lines (1,258 loc) 39.4 kB
interface Window { cast?: typeof cast; __onGCastApiAvailable?(available: boolean, reason?: string): void; } declare namespace chrome.cast { /** * @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', } /** * @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', } /** * @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', } /** * @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', } /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.ReceiverAvailability */ export enum ReceiverAvailability { AVAILABLE = 'available', UNAVAILABLE = 'unavailable', } /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.SenderPlatform */ export enum SenderPlatform { CHROME = 'chrome', IOS = 'ios', ANDROID = 'android', } /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.ReceiverType */ export enum ReceiverType { CAST = 'cast', DIAL = 'dial', HANGOUT = 'hangout', CUSTOM = 'custom', } /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.ReceiverAction */ export enum ReceiverAction { CAST = 'cast', STOP = 'stop', } /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.SessionStatus */ export enum SessionStatus { CONNECTED = 'connected', DISCONNECTED = 'disconnected', STOPPED = 'stopped', } /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.VERSION */ export var VERSION: number[]; /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast#.isAvailable */ export var isAvailable: boolean; /** * @param apiConfig * @param successCallback * @param errorCallback */ export function initialize( apiConfig: chrome.cast.ApiConfig, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param successCallback * @param errorCallback * @param opt_sessionRequest * @param 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 sessionId The id of the session to join. */ export function requestSessionById(sessionId: string): void; /** * @param listener */ export function addReceiverActionListener( listener: (receiver: chrome.cast.Receiver, receiverAction: chrome.cast.ReceiverAction) => void, ): void; /** * @param listener */ export function removeReceiverActionListener( listener: (receiver: chrome.cast.Receiver, receiverAction: chrome.cast.ReceiverAction) => void, ): void; /** * @param message The message to log. */ export function logMessage(message: string): void; /** * @param receivers * @param successCallback * @param errorCallback */ export function setCustomReceivers( receivers: chrome.cast.Receiver[], successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param receiver * @param successCallback * @param errorCallback */ export function setReceiverDisplayStatus( receiver: chrome.cast.Receiver, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param 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 sessionRequest * @param sessionListener * @param receiverListener * @param opt_autoJoinPolicy * @param opt_defaultActionPolicy * @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 code * @param opt_description * @param opt_details * @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 | null; details: object; } export class Image { /** * @param url * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Image */ constructor(url: string); url: string; height: number | null; width: number | null; } export class SenderApplication { /** * @param platform * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.SenderApplication */ constructor(platform: chrome.cast.SenderPlatform); platform: chrome.cast.SenderPlatform; url: string | null; packageId: string | null; } export class SessionRequest { /** * @param appId * @param opt_capabilities * @param opt_timeout * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.SessionRequest */ constructor(appId: string, capabilities?: chrome.cast.Capability[], timeout?: number); appId: string; capabilities: chrome.cast.Capability[]; requestSessionTimeout: number; language: string | null; } export class Session { /** * @param sessionId * @param appId * @param displayName * @param appImages * @param receiver * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Session */ constructor( sessionId: string, appId: string, displayName: string, appImages: chrome.cast.Image[], receiver: chrome.cast.Receiver, ); sessionId: string; appId: string; displayName: string; appImages: chrome.cast.Image[]; receiver: chrome.cast.Receiver; senderApps: chrome.cast.SenderApplication[]; namespaces: Array<{ name: string }>; media: chrome.cast.media.Media[]; status: chrome.cast.SessionStatus; statusText: string | null; transportId: string; /** * @param newLevel * @param successCallback * @param errorCallback */ setReceiverVolumeLevel( newLevel: number, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param muted * @param successCallback * @param errorCallback */ setReceiverMuted( muted: boolean, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param successCallback * @param errorCallback */ leave(successCallback: Function, errorCallback: (error: chrome.cast.Error) => void): void; /** * @param successCallback * @param errorCallback */ stop(successCallback: Function, errorCallback: (error: chrome.cast.Error) => void): void; /** * @param namespace * @param message * @param successCallback * @param errorCallback */ sendMessage( namespace: string, message: string | object, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param listener */ addUpdateListener(listener: (isAlive: boolean) => void): void; /** * @param listener */ removeUpdateListener(listener: (isAlive: boolean) => void): void; /** * @param namespace * @param listener */ addMessageListener( namespace: string, listener: (namespace: string, message: string) => void, ): void; /** * @param namespace * @param listener */ removeMessageListener( namespace: string, listener: (namespace: string, message: string) => void, ): void; /** * @param listener */ addMediaListener(listener: (media: chrome.cast.media.Media) => void): void; /** * @param listener */ removeMediaListener(listener: (media: chrome.cast.media.Media) => void): void; /** * @param loadRequest * @param successCallback * @param errorCallback */ loadMedia( loadRequest: chrome.cast.media.LoadRequest, successCallback: (media: chrome.cast.media.Media) => void, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param queueLoadRequest * @param successCallback * @param 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 label * @param friendlyName * @param opt_capabilities * @param opt_volume * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Receiver */ constructor( label: string, friendlyName: string, capabilities?: chrome.cast.Capability[], volume?: chrome.cast.Volume, ); label: string; friendlyName: string; capabilities: chrome.cast.Capability[]; volume: chrome.cast.Volume; receiverType: chrome.cast.ReceiverType; displayStatus: chrome.cast.ReceiverDisplayStatus; } export class ReceiverDisplayStatus { /** * @param statusText * @param appImages * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.ReceiverDisplayStatus */ constructor(statusText: string, appImages: chrome.cast.Image[]); statusText: string; appImages: chrome.cast.Image[]; } export class Volume { /** * @param opt_level * @param opt_muted * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Volume */ constructor(level?: number, muted?: boolean); level: number | null; muted: boolean | null; } } declare namespace chrome.cast.media { export var DEFAULT_MEDIA_RECEIVER_APP_ID: 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', } /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.MetadataType */ export enum MetadataType { GENERIC, TV_SHOW, MOVIE, MUSIC_TRACK, PHOTO, } /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.PlayerState */ export enum PlayerState { IDLE = 'IDLE', PLAYING = 'PLAYING', PAUSED = 'PAUSED', BUFFERING = 'BUFFERING', } /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.ResumeState */ export enum ResumeState { PLAYBACK_START = 'PLAYBACK_START', PLAYBACK_PAUSE = 'PLAYBACK_PAUSE', } /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.StreamType */ export enum StreamType { BUFFERED = 'BUFFERED', LIVE = 'LIVE', OTHER = 'OTHER', } /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.IdleReason */ export enum IdleReason { CANCELLED = 'CANCELLED', INTERRUPTED = 'INTERRUPTED', FINISHED = 'FINISHED', ERROR = 'ERROR', } /** * @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 mediaInfo * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueItem */ constructor(mediaInfo: chrome.cast.media.MediaInfo); activeTrackIds: Number[]; autoplay: boolean; customData: Object; itemId: number; media: chrome.cast.media.MediaInfo; preloadTime: number; startTime: number; } export class QueueLoadRequest { /** * @param items * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueLoadRequest */ constructor(items: chrome.cast.media.QueueItem[]); customData: Object; items: chrome.cast.media.QueueItem[]; repeatMode: chrome.cast.media.RepeatMode; startIndex: number; } export class QueueInsertItemsRequest { /** * @param itemsToInsert * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueInsertItemsRequest */ constructor(itemsToInsert: chrome.cast.media.QueueItem[]); customData: Object; insertBefore: number; items: chrome.cast.media.QueueItem[]; } export class QueueRemoveItemsRequest { /** * @param itemIdsToRemove * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueRemoveItemsRequest */ constructor(itemIdsToRemove: number[]); customData: Object; itemIds: number[]; } export class QueueReorderItemsRequest { /** * @param itemIdsToReorder * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueReorderItemsRequest */ constructor(itemIdsToReorder: number[]); customData: Object; insertBefore: number; itemIds: number[]; } export class QueueUpdateItemsRequest { /** * @param itemsToUpdate * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.QueueUpdateItemsRequest */ constructor(itemsToUpdate: chrome.cast.media.QueueItem[]); customData: Object; item: chrome.cast.media.QueueItem[]; } /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.TrackType */ export enum TrackType { TEXT = 'TEXT', AUDIO = 'AUDIO', VIDEO = 'VIDEO', } /** * @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', } /** * @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', } /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media#.TextTrackWindowType */ export enum TextTrackWindowType { NONE = 'NONE', NORMAL = 'NORMAL', ROUNDED_CORNERS = 'ROUNDED_CORNERS', } /** * @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', } /** * @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 { /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.GetStatusRequest */ constructor(); customData: Object; } export class PauseRequest { /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.PauseRequest */ constructor(); customData: Object; } export class PlayRequest { /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.PlayRequest */ constructor(); customData: Object; } export class SeekRequest { /** * @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 { /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.StopRequest */ constructor(); customData: Object; } export class VolumeRequest { /** * @param volume * @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 mediaInfo * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.LoadRequest */ constructor(mediaInfo: chrome.cast.media.MediaInfo); activeTrackIds: number[]; autoplay: boolean; currentTime: number; customData: Object; media: chrome.cast.media.MediaInfo; playbackRate?: number | undefined; } export class EditTracksInfoRequest { /** * @param opt_activeTrackIds * @param opt_textTrackStyle * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.EditTracksInfoRequest */ constructor(activeTrackIds?: number[], textTrackStyle?: chrome.cast.media.TextTrackStyle); activeTrackIds: number[]; textTrackStyle: chrome.cast.media.TextTrackStyle; } export class GenericMediaMetadata { images: 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 { /** * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.MovieMediaMetadata */ constructor(); images: 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 { /** * @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: 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 { /** * @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: 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 { /** * @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: 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 contentId * @param contentType * @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: any; duration: number; tracks: chrome.cast.media.Track[]; textTrackStyle: chrome.cast.media.TextTrackStyle; customData: Object; } export class Media { /** * @param sessionId * @param mediaSessionId * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.Media */ constructor(sessionId: string, mediaSessionId: number); activeTrackIds: number[]; currentItemId: number; customData: Object; idleReason: chrome.cast.media.IdleReason | null; items: chrome.cast.media.QueueItem[]; liveSeekableRange?: chrome.cast.media.LiveSeekableRange | undefined; 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: chrome.cast.media.MediaCommand[]; volume: chrome.cast.Volume; /** @deprecated Use getEstimatedTime instead */ currentTime: number; /** * @param getStatusRequest * @param successCallback * @param errorCallback */ getStatus( getStatusRequest: chrome.cast.media.GetStatusRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param playRequest * @param successCallback * @param errorCallback */ play( playRequest: chrome.cast.media.PlayRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param pauseRequest * @param successCallback * @param errorCallback */ pause( pauseRequest: chrome.cast.media.PauseRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param seekRequest * @param successCallback * @param errorCallback */ seek( seekRequest: chrome.cast.media.SeekRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param stopRequest * @param successCallback * @param errorCallback */ stop( stopRequest: chrome.cast.media.StopRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param volumeRequest * @param successCallback * @param errorCallback */ setVolume( volumeRequest: chrome.cast.media.VolumeRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param editTracksInfoRequest * @param successCallback * @param errorCallback */ editTracksInfo( editTracksInfoRequest: chrome.cast.media.EditTracksInfoRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param command * @return whether or not the receiver supports the given chrome.cast.media.MediaCommand */ supportsCommand(command: chrome.cast.media.MediaCommand): boolean; /** * @param listener */ addUpdateListener(listener: (isAlive: boolean) => void): void; /** * @param listener */ removeUpdateListener(listener: (isAlive: boolean) => void): void; /** * @return * @suppress {deprecated} Uses currentTime member to compute estimated time. */ getEstimatedTime(): number; /** * @param item * @param successCallback * @param errorCallback */ queueAppendItem( item: chrome.cast.media.QueueItem, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param queueInsertItemsRequest * @param successCallback * @param errorCallback */ queueInsertItems( queueInsertItemsRequest: chrome.cast.media.QueueInsertItemsRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param itemId * @param successCallback * @param errorCallback */ queueJumpToItem( itemId: number, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param itemId * @param newIndex * @param successCallback * @param errorCallback */ queueMoveItemToNewIndex( itemId: number, newIndex: number, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param successCallback * @param errorCallback */ queueNext(successCallback: Function, errorCallback: (error: chrome.cast.Error) => void): void; /** * @param successCallback * @param errorCallback */ queuePrev(successCallback: Function, errorCallback: (error: chrome.cast.Error) => void): void; /** * @param itemId * @param successCallback * @param errorCallback */ queueRemoveItem( itemId: number, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param queueReorderItemsRequest * @param successCallback * @param errorCallback */ queueReorderItems( queueReorderItemsRequest: chrome.cast.media.QueueReorderItemsRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param repeatMode * @param successCallback * @param errorCallback */ queueSetRepeatMode( repeatMode: chrome.cast.media.RepeatMode, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; /** * @param queueUpdateItemsRequest * @param successCallback * @param errorCallback */ queueUpdateItems( queueUpdateItemsRequest: chrome.cast.media.QueueUpdateItemsRequest, successCallback: Function, errorCallback: (error: chrome.cast.Error) => void, ): void; } export class Track { /** * @param trackId * @param trackType * @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 { /** * @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; } export class LiveSeekableRange { /** * @param start * @param end * @param isMovingWindow * @param isLiveDone * @see https://developers.google.com/cast/docs/reference/chrome/chrome.cast.media.LiveSeekableRange */ constructor(start?: number, end?: number, isMovingWindow?: boolean, isLiveDone?: boolean); start?: number | undefined; end?: number | undefined; isMovingWindow?: boolean | undefined; isLiveDone?: boolean | undefined; } } /** * @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; } /** * Cast Application Framework * * @see https://developers.google.com/cast/docs/reference/chrome/cast.framework */ declare namespace cast.framework { export enum LoggerLevel { DEBUG, INFO, WARNING, ERROR, NONE, } export enum CastState { NO_DEVICES_AVAILABLE = 'NO_DEVICES_AVAILABLE', NOT_CONNECTED = 'NOT_CONNECTED', CONNECTING = 'CONNECTING', CONNECTED = 'CONNECTED', } export enum SessionState { NO_SESSION = 'NO_SESSION', SESSION_STARTING = 'SESSION_STARTING', SESSION_STARTED = 'SESSION_STARTED', SESSION_START_FAILED = 'SESSION_START_FAILED', SESSION_ENDING = 'SESSION_ENDING', SESSION_ENDED = 'SESSION_ENDED', SESSION_RESUMED = 'SESSION_RESUMED', } export enum CastContextEventType { CAST_STATE_CHANGED = 'caststatechanged', SESSION_STATE_CHANGED = 'sessionstatechanged', } export enum SessionEventType { APPLICATION_STATUS_CHANGED = 'applicationstatuschanged', APPLICATION_METADATA_CHANGED = 'applicationmetadatachanged', ACTIVE_INPUT_STATE_CHANGED = 'activeinputstatechanged', VOLUME_CHANGED = 'volumechanged', MEDIA_SESSION = 'mediasession', } export 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', } export enum ActiveInputState { ACTIVE_INPUT_STATE_UNKNOWN = -1, ACTIVE_INPUT_STATE_NO = 0, ACTIVE_INPUT_STATE_YES = 1, } export interface CastOptions { autoJoinPolicy: chrome.cast.AutoJoinPolicy; language?: string | undefined; receiverApplicationId?: string | undefined; resumeSavedSession?: boolean | undefined; /** The following flag enables Cast Connect(requires Chrome 87 or higher) */ androidReceiverCompatible?: boolean | undefined; } export const VERSION: string; export function setLoggerLevel(level: LoggerLevel): void; export class CastContext { static getInstance(): CastContext; setOptions(options: CastOptions): void; getCastState(): CastState; getSessionState(): SessionState; requestSession(): Promise<chrome.cast.ErrorCode | undefined>; getCurrentSession(): CastSession | null; endCurrentSession(stopCasting: boolean): void; addEventListener<T extends keyof CastContextEvents>( type: T, handler: (event: CastContextEvents[T]) => void, ): void; removeEventListener<T extends keyof CastContextEvents>( type: T, handler: (event: CastContextEvents[T]) => void, ): void; } export interface CastContextEvents { [CastContextEventType.CAST_STATE_CHANGED]: CastStateEventData; [CastContextEventType.SESSION_STATE_CHANGED]: SessionStateEventData; } export class CastSession { constructor(sessionObj: chrome.cast.Session, state: SessionState); getSessionObj(): chrome.cast.Session; getSessionId(): string; getSessionState(): SessionState; getCastDevice(): chrome.cast.Receiver; getApplicationMetadata(): ApplicationMetadata; getApplicationStatus(): string; getActiveInputState(): ActiveInputState; endSession(stopCasting: boolean): void; setVolume(volume: number): Promise<chrome.cast.ErrorCode | undefined>; getVolume(): number; setMute(mute: boolean): Promise<chrome.cast.ErrorCode | undefined>; isMute(): boolean; sendMessage(namespace: string, data: any): Promise<chrome.cast.ErrorCode | undefined>; addMessageListener( namespace: string, listener: (namespace: string, message: string) => void, ): void; removeMessageListener( namespace: string, listener: (namespace: string, message: string) => void, ): void; loadMedia(request: chrome.cast.media.LoadRequest): Promise<chrome.cast.ErrorCode | undefined>; getMediaSession(): chrome.cast.media.Media | null; addEventListener<T extends keyof CastSessionEvents>( type: T, handler: (event: CastSessionEvents[T]) => void, ): void; removeEventListener<T extends keyof CastSessionEvents>( type: T, handler: (event: CastSessionEvents[T]) => void, ): void; } export interface CastSessionEvents { [SessionEventType.ACTIVE_INPUT_STATE_CHANGED]: ActiveInputStateEventData; [SessionEventType.APPLICATION_METADATA_CHANGED]: ApplicationMetadataEventData; [SessionEventType.APPLICATION_STATUS_CHANGED]: ApplicationStatusEventData; [SessionEventType.MEDIA_SESSION]: MediaSessionEventData; [SessionEventType.VOLUME_CHANGED]: VolumeEventData; } 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 SavedPlayerState { mediaInfo: chrome.cast.media.PlayerState | null; currentTime: number; isPaused: boolean; } export class 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; liveSeekableRange?: chrome.cast.media.LiveSeekableRange | undefined; mediaInfo?: chrome.cast.media.MediaInfo | undefined; imageUrl: string | null; playerState: chrome.cast.media.PlayerState | null; savedPlayerState: SavedPlayerState | null; controller: RemotePlayerController | null; } export class ApplicationMetadata { constructor(sessionObj: chrome.cast.Session); applicationId: string; images: chrome.cast.Image[]; name: string; namespaces: string[]; } export abstract class EventData { constructor(type: string); type: string; } export class ActiveInputStateEventData extends EventData { constructor(activeInputState: ActiveInputState); activeInputState: ActiveInputState; } export class ApplicationMetadataEventData extends EventData { constructor(metadata: ApplicationMetadata); metadata: ApplicationMetadata; } export class ApplicationStatusEventData extends EventData { constructor(status: string); status: string; } export class CastStateEventData extends EventData { constructor(castState: CastState); castState: CastState; } export class MediaSessionEventData extends EventData { constructor(mediaSession: chrome.cast.media.Media); mediaSession: chrome.cast.media.Media; } export class RemotePlayerChangedEvent<T = any> extends EventData { constructor(type: RemotePlayerEventType, field: string, value: T); field: string; value: T; } export class SessionStateEventData extends EventData { constructor( session: CastSession, sessionState: SessionState, opt_errorCode: chrome.cast.ErrorCode, ); errorCode: chrome.cast.ErrorCode; session: CastSession; sessionState: SessionState; } export class VolumeEventData extends EventData { constructor(volume: number, isMute: boolean); isMute: boolean; volume: number; } }