Skip to content

Rewards

A reward offer represents a reward that a user can redeem points to earn.

Creating a Reward

As of v0.3.0, creating a reward is handled within the stack dashboard https://stack.so/rewards

Fetch reward offers

Get a list of reward offers for the current point system.

typescript
await stack.getRewardOffers();

// [{
//     uuid: 'f892699a-e52f-4133-89ed-ea40a356919e',
//     name: 'Stack Baseball Hat Redemption',
//     type: 'OFFCHAIN',
//     status: 'ACTIVE',
//     points: 200,
//     createdAt: '2024-04-17T18:32:41.050Z',
//     updatedAt: '2024-04-17T18:32:41.050Z'
// }]

Reward claim

Claiming for a reward will subtract points from the user's point balance and track an event.

typescript
await stack.claimReward(rewardOfferUuid, {
  pointAmount: 200, // only optional for offchain redemptions which assumes redemption of 1 item
  address: "0x627306090abaB3A6e1400e9345bC60c78a8BEf57"
});

// Tracks an redeem event and deducts 200 points from 0x2eeb301387D6BDa23E02fa0c7463507c68b597B5

// {
//   address: '0x2eeb301387D6BDa23E02fa0c7463507c68b597B5',
//   rewardOfferUuid: 'f892699a-e52f-4133-89ed-ea40a356919e',
//   claimedAt: "2024-04-17T18:32:44.222Z"
// }

Fetch reward claims

Fetch all of the users that have redeeemed for a particular offer.

typescript
await stack.getRewardClaims({
  rewardOfferUuid: 'f892699a-e52f-4133-89ed-ea40a356919e',
});

// [{
//   address: '0x2eeb301387D6BDa23E02fa0c7463507c68b597B5',
//   rewardOfferUuid: 'f892699a-e52f-4133-89ed-ea40a356919e',
//   claimedAt: '2024-04-17T18:32:44.222Z',
// }, {
//   address: '0x627306090abaB3A6e1400e9345bC60c78a8BEf57',
//   rewardOfferUuid: 'f892699a-e52f-4133-89ed-ea40a356919e',
//   claimedAt: '2024-04-17T18:34:44.222Z',
// }]