@@ -20,7 +20,8 @@ module BotPlutusInterface.Effects (
2020 writeFileTextEnvelope ,
2121 callCommand ,
2222 estimateBudget ,
23- saveBudget ) where
23+ saveBudget ,
24+ ) where
2425
2526import BotPlutusInterface.ChainIndex (handleChainIndexReq )
2627import BotPlutusInterface.Estimate qualified as Estimate
@@ -31,12 +32,14 @@ import BotPlutusInterface.Types (
3132 ContractState (ContractState ),
3233 LogLevel (.. ),
3334 TxBudget ,
34- TxFile , Budgets
35+ TxFile ,
36+ TxStats ,
37+ addBudget ,
3538 )
3639import Cardano.Api (AsType , FileError , HasTextEnvelope , TextEnvelopeDescr , TextEnvelopeError )
3740import Cardano.Api qualified
3841import Control.Concurrent qualified as Concurrent
39- import Control.Concurrent.STM (atomically , modifyTVar )
42+ import Control.Concurrent.STM (TVar , atomically , modifyTVar , modifyTVar' )
4043import Control.Monad (void , when )
4144import Control.Monad.Freer (Eff , LastMember , Member , interpretM , send , type (~> ))
4245import Data.Aeson (ToJSON )
@@ -47,13 +50,13 @@ import Data.Maybe (catMaybes)
4750import Data.String (IsString , fromString )
4851import Data.Text (Text )
4952import Data.Text qualified as Text
53+ import Ledger qualified
5054import Plutus.Contract.Effects (ChainIndexQuery , ChainIndexResponse )
5155import Plutus.PAB.Core.ContractInstance.STM (Activity )
5256import System.Directory qualified as Directory
5357import System.Exit (ExitCode (ExitFailure , ExitSuccess ))
5458import System.Process (readProcess , readProcessWithExitCode )
5559import Prelude hiding (readFile )
56- import Data.Map qualified as Map
5760
5861data ShellArgs a = ShellArgs
5962 { cmdName :: Text
@@ -89,16 +92,16 @@ data PABEffect (w :: Type) (r :: Type) where
8992 UploadDir :: Text -> PABEffect w ()
9093 QueryChainIndex :: ChainIndexQuery -> PABEffect w ChainIndexResponse
9194 EstimateBudget :: TxFile -> PABEffect w (Either BudgetEstimationError TxBudget )
92- SaveBudget :: Text -> TxBudget -> PABEffect w ()
95+ SaveBudget :: Ledger. TxId -> TxBudget -> PABEffect w ()
9396
9497handlePABEffect ::
9598 forall (w :: Type ) (effs :: [Type -> Type ]).
9699 LastMember IO effs =>
97100 (Monoid w ) =>
98101 ContractEnvironment w ->
99- Budgets ->
102+ TVar TxStats ->
100103 Eff (PABEffect w ': effs ) ~> Eff effs
101- handlePABEffect contractEnv budgets =
104+ handlePABEffect contractEnv txStatsVar =
102105 interpretM
103106 ( \ case
104107 CallCommand shellArgs ->
@@ -135,11 +138,12 @@ handlePABEffect contractEnv budgets =
135138 handleChainIndexReq contractEnv. cePABConfig query
136139 EstimateBudget txPath ->
137140 Estimate. estimateBudget contractEnv. cePABConfig txPath
138- SaveBudget txId exBudget -> saveBudgetImpl budgets txId exBudget
141+ SaveBudget txId exBudget -> saveBudgetImpl txStatsVar txId exBudget
139142 )
140143
141- saveBudgetImpl budgets txId budget =
142- atomically $ modifyTVar budgets (Map. insert txId budget)
144+ saveBudgetImpl :: TVar TxStats -> Ledger. TxId -> TxBudget -> IO ()
145+ saveBudgetImpl txStatsVar txId budget =
146+ atomically $ modifyTVar' txStatsVar (addBudget txId budget)
143147
144148printLog' :: LogLevel -> LogLevel -> String -> IO ()
145149printLog' logLevelSetting msgLogLvl msg =
@@ -275,12 +279,10 @@ queryChainIndex ::
275279 Eff effs ChainIndexResponse
276280queryChainIndex = send @ (PABEffect w ) . QueryChainIndex
277281
278-
279-
280282saveBudget ::
281283 forall (w :: Type ) (effs :: [Type -> Type ]).
282284 Member (PABEffect w ) effs =>
283- Text ->
284- TxBudget ->
285+ Ledger. TxId ->
286+ TxBudget ->
285287 Eff effs ()
286- saveBudget txId budget = send @ (PABEffect w ) $ SaveBudget txId budget
288+ saveBudget txId budget = send @ (PABEffect w ) $ SaveBudget txId budget
0 commit comments