package com.correx.core.artifacts.model

import com.correx.core.events.types.ArtifactId
import com.correx.core.events.types.ArtifactLifecyclePhase
import com.correx.core.events.types.SessionId
import com.correx.core.events.types.StageId
import kotlinx.datetime.Instant
import kotlinx.serialization.Serializable

@Serializable
sealed interface Artifact {
    val id: ArtifactId
    val sessionId: SessionId
    val stageId: StageId
    val schemaVersion: Int
    val createdAt: Instant
    val lifecyclePhase: ArtifactLifecyclePhase
    val lineage: ArtifactLineage
    val metadata: Map<String, String>
}
