@explorins/pers-shared 2.1.121 → 2.1.123

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.
Files changed (123) hide show
  1. package/dist/cjs/shared-lib/dto/ai/ai-prompt-config.dto.d.ts.map +1 -1
  2. package/dist/cjs/shared-lib/dto/ai/ai-prompt-config.dto.js +22 -2
  3. package/dist/cjs/shared-lib/dto/ai/ai-prompt-config.dto.js.map +1 -1
  4. package/dist/cjs/shared-lib/dto/campaign/campaignClaim.request.dto.d.ts +2 -0
  5. package/dist/cjs/shared-lib/dto/campaign/campaignClaim.request.dto.d.ts.map +1 -1
  6. package/dist/cjs/shared-lib/dto/campaign/campaignClaim.request.dto.js +27 -0
  7. package/dist/cjs/shared-lib/dto/campaign/campaignClaim.request.dto.js.map +1 -1
  8. package/dist/cjs/shared-lib/dto/campaign/trigger-source.dto.d.ts +4 -1
  9. package/dist/cjs/shared-lib/dto/campaign/trigger-source.dto.d.ts.map +1 -1
  10. package/dist/cjs/shared-lib/dto/campaign/trigger-source.dto.js +27 -4
  11. package/dist/cjs/shared-lib/dto/campaign/trigger-source.dto.js.map +1 -1
  12. package/dist/cjs/shared-lib/dto/redemption/redemption.dto.d.ts +2 -0
  13. package/dist/cjs/shared-lib/dto/redemption/redemption.dto.d.ts.map +1 -1
  14. package/dist/cjs/shared-lib/dto/redemption/redemption.dto.js +9 -0
  15. package/dist/cjs/shared-lib/dto/redemption/redemption.dto.js.map +1 -1
  16. package/dist/cjs/shared-lib/dto/redemption/redemptionCreate.request.dto.d.ts +2 -0
  17. package/dist/cjs/shared-lib/dto/redemption/redemptionCreate.request.dto.d.ts.map +1 -1
  18. package/dist/cjs/shared-lib/dto/redemption/redemptionCreate.request.dto.js +11 -0
  19. package/dist/cjs/shared-lib/dto/redemption/redemptionCreate.request.dto.js.map +1 -1
  20. package/dist/cjs/shared-lib/dto/redemption/redemptionRedeem.request.dto.d.ts +2 -0
  21. package/dist/cjs/shared-lib/dto/redemption/redemptionRedeem.request.dto.d.ts.map +1 -1
  22. package/dist/cjs/shared-lib/dto/redemption/redemptionRedeem.request.dto.js +24 -0
  23. package/dist/cjs/shared-lib/dto/redemption/redemptionRedeem.request.dto.js.map +1 -1
  24. package/dist/cjs/shared-lib/dto/tenant/tenantUpdate.request.dto.d.ts +1 -0
  25. package/dist/cjs/shared-lib/dto/tenant/tenantUpdate.request.dto.d.ts.map +1 -1
  26. package/dist/cjs/shared-lib/dto/tenant/tenantUpdate.request.dto.js +9 -0
  27. package/dist/cjs/shared-lib/dto/tenant/tenantUpdate.request.dto.js.map +1 -1
  28. package/dist/cjs/shared-lib/dto/token/token-metadata.dto.d.ts +3 -0
  29. package/dist/cjs/shared-lib/dto/token/token-metadata.dto.d.ts.map +1 -1
  30. package/dist/cjs/shared-lib/dto/token/token-metadata.dto.js +67 -5
  31. package/dist/cjs/shared-lib/dto/token/token-metadata.dto.js.map +1 -1
  32. package/dist/cjs/shared-lib/enum/token-validity-type.enum.d.ts +14 -1
  33. package/dist/cjs/shared-lib/enum/token-validity-type.enum.d.ts.map +1 -1
  34. package/dist/cjs/shared-lib/enum/token-validity-type.enum.js +14 -0
  35. package/dist/cjs/shared-lib/enum/token-validity-type.enum.js.map +1 -1
  36. package/dist/cjs/shared-lib/interfaces/dynamic-context.interface.d.ts +96 -0
  37. package/dist/cjs/shared-lib/interfaces/dynamic-context.interface.d.ts.map +1 -0
  38. package/dist/cjs/shared-lib/interfaces/dynamic-context.interface.js +25 -0
  39. package/dist/cjs/shared-lib/interfaces/dynamic-context.interface.js.map +1 -0
  40. package/dist/cjs/shared-lib/interfaces/index.d.ts +2 -0
  41. package/dist/cjs/shared-lib/interfaces/index.d.ts.map +1 -1
  42. package/dist/cjs/shared-lib/interfaces/index.js +2 -0
  43. package/dist/cjs/shared-lib/interfaces/index.js.map +1 -1
  44. package/dist/cjs/shared-lib/interfaces/token-transaction-input-data.interface.d.ts +13 -0
  45. package/dist/cjs/shared-lib/interfaces/token-transaction-input-data.interface.d.ts.map +1 -1
  46. package/dist/cjs/shared-lib/interfaces/trigger-source-metadata.interface.d.ts +48 -0
  47. package/dist/cjs/shared-lib/interfaces/trigger-source-metadata.interface.d.ts.map +1 -0
  48. package/dist/cjs/shared-lib/interfaces/trigger-source-metadata.interface.js +3 -0
  49. package/dist/cjs/shared-lib/interfaces/trigger-source-metadata.interface.js.map +1 -0
  50. package/dist/cjs/shared-lib/value-objects/token-transaction-entity-reference-input.vo.d.ts +17 -0
  51. package/dist/cjs/shared-lib/value-objects/token-transaction-entity-reference-input.vo.d.ts.map +1 -1
  52. package/dist/cjs/shared-lib/value-objects/token-transaction-entity-reference-input.vo.js +26 -0
  53. package/dist/cjs/shared-lib/value-objects/token-transaction-entity-reference-input.vo.js.map +1 -1
  54. package/dist/cjs/shared-lib/value-objects/token-transaction-input.vo.d.ts +13 -0
  55. package/dist/cjs/shared-lib/value-objects/token-transaction-input.vo.d.ts.map +1 -1
  56. package/dist/cjs/shared-lib/value-objects/token-transaction-input.vo.js +24 -0
  57. package/dist/cjs/shared-lib/value-objects/token-transaction-input.vo.js.map +1 -1
  58. package/dist/cjs/shared-patterns/functions/token-metadata.functions.d.ts +38 -2
  59. package/dist/cjs/shared-patterns/functions/token-metadata.functions.d.ts.map +1 -1
  60. package/dist/cjs/shared-patterns/functions/token-metadata.functions.js +71 -3
  61. package/dist/cjs/shared-patterns/functions/token-metadata.functions.js.map +1 -1
  62. package/dist/esm/shared-lib/dto/ai/ai-prompt-config.dto.d.ts.map +1 -1
  63. package/dist/esm/shared-lib/dto/ai/ai-prompt-config.dto.js +22 -2
  64. package/dist/esm/shared-lib/dto/ai/ai-prompt-config.dto.js.map +1 -1
  65. package/dist/esm/shared-lib/dto/campaign/campaignClaim.request.dto.d.ts +2 -0
  66. package/dist/esm/shared-lib/dto/campaign/campaignClaim.request.dto.d.ts.map +1 -1
  67. package/dist/esm/shared-lib/dto/campaign/campaignClaim.request.dto.js +26 -0
  68. package/dist/esm/shared-lib/dto/campaign/campaignClaim.request.dto.js.map +1 -1
  69. package/dist/esm/shared-lib/dto/campaign/trigger-source.dto.d.ts +4 -1
  70. package/dist/esm/shared-lib/dto/campaign/trigger-source.dto.d.ts.map +1 -1
  71. package/dist/esm/shared-lib/dto/campaign/trigger-source.dto.js +26 -4
  72. package/dist/esm/shared-lib/dto/campaign/trigger-source.dto.js.map +1 -1
  73. package/dist/esm/shared-lib/dto/redemption/redemption.dto.d.ts +2 -0
  74. package/dist/esm/shared-lib/dto/redemption/redemption.dto.d.ts.map +1 -1
  75. package/dist/esm/shared-lib/dto/redemption/redemption.dto.js +8 -0
  76. package/dist/esm/shared-lib/dto/redemption/redemption.dto.js.map +1 -1
  77. package/dist/esm/shared-lib/dto/redemption/redemptionCreate.request.dto.d.ts +2 -0
  78. package/dist/esm/shared-lib/dto/redemption/redemptionCreate.request.dto.d.ts.map +1 -1
  79. package/dist/esm/shared-lib/dto/redemption/redemptionCreate.request.dto.js +11 -1
  80. package/dist/esm/shared-lib/dto/redemption/redemptionCreate.request.dto.js.map +1 -1
  81. package/dist/esm/shared-lib/dto/redemption/redemptionRedeem.request.dto.d.ts +2 -0
  82. package/dist/esm/shared-lib/dto/redemption/redemptionRedeem.request.dto.d.ts.map +1 -1
  83. package/dist/esm/shared-lib/dto/redemption/redemptionRedeem.request.dto.js +26 -3
  84. package/dist/esm/shared-lib/dto/redemption/redemptionRedeem.request.dto.js.map +1 -1
  85. package/dist/esm/shared-lib/dto/tenant/tenantUpdate.request.dto.d.ts +1 -0
  86. package/dist/esm/shared-lib/dto/tenant/tenantUpdate.request.dto.d.ts.map +1 -1
  87. package/dist/esm/shared-lib/dto/tenant/tenantUpdate.request.dto.js +8 -0
  88. package/dist/esm/shared-lib/dto/tenant/tenantUpdate.request.dto.js.map +1 -1
  89. package/dist/esm/shared-lib/dto/token/token-metadata.dto.d.ts +3 -0
  90. package/dist/esm/shared-lib/dto/token/token-metadata.dto.d.ts.map +1 -1
  91. package/dist/esm/shared-lib/dto/token/token-metadata.dto.js +66 -6
  92. package/dist/esm/shared-lib/dto/token/token-metadata.dto.js.map +1 -1
  93. package/dist/esm/shared-lib/enum/token-validity-type.enum.d.ts +14 -1
  94. package/dist/esm/shared-lib/enum/token-validity-type.enum.d.ts.map +1 -1
  95. package/dist/esm/shared-lib/enum/token-validity-type.enum.js +14 -0
  96. package/dist/esm/shared-lib/enum/token-validity-type.enum.js.map +1 -1
  97. package/dist/esm/shared-lib/interfaces/dynamic-context.interface.d.ts +96 -0
  98. package/dist/esm/shared-lib/interfaces/dynamic-context.interface.d.ts.map +1 -0
  99. package/dist/esm/shared-lib/interfaces/dynamic-context.interface.js +19 -0
  100. package/dist/esm/shared-lib/interfaces/dynamic-context.interface.js.map +1 -0
  101. package/dist/esm/shared-lib/interfaces/index.d.ts +2 -0
  102. package/dist/esm/shared-lib/interfaces/index.d.ts.map +1 -1
  103. package/dist/esm/shared-lib/interfaces/index.js +2 -0
  104. package/dist/esm/shared-lib/interfaces/index.js.map +1 -1
  105. package/dist/esm/shared-lib/interfaces/token-transaction-input-data.interface.d.ts +13 -0
  106. package/dist/esm/shared-lib/interfaces/token-transaction-input-data.interface.d.ts.map +1 -1
  107. package/dist/esm/shared-lib/interfaces/trigger-source-metadata.interface.d.ts +48 -0
  108. package/dist/esm/shared-lib/interfaces/trigger-source-metadata.interface.d.ts.map +1 -0
  109. package/dist/esm/shared-lib/interfaces/trigger-source-metadata.interface.js +2 -0
  110. package/dist/esm/shared-lib/interfaces/trigger-source-metadata.interface.js.map +1 -0
  111. package/dist/esm/shared-lib/value-objects/token-transaction-entity-reference-input.vo.d.ts +17 -0
  112. package/dist/esm/shared-lib/value-objects/token-transaction-entity-reference-input.vo.d.ts.map +1 -1
  113. package/dist/esm/shared-lib/value-objects/token-transaction-entity-reference-input.vo.js +24 -0
  114. package/dist/esm/shared-lib/value-objects/token-transaction-entity-reference-input.vo.js.map +1 -1
  115. package/dist/esm/shared-lib/value-objects/token-transaction-input.vo.d.ts +13 -0
  116. package/dist/esm/shared-lib/value-objects/token-transaction-input.vo.d.ts.map +1 -1
  117. package/dist/esm/shared-lib/value-objects/token-transaction-input.vo.js +22 -0
  118. package/dist/esm/shared-lib/value-objects/token-transaction-input.vo.js.map +1 -1
  119. package/dist/esm/shared-patterns/functions/token-metadata.functions.d.ts +38 -2
  120. package/dist/esm/shared-patterns/functions/token-metadata.functions.d.ts.map +1 -1
  121. package/dist/esm/shared-patterns/functions/token-metadata.functions.js +69 -2
  122. package/dist/esm/shared-patterns/functions/token-metadata.functions.js.map +1 -1
  123. package/package.json +1 -1
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { type TokenValidityType } from '../../shared-lib/enum/token-validity-type.enum';
8
8
  import { TokenStorageData } from '../../shared-lib/interfaces/token-storage-data.interface';
