package com.suno.android.common_analytics.payloads import com.suno.android.common_analytics.ActionName import com.suno.android.common_analytics.ActionType import com.suno.android.common_analytics.Category import com.suno.android.common_analytics.ElementType import com.suno.android.common_analytics.SOURCE import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable sealed interface AnalyticEvent { @Serializable data class Typed( @SerialName("actionName") val actionName: ActionName, @SerialName("actionType") val actionType: ActionType = ActionType.Event, @SerialName("elementType") val elementType: ElementType = ElementType.None, @SerialName("category") val category: Category? = null, @SerialName("elementId") val elementId: String? = null, @SerialName("userId") val userId: String? = null, @SerialName("context") val context: String? = null, @SerialName("anonymousId") val anonymousId: String? = null, @SerialName("sessionId") val sessionId: String? = null, @SerialName("source") val source: String = SOURCE, @SerialName("method") val method: String? = null, ) : AnalyticEvent @Serializable data class Raw( @SerialName("actionName") val actionName: String, @SerialName("actionType") val actionType: ActionType = ActionType.Event, @SerialName("elementType") val elementType: String? = null, @SerialName("category") val category: Category? = null, @SerialName("elementId") val elementId: String? = null, @SerialName("userId") val userId: String? = null, @SerialName("context") val context: String? = null, @SerialName("anonymousId") val anonymousId: String? = null, @SerialName("sessionId") val sessionId: String? = null, @SerialName("source") val source: String = SOURCE, @SerialName("method") val method: String? = null, ) : AnalyticEvent }