import axios from 'axios' import { TracklistEntry, SplitOptions, TaskStatus } from '../types' export const api = axios.create({ baseURL: '/api', headers: { 'Content-Type': 'application/json', }, }) export const uploadFile = async (file: File): Promise<{ task_id: string; filename: string; size: number }> => { const formData = new FormData() formData.append('file', file) const response = await api.post('/upload', formData, { headers: { 'Content-Type': 'multipart/form-data', }, }) return response.data } export const startSplit = async ( task_id: string, tracklist: TracklistEntry[], options: SplitOptions ): Promise<{ task_id: string; status: string }> => { const response = await api.post('/split', { task_id, tracklist, options, }) return response.data } export const getStatus = async (task_id: string): Promise => { const response = await api.get(`/status/${task_id}`) return response.data } export const getDownloadUrl = (task_id: string): string => { return `/api/download/${task_id}` } export const getDownloadZipUrl = (task_id: string): string => { return `/api/download/${task_id}/splits.zip` } // New functions for format validation feature export const getFormatInfo = async (): Promise<{ formats: Array<{ name: string; audio_only: boolean }> }> => { const response = await api.get('/formats') return response.data } export const getTaskInfo = async (task_id: string): Promise<{ task_id: string has_audio: boolean has_video: boolean has_subtitle: boolean audio_codec: string | null }> => { const response = await api.get(`/info/${task_id}`) return response.data }