packages feed

bitcoin-payment-channel-1.0.0.0: src/Bitcoin/LockTime/Util.hs

module Bitcoin.LockTime.Util
(
  module Bitcoin.LockTime.Util
, module Bitcoin.LockTime.Types
, Hour
)
where

import Bitcoin.LockTime.Types
import PaymentChannel.Internal.Config
import PaymentChannel.Internal.Util

import Data.Word (Word32)
import Data.Time.Clock
import Data.Time.Clock.POSIX
import Data.Time.Format ()    -- instance Show UTCTime
import Control.Monad.Time


class HasLockTimeDate a where
    getLockTimeDate :: a -> LockTimeDate

isLocked :: (MonadTime m, HasLockTimeDate a) => a -> m Bool
isLocked a = do
    now <- fromIntegral . round . utcTimeToPOSIXSeconds <$> currentTime
    return $ now + toSeconds configSettlePeriod < toWord32 (getLockTimeDate a)