import Foundation actor SettingsSyncCoordinator { private var pendingKeys: Set = [] private var isDraining = false func enqueue(_ keys: Set) -> Bool { pendingKeys.formUnion(keys) guard !isDraining else { return false } isDraining = true return true } func dequeueBatch() -> Set { guard !pendingKeys.isEmpty else { isDraining = false return [] } let nextBatch = pendingKeys pendingKeys.removeAll() return nextBatch } }