-- | Eventable type class.
module Data.CQRS.Eventable
       ( Eventable(..)
       ) where

-- | Type class for applying events to aggregates.
class Eventable a e | a -> e where
  -- | Apply an event to the aggregate and return the updated aggregate.
  applyEvent :: Maybe a -> e -> Maybe a