9
+ import type { DynamicContext } from '../../shared-lib/interfaces/dynamic-context.interface';
9
10
  /**
10
11
  * Checks if a token ID is a URI (IPFS or HTTP).
11
12
  * Used for determining how to resolve token metadata.
@@ -18,12 +19,20 @@ export declare const checkIfTokenIdIsUri: (tokenId: string | null) => boolean;
18
19
  * Computes the expiry date based on validity configuration.
19
20
  *
20
21
  * @param validityType - The type of validity calculation
21
- * @param validityDuration - Duration in days or hours (for relative types)
22
+ * @param validityDuration - Duration in days or hours (for relative types) - can be overridden by triggerDuration
22
23
  * @param fixedExpiryDate - Fixed expiry date (for fixed_date type)
23
24
  * @param issuanceDate - The date of issuance (defaults to now)
25
+ * @param triggerContext - Runtime context for trigger-based types:
26
+ * - triggerDate: Base date (e.g., check-in date) for TRIGGER_DATE, DAYS_FROM_TRIGGER
27
+ * - triggerEndDate: End date (e.g., check-out date) for TRIGGER_DATE_RANGE
28
+ * - triggerDuration: Dynamic duration override for DAYS_FROM_TRIGGER, HOURS_FROM_TRIGGER
24
29
  * @returns The computed expiry date, or undefined if no validity is configured
25
30
  */
