Examples
Claim Configuration
interface IntegrationPluginParams<T extends ClaimIntegrationPluginType> {
instanceId: string; // Unique ID for this plugin instance within the claim
pluginId: T; // Plugin type: "numUses", "codes", "password", etc.
version: string; // Plugin version (usually "0")
publicParams: object; // Plugin-specific config (visible to users)
privateParams: object; // Plugin-specific secrets (hidden from users)
}Example: Code-Gated Claim
import crypto from 'crypto';
import CryptoJS from 'crypto-js';
const seedCode = crypto.randomBytes(32).toString('hex');
const numCodes = 100;
// Generate codes from seed
const codes = [];
for (let i = 0; i < numCodes; i++) {
const hash = CryptoJS.SHA256(`${seedCode}-${i}`).toString();
codes.push(`${hash}-${i}`);
}
const claim: iClaimBuilderDoc = {
plugins: [
{
pluginId: 'numUses',
instanceId: 'num-uses-instance',
version: '0',
publicParams: { maxUses: 100 },
privateParams: {}
},
{
pluginId: 'codes',
instanceId: 'codes-instance',
version: '0',
publicParams: { numCodes: 100 },
privateParams: { codes, seedCode }
}
],
state: {},
action: { seedCode },
// ... other required fields (collectionId, createdBy, etc.)
};Example: Password-Gated Auto-Completion
Example: Whitelist + Token Ownership (AND Logic)
Example: OR Logic with Multiple Paths
Example: Time-Windowed Claim
Simulating Before Completing
Verifying Claim Success
Last updated