import { PlaybackBitrate, PlaybackStates, PlayerRepeatMode, PlayerShuffleMode } from './enums'; import type { MusicKitAPI } from './MusicKitAPI.d.ts'; export type MediaItem = object; export interface Queue { 'currentItem': MediaItem; 'isEmpty': boolean; 'items': MediaItem[]; 'length': number; 'nextPlayableItem': MediaItem; 'position': number; 'previousPlayableItem': MediaItem; } export interface QueueOptions { 'album'?: string; 'albums'?: string[]; 'musicVideo'?: string; 'musicVideos'?: string[]; 'playlist'?: string; 'playlists'?: string[]; 'song'?: string; 'songs'?: string[]; } export interface SeekSeconds { 'BACK': number; 'FORWARD': number; } export interface MusicKitInstance { 'api': Readonly; 'bitrate': Readonly; 'currentPlaybackDuration': Readonly; 'currentPlaybackProgress': Readonly; 'currentPlaybackTime': Readonly; 'currentPlaybackTimeRemaining': Readonly; 'isAuthorized': Readonly; 'isPlaying': Readonly; 'nowPlayingItem': Readonly; 'nowPlayingItemIndex': Readonly; 'playbackRate': Readonly; 'playbackState': Readonly; 'previewOnly': Readonly; 'queue': Readonly; 'queueIsEmpty': Readonly; 'repeatMode': Readonly; 'seekSeconds': Readonly; 'shuffleMode': Readonly; 'storefrontCountryCode': Readonly; 'storefrontId': Readonly; 'videoContainerElement': Readonly; 'volume': Readonly; 'addEventListener': ( name: string, callback: CallableFunction, options: { 'once': boolean } ) => void; 'authorize': () => Promise; 'changeToMediaAtIndex': ( index: number ) => Promise; 'changeToMediaItem': ( descriptor: MediaItem | string ) => Promise; 'changeUserStorefront': ( storefrontId: string ) => Promise; 'clearQueue': () => Promise; 'exitFullscreen': () => void; 'mute': () => void; 'pause': () => void; 'play': () => void; 'playAt': ( position: number, options: QueueOptions ) => Promise; 'playLater': ( options: QueueOptions ) => Promise; 'playNext': ( options: QueueOptions, clear: boolean ) => Promise; 'removeEventListener': ( name: string, callback: CallableFunction ) => void; 'requestFullscreen': () => void; 'seekBackward': () => Promise; 'seekForward': () => Promise; 'seekToTime': ( time: number ) => Promise; 'setQueue': ( options: QueueOptions ) => Promise; 'skipToNextItem': () => Promise; 'skipToPreviousItem': () => Promise; 'stop': () => void; 'unauthorize': () => Promise; 'unmute': () => void; }