module Bitcoin.Tx where import Bitcoin.Types import Bitcoin.LockTime.Util import qualified Data.List.NonEmpty as NE import Control.Monad.Time allInputsLocked :: ( MonadTime m , HasLockTimeDate r ) => Seconds -- ^ Lock expires this many seconds before actual expiration date -> BtcTx inType r a -> m Bool allInputsLocked settlePeriodSeconds BtcTx{..} = do isLockedLst <- mapM (isLocked settlePeriodSeconds . btcCondScr) (NE.toList btcIns) return $ all (== True) isLockedLst