package eu.gaudian.translator.model.grammar

import android.os.Parcelable
import kotlinx.parcelize.Parcelize
import kotlinx.serialization.Serializable

/**
 * A container holding the grammatical features for BOTH words in a VocabularyItem.
 * This entire object is serialized into the single `features` string.
 */
@Serializable
@Parcelize
data class VocabularyFeatures(
    val first: GrammaticalFeature? = null,
    val second: GrammaticalFeature? = null
) : Parcelable

/**
 * A generic, serializable container for the grammatical information of a SINGLE word.
 *
 * @param category The type of word, e.g., "noun", "verb". This key corresponds
 * to a category in the language configuration JSON.
 * @param properties A flexible map to hold any language-specific properties,
 * e.g., "gender" -> "masculine", "plural" -> "die Männer".
 */
@Serializable
@Parcelize
data class GrammaticalFeature(
    val category: String,
    val properties: Map<String, String>
) : Parcelable