-- |
-- Module:     Control.Wire
-- Copyright:  (c) 2013 Ertugrul Soeylemez
-- License:    BSD3
-- Maintainer: Ertugrul Soeylemez <es@ertes.de>

module Control.Wire
    ( -- * Reexports
      module Control.Wire.Core,
      module Control.Wire.Event,
      module Control.Wire.Interval,
      module Control.Wire.Run,
      module Control.Wire.Session,
      module Control.Wire.Switch,
      module Control.Wire.Time,

      -- * Convenient type aliases
      WireP,
      SimpleWire,

      -- * External
      module Control.Applicative,
      module Control.Arrow,
      module Control.Category,
      module Data.Semigroup,
      Identity(..),
      NominalDiffTime
    )
    where

import Control.Applicative
import Control.Arrow
import Control.Category
import Control.Wire.Core
import Control.Wire.Event
import Control.Wire.Interval
import Control.Wire.Run
import Control.Wire.Session
import Control.Wire.Switch
import Control.Wire.Time
import Data.Functor.Identity
import Data.Semigroup
import Data.Time.Clock


-- | Pure wires.

type WireP s e = Wire s e Identity


-- | Simple wires with time.

type SimpleWire = Wire (Timed NominalDiffTime ()) () Identity