@@ -8,7 +8,12 @@ module BotPlutusInterface.Balance (
88) where
99
1010import BotPlutusInterface.CardanoCLI qualified as CardanoCLI
11- import BotPlutusInterface.Effects (PABEffect , createDirectoryIfMissingCLI , printBpiLog )
11+ import BotPlutusInterface.Effects (
12+ PABEffect ,
13+ createDirectoryIfMissingCLI ,
14+ posixTimeRangeToContainedSlotRange ,
15+ printBpiLog ,
16+ )
1217import BotPlutusInterface.Files (DummyPrivKey , unDummyPrivateKey )
1318import BotPlutusInterface.Files qualified as Files
1419import BotPlutusInterface.Types (LogLevel (Debug ), PABConfig )
@@ -43,7 +48,6 @@ import Ledger.Interval (
4348 )
4449import Ledger.Scripts (Datum , DatumHash )
4550import Ledger.Time (POSIXTimeRange )
46- import Ledger.TimeSlot (posixTimeRangeToContainedSlotRange )
4751import Ledger.Tx (
4852 Tx (.. ),
4953 TxIn (.. ),
@@ -61,6 +65,7 @@ import Plutus.V1.Ledger.Api (
6165 )
6266
6367import BotPlutusInterface.BodyBuilder qualified as BodyBuilder
68+ import Data.Bifunctor (bimap )
6469import Prettyprinter (pretty , viaShow , (<+>) )
6570import Prelude
6671
@@ -81,10 +86,10 @@ balanceTxIO pabConf ownPkh unbalancedTx =
8186 privKeys <- newEitherT $ Files. readPrivateKeys @ w pabConf
8287 let utxoIndex = fmap Tx. toTxOut utxos <> unBalancedTxUtxoIndex unbalancedTx
8388 requiredSigs = map Ledger. unPaymentPubKeyHash $ Map. keys (unBalancedTxRequiredSignatories unbalancedTx)
89+
8490 tx <-
85- hoistEither $
86- addValidRange
87- pabConf
91+ newEitherT $
92+ addValidRange @ w
8893 (unBalancedTxValidityTimeRange unbalancedTx)
8994 (unBalancedTxTx unbalancedTx)
9095
@@ -361,11 +366,20 @@ addSignatories ownPkh privKeys pkhs tx =
361366 tx
362367 (ownPkh : pkhs)
363368
364- addValidRange :: PABConfig -> POSIXTimeRange -> Tx -> Either Text Tx
365- addValidRange pabConf timeRange tx =
369+ addValidRange ::
370+ forall (w :: Type ) (effs :: [Type -> Type ]).
371+ Member (PABEffect w ) effs =>
372+ POSIXTimeRange ->
373+ Tx ->
374+ Eff effs (Either Text Tx )
375+ addValidRange timeRange tx =
366376 if validateRange timeRange
367- then Right $ tx {txValidRange = posixTimeRangeToContainedSlotRange pabConf. pcSlotConfig timeRange}
368- else Left " Invalid validity interval."
377+ then
378+ bimap (Text. pack . show ) (setRange tx)
379+ <$> posixTimeRangeToContainedSlotRange @ w timeRange
380+ else pure $ Left " Invalid validity interval."
381+ where
382+ setRange tx' range = tx' {txValidRange = range}
369383
370384validateRange :: forall (a :: Type ). Ord a => Interval a -> Bool
371385validateRange (Interval (LowerBound PosInf _) _) = False
0 commit comments