module PrioritySync.Internal.ClaimContext
(ClaimContext(..))
where
import PrioritySync.Internal.UserData
import PrioritySync.Internal.RoomCore
import Control.Concurrent.STM
class ClaimContext c where
type ClaimHandle c :: *
approveClaimsEntering :: c -> [Claim (UserData c)] -> STM (ClaimHandle c)
approveClaimsExiting :: c -> [Claim (UserData c)] -> STM (ClaimHandle c)
waitingAction :: c -> ClaimHandle c -> STM ()
instance (ClaimContext c) => ClaimContext (c,m) where
type ClaimHandle (c,m) = ClaimHandle c
approveClaimsEntering = approveClaimsEntering . fst
approveClaimsExiting = approveClaimsExiting . fst
waitingAction = waitingAction . fst