PStakeRedeemerHandler doesn't have to be closed
This commit is contained in:
parent
16c0c15c58
commit
735fa145e6
2 changed files with 20 additions and 39 deletions
|
|
@ -27,7 +27,6 @@ module Agora.Stake (
|
||||||
PStakeRedeemerHandlerContext (..),
|
PStakeRedeemerHandlerContext (..),
|
||||||
PProposalContext (..),
|
PProposalContext (..),
|
||||||
PStakeRedeemerHandler,
|
PStakeRedeemerHandler,
|
||||||
PStakeRedeemerHandlerTerm (..),
|
|
||||||
StakeRedeemerImpl (..),
|
StakeRedeemerImpl (..),
|
||||||
|
|
||||||
-- * Utility functions
|
-- * Utility functions
|
||||||
|
|
@ -39,7 +38,6 @@ module Agora.Stake (
|
||||||
pisCreator,
|
pisCreator,
|
||||||
pisCosigner,
|
pisCosigner,
|
||||||
pisIrrelevant,
|
pisIrrelevant,
|
||||||
runStakeRedeemerHandler,
|
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Agora.Proposal (
|
import Agora.Proposal (
|
||||||
|
|
@ -574,37 +572,22 @@ instance DerivePlutusType PStakeRedeemerHandlerContext where
|
||||||
-}
|
-}
|
||||||
type PStakeRedeemerHandler = PStakeRedeemerHandlerContext :--> PUnit
|
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.
|
{- | A collection of stake redeemer handlers for each stake redeemers.
|
||||||
|
|
||||||
@since 1.0.0
|
@since 1.0.0
|
||||||
-}
|
-}
|
||||||
data StakeRedeemerImpl = StakeRedeemerImpl
|
data StakeRedeemerImpl (s :: S) = StakeRedeemerImpl
|
||||||
{ onDepositWithdraw :: PStakeRedeemerHandlerTerm
|
{ onDepositWithdraw :: Term s PStakeRedeemerHandler
|
||||||
-- ^ Handler for 'DepositWithdraw'.
|
-- ^ Handler for 'DepositWithdraw'.
|
||||||
, onDestroy :: PStakeRedeemerHandlerTerm
|
, onDestroy :: Term s PStakeRedeemerHandler
|
||||||
-- ^ Handler for 'Destroy'.
|
-- ^ Handler for 'Destroy'.
|
||||||
, onPermitVote :: PStakeRedeemerHandlerTerm
|
, onPermitVote :: Term s PStakeRedeemerHandler
|
||||||
-- ^ Handler for 'permitVotes'.
|
-- ^ Handler for 'permitVotes'.
|
||||||
, onRetractVote :: PStakeRedeemerHandlerTerm
|
, onRetractVote :: Term s PStakeRedeemerHandler
|
||||||
-- ^ Handler for 'RetractVotes'.
|
-- ^ Handler for 'RetractVotes'.
|
||||||
, onDelegateTo :: PStakeRedeemerHandlerTerm
|
, onDelegateTo :: Term s PStakeRedeemerHandler
|
||||||
-- ^ Handler for 'DelegateTo'.
|
-- ^ Handler for 'DelegateTo'.
|
||||||
, onClearDelegate :: PStakeRedeemerHandlerTerm
|
, onClearDelegate :: Term s PStakeRedeemerHandler
|
||||||
-- ^ handler for 'ClearDelegate'.
|
-- ^ handler for 'ClearDelegate'.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,10 +42,8 @@ import Agora.Stake (
|
||||||
PStakeRedeemerHandlerContext (
|
PStakeRedeemerHandlerContext (
|
||||||
PStakeRedeemerHandlerContext
|
PStakeRedeemerHandlerContext
|
||||||
),
|
),
|
||||||
PStakeRedeemerHandlerTerm (PStakeRedeemerHandlerTerm),
|
|
||||||
StakeRedeemerImpl (..),
|
StakeRedeemerImpl (..),
|
||||||
pstakeLocked,
|
pstakeLocked,
|
||||||
runStakeRedeemerHandler,
|
|
||||||
)
|
)
|
||||||
import Agora.Stake.Redeemers (
|
import Agora.Stake.Redeemers (
|
||||||
pclearDelegate,
|
pclearDelegate,
|
||||||
|
|
@ -246,7 +244,7 @@ stakePolicy =
|
||||||
@since 1.0.0
|
@since 1.0.0
|
||||||
-}
|
-}
|
||||||
mkStakeValidator ::
|
mkStakeValidator ::
|
||||||
StakeRedeemerImpl ->
|
StakeRedeemerImpl s ->
|
||||||
Term s PCurrencySymbol ->
|
Term s PCurrencySymbol ->
|
||||||
Term s PAssetClass ->
|
Term s PAssetClass ->
|
||||||
Term s PAssetClass ->
|
Term s PAssetClass ->
|
||||||
|
|
@ -539,17 +537,17 @@ mkStakeValidator impl sstSymbol pstClass gstClass =
|
||||||
pure $
|
pure $
|
||||||
popaque $
|
popaque $
|
||||||
pmatch stakeRedeemer $ \case
|
pmatch stakeRedeemer $ \case
|
||||||
PDestroy _ -> runStakeRedeemerHandler impl.onDestroy # noMetadataContext
|
PDestroy _ -> impl.onDestroy # noMetadataContext
|
||||||
PPermitVote _ -> runStakeRedeemerHandler impl.onPermitVote # noMetadataContext
|
PPermitVote _ -> impl.onPermitVote # noMetadataContext
|
||||||
PRetractVotes _ -> runStakeRedeemerHandler impl.onRetractVote # noMetadataContext
|
PRetractVotes _ -> impl.onRetractVote # noMetadataContext
|
||||||
PClearDelegate _ -> runStakeRedeemerHandler impl.onClearDelegate # noMetadataContext
|
PClearDelegate _ -> impl.onClearDelegate # noMetadataContext
|
||||||
PDelegateTo ((pfield @"pkh" #) -> pkh) ->
|
PDelegateTo ((pfield @"pkh" #) -> pkh) ->
|
||||||
runStakeRedeemerHandler impl.onDelegateTo
|
impl.onDelegateTo
|
||||||
#$ mkRedeemerhandlerContext
|
#$ mkRedeemerhandlerContext
|
||||||
#$ pcon
|
#$ pcon
|
||||||
$ PSetDelegateTo pkh
|
$ PSetDelegateTo pkh
|
||||||
PDepositWithdraw ((pfield @"delta" #) -> delta) ->
|
PDepositWithdraw ((pfield @"delta" #) -> delta) ->
|
||||||
runStakeRedeemerHandler impl.onDepositWithdraw #$ mkRedeemerhandlerContext
|
impl.onDepositWithdraw #$ mkRedeemerhandlerContext
|
||||||
#$ pcon
|
#$ pcon
|
||||||
$ PDepositWithdrawDelta delta
|
$ PDepositWithdrawDelta delta
|
||||||
|
|
||||||
|
|
@ -608,10 +606,10 @@ stakeValidator =
|
||||||
plam $
|
plam $
|
||||||
mkStakeValidator $
|
mkStakeValidator $
|
||||||
StakeRedeemerImpl
|
StakeRedeemerImpl
|
||||||
{ onDepositWithdraw = PStakeRedeemerHandlerTerm pdepositWithdraw
|
{ onDepositWithdraw = pdepositWithdraw
|
||||||
, onDestroy = PStakeRedeemerHandlerTerm pdestroy
|
, onDestroy = pdestroy
|
||||||
, onPermitVote = PStakeRedeemerHandlerTerm ppermitVote
|
, onPermitVote = ppermitVote
|
||||||
, onRetractVote = PStakeRedeemerHandlerTerm pretractVote
|
, onRetractVote = pretractVote
|
||||||
, onDelegateTo = PStakeRedeemerHandlerTerm pdelegateTo
|
, onDelegateTo = pdelegateTo
|
||||||
, onClearDelegate = PStakeRedeemerHandlerTerm pclearDelegate
|
, onClearDelegate = pclearDelegate
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue