{-# LANGUAGE ScopedTypeVariables, GeneralizedNewtypeDeriving #-}
module PaymentChannel.Internal.Util
( module PaymentChannel.Internal.Util
, module Bitcoin.Internal.Util
, module JSONUtil
)
where
import Bitcoin.Internal.Util
import PaymentChannel.Internal.Serialization.JSON as JSONUtil
-- MonadPast
import Data.Time.Clock.POSIX
import Control.Monad.Time
import Data.Functor.Identity
newtype MonadPast a = MonadPast (Identity a)
deriving (Functor, Applicative, Monad)
instance MonadTime MonadPast where
currentTime = MonadPast $ Identity $ posixSecondsToUTCTime $ realToFrac 0
-- | A 'MonadTime' result as if it were Jan 1 1970
resultFromThePast :: MonadPast a -> a
resultFromThePast (MonadPast (Identity a)) = a
-- MonadPast