package com.doctate.watch.net

/**
 * Outcome of [UploadClient.upload]. Only Success or Transient: per the
 * canonical client sync spec, anything other than a confirmed Success is
 * treated like "no contact" — the audio stays local and retry continues
 * indefinitely. The desktop client mirror in clients/desktop/src/server_sync.rs
 * still has a separate Terminal variant and must be reconciled separately.
 */
sealed interface UploadResult {
    data class Success(val caseId: String, val recordedAt: String, val status: String) : UploadResult
    data class Transient(val reason: String) : UploadResult
}
