import { invoke, Channel } from '@tauri-apps/api/core'; export interface ThumbnailSpritesheet { filePath: string; startIndex: number; count: number; thumbWidth: number; thumbHeight: number; columns: number; intervalSeconds: number; } export interface WaveformTiers { /** ~2,000 peaks — overview for full-duration view */ tier0: number[]; /** ~10,000 peaks — moderate zoom */ tier1: number[]; /** All extracted peaks — deep zoom */ tier2: number[]; } export async function extractKeyframes(filePath: string): Promise { return invoke('extract_keyframes', { filePath }); } export async function extractWaveformTiers( filePath: string, duration: number, onProgress?: (pct: number) => void ): Promise { const channel = new Channel(); if (onProgress) { channel.onmessage = onProgress; } return invoke('extract_waveform_tiers', { filePath, duration, onProgress: channel, }); } export async function extractThumbnails( filePath: string, duration: number ): Promise { return invoke('extract_thumbnails', { filePath, duration, }); } export async function cleanupThumbnails(paths: string[]): Promise { return invoke('cleanup_thumbnails', { paths }); } export async function checkEmbeddedSubtitles( filePath: string ): Promise { return invoke('check_embedded_subtitles', { filePath }); } export async function listSystemFonts(): Promise { return invoke('list_system_fonts'); }