module Control.Monad.Component
(
ComponentM
, runComponentM
, Component
, fromComponent
, ComponentError (..)
, Teardown
, TeardownResult (..)
, teardown
, newTeardown
, throwM
, fail
, buildComponent
, buildComponentWithCleanup
, buildComponentWithTeardown
) where
import Control.Monad.Catch (throwM)
import Control.Monad.Component.Internal.Core
(buildComponent, buildComponentWithCleanup, buildComponentWithTeardown, runComponentM)
import Control.Monad.Component.Internal.Types
(Component, ComponentError (..), ComponentM, fromComponent)
import Control.Monad.Fail (fail)
import Control.Teardown
(Teardown, TeardownResult (..), newTeardown, teardown)