{- |
See t'Circuit' for documentation. This module is designed to import unqualified,
i.e. using:

@
  import Protocols
@

Definitions of t'Circuit', 'Fwd', 'Bwd', and 'Protocols.Df.Df', inspired by
definitions in @circuit-notation@ at <https://github.com/cchalmers/circuit-notation>.
-}
module Protocols (
  -- * Circuit definition
  Circuit (Circuit),
  Protocol (Fwd, Bwd),
  Ack (..),
  Reverse,

  -- * Combinators & functions
  (|>),
  (<|),
  fromSignals,
  toSignals,

  -- * Protocol types
  CSignal,
  Df,
  ToConst,
  ToConstBwd,

  -- * Basic circuits
  idC,
  repeatC,
  applyC,
  prod2C,

  -- * Circuit notation plugin
  circuit,
  (-<),
  Units (..),
  TaggedBundle (..),
) where

import Protocols.Df (Df)
import Protocols.Internal