import Foundation enum NASConnectionState: String, Codable { case connected // manifest loaded, comparison succeeded case offline // NAS unreachable case unknown // not yet checked } struct BackupStatusSnapshot: Codable { var phoneTotal: Int = 0 var alreadySafe: Int = 0 var nasArchiveTotal: Int = 0 var lastCheckedAt: Date? var connectionState: NASConnectionState = .unknown // Derived — invariant: alreadySafe + needBackup == phoneTotal (always) var needBackup: Int { max(0, phoneTotal - alreadySafe) } static let empty = BackupStatusSnapshot() }