/**
 * Types pour la feature Playlists
 * T0451: Structure de base pour les playlists
 */

/**
 * Interface représentant une playlist
 */
export interface Playlist {
  id: string;
  user_id: string;
  title: string;
  description?: string;
  is_public: boolean;
  cover_url?: string;
  track_count: number;
  created_at: string;
  updated_at: string;
  tracks?: PlaylistTrack[];
  user?: {
    id: string;
    username: string;
    avatar_url?: string;
  };
}

/**
 * Interface représentant un track dans une playlist
 */
export interface PlaylistTrack {
  id: string;
  playlist_id: string;
  track_id: string;
  position: number;
  added_at: string;
  track?: Track;
}

/**
 * Interface représentant un track (référence depuis player/types)
 */
export interface Track {
  id: string;
  title: string;
  artist: string;
  duration: number;
  file_path: string;
  cover_art_path?: string;
  album?: string;
}

/**
 * Requête pour créer une playlist
 */
export interface CreatePlaylistRequest {
  title: string;
  description?: string;
  is_public?: boolean;
  cover_url?: string;
}

/**
 * Requête pour mettre à jour une playlist
 */
export interface UpdatePlaylistRequest {
  title?: string;
  description?: string;
  is_public?: boolean;
  cover_url?: string;
}

/**
 * Réponse de liste de playlists avec pagination
 */
export interface PlaylistListResponse {
  playlists: Playlist[];
  total: number;
  page: number;
  limit: number;
}
