PStakeRedeemerHandler doesn't have to be closed
This commit is contained in:
parent
e25e55973f
commit
2853f43475
2 changed files with 20 additions and 39 deletions
|
|
@ -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'.
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue