package com.suno.android.common_networking.ably import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.json.JsonElement sealed class AblyEvent { data object Connected : AblyEvent() data object Disconnected : AblyEvent() data class Message( val message: AblyMessage, ) : AblyEvent() data class Error( val throwable: Throwable, ) : AblyEvent() } @Serializable data class AblyMessage( @SerialName("id") val id: String? = null, @SerialName("name") val name: String? = null, @SerialName("data") val data: String? = null, @SerialName("timestamp") val timestamp: Long? = null, ) @Serializable data class AblyTokenResponse( @SerialName("token") val token: String, @SerialName("issued") val issued: Long, @SerialName("expires") val expires: Long, @SerialName("capability") val capability: JsonElement, @SerialName("clientId") val clientId: String, @SerialName("keyName") val keyName: String? = null, @SerialName("nonce") val nonce: String? = null, @SerialName("mac") val mac: String? = null, )