package de.ladkau.deckinadash.data

import kotlinx.serialization.Serializable

/**
 * Mirrors the JSON schema app/src/main/jni/reading_json.c emits - see
 * that file's own header comment. Deserialized with a snake_case naming
 * strategy (see ReadingRepository's Json instance), so these property
 * names stay idiomatic Kotlin camelCase without needing @SerialName on
 * every field.
 */
@Serializable
data class ReadingDto(
    val date: String,
    val gender: String,
    val daySignificance: DaySignificanceDto,
    val transits: List<TransitDto>,
    val guidance: String,
    val spread: List<SpreadPositionDto>,
)

@Serializable
data class DaySignificanceDto(
    val levelSlug: String,
    val levelLabel: String,
    val rank: Int,
    val count: Int,
    val deservesFraming: Boolean,
)

@Serializable
data class TransitDto(
    val title: String,
    val transitingPlanetSlug: String,
    val natalPlanetSlug: String,
    val aspectSlug: String,
    val orb: Double,
    val score: Double,
    val narrative: String,
)

@Serializable
data class SpreadPositionDto(
    val positionSlug: String,
    val positionName: String,
    val positionDescription: String,
    val cardSlug: String,
    val cardName: String,
    val reversed: Boolean,
    val cardMeaning: String,
)
