diff --git a/agora/Agora/Stake.hs b/agora/Agora/Stake.hs index 418d8c2..53ef9b2 100644 --- a/agora/Agora/Stake.hs +++ b/agora/Agora/Stake.hs @@ -27,7 +27,6 @@ module Agora.Stake ( PStakeRedeemerHandlerContext (..), PProposalContext (..), PStakeRedeemerHandler, - PStakeRedeemerHandlerTerm (..), StakeRedeemerImpl (..), -- * Utility functions @@ -39,7 +38,6 @@ module Agora.Stake ( pisCreator, pisCosigner, pisIrrelevant, - runStakeRedeemerHandler, ) where import Agora.Proposal ( @@ -574,37 +572,22 @@ instance DerivePlutusType PStakeRedeemerHandlerContext where -} type PStakeRedeemerHandler = PStakeRedeemerHandlerContext :--> PUnit -{- | Newtype wrapper around @'ClosedTerm' 'PStakeRedeemerHandler'@ to allow type - inference to work. - - @since 1.0.0 --} -newtype PStakeRedeemerHandlerTerm - = PStakeRedeemerHandlerTerm - (ClosedTerm PStakeRedeemerHandler) - --- | @since 1.0.0 -runStakeRedeemerHandler :: - PStakeRedeemerHandlerTerm -> - ClosedTerm PStakeRedeemerHandler -runStakeRedeemerHandler (PStakeRedeemerHandlerTerm t) = t - {- | A collection of stake redeemer handlers for each stake redeemers. @since 1.0.0 -} -data StakeRedeemerImpl = StakeRedeemerImpl - { onDepositWithdraw :: PStakeRedeemerHandlerTerm +data StakeRedeemerImpl (s :: S) = StakeRedeemerImpl + { onDepositWithdraw :: Term s PStakeRedeemerHandler -- ^ Handler for 'DepositWithdraw'. - , onDestroy :: PStakeRedeemerHandlerTerm + , onDestroy :: Term s PStakeRedeemerHandler -- ^ Handler for 'Destroy'. - , onPermitVote :: PStakeRedeemerHandlerTerm + , onPermitVote :: Term s PStakeRedeemerHandler -- ^ Handler for 'permitVotes'. - , onRetractVote :: PStakeRedeemerHandlerTerm + , onRetractVote :: Term s PStakeRedeemerHandler -- ^ Handler for 'RetractVotes'. - , onDelegateTo :: PStakeRedeemerHandlerTerm + , onDelegateTo :: Term s PStakeRedeemerHandler -- ^ Handler for 'DelegateTo'. - , onClearDelegate :: PStakeRedeemerHandlerTerm + , onClearDelegate :: Term s PStakeRedeemerHandler -- ^ handler for 'ClearDelegate'. } diff --git a/agora/Agora/Stake/Scripts.hs b/agora/Agora/Stake/Scripts.hs index 5e1a6ee..6e7e3dc 100644 --- a/agora/Agora/Stake/Scripts.hs +++ b/agora/Agora/Stake/Scripts.hs @@ -42,10 +42,8 @@ import Agora.Stake ( PStakeRedeemerHandlerContext ( PStakeRedeemerHandlerContext ), - PStakeRedeemerHandlerTerm (PStakeRedeemerHandlerTerm), StakeRedeemerImpl (..), pstakeLocked, - runStakeRedeemerHandler, ) import Agora.Stake.Redeemers ( pclearDelegate, @@ -246,7 +244,7 @@ stakePolicy = @since 1.0.0 -} mkStakeValidator :: - StakeRedeemerImpl -> + StakeRedeemerImpl s -> Term s PCurrencySymbol -> Term s PAssetClass -> Term s PAssetClass -> @@ -539,17 +537,17 @@ mkStakeValidator impl sstSymbol pstClass gstClass = pure $ popaque $ pmatch stakeRedeemer $ \case - PDestroy _ -> runStakeRedeemerHandler impl.onDestroy # noMetadataContext - PPermitVote _ -> runStakeRedeemerHandler impl.onPermitVote # noMetadataContext - PRetractVotes _ -> runStakeRedeemerHandler impl.onRetractVote # noMetadataContext - PClearDelegate _ -> runStakeRedeemerHandler impl.onClearDelegate # noMetadataContext + PDestroy _ -> impl.onDestroy # noMetadataContext + PPermitVote _ -> impl.onPermitVote # noMetadataContext + PRetractVotes _ -> impl.onRetractVote # noMetadataContext + PClearDelegate _ -> impl.onClearDelegate # noMetadataContext PDelegateTo ((pfield @"pkh" #) -> pkh) -> - runStakeRedeemerHandler impl.onDelegateTo + impl.onDelegateTo #$ mkRedeemerhandlerContext #$ pcon $ PSetDelegateTo pkh PDepositWithdraw ((pfield @"delta" #) -> delta) -> - runStakeRedeemerHandler impl.onDepositWithdraw #$ mkRedeemerhandlerContext + impl.onDepositWithdraw #$ mkRedeemerhandlerContext #$ pcon $ PDepositWithdrawDelta delta @@ -608,10 +606,10 @@ stakeValidator = plam $ mkStakeValidator $ StakeRedeemerImpl - { onDepositWithdraw = PStakeRedeemerHandlerTerm pdepositWithdraw - , onDestroy = PStakeRedeemerHandlerTerm pdestroy - , onPermitVote = PStakeRedeemerHandlerTerm ppermitVote - , onRetractVote = PStakeRedeemerHandlerTerm pretractVote - , onDelegateTo = PStakeRedeemerHandlerTerm pdelegateTo - , onClearDelegate = PStakeRedeemerHandlerTerm pclearDelegate + { onDepositWithdraw = pdepositWithdraw + , onDestroy = pdestroy + , onPermitVote = ppermitVote + , onRetractVote = pretractVote + , onDelegateTo = pdelegateTo + , onClearDelegate = pclearDelegate }