    -- | MonadIO lifted forms of Sound.Osc.Time.Thread functions
    module Sound.Osc.Time.Thread.MonadIO where

    import Control.Monad.IO.Class {- base >= 4.9 -}

    import qualified Sound.Osc.Time as Time {- hosc -}
    import qualified Sound.Osc.Time.Thread as Time.Thread {- hosc -}

    time :: MonadIO m => m Time.NtpReal
    time :: forall (m :: * -> *). MonadIO m => m NtpReal
    time = IO NtpReal -> m NtpReal
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO IO NtpReal
    Time.currentTime

    pauseThread :: (MonadIO m, RealFrac n) => n -> m ()
    pauseThread :: forall (m :: * -> *) n. (MonadIO m, RealFrac n) => n -> m ()
    pauseThread = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> (n -> IO ()) -> n -> m ()
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . n -> IO ()
    forall n. RealFrac n => n -> IO ()
    Time.Thread.pauseThreadFor

    wait :: MonadIO m => Double -> m ()
    wait :: forall (m :: * -> *). MonadIO m => NtpReal -> m ()
    wait = NtpReal -> m ()
    forall (m :: * -> *) n. (MonadIO m, RealFrac n) => n -> m ()
    pauseThread

    pauseThreadUntil :: (MonadIO m, RealFrac n) => n -> m ()
    pauseThreadUntil :: forall (m :: * -> *) n. (MonadIO m, RealFrac n) => n -> m ()
    pauseThreadUntil = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> (n -> IO ()) -> n -> m ()
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . n -> IO ()
    forall n. RealFrac n => n -> IO ()
    Time.Thread.pauseThreadUntilTime

    sleepThread :: (RealFrac n, MonadIO m) => n -> m ()
    sleepThread :: forall n (m :: * -> *). (RealFrac n, MonadIO m) => n -> m ()
    sleepThread = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> (n -> IO ()) -> n -> m ()
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . n -> IO ()
    forall n. RealFrac n => n -> IO ()
    Time.Thread.sleepThreadFor

    sleepThreadUntil :: (RealFrac n, MonadIO m) => n -> m ()
    sleepThreadUntil :: forall n (m :: * -> *). (RealFrac n, MonadIO m) => n -> m ()
    sleepThreadUntil = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> (n -> IO ()) -> n -> m ()
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . n -> IO ()
    forall n. RealFrac n => n -> IO ()
    Time.Thread.sleepThreadUntilTime