-- |
-- Module:      Data.ProtoBuf.Required
-- Copyright:   (c) 2015-2016 Martijn Rijkeboer <mrr@sru-systems.com>
-- License:     MIT
-- Maintainer:  Martijn Rijkeboer <mrr@sru-systems.com>
--
-- Required typeclass.

module Data.ProtoBuf.Required
    ( Required(..)
    ) where


import Data.ProtoBuf.WireTag (WireTag)
import Data.Set (Set)


-- | Typeclass to retrieve required WireTags.
class Required a where

    -- | The required WireTags for the data type.
    reqTags :: a -> Set WireTag