package app.closer.domain.repository

import app.closer.core.notifications.TokenRegistrar
import app.closer.domain.model.User
import kotlinx.coroutines.flow.Flow

interface UserRepository {
    suspend fun getUser(uid: String): User?
    fun observeUser(uid: String): Flow<User?>
    suspend fun createUser(user: User)
    suspend fun updateDisplayName(uid: String, displayName: String)
    suspend fun updatePhotoUrl(uid: String, photoUrl: String)
    suspend fun updateSex(uid: String, sex: String)
    suspend fun hasProfile(uid: String): Boolean
    suspend fun storeFcmToken(uid: String, token: String)
    suspend fun storeTokenMetadata(uid: String, token: String, metadata: TokenRegistrar.DeviceMetadata)
    suspend fun updateNotificationPrefs(uid: String, partnerAnswered: Boolean, chatMessage: Boolean)
    suspend fun clearCoupleId(uid: String)
    suspend fun deleteUserData(uid: String)
}
