import type {ReactElement, SyntheticEvent} from 'react';
import type {PlayerEmitter, ThumbnailEmitter} from './event-emitter.js';

export type ThumbnailMethods = {
	getContainerNode: () => HTMLDivElement | null;
	getScale: () => number;
};

export type PlayerMethods = ThumbnailMethods & {
	play: (e?: SyntheticEvent) => void;
	pause: () => void;
	toggle: (e?: SyntheticEvent) => void;
	seekTo: (frame: number) => void;
	getCurrentFrame: () => number;
	requestFullscreen: () => void;
	exitFullscreen: () => void;
	isFullscreen: () => boolean;
	setVolume: (num: number) => void;
	getVolume: () => number;
	isMuted: () => boolean;
	isPlaying: () => boolean;
	mute: () => void;
	unmute: () => void;
	pauseAndReturnToPlayStart: () => void;
};

export type ThumbnailRef = ThumbnailEmitter & ThumbnailMethods;
export type PlayerRef = PlayerEmitter & PlayerMethods;
export type RenderCustomControls = () => ReactElement | null;
