add PTryFrom instances for PGovernorDatum and PGovernorDatum

This commit is contained in:
fanghr 2022-04-29 17:03:59 +08:00
parent 9c79585c7c
commit d0b70d5b43
No known key found for this signature in database
GPG key ID: 35CD9A71CD5D5870

View file

@ -32,6 +32,7 @@ module Agora.Governor (
--------------------------------------------------------------------------------
import Control.Applicative (Const)
import GHC.Generics qualified as GHC
import Generics.SOP (Generic, I (I))
@ -118,6 +119,7 @@ import Plutarch.Map.Extra (pkeys, plookup, plookup')
import Plutarch.Monadic qualified as P
import Plutarch.SafeMoney (PDiscrete, Tagged (..), puntag, pvalueDiscrete)
import Plutarch.Unsafe (punsafeCoerce)
import Plutarch.TryFrom(PTryFrom(..))
--------------------------------------------------------------------------------
@ -211,6 +213,14 @@ newtype PGovernorDatum (s :: S) = PGovernorDatum
instance PUnsafeLiftDecl PGovernorDatum where type PLifted PGovernorDatum = GovernorDatum
deriving via (DerivePConstantViaData GovernorDatum PGovernorDatum) instance (PConstant GovernorDatum)
-- FIXME: derive this via 'PIsDataReprInstances'
-- Blocked by: PProposalThresholds
instance PTryFrom PData (PAsData PGovernorDatum) where
type PTryFromExcess PData (PAsData PGovernorDatum) = Const ()
ptryFrom' d k = k (punsafeCoerce d , ())
-- | Plutarch-level version of 'GovernorRedeemer'.
data PGovernorRedeemer (s :: S)
= PCreateProposal (Term s (PDataRecord '[]))
@ -226,6 +236,8 @@ data PGovernorRedeemer (s :: S)
instance PUnsafeLiftDecl PGovernorRedeemer where type PLifted PGovernorRedeemer = GovernorRedeemer
deriving via (DerivePConstantViaData GovernorRedeemer PGovernorRedeemer) instance (PConstant GovernorRedeemer)
deriving via PAsData (PIsDataReprInstances PGovernorRedeemer) instance PTryFrom PData (PAsData PGovernorRedeemer)
--------------------------------------------------------------------------------
{- | Policy for minting GSTs.