import type {CSSProperties} from 'react'; export enum KinescopePlayerEvent { Ready, QualityChanged, CurrentTrackChanged, SeekChapter, SizeChanged, Play, Playing, Waiting, Pause, Ended, TimeUpdate, Progress, Seeked, DurationChange, VolumeChange, PlaybackRateChange, FullscreenChange, CallAction, CallBookmark, Error, Destroy, } export interface PlaylistItemOptions { title?: string; subtitle?: string; poster?: string; vtt?: { label: string; src: string; srcLang: string; }[]; chapters?: { position: number; title: string; }[]; bookmarks?: { id: string; time: number; title?: string; }[]; actions?: (ActionToolBar | ActionCallToAction)[]; drm?: { auth?: { token?: string; }; }; } export type VideoQuality = | 'auto' | 'index' | 144 | 240 | 360 | 480 | 576 | 720 | 1080 | 1440 | 2160 | 4320; export type VideoQualityLevels = { [quality in VideoQuality]: { level: number; url?: string; }; }; export type WatermarkModeTypes = 'stripes' | 'random'; export type WatermarkTypes = | string | { text: string; mode?: WatermarkModeTypes; scale?: number; displayTimeout?: number | {visible: number; hidden: number}; }; export type ActionToolBar = { id: string; type: 'tool'; title?: string; icon: 'note'; }; export type ActionCallToAction = { id: string; type: 'cta'; title: string; description?: string; skipable?: boolean; buttonStyle?: CSSProperties; trigger: { percentages: number[]; timePoints: number[]; pause: boolean; }; }; export interface KinescopePlayer { on: (event: KinescopePlayerEvent, callback: any) => void; once: (event: KinescopePlayerEvent, callback: any) => void; off: (event: KinescopePlayerEvent, callback: any) => void; Events: typeof KinescopePlayerEvent; isPaused(): Promise; isEnded(): Promise; play(): Promise; pause(): Promise; stop(): Promise; getCurrentTime(): Promise; getDuration(): Promise; seekTo(time: number): Promise; isMuted(): Promise; mute(): Promise; unmute(): Promise; getVolume(): Promise; setVolume(value: number): Promise; getPlaybackRate(): Promise; setPlaybackRate(value: number): Promise; getVideoQualityList(): Promise; getVideoQuality(): Promise; setVideoQuality(quality: VideoQuality): Promise; enableTextTrack(lang: string): Promise; disableTextTrack(): Promise; closeCTA(): Promise; isFullscreen(): Promise; setFullscreen(fullscreen: boolean): Promise; setPlaylistItemOptions(options: PlaylistItemOptions): Promise; getPlaylistItem(): Promise<{id: string | undefined} | undefined>; switchTo(id: string): Promise; next(): Promise; previous(): Promise; destroy(): Promise; } export interface KinescopeCreateOptions { url: string; size?: { width?: number | string; height?: number | string; }; playlist: PlaylistItemOptions[]; behaviour?: { autoPlay?: boolean | 'viewable'; autoPause?: boolean | 'reset'; loop?: boolean; playsInline?: boolean; muted?: boolean; localStorage?: boolean; }; ui?: { language?: 'ru' | 'en'; controls?: boolean; mainPlayButton?: boolean; playbackRateButton?: boolean; watermark?: WatermarkTypes; }; settings?: { externalId?: string; }; } declare global { interface Window { Kinescope: { IframePlayer: { create: (id: string, options: KinescopeCreateOptions) => Promise; version: string; }; }; } }