import{AnchorProvider}from"@coral-xyz/anchor";import{Keypair}from"@solana/web3.js";import{GrapeAccessClient,AccessCriteriaFactory,AccessTypeFactory,VerificationPlatform,}from"@grapenpm/grape-access-sdk";constprovider=AnchorProvider.env();constclient=newGrapeAccessClient(provider);// You control this key and use it as the deterministic access identifier.constaccessId=Keypair.generate().publicKey;// 1) Create an access spaceconstcreateResult=awaitclient.initializeAccess({accessId,criteria:AccessCriteriaFactory.verifiedIdentity({grapeSpace:grapeSpacePda,platforms: [VerificationPlatform.Discord],}),accessType:AccessTypeFactory.reusable(),metadataUri:"https://example.com/access/1.json",});// 2) Check a userconstcheckTx=awaitclient.checkAccess({accessId,user:userWallet,identityAccount:userIdentityPda,// required for verifiedIdentitystoreRecord:true,});// 3) Optional readbacksconstaccess=awaitclient.fetchAccess(accessId);constrecord=awaitclient.fetchAccessCheckRecord(accessId,userWallet);
What The SDK Wraps
The SDK wraps the on-chain instruction set for:
initializeAccess
checkAccess
updateAccessCriteria
updateMetadataUri
setAccessActive
setAccessAuthority
closeAccess
closeCheckRecord
It also exposes helper methods for account fetches and instruction building.
Core Client Methods
Read/write methods:
initializeAccess
checkAccess
simulateCheckAccess (returns boolean)
updateAccessCriteria
updateMetadataUri
setAccessActive
setAccessAuthority
closeAccess
closeAccessCheckRecord
Fetch methods:
fetchAccess
fetchAccessCheckRecord
fetchAccessesByAuthority
Instruction composition:
buildCheckAccessInstruction
buildAccessTransaction
Access Criteria
Create criteria values with AccessCriteriaFactory: