fix docs for Agora.Credential module

This commit is contained in:
Emily Martins 2022-08-16 20:42:24 +02:00
parent 44f3ddf00d
commit dc0289e7c4

View file

@ -14,30 +14,46 @@ import Plutarch.Extra.ScriptContext (ptxSignedBy)
import Plutarch.Extra.TermCont (pmatchC)
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 =
Credential
type PAuthorizationCredential =
PCredential
{- | Context required in order to check 'AuthorizationCredential'.
@since 1.0.0
-}
data PAuthorizationContext (s :: S) = PAuthorizationContext
{ signatories :: Term s (PBuiltinList (PAsData PPubKeyHash))
, inputs :: Term s (PBuiltinList PTxInInfo)
}
deriving stock
( -- | @since 0.2.0
( -- | @since 1.0.0
Generic
)
deriving anyclass
( -- | @since 0.2.0
( -- | @since 1.0.0
PlutusType
, -- | @since 0.2.0
, -- | @since 1.0.0
PEq
)
-- | @since 1.0.0
instance DerivePlutusType PAuthorizationContext where
type DPTStrat _ = PlutusTypeScott
{- | Build up 'PAuthorizationContext' from fields.
@since 1.0.0
-}
authorizationContext ::
forall {r} {s :: S}.
( HasField "inputs" r (Term s (PBuiltinList PTxInInfo))
@ -48,6 +64,10 @@ authorizationContext ::
authorizationContext f =
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 = phoistAcyclic $
plam $ \ctx credential -> unTermCont $ do