import { Privacy } from "@prisma/client";

export type ItemMetadata = {
  title: string;
  description: string;
  tags: string;
  privacy: Privacy;
  categoryId: string;
  resolution: string;
  notifySubscribers: boolean;
  madeForKids: boolean;
  embeddable: boolean;
  creativeCommons: boolean;
  includeWatermark: boolean;
  /** YouTube playlist ID (Pro only). Video is added after upload. */
  playlistId?: string | null;
};

export type UploadedAudio = {
  path: string;
  filename: string;
  metadata: ItemMetadata;
};

export type CreatePlaylistRequest = {
  title: string;
  description?: string;
  privacy?: "public" | "unlisted" | "private";
};

export type CreateJobPayload = {
  imagePath: string;
  items: Array<{
    audioPath: string;
    audioFilename: string;
    metadata: ItemMetadata;
  }>;
  /** Create a new playlist and attach its ID to every item (Pro). */
  createPlaylist?: CreatePlaylistRequest | null;
};

export type JobItemResponse = {
  id: string;
  audioFilename: string;
  title: string;
  status: string;
  youtubeVideoId: string | null;
  error: string | null;
};

export type JobResponse = {
  id: string;
  status: string;
  createdAt: string;
  completedAt: string | null;
  items: JobItemResponse[];
};

export type VideoJobData = {
  jobItemId: string;
  userId: string;
  jobId: string;
};
