export type MediaType = "Audio" | "Video" | "Image"; export interface MediaFile { hash: string; file: File; } export type AnyMedia = AudioFile | VideoFile | ImageFile; export interface VideoFile extends MediaFile { kind: "video"; frames: number; fps: number; duration: number; proxy: boolean; } export interface AudioFile extends MediaFile { kind: "audio"; } export interface ImageFile extends MediaFile { kind: "image"; } export interface Video extends VideoFile { element: HTMLVideoElement; thumbnail: string; } export interface Audio extends AudioFile { element: HTMLAudioElement; } export interface Image extends ImageFile { element: HTMLImageElement; url: string; }