package com.placeholder.sherpai2.domain.repository

import com.placeholder.sherpai2.data.local.entity.TagEntity
import kotlinx.coroutines.flow.Flow

/**
 * Handles all tagging operations.
 *
 * This repository is the ONLY place where:
 * - tags are attached
 * - visibility rules are applied
 */
interface TaggingRepository {

    suspend fun addTagToImage(
        imageId: String,
        tagValue: String,
        source: String,
        confidence: Float
    )

    suspend fun hideTagForImage(
        imageId: String,
        tagValue: String
    )

    fun getTagsForImage(imageId: String): Flow<List<TagEntity>>

    suspend fun removeTagFromImage(imageId: String, tagId: String)
}
