fix docs for Agora.Credential module

This commit is contained in:
Emily Martins 2022-08-16 20:42:24 +02:00
parent f730998326
commit 584539feb9

View file

@ -14,30 +14,46 @@ import Plutarch.Extra.ScriptContext (ptxSignedBy)
import Plutarch.Extra.TermCont (pmatchC) import Plutarch.Extra.TermCont (pmatchC)
import PlutusLedgerApi.V2 (Credential) import PlutusLedgerApi.V2 (Credential)
{- | This type represents a general purpose authority which can be used
to check for approval.
The most basic case is simply a PubKeyCredential.
@since 1.0.0
-}
type AuthorizationCredential = type AuthorizationCredential =
Credential Credential
type PAuthorizationCredential = type PAuthorizationCredential =
PCredential PCredential
{- | Context required in order to check 'AuthorizationCredential'.
@since 1.0.0
-}
data PAuthorizationContext (s :: S) = PAuthorizationContext data PAuthorizationContext (s :: S) = PAuthorizationContext
{ signatories :: Term s (PBuiltinList (PAsData PPubKeyHash)) { signatories :: Term s (PBuiltinList (PAsData PPubKeyHash))
, inputs :: Term s (PBuiltinList PTxInInfo) , inputs :: Term s (PBuiltinList PTxInInfo)
} }
deriving stock deriving stock
( -- | @since 0.2.0 ( -- | @since 1.0.0
Generic Generic
) )
deriving anyclass deriving anyclass
( -- | @since 0.2.0 ( -- | @since 1.0.0
PlutusType PlutusType
, -- | @since 0.2.0 , -- | @since 1.0.0
PEq PEq
) )
-- | @since 1.0.0
instance DerivePlutusType PAuthorizationContext where instance DerivePlutusType PAuthorizationContext where
type DPTStrat _ = PlutusTypeScott type DPTStrat _ = PlutusTypeScott
{- | Build up 'PAuthorizationContext' from fields.
@since 1.0.0
-}
authorizationContext :: authorizationContext ::
forall {r} {s :: S}. forall {r} {s :: S}.
( HasField "inputs" r (Term s (PBuiltinList PTxInInfo)) ( HasField "inputs" r (Term s (PBuiltinList PTxInInfo))
@ -48,6 +64,10 @@ authorizationContext ::
authorizationContext f = authorizationContext f =
pcon (PAuthorizationContext f.signatories f.inputs) pcon (PAuthorizationContext f.signatories f.inputs)
{- | Check for authorization by credential.
@since 1.0.0
-}
pauthorizedBy :: forall (s :: S). Term s (PAuthorizationContext :--> PAuthorizationCredential :--> PBool) pauthorizedBy :: forall (s :: S). Term s (PAuthorizationContext :--> PAuthorizationCredential :--> PBool)
pauthorizedBy = phoistAcyclic $ pauthorizedBy = phoistAcyclic $
plam $ \ctx credential -> unTermCont $ do plam $ \ctx credential -> unTermCont $ do