@file:Suppress("HardCodedStringLiteral")

package eu.gaudian.translator.model.communication

import com.google.gson.annotations.SerializedName

/**
 * Data class representing the manifest response from the server.
 */
data class ManifestResponse(
    @SerializedName("files")
    val files: List<FileInfo>
)

/**
 * Data class representing information about a downloadable file.
 */
data class FileInfo(
    @SerializedName("id")
    val id: String,
    @SerializedName("name")
    val name: String,
    @SerializedName("description")
    val description: String,
    @SerializedName("version")
    val version: String,
    @SerializedName("assets")
    val assets: List<Asset>
)

/**
 * Data class representing an asset file within a downloadable file.
 */
data class Asset(
    @SerializedName("filename")
    val filename: String,
    @SerializedName("size_bytes")
    val sizeBytes: Long,
    @SerializedName("checksum_sha256")
    val checksumSha256: String
)
