// app/upload/types.ts

export type FileStatus =
  | "pending"
  | "uploading"
  | "processing"
  | "extracting"
  | "completed"
  | "saving"
  | "saved"
  | "error";

// 1. Definimos un tipo de unión para los valores permitidos.
// Esto es mucho más seguro que 'any'.
export type JsonPrimitive = string | number | boolean | null;

export interface ManagedFile {
  id: string;
  file: File;
  status: FileStatus;
  progress: number;
  // 2. Usamos el nuevo tipo en 'extractedData'.
  // Ahora solo aceptará claves string con valores primitivos.
  extractedData?: Record<string, JsonPrimitive> | null;
  errorMessage?: string;
  savedId?: string;
}
