module Language.LSP.Protocol.Message.Meta where

-- | Which direction messages are sent in.
data MessageDirection = ServerToClient | ClientToServer
-- | What kind of message is sent.
data MessageKind = Notification | Request

-- | Singleton type for 'MessageDirection'.
data SMessageDirection (f :: MessageDirection) where
  SClientToServer :: SMessageDirection ClientToServer
  SServerToClient :: SMessageDirection ServerToClient
  SBothDirections :: SMessageDirection f

-- | Singleton type for 'MessageKind'.
data SMessageKind (f :: MessageKind) where
  SNotification :: SMessageKind Notification
  SRequest :: SMessageKind Request
  SBothTypes :: SMessageKind f