package com.example.furumi_android.domain.model

data class ArtistCard(
    val id: Long,
    val name: String,
    val imageUrl: String?,
    val releaseCount: Int,
    val trackCount: Int
)

data class ArtistRef(
    val id: Long,
    val name: String
)

data class ArtistPage(
    val items: List<ArtistCard>,
    val total: Long,
    val page: Int,
    val perPage: Int,
    val hasMore: Boolean
)

data class ReleaseCard(
    val id: Long,
    val title: String,
    val releaseType: String?,
    val year: Int?,
    val coverUrl: String?,
    val trackCount: Int
)

data class TrackCard(
    val id: Long,
    val title: String,
    val trackNumber: Int?,
    val discNumber: Int?,
    val durationSeconds: Int?,
    val artists: List<String>,
    val artistRefs: List<ArtistRef> = emptyList(),
    val featuredArtistRefs: List<ArtistRef> = emptyList(),
    val releaseTitle: String?,
    val coverUrl: String?,
    val streamUrl: String
)

data class ArtistDetail(
    val artist: ArtistCard,
    val releases: List<ReleaseCard>,
    val topTracks: List<TrackCard>,
    val featuredTracks: List<TrackCard>
)

data class ReleaseDetail(
    val release: ReleaseCard,
    val artists: List<ArtistCard>,
    val tracks: List<TrackCard>
)

data class PlaylistCard(
    val id: Long,
    val title: String,
    val trackCount: Int,
    val isPublic: Boolean,
    val isOwn: Boolean = false,
    val ownerName: String? = null,
    val isSaved: Boolean = false,
    val kind: String? = null
)

data class PlaylistDetail(
    val playlist: PlaylistCard,
    val description: String?,
    val tracks: List<TrackCard>
)

data class SearchResults(
    val artistMatches: List<ArtistCard>,
    val trackArtists: List<ArtistCard>,
    val tracks: List<TrackCard>
)
