import { MediaActionCMD, FileInfo } from './internal/model'; export type MediaEventData = MediaActionCMD extends 'change' ? { playerId: string; id: string; previous: number; current: number; total: number; } : MediaActionCMD extends 'action' ? { playerId: string; code: string; id: string; } : MediaActionCMD extends 'casterControls' ? { playerId: string; status: 'pause' | 'play'; progress: number; } : { playerId: string; }; export type MediaEventListener = (evt: MediaEventData) => void; export interface MediaHeaders { [key: string]: any; } export interface SourceFrame { offsetX: number; offsetY: number; width: number; height: number; } export interface PlayerItem { title?: string; id?: FileInfo['id']; type: FileInfo['type']; url: string; thumbnailUrl?: string; livePhotoUrl?: string; headers?: MediaHeaders; } export interface PlayerOptions { files?: PlayerItem[]; position?: number; animation?: 'slide'; positionFileId?: string; toolbarItems?: PlayerToolbar[]; mode?: 'normal' | 'caster'; } export interface PlayerToolbar { icon: string; code: string; label: string; disabled?: boolean; position?: 'top' | 'bottom'; labelColor?: string; labelBgColor?: string; } export type PlayerUpdateItem = Omit & { type: 'picture'; }; export interface PlayerLayout { title: string; subtitle?: string; alignment?: 'left' | 'center' | 'right'; animation?: { mode?: 'none' | 'marquee'; config?: { speed?: number; }; }; } export interface PlayerMode { mode: 'normal' | 'caster'; } export interface PayerCasterControls { status: 'pause' | 'play'; duration?: number; progress?: number; } export interface PlayerUpdateAttributes { attributes: { key: keyof PlayerOptions | 'sourceFrame'; value: PlayerOptions[keyof PlayerOptions] | SourceFrame; }[]; } export declare class Player { constructor(options: PlayerOptions); private id; private options; /** * * @param sourceFrame * @returns */ play(sourceFrame: SourceFrame): Promise; toolbar(toolbar: PlayerToolbar[]): Promise<{ code: string; id: string; }>; update(index: number, file: PlayerUpdateItem, loading?: boolean, showError?: boolean): Promise; /** * 更新播放器布局 * @param layout 播放器布局信息 * @returns */ layout(layout: PlayerLayout): Promise; /** * * @param files * @param direction * @returns */ append(files: PlayerItem[], direction: 'start' | 'end'): Promise; /** * * @param id * @returns */ drop(id: string): Promise; /** * * @returns */ close(options?: { animation?: 'slide'; }): Promise; setMode(playerMode: PlayerMode): Promise; setCasterControls(playerCasterControls: PayerCasterControls): Promise; scrollTo(playerScroll: { positionFileId: string; }): Promise; updateAttributes(playerAttributes: PlayerUpdateAttributes): Promise; addEventListener: (event: MediaActionCMD, listener: MediaEventListener) => void; onAction: (event: MediaActionCMD, listener: MediaEventListener) => void; removeEventListener: (event: MediaActionCMD, listener: MediaEventListener) => void; removeAllListeners: (event?: MediaActionCMD) => void; } export declare const media: { player: (options: PlayerOptions) => Player; };