26
- export declare const computeExpiryDate: (validityType?: TokenValidityType, validityDuration?: number, fixedExpiryDate?: Date, issuanceDate?: Date) => Date | undefined;
31
+ export declare const computeExpiryDate: (validityType?: TokenValidityType, validityDuration?: number, fixedExpiryDate?: Date, issuanceDate?: Date, triggerContext?: {
32
+ triggerDate?: Date;
33
+ triggerEndDate?: Date;
34
+ triggerDuration?: number;
35
+ }) => Date | undefined;
27
36
  /**
28
37
  * Checks if a token has expired based on its expiry date.
29
38
  *
@@ -69,4 +78,31 @@ export declare const extractTagsFromMetadata: (metadata: TokenStorageData | null
69
78
  * extractBusinessIdsFromMetadata(metadata); // Returns ['uuid-1', 'uuid-2']
70
79
  */
71
80
  export declare const extractBusinessIdsFromMetadata: (metadata: TokenStorageData | null) => string[];
81
+ /**
82
+ * Merges dynamic and external contexts with security enforcement.
83
+ * This is a DOMAIN RULE - enforces trust levels for context injection.
84
+ *
85
+ * Trust levels:
86
+ * - dynamicContext: Admin-controlled (QR/NFC) → ALWAYS applied
87
+ * - externalContext: User request → ONLY if allowExternalContextOverwrite=true
88
+ *
89
+ * This function should be used by any code that needs to merge contexts
90
+ * for ERC721 token generation, ensuring consistent security enforcement.
91
+ *
92
+ * @param allowExternalContextOverwrite - Whether user-provided external context is allowed (from TokenMetadata)
93
+ * @param dynamicContext - Admin-controlled context (always trusted)
94
+ * @param externalContext - User-provided context (requires explicit opt-in)
95
+ * @returns Merged context or undefined if empty
96
+ *
97
+ * @example
98
+ * // Admin context only (user context not allowed)
99
+ * mergeContexts(false, { location: 'Lobby' }, { hack: 'attempt' })
100
+ * // Returns: { location: 'Lobby' }
101
+ *
102
+ * @example
103
+ * // Both contexts merged (user context allowed)
104
+ * mergeContexts(true, { location: 'Lobby' }, { guestName: 'John' })
105
+ * // Returns: { location: 'Lobby', guestName: 'John' }
106
+ */
107
+ export declare const mergeContexts: (allowExternalContextOverwrite: boolean, dynamicContext?: DynamicContext, externalContext?: DynamicContext) => DynamicContext | undefined;
72
108
  //# sourceMappingURL=token-metadata.functions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"token-metadata.functions.d.ts","sourceRoot":"","sources":["../../../../src/shared-patterns/functions/token-metadata.functions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAC5G,OAAO,EAAE,gBAAgB,EAAkC,MAAM,0DAA0D,CAAC;AAE5H;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,GAAG,IAAI,KAAG,OAM5D,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC5B,eAAe,iBAAiB,EAChC,mBAAmB,MAAM,EACzB,kBAAkB,IAAI,EACtB,eAAc,IAAiB,KAC9B,IAAI,GAAG,SA6CT,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,aAAa,IAAI,GAAG,IAAI,EACxB,gBAAe,IAAiB,KAC/B,OAAO,GAAG,SAGZ,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,6BAA6B,GAAI,UAAU,gBAAgB,GAAG,IAAI,KAAG,IAAI,GAAG,IAaxF,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,GAAI,UAAU,gBAAgB,GAAG,IAAI,KAAG,MAAM,EAiBjF,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,8BAA8B,GAAI,UAAU,gBAAgB,GAAG,IAAI,KAAG,MAAM,EAmBxF,CAAA"}
