module Control.Concurrent.Async.Timer
( Timer
, defaultTimerConf
, timerConfSetInitDelay
, timerConfSetInterval
, withAsyncTimer
, timerWait
) where
import Control.Concurrent.Async.Lifted.Safe
import Control.Concurrent.Async.Timer.Internal
import qualified Control.Concurrent.Async.Timer.Unsafe as Unsafe
import Control.Exception.Safe
import Control.Monad.Trans.Control
withAsyncTimer :: (MonadBaseControl IO m, MonadMask m, Forall (Pure m))
=> TimerConf -> (Timer -> m b) -> m b
withAsyncTimer = Unsafe.withAsyncTimer