@explorins/pers-sdk-react-native 2.1.12 → 2.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useCampaigns.d.ts.map +1 -1
- package/dist/hooks/useCampaigns.js +58 -1
- package/dist/hooks/useRedemptions.d.ts +9 -3
- package/dist/hooks/useRedemptions.d.ts.map +1 -1
- package/dist/hooks/useRedemptions.js +62 -10
- package/dist/hooks/useTokenBalances.d.ts +8 -1
- package/dist/hooks/useTokenBalances.d.ts.map +1 -1
- package/dist/hooks/useTokenBalances.js +8 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +245 -40
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/hooks/index.ts +1 -1
- package/src/hooks/useCampaigns.ts +60 -2
- package/src/hooks/useRedemptions.ts +68 -10
- package/src/hooks/useTokenBalances.ts +8 -1
- package/src/index.ts +1 -1
package/dist/hooks/index.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export type { TransactionSignerHook, SubmissionResult, AuthenticatedUser, Transa
|
|
|
21
21
|
export type { AccountOwnedTokensResult, Web3Hook } from './useWeb3';
|
|
22
22
|
export type { EventsHook, PersEvent, EventHandler, EventFilter, Unsubscribe } from './useEvents';
|
|
23
23
|
export type { TokenBalanceWithToken, UseTokenBalancesOptions, UseTokenBalancesResult } from './useTokenBalances';
|
|
24
|
-
export type { CampaignClaimFilters, CampaignHook } from './useCampaigns';
|
|
24
|
+
export type { CampaignClaimFilters, CampaignHook, GetCampaignsOptions } from './useCampaigns';
|
|
25
25
|
export type { RedemptionRedeemFilters, RedemptionHook } from './useRedemptions';
|
|
26
26
|
export type { TransactionQueryOptions, TransactionHook } from './useTransactions';
|
|
27
27
|
export type { TriggerSourceQueryOptions, TriggerSourceHook } from './useTriggerSources';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,IAAI,iBAAiB,EACnC,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACjG,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,IAAI,iBAAiB,EACnC,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACjG,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG9F,YAAY,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGhF,YAAY,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGlF,YAAY,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxF,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCampaigns.d.ts","sourceRoot":"","sources":["../../src/hooks/useCampaigns.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,uBAAuB,EACvB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,SAAS,
|
|
1
|
+
{"version":3,"file":"useCampaigns.d.ts","sourceRoot":"","sources":["../../src/hooks/useCampaigns.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,uBAAuB,EACvB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,SAAS,EAEV,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;IAC5C,iBAAiB;IACjB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACrC;AAED,eAAO,MAAM,YAAY;mCA6BX,mBAAmB,KAC5B,QAAQ,qBAAqB,WAAW,CAAC,CAAC;kCAgC/B,MAAM,YACR,uBAAuB,EAAE,KAClC,QAAQ,WAAW,GAAG,IAAI,CAAC;6BAuEoB,uBAAuB,KAAG,QAAQ,gBAAgB,GAAG,IAAI,CAAC;8BAmCzD;QACjD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,4BAA4B,EAAE,CAAC;KAC1C,KAAG,QAAQ,qBAAqB,gBAAgB,CAAC,CAAC;+BAkBD,QAAQ,qBAAqB,kBAAkB,CAAC,CAAC;gCA0CvF,mBAAmB,GAAG;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KACnD,QAAQ,qBAAqB,WAAW,CAAC,CAAC;kCA+BjC,oBAAoB,YACpB,4BAA4B,EAAE,KACvC,QAAQ,qBAAqB,gBAAgB,CAAC,CAAC;wCAsBxC,MAAM,YACJ,4BAA4B,EAAE,KACvC,QAAQ,qBAAqB,gBAAgB,CAAC,CAAC;gDAsBpC,MAAM,YACR,4BAA4B,EAAE,KACvC,QAAQ,qBAAqB,gBAAgB,CAAC,CAAC;sCA4CpC,MAAM,mBACD,MAAM,KACtB,QAAQ,WAAW,CAAC;sCA4BT,MAAM,mBACD,MAAM,KACtB,QAAQ,WAAW,CAAC;;CA+BxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -70,6 +70,63 @@ export const useCampaigns = () => {
|
|
|
70
70
|
throw error;
|
|
71
71
|
}
|
|
72
72
|
}, [sdk, isInitialized]);
|
|
73
|
+
/**
|
|
74
|
+
* Claim a campaign reward with optional dynamic context
|
|
75
|
+
*
|
|
76
|
+
* Triggers a campaign claim for the authenticated user. The campaign must be active
|
|
77
|
+
* and the user must meet all eligibility requirements. Supports dynamic context for
|
|
78
|
+
* personalized NFT generation when the campaign issues ERC721 tokens.
|
|
79
|
+
*
|
|
80
|
+
* @param request - Campaign claim request with optional context
|
|
81
|
+
* @param request.campaignId - ID of the campaign to claim (optional if using triggerSourceId)
|
|
82
|
+
* @param request.triggerSourceId - ID of trigger source (QR, NFC, etc.)
|
|
83
|
+
* @param request.context - Dynamic context for NFT personalization
|
|
84
|
+
* @param request.metadata - Additional metadata for the claim
|
|
85
|
+
* @param request.latitude - User's latitude for geo-validated claims
|
|
86
|
+
* @param request.longitude - User's longitude for geo-validated claims
|
|
87
|
+
* @returns Promise resolving to campaign claim result
|
|
88
|
+
*
|
|
89
|
+
* @example Basic campaign claim
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const claim = await claimCampaign({
|
|
92
|
+
* triggerSourceId: 'qr-code-123',
|
|
93
|
+
* });
|
|
94
|
+
* ```
|
|
95
|
+
*
|
|
96
|
+
* @example Campaign claim with dynamic context (personalized NFT)
|
|
97
|
+
* ```typescript
|
|
98
|
+
* import { DynamicContext } from '@explorins/pers-sdk-react-native';
|
|
99
|
+
*
|
|
100
|
+
* const context: DynamicContext = {
|
|
101
|
+
* // Validity - token valid for 30 days
|
|
102
|
+
* validityDate: new Date().toISOString(),
|
|
103
|
+
* validityDuration: 30,
|
|
104
|
+
*
|
|
105
|
+
* // AI prompt context - available as {{context.xxx}} in prompts
|
|
106
|
+
* visitorName: 'John Doe',
|
|
107
|
+
* visitLocation: 'Grand Hotel Lobby',
|
|
108
|
+
* membershipTier: 'Gold',
|
|
109
|
+
* };
|
|
110
|
+
*
|
|
111
|
+
* const claim = await claimCampaign({
|
|
112
|
+
* triggerSourceId: 'hotel-checkin-qr',
|
|
113
|
+
* context,
|
|
114
|
+
* });
|
|
115
|
+
* ```
|
|
116
|
+
*
|
|
117
|
+
* @example Geo-validated claim with context
|
|
118
|
+
* ```typescript
|
|
119
|
+
* const claim = await claimCampaign({
|
|
120
|
+
* triggerSourceId: 'museum-entrance-nfc',
|
|
121
|
+
* latitude: 48.8606,
|
|
122
|
+
* longitude: 2.3376,
|
|
123
|
+
* context: {
|
|
124
|
+
* visitorType: 'Adult',
|
|
125
|
+
* ticketCategory: 'General Admission',
|
|
126
|
+
* }
|
|
127
|
+
* });
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
73
130
|
const claimCampaign = useCallback(async (request) => {
|
|
74
131
|
if (!isInitialized || !sdk) {
|
|
75
132
|
throw new Error('SDK not initialized. Call initialize() first.');
|
|
@@ -97,7 +154,7 @@ export const useCampaigns = () => {
|
|
|
97
154
|
* // Get user's claims with campaign details
|
|
98
155
|
* const { data: claims } = await getUserClaims({ include: ['campaign', 'business'] });
|
|
99
156
|
* claims.forEach(claim => {
|
|
100
|
-
* console.log('Campaign:', claim.included?.campaign?.
|
|
157
|
+
* console.log('Campaign:', claim.included?.campaign?.name);
|
|
101
158
|
* });
|
|
102
159
|
*
|
|
103
160
|
* // With pagination
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OnStatusUpdateFn } from './useTransactionSigner';
|
|
2
|
-
import type { RedemptionCreateRequestDTO, RedemptionDTO, RedemptionRedeemDTO, RedemptionRedeemRequestResponseDTO, RedemptionTypeDTO, PaginatedResponseDTO, RedemptionRedeemIncludeRelation } from '@explorins/pers-shared';
|
|
2
|
+
import type { RedemptionCreateRequestDTO, RedemptionDTO, RedemptionRedeemDTO, RedemptionRedeemRequestResponseDTO, RedemptionTypeDTO, PaginatedResponseDTO, RedemptionRedeemIncludeRelation, ProcessRecordStatus, DynamicContext } from '@explorins/pers-shared';
|
|
3
3
|
import type { RedemptionRedeemFilters } from '@explorins/pers-sdk/redemption';
|
|
4
4
|
import type { PaginationOptions } from '@explorins/pers-sdk';
|
|
5
5
|
export type { RedemptionRedeemFilters } from '@explorins/pers-sdk/redemption';
|
|
@@ -7,8 +7,14 @@ export declare const useRedemptions: () => {
|
|
|
7
7
|
getRedemptions: (options?: {
|
|
8
8
|
active?: boolean;
|
|
9
9
|
}) => Promise<PaginatedResponseDTO<RedemptionDTO>>;
|
|
10
|
-
getUserRedemptions: (
|
|
11
|
-
|
|
10
|
+
getUserRedemptions: (filters?: {
|
|
11
|
+
redemptionId?: string;
|
|
12
|
+
status?: ProcessRecordStatus;
|
|
13
|
+
}, options?: PaginationOptions, include?: RedemptionRedeemIncludeRelation[]) => Promise<PaginatedResponseDTO<RedemptionRedeemDTO>>;
|
|
14
|
+
redeem: (redemptionId: string, options?: {
|
|
15
|
+
context?: DynamicContext;
|
|
16
|
+
onStatusUpdate?: OnStatusUpdateFn;
|
|
17
|
+
}) => Promise<RedemptionRedeemRequestResponseDTO>;
|
|
12
18
|
getRedemptionTypes: () => Promise<PaginatedResponseDTO<RedemptionTypeDTO>>;
|
|
13
19
|
getRedemptionRedeems: (filters?: RedemptionRedeemFilters, include?: RedemptionRedeemIncludeRelation[]) => Promise<PaginatedResponseDTO<RedemptionRedeemDTO>>;
|
|
14
20
|
createRedemption: (redemptionData: RedemptionCreateRequestDTO) => Promise<RedemptionDTO>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRedemptions.d.ts","sourceRoot":"","sources":["../../src/hooks/useRedemptions.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0C,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,KAAK,EACV,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,kCAAkC,EAClC,iBAAiB,EACjB,oBAAoB,EACpB,+BAA+B,
|
|
1
|
+
{"version":3,"file":"useRedemptions.d.ts","sourceRoot":"","sources":["../../src/hooks/useRedemptions.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0C,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,KAAK,EACV,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,kCAAkC,EAClC,iBAAiB,EACjB,oBAAoB,EACpB,+BAA+B,EAC/B,mBAAmB,EACnB,cAAc,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,YAAY,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE9E,eAAO,MAAM,cAAc;+BAY2B;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAG,QAAQ,qBAAqB,aAAa,CAAC,CAAC;mCAyC3G;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,mBAAmB,CAAA;KAAE,YACvD,iBAAiB,YACjB,+BAA+B,EAAE,KAC1C,QAAQ,qBAAqB,mBAAmB,CAAC,CAAC;2BAkErC,MAAM,YACV;QAAE,OAAO,CAAC,EAAE,cAAc,CAAC;QAAC,cAAc,CAAC,EAAE,gBAAgB,CAAA;KAAE,KACxE,QAAQ,kCAAkC,CAAC;8BAmGG,QAAQ,qBAAqB,iBAAiB,CAAC,CAAC;qCA9BrF,uBAAuB,YACvB,+BAA+B,EAAE,KAC1C,QAAQ,qBAAqB,mBAAmB,CAAC,CAAC;uCAcO,0BAA0B,KAAG,QAAQ,aAAa,CAAC;qCA4BrD,MAAM,kBAAkB,0BAA0B,KAAG,QAAQ,aAAa,CAAC;2CAcrE,MAAM,KAAG,QAAQ,aAAa,CAAC;;;;CA4BhG,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC"}
|
|
@@ -26,27 +26,32 @@ export const useRedemptions = () => {
|
|
|
26
26
|
}
|
|
27
27
|
}, [sdk, isInitialized]);
|
|
28
28
|
/**
|
|
29
|
-
* Get user's redemption history with optional pagination and include relations
|
|
29
|
+
* Get user's redemption history with optional filters, pagination and include relations
|
|
30
30
|
*
|
|
31
|
+
* @param filters - Optional filters (redemptionId, status)
|
|
31
32
|
* @param options - Pagination options (page, limit, sortBy, sortOrder)
|
|
32
|
-
* @param include - Relations to include: 'redemption', 'user', 'business'
|
|
33
|
+
* @param include - Relations to include: 'redemption', 'user', 'business', 'transactions'
|
|
33
34
|
* @returns Promise resolving to paginated redemption history
|
|
34
35
|
*
|
|
35
36
|
* @example
|
|
36
37
|
* ```typescript
|
|
37
38
|
* // Get first page of user redemptions
|
|
38
|
-
* const { data: redeems, pagination } = await getUserRedemptions({ page: 1, limit: 10 });
|
|
39
|
+
* const { data: redeems, pagination } = await getUserRedemptions({}, { page: 1, limit: 10 });
|
|
39
40
|
* console.log(`Page ${pagination.page} of ${pagination.pages}`);
|
|
40
41
|
*
|
|
42
|
+
* // Get only completed redemptions
|
|
43
|
+
* import { ProcessRecordStatus } from '@explorins/pers-shared';
|
|
44
|
+
* const { data: completed } = await getUserRedemptions({ status: ProcessRecordStatus.COMPLETED });
|
|
45
|
+
*
|
|
41
46
|
* // Get user redemptions with full redemption details
|
|
42
|
-
* const { data: redeems } = await getUserRedemptions({}, ['redemption', 'business']);
|
|
47
|
+
* const { data: redeems } = await getUserRedemptions({}, {}, ['redemption', 'business']);
|
|
43
48
|
* redeems.forEach(redeem => {
|
|
44
|
-
* console.log('Redemption:', redeem.included?.redemption?.
|
|
49
|
+
* console.log('Redemption:', redeem.included?.redemption?.name);
|
|
45
50
|
* console.log('Business:', redeem.included?.business?.displayName);
|
|
46
51
|
* });
|
|
47
52
|
* ```
|
|
48
53
|
*/
|
|
49
|
-
const getUserRedemptions = useCallback(async (options, include) => {
|
|
54
|
+
const getUserRedemptions = useCallback(async (filters, options, include) => {
|
|
50
55
|
if (!isInitialized || !sdk) {
|
|
51
56
|
throw new Error('SDK not initialized. Call initialize() first.');
|
|
52
57
|
}
|
|
@@ -55,7 +60,7 @@ export const useRedemptions = () => {
|
|
|
55
60
|
return { data: [], pagination: { page: 1, limit: 0, total: 0, pages: 0, hasNext: false, hasPrev: false } };
|
|
56
61
|
}
|
|
57
62
|
try {
|
|
58
|
-
const result = await sdk.redemptions.getUserRedemptions(options, include);
|
|
63
|
+
const result = await sdk.redemptions.getUserRedemptions(filters, options, include);
|
|
59
64
|
return result;
|
|
60
65
|
}
|
|
61
66
|
catch (error) {
|
|
@@ -63,7 +68,54 @@ export const useRedemptions = () => {
|
|
|
63
68
|
throw error;
|
|
64
69
|
}
|
|
65
70
|
}, [sdk, isInitialized, isAuthenticated]);
|
|
66
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Redeem a redemption offer with optional dynamic context
|
|
73
|
+
*
|
|
74
|
+
* Supports dynamic context for personalized NFT generation when the redemption
|
|
75
|
+
* issues ERC721 tokens. Context can include validity dates, AI prompt placeholders,
|
|
76
|
+
* and custom metadata.
|
|
77
|
+
*
|
|
78
|
+
* @param redemptionId - ID of the redemption to redeem
|
|
79
|
+
* @param options - Optional settings
|
|
80
|
+
* @param options.context - Dynamic context for NFT personalization (validity dates, AI prompts)
|
|
81
|
+
* @param options.onStatusUpdate - Callback for transaction signing status updates
|
|
82
|
+
* @returns Promise resolving to redemption result
|
|
83
|
+
*
|
|
84
|
+
* @example Basic redemption
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const result = await redeem('redemption-123');
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* @example Redemption with dynamic context (personalized NFT)
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const result = await redeem('event-ticket-123', {
|
|
92
|
+
* context: {
|
|
93
|
+
* // Validity - token valid for event duration
|
|
94
|
+
* validityDate: new Date().toISOString(),
|
|
95
|
+
* validityDuration: 8, // 8 hours
|
|
96
|
+
*
|
|
97
|
+
* // AI prompt context - available as {{context.xxx}} in prompts
|
|
98
|
+
* attendeeName: 'John Doe',
|
|
99
|
+
* ticketTier: 'VIP',
|
|
100
|
+
* seatSection: 'A12',
|
|
101
|
+
* }
|
|
102
|
+
* });
|
|
103
|
+
* ```
|
|
104
|
+
*
|
|
105
|
+
* @example Hotel stay NFT with check-in/check-out dates
|
|
106
|
+
* ```typescript
|
|
107
|
+
* const result = await redeem('hotel-nft-456', {
|
|
108
|
+
* context: {
|
|
109
|
+
* validityDate: '2026-04-15T14:00:00Z', // Check-in
|
|
110
|
+
* validityEndDate: '2026-04-20T11:00:00Z', // Check-out
|
|
111
|
+
* guestName: 'Jane Smith',
|
|
112
|
+
* roomNumber: '305',
|
|
113
|
+
* roomType: 'Suite',
|
|
114
|
+
* }
|
|
115
|
+
* });
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
const redeem = useCallback(async (redemptionId, options) => {
|
|
67
119
|
if (!isInitialized || !sdk) {
|
|
68
120
|
throw new Error('SDK not initialized. Call initialize() first.');
|
|
69
121
|
}
|
|
@@ -71,11 +123,11 @@ export const useRedemptions = () => {
|
|
|
71
123
|
throw new Error('SDK not authenticated. redeem requires authentication.');
|
|
72
124
|
}
|
|
73
125
|
try {
|
|
74
|
-
const result = await sdk.redemptions.redeem(redemptionId);
|
|
126
|
+
const result = await sdk.redemptions.redeem(redemptionId, options?.context);
|
|
75
127
|
const txToken = result.senderTransaction?.actionable?.authToken;
|
|
76
128
|
if (txToken && isSignerAvailable) {
|
|
77
129
|
try {
|
|
78
|
-
const signingResult = await signAndSubmitTransactionWithJWT(txToken, onStatusUpdate);
|
|
130
|
+
const signingResult = await signAndSubmitTransactionWithJWT(txToken, options?.onStatusUpdate);
|
|
79
131
|
if (signingResult.success) {
|
|
80
132
|
// Return enhanced result with signing information
|
|
81
133
|
return {
|
|
@@ -88,10 +88,17 @@ export interface UseTokenBalancesResult {
|
|
|
88
88
|
* **Basic Usage:**
|
|
89
89
|
* ```typescript
|
|
90
90
|
* import { useTokenBalances, useTokens, usePersSDK } from '@explorins/pers-sdk-react-native';
|
|
91
|
+
* import { useState, useEffect } from 'react';
|
|
91
92
|
*
|
|
92
93
|
* function TokenBalancesScreen() {
|
|
93
94
|
* const { user } = usePersSDK();
|
|
94
|
-
* const {
|
|
95
|
+
* const { getTokens } = useTokens();
|
|
96
|
+
* const [availableTokens, setAvailableTokens] = useState([]);
|
|
97
|
+
*
|
|
98
|
+
* // Load tokens on mount
|
|
99
|
+
* useEffect(() => {
|
|
100
|
+
* getTokens().then(result => setAvailableTokens(result.data));
|
|
101
|
+
* }, []);
|
|
95
102
|
*
|
|
96
103
|
* // App explicitly selects which wallet to use
|
|
97
104
|
* const walletAddress = user?.wallets?.[0]?.address;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokenBalances.d.ts","sourceRoot":"","sources":["../../src/hooks/useTokenBalances.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,0BAA0B,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,uCAAuC;IACvC,YAAY,EAAE,YAAY,CAAC;IAC3B,8DAA8D;IAC9D,KAAK,EAAE,QAAQ,CAAC;IAChB,8EAA8E;IAC9E,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,0DAA0D;IAC1D,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,6CAA6C;IAC7C,SAAS,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,uCAAuC;IACvC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,sFAAsF;IACtF,WAAW,EAAE,OAAO,CAAC;IACrB,0CAA0C;IAC1C,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED
|
|
1
|
+
{"version":3,"file":"useTokenBalances.d.ts","sourceRoot":"","sources":["../../src/hooks/useTokenBalances.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,0BAA0B,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,uCAAuC;IACvC,YAAY,EAAE,YAAY,CAAC;IAC3B,8DAA8D;IAC9D,KAAK,EAAE,QAAQ,CAAC;IAChB,8EAA8E;IAC9E,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,0DAA0D;IAC1D,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,6CAA6C;IAC7C,SAAS,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,uCAAuC;IACvC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,sFAAsF;IACtF,WAAW,EAAE,OAAO,CAAC;IACrB,0CAA0C;IAC1C,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CAqLzF"}
|
|
@@ -25,10 +25,17 @@ import { NativeTokenTypes } from '@explorins/pers-shared';
|
|
|
25
25
|
* **Basic Usage:**
|
|
26
26
|
* ```typescript
|
|
27
27
|
* import { useTokenBalances, useTokens, usePersSDK } from '@explorins/pers-sdk-react-native';
|
|
28
|
+
* import { useState, useEffect } from 'react';
|
|
28
29
|
*
|
|
29
30
|
* function TokenBalancesScreen() {
|
|
30
31
|
* const { user } = usePersSDK();
|
|
31
|
-
* const {
|
|
32
|
+
* const { getTokens } = useTokens();
|
|
33
|
+
* const [availableTokens, setAvailableTokens] = useState([]);
|
|
34
|
+
*
|
|
35
|
+
* // Load tokens on mount
|
|
36
|
+
* useEffect(() => {
|
|
37
|
+
* getTokens().then(result => setAvailableTokens(result.data));
|
|
38
|
+
* }, []);
|
|
32
39
|
*
|
|
33
40
|
* // App explicitly selects which wallet to use
|
|
34
41
|
* const walletAddress = user?.wallets?.[0]?.address;
|
package/dist/index.d.ts
CHANGED
|
@@ -210,7 +210,7 @@ export { useAuth, useTokens, useTokenBalances, useTransactions, useTransactionSi
|
|
|
210
210
|
export type { TransactionSignerHook, OnStatusUpdateFn, StatusUpdateData, SigningStatusType, TransactionSigningResult, SubmissionResult, AuthenticatedUser } from './hooks';
|
|
211
211
|
export type { EventsHook, PersEvent, EventHandler, EventFilter, Unsubscribe } from './hooks';
|
|
212
212
|
export type { TokenBalanceWithToken, UseTokenBalancesOptions, UseTokenBalancesResult } from './hooks';
|
|
213
|
-
export type { CampaignClaimFilters, CampaignHook } from './hooks';
|
|
213
|
+
export type { CampaignClaimFilters, CampaignHook, GetCampaignsOptions } from './hooks';
|
|
214
214
|
export type { RedemptionRedeemFilters, RedemptionHook } from './hooks';
|
|
215
215
|
export type { TransactionQueryOptions, TransactionHook } from './hooks';
|
|
216
216
|
export type { TriggerSourceQueryOptions, TriggerSourceHook } from './hooks';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAGH,OAAO,aAAa,CAAC;AAMrB;;;;;;;;GAQG;AACH,OAAO,EACL,6BAA6B,EAC7B,KAAK,qBAAqB,EAC3B,MAAM,wCAAwC,CAAC;AAMhD;;;;;;;;;;GAUG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE;;;;;;;;GAQG;AACH,OAAO,EACL,wBAAwB,GACzB,MAAM,uCAAuC,CAAC;AAM/C;;;GAGG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAMvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EACL,eAAe,EACf,UAAU,EACV,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,6BAA6B,CAAC;AAMrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0FG;AACH,OAAO,EACL,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,cAAc,EACd,OAAO,EACP,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAGjB,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG7F,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAGtG,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|