1
+ {"version":3,"file":"token-metadata.functions.d.ts","sourceRoot":"","sources":["../../../../src/shared-patterns/functions/token-metadata.functions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAC5G,OAAO,EAAE,gBAAgB,EAAkC,MAAM,0DAA0D,CAAC;AAC5H,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uDAAuD,CAAC;AAE5F;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,GAAG,IAAI,KAAG,OAM5D,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,GAC5B,eAAe,iBAAiB,EAChC,mBAAmB,MAAM,EACzB,kBAAkB,IAAI,EACtB,eAAc,IAAiB,EAC/B,iBAAiB;IACf,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,KACA,IAAI,GAAG,SAuET,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,aAAa,IAAI,GAAG,IAAI,EACxB,gBAAe,IAAiB,KAC/B,OAAO,GAAG,SAGZ,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,6BAA6B,GAAI,UAAU,gBAAgB,GAAG,IAAI,KAAG,IAAI,GAAG,IAaxF,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,GAAI,UAAU,gBAAgB,GAAG,IAAI,KAAG,MAAM,EAiBjF,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,8BAA8B,GAAI,UAAU,gBAAgB,GAAG,IAAI,KAAG,MAAM,EAmBxF,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,aAAa,GACxB,+BAA+B,OAAO,EACtC,iBAAiB,cAAc,EAC/B,kBAAkB,cAAc,KAC/B,cAAc,GAAG,SAanB,CAAA"}
@@ -6,7 +6,7 @@
6
6
  * validity computation, and attribute extraction.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.extractBusinessIdsFromMetadata = exports.extractTagsFromMetadata = exports.extractExpiryDateFromMetadata = exports.isTokenExpired = exports.computeExpiryDate = exports.checkIfTokenIdIsUri = void 0;
9
+ exports.mergeContexts = exports.extractBusinessIdsFromMetadata = exports.extractTagsFromMetadata = exports.extractExpiryDateFromMetadata = exports.isTokenExpired = exports.computeExpiryDate = exports.checkIfTokenIdIsUri = void 0;
10
10
  const token_validity_type_enum_1 = require("../../shared-lib/enum/token-validity-type.enum");
11
11
  const token_storage_data_interface_1 = require("../../shared-lib/interfaces/token-storage-data.interface");
12
12
  /**
@@ -28,16 +28,22 @@ exports.checkIfTokenIdIsUri = checkIfTokenIdIsUri;
28
28
  * Computes the expiry date based on validity configuration.
29
29
  *
30
30
  * @param validityType - The type of validity calculation
31
- * @param validityDuration - Duration in days or hours (for relative types)
31
+ * @param validityDuration - Duration in days or hours (for relative types) - can be overridden by triggerDuration
32
32
  * @param fixedExpiryDate - Fixed expiry date (for fixed_date type)
33
33
  * @param issuanceDate - The date of issuance (defaults to now)
34
+ * @param triggerContext - Runtime context for trigger-based types:
35
+ * - triggerDate: Base date (e.g., check-in date) for TRIGGER_DATE, DAYS_FROM_TRIGGER
36
+ * - triggerEndDate: End date (e.g., check-out date) for TRIGGER_DATE_RANGE
37
+ * - triggerDuration: Dynamic duration override for DAYS_FROM_TRIGGER, HOURS_FROM_TRIGGER
34
38
  * @returns The computed expiry date, or undefined if no validity is configured
35
39
  */
36
- const computeExpiryDate = (validityType, validityDuration, fixedExpiryDate, issuanceDate = new Date()) => {
40
+ const computeExpiryDate = (validityType, validityDuration, fixedExpiryDate, issuanceDate = new Date(), triggerContext) => {
37
41
  if (!validityType) {
38
42
  // Fallback to fixed expiry date if no validity type specified
39
43
  return fixedExpiryDate;
40
44
  }
45
+ // For trigger-based types, prefer dynamic duration from context over template duration
46
+ const effectiveDuration = triggerContext?.triggerDuration ?? validityDuration;
41
47
  switch (validityType) {
42
48
  case token_validity_type_enum_1.TokenValidityTypes.FIXED_DATE:
43
49
  return fixedExpiryDate;
@@ -71,6 +77,29 @@ const computeExpiryDate = (validityType, validityDuration, fixedExpiryDate, issu
71
77
  endOfYear.setDate(31);
72
78
  endOfYear.setHours(23, 59, 59, 999);
73
79
  return endOfYear;
80
+ // Trigger-based types - use data from runtime context
81
+ case token_validity_type_enum_1.TokenValidityTypes.TRIGGER_DATE:
82
+ // Use triggerDate directly as expiry (e.g., guest check-out date)
83
+ return triggerContext?.triggerDate;
84
+ case token_validity_type_enum_1.TokenValidityTypes.TRIGGER_DATE_RANGE:
85
+ // Use explicit end date (e.g., check-out date when check-in is separate)
86
+ return triggerContext?.triggerEndDate ?? triggerContext?.triggerDate;
87
+ case token_validity_type_enum_1.TokenValidityTypes.DAYS_FROM_TRIGGER:
88
+ if (!triggerContext?.triggerDate)
89
+ return undefined;
90
+ if (!effectiveDuration || effectiveDuration <= 0)
91
+ return triggerContext.triggerDate;
92
+ const daysFromTrigger = new Date(triggerContext.triggerDate);
93
+ daysFromTrigger.setDate(daysFromTrigger.getDate() + effectiveDuration);
94
+ return daysFromTrigger;
95
+ case token_validity_type_enum_1.TokenValidityTypes.HOURS_FROM_TRIGGER:
96
+ if (!triggerContext?.triggerDate)
97
+ return undefined;
98
+ if (!effectiveDuration || effectiveDuration <= 0)
99
+ return triggerContext.triggerDate;
100
+ const hoursFromTrigger = new Date(triggerContext.triggerDate);
101
+ hoursFromTrigger.setHours(hoursFromTrigger.getHours() + effectiveDuration);
102
+ return hoursFromTrigger;
74
103
  default:
75
104
  return fixedExpiryDate;
76
105
  }
@@ -167,4 +196,43 @@ const extractBusinessIdsFromMetadata = (metadata) => {
167
196
  return [];
168
197
  };
169
198
  exports.extractBusinessIdsFromMetadata = extractBusinessIdsFromMetadata;
199
+ /**
200
+ * Merges dynamic and external contexts with security enforcement.
201
+ * This is a DOMAIN RULE - enforces trust levels for context injection.
202
+ *
203
+ * Trust levels:
204
+ * - dynamicContext: Admin-controlled (QR/NFC) → ALWAYS applied
205
+ * - externalContext: User request → ONLY if allowExternalContextOverwrite=true
206
+ *
207
+ * This function should be used by any code that needs to merge contexts
208
+ * for ERC721 token generation, ensuring consistent security enforcement.
209
+ *
210
+ * @param allowExternalContextOverwrite - Whether user-provided external context is allowed (from TokenMetadata)
211
+ * @param dynamicContext - Admin-controlled context (always trusted)
212
+ * @param externalContext - User-provided context (requires explicit opt-in)
213
+ * @returns Merged context or undefined if empty
214
+ *
215
+ * @example
216
+ * // Admin context only (user context not allowed)
217
+ * mergeContexts(false, { location: 'Lobby' }, { hack: 'attempt' })
218
+ * // Returns: { location: 'Lobby' }
219
+ *
220
+ * @example
221
+ * // Both contexts merged (user context allowed)
222
+ * mergeContexts(true, { location: 'Lobby' }, { guestName: 'John' })
223
+ * // Returns: { location: 'Lobby', guestName: 'John' }
224
+ */
225
+ const mergeContexts = (allowExternalContextOverwrite, dynamicContext, externalContext) => {
226
+ // Security: Only include user-provided context if explicitly allowed
227
+ const filteredExternalContext = allowExternalContextOverwrite ? externalContext : undefined;
228
+ if (!dynamicContext && !filteredExternalContext) {
229
+ return undefined;
230
+ }
231
+ // Merge: dynamic → external (external wins on conflict when allowed)
232
+ return {
233
+ ...(dynamicContext || {}),
234
+ ...(filteredExternalContext || {})
235
+ };
236
+ };
237
+ exports.mergeContexts = mergeContexts;
170
238
  //# sourceMappingURL=token-metadata.functions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"token-metadata.functions.js","sourceRoot":"","sources":["../../../../src/shared-patterns/functions/token-metadata.functions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-metadata.functions.js","sourceRoot":"","sources":["../../../../src/shared-patterns/functions/token-metadata.functions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-prompt-config.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/ai/ai-prompt-config.dto.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAGtG,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAEvG;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IAOtD,IAAI,EAAG,kBAAkB,CAAC;IAQ1B,GAAG,EAAG,MAAM,CAAC;IAQb,MAAM,EAAG,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"ai-prompt-config.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/ai/ai-prompt-config.dto.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAGtG,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAEvG;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IAOtD,IAAI,EAAG,kBAAkB,CAAC;IAQ1B,GAAG,EAAG,MAAM,CAAC;IA4Bb,MAAM,EAAG,MAAM,CAAC;CACjB"}
@@ -43,8 +43,28 @@ __decorate([
43
43
  ], AiPromptConfigDTO.prototype, "key", void 0);
44
44
  __decorate([
45
45
  ApiProperty({
46
- description: 'The prompt to send to the AI model. Supports placeholders like {{user.name}}, {{campaign.name}}, {{tenant.name}}',
47
- example: 'Generate a unique reward name for {{user.name}}',
46
+ description: `The prompt to send to the AI model. Supports dynamic placeholders that are replaced with context values.
47
+
48
+ **Available Placeholders:**
49
+ - \`{{user.firstName}}\`, \`{{user.lastName}}\`, \`{{user.email}}\` - User profile data
50
+ - \`{{campaign.name}}\`, \`{{campaign.description}}\` - Campaign data
51
+ - \`{{tenant.projectName}}\`, \`{{tenant.projectDescription}}\` - Tenant/project data
52
+ - \`{{business.displayName}}\`, \`{{business.name}}\` - Business data
53
+ - \`{{triggerSource.name}}\`, \`{{triggerSource.type}}\` - Trigger source data
54
+ - \`{{redemption.name}}\`, \`{{redemption.description}}\` - Redemption data
55
+ - \`{{context.xxx}}\` - Dynamic context from TriggerSource.context or CampaignClaimRequest.context
56
+ - \`{{defaults.xxx}}\` - Default values from TokenMetadata.defaultPromptContext
57
+
58
+ **Context Sources:**
59
+ 1. TriggerSource.context (admin QR/NFC) - Always applied
60
+ 2. CampaignClaimRequest.context (user API) - Only if allowExternalContextOverwrite=true
61
+ 3. TokenMetadata.defaultPromptContext - Always applied as fallback
62
+
63
+ **Examples:**
64
+ - \`"Generate a welcome message for {{user.firstName}} at {{business.displayName}}"\`
65
+ - \`"Create a VIP badge for guest {{context.guestName}} in room {{context.roomNumber}}"\`
66
+ - \`"Design a {{defaults.style}} reward image for {{campaign.name}}"\``,
67
+ example: 'Generate a unique reward name for {{user.firstName}} visiting {{business.displayName}}',
48
68
  }),
49
69
  IsString(),
50
70
  MaxLength(2000)
@@ -1 +1 @@
1
- {"version":3,"file":"ai-prompt-config.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/ai/ai-prompt-config.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAMpE;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,iBAAiB;IAO5B,IAAI,CAAsB;IAQ1B,GAAG,CAAU;IAQb,MAAM,CAAU;CACjB;AAjBC;IANC,WAAW,CAAC;QACX,IAAI,EAAE,CAAC,eAAe,CAAC,eAAe,EAAE,eAAe,CAAC,gBAAgB,CAAC;QACzE,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,eAAe,CAAC,eAAe;KACzC,CAAC;IACD,MAAM,CAAC,eAAe,CAAC;+CACE;AAQ1B;IANC,WAAW,CAAC;QACX,WAAW,EAAE,yCAAyC;QACtD,OAAO,EAAE,MAAM;KAChB,CAAC;IACD,QAAQ,EAAE;IACV,SAAS,CAAC,EAAE,CAAC;8CACD;AAQb;IANC,WAAW,CAAC;QACX,WAAW,EAAE,kHAAkH;QAC/H,OAAO,EAAE,iDAAiD;KAC3D,CAAC;IACD,QAAQ,EAAE;IACV,SAAS,CAAC,IAAI,CAAC;iDACA"}
1
+ {"version":3,"file":"ai-prompt-config.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/ai/ai-prompt-config.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAMpE;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,iBAAiB;IAO5B,IAAI,CAAsB;IAQ1B,GAAG,CAAU;IA4Bb,MAAM,CAAU;CACjB;AArCC;IANC,WAAW,CAAC;QACX,IAAI,EAAE,CAAC,eAAe,CAAC,eAAe,EAAE,eAAe,CAAC,gBAAgB,CAAC;QACzE,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,eAAe,CAAC,eAAe;KACzC,CAAC;IACD,MAAM,CAAC,eAAe,CAAC;+CACE;AAQ1B;IANC,WAAW,CAAC;QACX,WAAW,EAAE,yCAAyC;QACtD,OAAO,EAAE,MAAM;KAChB,CAAC;IACD,QAAQ,EAAE;IACV,SAAS,CAAC,EAAE,CAAC;8CACD;AA4Bb;IA1BC,WAAW,CAAC;QACX,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;uEAoBsD;QACnE,OAAO,EAAE,wFAAwF;KAClG,CAAC;IACD,QAAQ,EAAE;IACV,SAAS,CAAC,IAAI,CAAC;iDACA"}
@@ -1,4 +1,5 @@
1
1
  import type { UserDTOKeys } from "../user/user.dto";
2
+ import type { DynamicContext } from '../../interfaces/dynamic-context.interface';
2
3
  /**
3
4
  * Campaign Claim Request DTO
4
5
  *
@@ -33,6 +34,7 @@ export declare class CampaignClaimRequestDTO {
33
34
  externalReferenceId?: string;
34
35
  triggerSourceId?: string;
35
36
  metadata?: Record<string, any>;
37
+ context?: DynamicContext;
36
38
  multiplier?: number;
37
39
  latitude?: number;
38
40
  longitude?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"campaignClaim.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/campaignClaim.request.dto.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,uBAAuB;IAOhC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAO7B,eAAe,CAAC,EAAE,MAAM,CAAC;IAOzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAO/B,UAAU,CAAC,EAAE,MAAM,CAAC;IAOpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAOlB,SAAS,CAAC,EAAE,MAAM,CAAC;IAOnB,cAAc,CAAC,EAAE,MAAM,CAAC;IASxB,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IAE7C;;OAEG;IAMH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IAMH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"campaignClaim.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/campaignClaim.request.dto.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,uBAAuB;IAOhC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAO7B,eAAe,CAAC,EAAE,MAAM,CAAC;IAOzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAyB/B,OAAO,CAAC,EAAE,cAAc,CAAC;IAOzB,UAAU,CAAC,EAAE,MAAM,CAAC;IAOpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAOlB,SAAS,CAAC,EAAE,MAAM,CAAC;IAOnB,cAAc,CAAC,EAAE,MAAM,CAAC;IASxB,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IAE7C;;OAEG;IAMH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IAMH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB"}
@@ -41,6 +41,7 @@ export class CampaignClaimRequestDTO {
41
41
  externalReferenceId;
42
42
  triggerSourceId;
43
43
  metadata;
44
+ context;
44
45
  multiplier;
45
46
  latitude;
46
47
  longitude;
@@ -76,6 +77,31 @@ __decorate([
76
77
  OptionalStrip(),
77
78
  IsObject()
78
79
  ], CampaignClaimRequestDTO.prototype, "metadata", void 0);
80
+ __decorate([
81
+ ApiPropertyOptional({
82
+ description: `**ERC721 only** - User-provided external context for template interpolation and AI prompts.
83
+
84
+ **SECURITY:** Only applied if TokenMetadata.allowExternalContextOverwrite is true (admin opt-in required). TriggerSource.context (admin-controlled QR/NFC data) is ALWAYS applied regardless.
85
+
86
+ **Template Interpolation:** Values become available as \`{{context.keyName}}\` placeholders in TokenMetadata name/description fields and AI prompts.
87
+
88
+ **Special validity keys:**
89
+ - \`validityDate\` - Base date for trigger-based validity
90
+ - \`validityEndDate\` - End date for date ranges (e.g., hotel checkout)
91
+ - \`validityDuration\` - Override duration in days/hours
92
+
93
+ **Custom keys:** Any arbitrary key becomes \`{{context.keyName}}\` placeholder.
94
+
95
+ **Example use cases:**
96
+ - Hotel: \`{ guestName: "John", roomNumber: "305", validityEndDate: "2026-04-20T11:00:00Z" }\`
97
+ - Event: \`{ ticketType: "VIP", seatNumber: "A12" }\`
98
+ - Retail: \`{ productName: "Gold Watch", purchaseAmount: 299.99 }\``,
99
+ type: 'object',
100
+ example: { guestName: 'John Doe', validityDate: '2026-04-15T14:00:00Z', validityEndDate: '2026-04-20T11:00:00Z' }
101
+ }),
102
+ OptionalStrip(),
103
+ IsObject()
104
+ ], CampaignClaimRequestDTO.prototype, "context", void 0);
79
105
  __decorate([
80
106
  ApiPropertyOptional({
81
107
  description: 'The campaign multiplier that will be applied to the reward. This determines the final reward amount (reward * multiplier). Default is 1.0',
@@ -1 +1 @@
1
- {"version":3,"file":"campaignClaim.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/campaignClaim.request.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAO,uBAAuB;IAOhC,mBAAmB,CAAU;IAO7B,eAAe,CAAU;IAOzB,QAAQ,CAAuB;IAO/B,UAAU,CAAU;IAOpB,QAAQ,CAAU;IAOlB,SAAS,CAAU;IAOnB,cAAc,CAAU;IASxB,QAAQ,CAAqC;IAE7C;;OAEG;IAMH,UAAU,CAAU;IAEpB;;OAEG;IAMH,UAAU,CAAU;CACvB;AAxEG;IALC,mBAAmB,CAAC;QACjB,WAAW,EAAE,4KAA4K;KAC5L,CAAC;IACD,aAAa,EAAE;IACf,QAAQ,EAAE;oEACkB;AAO7B;IALC,mBAAmB,CAAC;QACjB,WAAW,EAAE,6KAA6K;KAC7L,CAAC;IACD,aAAa,EAAE;IACf,MAAM,EAAE;gEACgB;AAOzB;IALC,mBAAmB,CAAC;QACb,WAAW,EAAE,kDAAkD;KAClE,CAAC;IACL,aAAa,EAAE;IACf,QAAQ,EAAE;yDACoB;AAO/B;IALC,mBAAmB,CAAC;QACb,WAAW,EAAE,2IAA2I;KAC3J,CAAC;IACL,mBAAmB,EAAE;IACrB,QAAQ,EAAE;2DACS;AAOpB;IALC,mBAAmB,CAAC;QACjB,WAAW,EAAE,2PAA2P;KAC3Q,CAAC;IACD,mBAAmB,EAAE;IACrB,QAAQ,EAAE;yDACO;AAOlB;IALC,mBAAmB,CAAC;QACjB,WAAW,EAAE,6PAA6P;KAC7Q,CAAC;IACD,mBAAmB,EAAE;IACrB,QAAQ,EAAE;0DACQ;AAOnB;IALC,mBAAmB,CAAC;QACjB,WAAW,EAAE,wIAAwI;KACxJ,CAAC;IACD,aAAa,EAAE;IACf,QAAQ,EAAE;+DACa;AASxB;IAPC,mBAAmB,CAAC;QACjB,WAAW,EAAE,+XAA+X;QAC5Y,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE;KACxF,CAAC;IACD,aAAa,EAAE;IACf,QAAQ,EAAE;yDACkC;AAU7C;IALC,mBAAmB,CAAC;QACb,WAAW,EAAE,wJAAwJ;KAC5K,CAAC;IACD,aAAa,EAAE;IACf,MAAM,EAAE;2DACW;AAUpB;IALC,mBAAmB,CAAC;QACb,WAAW,EAAE,8WAA8W;KAC9X,CAAC;IACL,aAAa,EAAE;IACf,QAAQ,EAAE;2DACS"}
1
+ {"version":3,"file":"campaignClaim.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/campaignClaim.request.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAO,uBAAuB;IAOhC,mBAAmB,CAAU;IAO7B,eAAe,CAAU;IAOzB,QAAQ,CAAuB;IAyB/B,OAAO,CAAkB;IAOzB,UAAU,CAAU;IAOpB,QAAQ,CAAU;IAOlB,SAAS,CAAU;IAOnB,cAAc,CAAU;IASxB,QAAQ,CAAqC;IAE7C;;OAEG;IAMH,UAAU,CAAU;IAEpB;;OAEG;IAMH,UAAU,CAAU;CACvB;AAjGG;IALC,mBAAmB,CAAC;QACjB,WAAW,EAAE,4KAA4K;KAC5L,CAAC;IACD,aAAa,EAAE;IACf,QAAQ,EAAE;oEACkB;AAO7B;IALC,mBAAmB,CAAC;QACjB,WAAW,EAAE,6KAA6K;KAC7L,CAAC;IACD,aAAa,EAAE;IACf,MAAM,EAAE;gEACgB;AAOzB;IALC,mBAAmB,CAAC;QACb,WAAW,EAAE,kDAAkD;KAClE,CAAC;IACL,aAAa,EAAE;IACf,QAAQ,EAAE;yDACoB;AAyB/B;IAvBC,mBAAmB,CAAC;QACjB,WAAW,EAAE;;;;;;;;;;;;;;;;oEAgB+C;QAC5D,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,sBAAsB,EAAE;KACpH,CAAC;IACD,aAAa,EAAE;IACf,QAAQ,EAAE;wDACc;AAOzB;IALC,mBAAmB,CAAC;QACb,WAAW,EAAE,2IAA2I;KAC3J,CAAC;IACL,mBAAmB,EAAE;IACrB,QAAQ,EAAE;2DACS;AAOpB;IALC,mBAAmB,CAAC;QACjB,WAAW,EAAE,2PAA2P;KAC3Q,CAAC;IACD,mBAAmB,EAAE;IACrB,QAAQ,EAAE;yDACO;AAOlB;IALC,mBAAmB,CAAC;QACjB,WAAW,EAAE,6PAA6P;KAC7Q,CAAC;IACD,mBAAmB,EAAE;IACrB,QAAQ,EAAE;0DACQ;AAOnB;IALC,mBAAmB,CAAC;QACjB,WAAW,EAAE,wIAAwI;KACxJ,CAAC;IACD,aAAa,EAAE;IACf,QAAQ,EAAE;+DACa;AASxB;IAPC,mBAAmB,CAAC;QACjB,WAAW,EAAE,+XAA+X;QAC5Y,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE;KACxF,CAAC;IACD,aAAa,EAAE;IACf,QAAQ,EAAE;yDACkC;AAU7C;IALC,mBAAmB,CAAC;QACb,WAAW,EAAE,wJAAwJ;KAC5K,CAAC;IACD,aAAa,EAAE;IACf,MAAM,EAAE;2DACW;AAUpB;IALC,mBAAmB,CAAC;QACb,WAAW,EAAE,8WAA8W;KAC9X,CAAC;IACL,aAAa,EAAE;IACf,QAAQ,EAAE;2DACS"}
@@ -1,9 +1,12 @@
1
1
  import { TriggerSourceType } from "../../enum/campaign/trigger-source-type.enum";
2
+ import type { TriggerSourceMetadata } from '../../interfaces/trigger-source-metadata.interface';
3
+ import type { DynamicContext } from '../../interfaces/dynamic-context.interface';
2
4
  export declare class TriggerSourceCreateRequestDTO {
3
5
  type: TriggerSourceType;
4
6
  name: string;
5
7
  description?: string | null;
6
- metadata?: Record<string, any>;
8
+ metadata?: TriggerSourceMetadata;
9
+ context?: DynamicContext;
7
10
  maxUsage?: number | null;
8
11
  businessId?: string | null;
9
12
  coordsLatitude?: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-source.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/trigger-source.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAoD,MAAM,8CAA8C,CAAC;AAcnI,qBAAa,6BAA6B;IA0BtC,IAAI,EAAE,iBAAiB,CAAgC;IAQvD,IAAI,EAAG,MAAM,CAAC;IAUd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAY5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAW/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAUzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAW3B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAW/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAGD,qBAAa,gBAAiB,SAAQ,6BAA6B;IAE/D,EAAE,EAAE,MAAM,CAAM;IAchB,QAAQ,EAAE,OAAO,CAAQ;IASzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAO/B,WAAW,EAAE,OAAO,CAAS;IAM7B,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;IAM9B,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;CACjC"}
1
+ {"version":3,"file":"trigger-source.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/trigger-source.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAoD,MAAM,8CAA8C,CAAC;AAEnI,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAajF,qBAAa,6BAA6B;IA0BtC,IAAI,EAAE,iBAAiB,CAAgC;IAQvD,IAAI,EAAG,MAAM,CAAC;IAUd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAU5B,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAuBjC,OAAO,CAAC,EAAE,cAAc,CAAC;IAWzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAUzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAW3B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAW/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAGD,qBAAa,gBAAiB,SAAQ,6BAA6B;IAE/D,EAAE,EAAE,MAAM,CAAM;IAchB,QAAQ,EAAE,OAAO,CAAQ;IASzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAO/B,WAAW,EAAE,OAAO,CAAS;IAM7B,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;IAM9B,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;CACjC"}
@@ -23,6 +23,7 @@ export class TriggerSourceCreateRequestDTO {
23
23
  name;
24
24
  description;
25
25
  metadata;
26
+ context;
26
27
  maxUsage;
27
28
  businessId;
28
29
  coordsLatitude;
@@ -75,15 +76,36 @@ __decorate([
75
76
  __decorate([
76
77
  ApiPropertyOptional({
77
78
  type: 'object',
78
- description: 'Type-specific configuration and settings',
79
- example: { tokenConfig: {
80
- tokenId: '1'
81
- } },
79
+ description: 'Type-specific configuration: `tokenConfig` (override token ID). See TriggerSourceMetadata interface.',
80
+ example: { tokenConfig: { tokenId: '1' } },
82
81
  additionalProperties: true
83
82
  }),
84
83
  OptionalStrip(),
85
84
  IsObject()
86
85
  ], TriggerSourceCreateRequestDTO.prototype, "metadata", void 0);
86
+ __decorate([
87
+ ApiPropertyOptional({
88
+ type: 'object',
89
+ description: `**ERC721 only** - Admin-controlled dynamic context for template interpolation and AI prompts. This data is ALWAYS applied (not subject to allowExternalContextOverwrite).
90
+
91
+ **Template Interpolation:** Values become available as \`{{context.keyName}}\` placeholders in TokenMetadata name/description fields and AI prompts.
92
+
93
+ **Special validity keys:**
94
+ - \`validityDate\` - Base date for trigger-based validity
95
+ - \`validityEndDate\` - End date for date ranges (e.g., hotel checkout)
96
+ - \`validityDuration\` - Override duration in days/hours
97
+
98
+ **Custom keys:** Any arbitrary key becomes \`{{context.keyName}}\` placeholder.
99
+
100
+ **Use cases:**
101
+ - QR at hotel room: \`{ location: "Room 305", roomType: "Suite" }\`
102
+ - NFC at event entrance: \`{ eventName: "Summer Festival", zone: "VIP" }\`
103
+ - Kiosk-specific: \`{ deviceId: "kiosk-001", branch: "Downtown" }\``,
104
+ example: { location: 'Main Lobby', deviceId: 'kiosk-001', validityDate: '2026-04-20T11:00:00Z' }
105
+ }),
106
+ OptionalStrip(),
107
+ IsObject()
108
+ ], TriggerSourceCreateRequestDTO.prototype, "context", void 0);
87
109
  __decorate([
88
110
  ApiPropertyOptional({
89
111
  type: Number,
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-source.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/trigger-source.dto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trigger-source.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/trigger-source.dto.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { RedemptionTypeDTO } from "./redemptionType.dto";
2
2
  import { TokenUnitDTO } from "../token/token-unit.dto";
3
3
  import { UserStatusTypeDTO } from "../user-status-type.dto";
4
4
  import { ItemSupply } from "../item-supply.dto";
5
+ import type { DynamicContext } from "../../interfaces/dynamic-context.interface";
5
6
  export declare class RedemptionDTO {
6
7
  id: string;
7
8
  description: string | null;
@@ -18,5 +19,6 @@ export declare class RedemptionDTO {
18
19
  minUserStatusType: UserStatusTypeDTO | null;
19
20
  countryCodeRestrictions: string[] | null;
20
21
  tags: string[];
22
+ context?: DynamicContext;
21
23
  }
22
24
  //# sourceMappingURL=redemption.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redemption.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemption.dto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,qBAAa,aAAa;IAKtB,EAAE,EAAE,MAAM,CAAM;IAOhB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAOlC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAQ;IAO3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAO/B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;IAK9B,QAAQ,EAAE,OAAO,CAAS;IAK1B,iBAAiB,EAAE,MAAM,CAAK;IAO9B,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAO;IAMrC,UAAU,EAAE,YAAY,EAAE,CAAM;IAOhC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAI;IAQxB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAO;IAKhC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAO1B,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAO;IAOlD,uBAAuB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IAQhD,IAAI,EAAE,MAAM,EAAE,CAAM;CACvB"}
1
+ {"version":3,"file":"redemption.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemption.dto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAGjF,qBAAa,aAAa;IAKtB,EAAE,EAAE,MAAM,CAAM;IAOhB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAOlC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAQ;IAO3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAO/B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;IAK9B,QAAQ,EAAE,OAAO,CAAS;IAK1B,iBAAiB,EAAE,MAAM,CAAK;IAO9B,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAO;IAMrC,UAAU,EAAE,YAAY,EAAE,CAAM;IAOhC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAI;IAQxB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAO;IAKhC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAO1B,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAO;IAOlD,uBAAuB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IAQhD,IAAI,EAAE,MAAM,EAAE,CAAM;IAOpB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC5B"}
@@ -25,6 +25,7 @@ export class RedemptionDTO {
25
25
  minUserStatusType = null;
26
26
  countryCodeRestrictions = null;
27
27
  tags = [];
28
+ context;
28
29
  }
29
30
  __decorate([
30
31
  ApiProperty({
@@ -123,4 +124,11 @@ __decorate([
123
124
  default: []
124
125
  })
125
126
  ], RedemptionDTO.prototype, "tags", void 0);
127
+ __decorate([
128
+ ApiPropertyOptional({
129
+ description: '**ERC721 only** - Admin-defined dynamic context for AI prompts and trigger-based validity. Always applied to tokens minted from this redemption. Special keys: `validityDate`, `validityEndDate`, `validityDuration` for token expiry.',
130
+ type: 'object',
131
+ example: { eventName: 'Summer Sale', validityDuration: 30 }
132
+ })
133
+ ], RedemptionDTO.prototype, "context", void 0);
126
134
  //# sourceMappingURL=redemption.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redemption.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemption.dto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redemption.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemption.dto.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { DynamicContext } from '../../interfaces/dynamic-context.interface';
1
2
  export declare class RedemptionCreateRequestDTO {
2
3
  creditTokenAmount?: number;
3
4
  description?: string | null;
@@ -11,5 +12,6 @@ export declare class RedemptionCreateRequestDTO {
11
12
  maxPerUser?: number | null;
12
13
  countryCodeRestrictions?: string[] | null;
13
14
  tags?: string[];
15
+ context?: DynamicContext;
14
16
  }
15
17
  //# sourceMappingURL=redemptionCreate.request.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redemptionCreate.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionCreate.request.dto.ts"],"names":[],"mappings":"AAIA,qBAAa,0BAA0B;IAQnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAS3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAQ5B,IAAI,CAAC,EAAE,MAAM,CAAC;IASd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IASzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IASxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IASjC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IASpC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAS/B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAStB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAa3B,uBAAuB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAU1C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB"}
1
+ {"version":3,"file":"redemptionCreate.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionCreate.request.dto.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAEjF,qBAAa,0BAA0B;IAQnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAS3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAQ5B,IAAI,CAAC,EAAE,MAAM,CAAC;IASd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IASzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IASxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IASjC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IASpC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAS/B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAStB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAa3B,uBAAuB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAU1C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAShB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC5B"}
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { ApiPropertyOptional } from "@nestjs/swagger";
8
- import { IsNumber, IsString, IsUrl, IsArray, ValidateIf } from 'class-validator';
8
+ import { IsNumber, IsString, IsUrl, IsArray, ValidateIf, IsObject } from 'class-validator';
9
9
  import { OptionalStrip, OptionalStripNumber, OptionalNullify, OptionalNullifyNumber } from '../../decorators/index.js';
10
10
  export class RedemptionCreateRequestDTO {
11
11
  creditTokenAmount;
@@ -20,6 +20,7 @@ export class RedemptionCreateRequestDTO {
20
20
  maxPerUser;
21
21
  countryCodeRestrictions;
22
22
  tags;
23
+ context;
23
24
  }
24
25
  __decorate([
25
26
  ApiPropertyOptional({
@@ -132,4 +133,13 @@ __decorate([
132
133
  IsArray(),
133
134
  IsString({ each: true })
134
135
  ], RedemptionCreateRequestDTO.prototype, "tags", void 0);
136
+ __decorate([
137
+ ApiPropertyOptional({
138
+ description: '**ERC721 only** - Admin-defined dynamic context for AI prompts and trigger-based validity. Always applied to tokens minted from this redemption. Special keys: `validityDate`, `validityEndDate`, `validityDuration` for token expiry.',
139
+ type: 'object',
140
+ example: { eventName: 'Summer Sale', validityDuration: 30 }
141
+ }),
142
+ OptionalStrip(),
143
+ IsObject()
144
+ ], RedemptionCreateRequestDTO.prototype, "context", void 0);
135
145
  //# sourceMappingURL=redemptionCreate.request.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redemptionCreate.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionCreate.request.dto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redemptionCreate.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionCreate.request.dto.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { DynamicContext } from '../../interfaces/dynamic-context.interface';
1
2
  export declare class RedemptionRedeemRequestDTO {
2
3
  /**
3
4
  * The ID of the redemption to redeem
@@ -8,5 +9,6 @@ export declare class RedemptionRedeemRequestDTO {
8
9
  */
9
10
  redemptionId: string;
10
11
  businessId?: string | null;
12
+ context?: DynamicContext;
11
13
  }
12
14
  //# sourceMappingURL=redemptionRedeem.request.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redemptionRedeem.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionRedeem.request.dto.ts"],"names":[],"mappings":"AAIA,qBAAa,0BAA0B;IACnC;;;;;;OAMG;IAUH,YAAY,EAAG,MAAM,CAAC;IAStB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B"}
1
+ {"version":3,"file":"redemptionRedeem.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionRedeem.request.dto.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAEjF,qBAAa,0BAA0B;IACnC;;;;;;OAMG;IAUH,YAAY,EAAG,MAAM,CAAC;IAStB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAsB3B,OAAO,CAAC,EAAE,cAAc,CAAC;CAC5B"}
@@ -4,9 +4,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { ApiProperty } from "@nestjs/swagger";
8
- import { IsNotEmpty, IsUUID } from 'class-validator';
9
- import { OptionalNullify } from '../../decorators/index.js';
7
+ import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger";
8
+ import { IsNotEmpty, IsUUID, IsObject } from 'class-validator';
9
+ import { OptionalNullify, OptionalStrip } from '../../decorators/index.js';
10
10
  export class RedemptionRedeemRequestDTO {
11
11
  /**
12
12
  * The ID of the redemption to redeem
@@ -20,6 +20,7 @@ export class RedemptionRedeemRequestDTO {
20
20
  }) */
21
21
  redemptionId;
22
22
  businessId;
23
+ context;
23
24
  }
24
25
  __decorate([
25
26
  ApiProperty({
@@ -38,4 +39,26 @@ __decorate([
38
39
  OptionalNullify(),
39
40
  IsUUID()
40
41
  ], RedemptionRedeemRequestDTO.prototype, "businessId", void 0);
42
+ __decorate([
43
+ ApiPropertyOptional({
44
+ description: `**ERC721 only** - User-provided external context for template interpolation and AI prompts.
45
+
46
+ **SECURITY:** Only applied if TokenMetadata.allowExternalContextOverwrite is true (admin opt-in required). Redemption.context (admin-controlled) is ALWAYS applied regardless.
47
+
48
+ **Template Interpolation:** Values become available as \`{{context.keyName}}\` placeholders in TokenMetadata name/description fields and AI prompts.
49
+
50
+ **Special validity keys:**
51
+ - \`validityDate\` - Base date for trigger-based validity
52
+ - \`validityEndDate\` - End date for date ranges (e.g., hotel checkout)
53
+ - \`validityDuration\` - Override duration in days/hours
54
+
55
+ **Custom keys:** Any arbitrary key becomes \`{{context.keyName}}\` placeholder.
56
+
57
+ **Example:** \`{ guestName: "John", roomNumber: "305", validityEndDate: "2026-04-20T11:00:00Z" }\``,
58
+ type: 'object',
59
+ example: { guestName: 'John Doe', validityDate: '2026-04-15T14:00:00Z', validityEndDate: '2026-04-20T11:00:00Z' }
60
+ }),
61
+ OptionalStrip(),
62
+ IsObject()
63
+ ], RedemptionRedeemRequestDTO.prototype, "context", void 0);
41
64
  //# sourceMappingURL=redemptionRedeem.request.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redemptionRedeem.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionRedeem.request.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,OAAO,0BAA0B;IACnC;;;;;;OAMG;IACH;;SAEK;IAOL,YAAY,CAAU;IAStB,UAAU,CAAiB;CAC9B;AAVG;IANC,WAAW,CAAC;QACT,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE,MAAM;KACf,CAAC;IACD,UAAU,EAAE;IACZ,MAAM,EAAE;gEACa;AAStB;IAPC,WAAW,CAAC;QACT,WAAW,EAAE,+DAA+D;QAC5E,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACjB,CAAC;IACD,eAAe,EAAE;IACjB,MAAM,EAAE;8DACkB"}
1
+ {"version":3,"file":"redemptionRedeem.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionRedeem.request.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGlE,MAAM,OAAO,0BAA0B;IACnC;;;;;;OAMG;IACH;;SAEK;IAOL,YAAY,CAAU;IAStB,UAAU,CAAiB;IAsB3B,OAAO,CAAkB;CAC5B;AAhCG;IANC,WAAW,CAAC;QACT,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE,MAAM;KACf,CAAC;IACD,UAAU,EAAE;IACZ,MAAM,EAAE;gEACa;AAStB;IAPC,WAAW,CAAC;QACT,WAAW,EAAE,+DAA+D;QAC5E,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACjB,CAAC;IACD,eAAe,EAAE;IACjB,MAAM,EAAE;8DACkB;AAsB3B;IApBC,mBAAmB,CAAC;QACjB,WAAW,EAAE;;;;;;;;;;;;;mGAa8E;QAC3F,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,sBAAsB,EAAE;KACpH,CAAC;IACD,aAAa,EAAE;IACf,QAAQ,EAAE;2DACc"}
@@ -11,6 +11,7 @@ export declare class TenantUpdateRequestDTO {
11
11
  projectWebsite?: string;
12
12
  projectEmail?: string;
13
13
  projectImageUrl?: string;
14
+ projectLogoUrl?: string;
14
15
  allowedTokenIssuers?: ExternalTokenIssuerConfigDTO[];
15
16
  }
16
17
  //# sourceMappingURL=tenantUpdate.request.dto.d.ts.map