@encorekit/web-sdk 2.2.1 → 2.4.0

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 (269) hide show
  1. package/README.md +66 -1
  2. package/dist/cjs/index.cjs +1 -1
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/cjs/preview.cjs +2 -0
  5. package/dist/cjs/preview.cjs.map +1 -0
  6. package/dist/cjs/react.cjs +1 -1
  7. package/dist/cjs/react.cjs.map +1 -1
  8. package/dist/esm/chunks/ClaimReminder-DFyrm5bJ.js +2 -0
  9. package/dist/esm/chunks/ClaimReminder-DFyrm5bJ.js.map +1 -0
  10. package/dist/esm/chunks/GiftsButton-B0lVB463.js +2 -0
  11. package/dist/esm/chunks/GiftsButton-B0lVB463.js.map +1 -0
  12. package/dist/esm/chunks/TriggerHost-CNTiNrTH.js +2 -0
  13. package/dist/esm/chunks/TriggerHost-CNTiNrTH.js.map +1 -0
  14. package/dist/esm/chunks/autoPops-CngtK_R0.js +2 -0
  15. package/dist/esm/chunks/autoPops-CngtK_R0.js.map +1 -0
  16. package/dist/esm/chunks/customClaim-B4uj-aOc.js +2 -0
  17. package/dist/esm/chunks/customClaim-B4uj-aOc.js.map +1 -0
  18. package/dist/esm/chunks/eligibility-BY7fL8Ve.js +2 -0
  19. package/dist/esm/chunks/eligibility-BY7fL8Ve.js.map +1 -0
  20. package/dist/esm/chunks/index-CaBSqauy.js +2 -0
  21. package/dist/esm/chunks/index-CaBSqauy.js.map +1 -0
  22. package/dist/esm/chunks/lookValues-B9z2VWpH.js +2 -0
  23. package/dist/esm/chunks/lookValues-B9z2VWpH.js.map +1 -0
  24. package/dist/esm/chunks/sduiView-Ds7QtFId.js +2 -0
  25. package/dist/esm/chunks/sduiView-Ds7QtFId.js.map +1 -0
  26. package/dist/esm/chunks/spot-DkKMLpB-.js +2 -0
  27. package/dist/esm/chunks/spot-DkKMLpB-.js.map +1 -0
  28. package/dist/esm/chunks/template-B9p4CbPD.js +2 -0
  29. package/dist/esm/chunks/template-B9p4CbPD.js.map +1 -0
  30. package/dist/esm/chunks/textSlots-BnwxUg9V.js +2 -0
  31. package/dist/esm/chunks/textSlots-BnwxUg9V.js.map +1 -0
  32. package/dist/esm/chunks/timers-Bva4yoGM.js +2 -0
  33. package/dist/esm/chunks/timers-Bva4yoGM.js.map +1 -0
  34. package/dist/esm/index.js +1 -1
  35. package/dist/esm/index.js.map +1 -1
  36. package/dist/esm/preview.js +2 -0
  37. package/dist/esm/preview.js.map +1 -0
  38. package/dist/esm/react.js +1 -1
  39. package/dist/esm/react.js.map +1 -1
  40. package/dist/umd/encore.min.js +1 -1
  41. package/dist/umd/encore.min.js.map +1 -1
  42. package/package.json +9 -1
  43. package/types/analytics/DiagnosticsOutbox.d.ts +1 -0
  44. package/types/analytics/DiagnosticsOutbox.d.ts.map +1 -1
  45. package/types/analytics/events.d.ts +108 -8
  46. package/types/analytics/events.d.ts.map +1 -1
  47. package/types/analytics/models.d.ts +2 -0
  48. package/types/analytics/models.d.ts.map +1 -1
  49. package/types/analytics/transport.d.ts +6 -0
  50. package/types/analytics/transport.d.ts.map +1 -1
  51. package/types/api/APIClient.d.ts +70 -33
  52. package/types/api/APIClient.d.ts.map +1 -1
  53. package/types/api/contract.d.ts +4 -1
  54. package/types/api/contract.d.ts.map +1 -1
  55. package/types/api/generated/types.d.ts +994 -17
  56. package/types/api/generated/types.d.ts.map +1 -1
  57. package/types/api/models.d.ts +29 -8
  58. package/types/api/models.d.ts.map +1 -1
  59. package/types/api/offerBuilder.d.ts +51 -0
  60. package/types/api/offerBuilder.d.ts.map +1 -0
  61. package/types/core/Configuration.d.ts +9 -0
  62. package/types/core/Configuration.d.ts.map +1 -1
  63. package/types/core/Encore.d.ts +145 -3
  64. package/types/core/Encore.d.ts.map +1 -1
  65. package/types/core/OfferManager.d.ts +27 -5
  66. package/types/core/OfferManager.d.ts.map +1 -1
  67. package/types/core/PlacementBuilder.d.ts +6 -1
  68. package/types/core/PlacementBuilder.d.ts.map +1 -1
  69. package/types/core/SignalManager.d.ts.map +1 -1
  70. package/types/core/StorageManager.d.ts +3 -2
  71. package/types/core/StorageManager.d.ts.map +1 -1
  72. package/types/core/StrictUnlockReconciler.d.ts +1 -1
  73. package/types/core/StrictUnlockReconciler.d.ts.map +1 -1
  74. package/types/core/claimHandle.d.ts +44 -0
  75. package/types/core/claimHandle.d.ts.map +1 -0
  76. package/types/core/claimLog.d.ts +102 -0
  77. package/types/core/claimLog.d.ts.map +1 -0
  78. package/types/core/claimRefusal.d.ts +3 -0
  79. package/types/core/claimRefusal.d.ts.map +1 -0
  80. package/types/core/claimScreenVariant.d.ts +3 -0
  81. package/types/core/claimScreenVariant.d.ts.map +1 -0
  82. package/types/core/claimStatusCheck.d.ts +62 -0
  83. package/types/core/claimStatusCheck.d.ts.map +1 -0
  84. package/types/core/giftVariant.d.ts +5 -0
  85. package/types/core/giftVariant.d.ts.map +1 -1
  86. package/types/core/hostDisplay.d.ts +9 -2
  87. package/types/core/hostDisplay.d.ts.map +1 -1
  88. package/types/core/sduiVariables.d.ts +20 -0
  89. package/types/core/sduiVariables.d.ts.map +1 -0
  90. package/types/core/strings.d.ts +114 -0
  91. package/types/core/strings.d.ts.map +1 -0
  92. package/types/core/unlockCode.d.ts +12 -2
  93. package/types/core/unlockCode.d.ts.map +1 -1
  94. package/types/core/userKeys.d.ts +7 -0
  95. package/types/core/userKeys.d.ts.map +1 -0
  96. package/types/core/version.d.ts +1 -1
  97. package/types/experiments/ExposureOutbox.d.ts +1 -0
  98. package/types/experiments/ExposureOutbox.d.ts.map +1 -1
  99. package/types/preview.d.ts +51 -0
  100. package/types/preview.d.ts.map +1 -0
  101. package/types/react.d.ts +53 -1
  102. package/types/react.d.ts.map +1 -1
  103. package/types/sdui/actions.d.ts +93 -0
  104. package/types/sdui/actions.d.ts.map +1 -0
  105. package/types/sdui/bindings.d.ts +63 -0
  106. package/types/sdui/bindings.d.ts.map +1 -0
  107. package/types/sdui/compile.d.ts +88 -0
  108. package/types/sdui/compile.d.ts.map +1 -0
  109. package/types/sdui/conditions.d.ts +22 -0
  110. package/types/sdui/conditions.d.ts.map +1 -0
  111. package/types/sdui/context.d.ts +132 -0
  112. package/types/sdui/context.d.ts.map +1 -0
  113. package/types/sdui/countdown.d.ts +31 -0
  114. package/types/sdui/countdown.d.ts.map +1 -0
  115. package/types/sdui/decode.d.ts +35 -0
  116. package/types/sdui/decode.d.ts.map +1 -0
  117. package/types/sdui/deps.d.ts +43 -0
  118. package/types/sdui/deps.d.ts.map +1 -0
  119. package/types/sdui/dominantColor.d.ts +24 -0
  120. package/types/sdui/dominantColor.d.ts.map +1 -0
  121. package/types/sdui/elements/confetti.d.ts +38 -0
  122. package/types/sdui/elements/confetti.d.ts.map +1 -0
  123. package/types/sdui/elements/content.d.ts +27 -0
  124. package/types/sdui/elements/content.d.ts.map +1 -0
  125. package/types/sdui/elements/interactive.d.ts +48 -0
  126. package/types/sdui/elements/interactive.d.ts.map +1 -0
  127. package/types/sdui/elements/layout.d.ts +41 -0
  128. package/types/sdui/elements/layout.d.ts.map +1 -0
  129. package/types/sdui/elements/marquee.d.ts +17 -0
  130. package/types/sdui/elements/marquee.d.ts.map +1 -0
  131. package/types/sdui/elements/progress.d.ts +10 -0
  132. package/types/sdui/elements/progress.d.ts.map +1 -0
  133. package/types/sdui/elements/shared.d.ts +138 -0
  134. package/types/sdui/elements/shared.d.ts.map +1 -0
  135. package/types/sdui/elements/symbols.d.ts +22 -0
  136. package/types/sdui/elements/symbols.d.ts.map +1 -0
  137. package/types/sdui/elements/triggerText.d.ts +55 -0
  138. package/types/sdui/elements/triggerText.d.ts.map +1 -0
  139. package/types/sdui/host.d.ts +274 -0
  140. package/types/sdui/host.d.ts.map +1 -0
  141. package/types/sdui/inlineMarkup.d.ts +22 -0
  142. package/types/sdui/inlineMarkup.d.ts.map +1 -0
  143. package/types/sdui/lookValues.d.ts +50 -0
  144. package/types/sdui/lookValues.d.ts.map +1 -0
  145. package/types/sdui/model.d.ts +130 -0
  146. package/types/sdui/model.d.ts.map +1 -0
  147. package/types/sdui/motion.d.ts +37 -0
  148. package/types/sdui/motion.d.ts.map +1 -0
  149. package/types/sdui/precheck.d.ts +94 -0
  150. package/types/sdui/precheck.d.ts.map +1 -0
  151. package/types/sdui/scrollMath.d.ts +32 -0
  152. package/types/sdui/scrollMath.d.ts.map +1 -0
  153. package/types/sdui/style.d.ts +99 -0
  154. package/types/sdui/style.d.ts.map +1 -0
  155. package/types/sdui/triggerKit.d.ts +24 -0
  156. package/types/sdui/triggerKit.d.ts.map +1 -0
  157. package/types/sdui/unrunnable.d.ts +11 -0
  158. package/types/sdui/unrunnable.d.ts.map +1 -0
  159. package/types/sdui/vocabulary.d.ts +119 -0
  160. package/types/sdui/vocabulary.d.ts.map +1 -0
  161. package/types/triggers/claimReminder/ClaimReminder.d.ts +65 -0
  162. package/types/triggers/claimReminder/ClaimReminder.d.ts.map +1 -0
  163. package/types/triggers/claimReminder/bindings.d.ts +40 -0
  164. package/types/triggers/claimReminder/bindings.d.ts.map +1 -0
  165. package/types/triggers/claimReminder/config.d.ts +56 -0
  166. package/types/triggers/claimReminder/config.d.ts.map +1 -0
  167. package/types/triggers/claimReminder/eligibility.d.ts +37 -0
  168. package/types/triggers/claimReminder/eligibility.d.ts.map +1 -0
  169. package/types/triggers/claimReminder/servedWindow.d.ts +15 -0
  170. package/types/triggers/claimReminder/servedWindow.d.ts.map +1 -0
  171. package/types/triggers/claimReminder/source.d.ts +29 -0
  172. package/types/triggers/claimReminder/source.d.ts.map +1 -0
  173. package/types/triggers/giftsButton/GiftsButton.d.ts +60 -0
  174. package/types/triggers/giftsButton/GiftsButton.d.ts.map +1 -0
  175. package/types/triggers/giftsButton/config.d.ts +53 -0
  176. package/types/triggers/giftsButton/config.d.ts.map +1 -0
  177. package/types/triggers/giftsButton/spot.d.ts +54 -0
  178. package/types/triggers/giftsButton/spot.d.ts.map +1 -0
  179. package/types/triggers/host/TriggerHost.d.ts +127 -0
  180. package/types/triggers/host/TriggerHost.d.ts.map +1 -0
  181. package/types/triggers/host/autoPops.d.ts +16 -0
  182. package/types/triggers/host/autoPops.d.ts.map +1 -0
  183. package/types/triggers/host/configCache.d.ts +29 -0
  184. package/types/triggers/host/configCache.d.ts.map +1 -0
  185. package/types/triggers/host/customClaim.d.ts +85 -0
  186. package/types/triggers/host/customClaim.d.ts.map +1 -0
  187. package/types/triggers/host/dismissStore.d.ts +37 -0
  188. package/types/triggers/host/dismissStore.d.ts.map +1 -0
  189. package/types/triggers/host/readThrottle.d.ts +15 -0
  190. package/types/triggers/host/readThrottle.d.ts.map +1 -0
  191. package/types/triggers/host/registry.d.ts +17 -0
  192. package/types/triggers/host/registry.d.ts.map +1 -0
  193. package/types/triggers/host/sduiView.d.ts +31 -0
  194. package/types/triggers/host/sduiView.d.ts.map +1 -0
  195. package/types/triggers/host/template.d.ts +28 -0
  196. package/types/triggers/host/template.d.ts.map +1 -0
  197. package/types/triggers/host/textSlots.d.ts +35 -0
  198. package/types/triggers/host/textSlots.d.ts.map +1 -0
  199. package/types/triggers/host/theme.d.ts +87 -0
  200. package/types/triggers/host/theme.d.ts.map +1 -0
  201. package/types/triggers/host/timers.d.ts +11 -0
  202. package/types/triggers/host/timers.d.ts.map +1 -0
  203. package/types/triggers/host/types.d.ts +278 -0
  204. package/types/triggers/host/types.d.ts.map +1 -0
  205. package/types/triggers/host/wire.d.ts +55 -0
  206. package/types/triggers/host/wire.d.ts.map +1 -0
  207. package/types/triggers/preview.d.ts +78 -0
  208. package/types/triggers/preview.d.ts.map +1 -0
  209. package/types/triggers/request.d.ts +53 -0
  210. package/types/triggers/request.d.ts.map +1 -0
  211. package/types/types.d.ts +420 -4
  212. package/types/types.d.ts.map +1 -1
  213. package/types/ui/ClaimScreen.d.ts +62 -0
  214. package/types/ui/ClaimScreen.d.ts.map +1 -0
  215. package/types/ui/CodeUnlock.d.ts +26 -2
  216. package/types/ui/CodeUnlock.d.ts.map +1 -1
  217. package/types/ui/GiftHero.d.ts.map +1 -1
  218. package/types/ui/GiftList.d.ts.map +1 -1
  219. package/types/ui/GiftPicker.d.ts.map +1 -1
  220. package/types/ui/GiftPickerHero.d.ts.map +1 -1
  221. package/types/ui/GiftReveal.d.ts.map +1 -1
  222. package/types/ui/GiftSheet.d.ts +5 -5
  223. package/types/ui/GiftSheet.d.ts.map +1 -1
  224. package/types/ui/GiftUnwrap.d.ts.map +1 -1
  225. package/types/ui/OfferCard.d.ts.map +1 -1
  226. package/types/ui/OfferCarousel.d.ts.map +1 -1
  227. package/types/ui/OfferModal.d.ts +31 -6
  228. package/types/ui/OfferModal.d.ts.map +1 -1
  229. package/types/ui/PrimerScreen.d.ts +2 -0
  230. package/types/ui/PrimerScreen.d.ts.map +1 -1
  231. package/types/ui/RedemptionScreen.d.ts +5 -0
  232. package/types/ui/RedemptionScreen.d.ts.map +1 -1
  233. package/types/ui/RewardActions.d.ts.map +1 -1
  234. package/types/ui/RewardCard.d.ts.map +1 -1
  235. package/types/ui/SduiRewardSurface.d.ts +145 -0
  236. package/types/ui/SduiRewardSurface.d.ts.map +1 -0
  237. package/types/ui/Tooltip.d.ts.map +1 -1
  238. package/types/ui/brandComponents.d.ts.map +1 -1
  239. package/types/ui/brandTint.d.ts.map +1 -1
  240. package/types/ui/colorScheme.d.ts +15 -0
  241. package/types/ui/colorScheme.d.ts.map +1 -0
  242. package/types/ui/covered.d.ts +12 -0
  243. package/types/ui/covered.d.ts.map +1 -0
  244. package/types/ui/giftCategoryGroups.d.ts +13 -0
  245. package/types/ui/giftCategoryGroups.d.ts.map +1 -1
  246. package/types/ui/giftCopy.d.ts +14 -9
  247. package/types/ui/giftCopy.d.ts.map +1 -1
  248. package/types/ui/giftUnwrapCopy.d.ts.map +1 -1
  249. package/types/ui/imageURL.d.ts +44 -0
  250. package/types/ui/imageURL.d.ts.map +1 -0
  251. package/types/ui/impressionGate.d.ts +9 -0
  252. package/types/ui/impressionGate.d.ts.map +1 -1
  253. package/types/ui/offerBadge.d.ts.map +1 -1
  254. package/types/ui/rewardSurface.d.ts +11 -1
  255. package/types/ui/rewardSurface.d.ts.map +1 -1
  256. package/types/ui/sduiTheme.d.ts +48 -0
  257. package/types/ui/sduiTheme.d.ts.map +1 -0
  258. package/types/ui/sheetDetents.d.ts +28 -0
  259. package/types/ui/sheetDetents.d.ts.map +1 -0
  260. package/types/ui/styles.d.ts +11 -8
  261. package/types/ui/styles.d.ts.map +1 -1
  262. package/types/ui/termsLine.d.ts +3 -3
  263. package/types/ui/termsLine.d.ts.map +1 -1
  264. package/types/ui/toast.d.ts +11 -0
  265. package/types/ui/toast.d.ts.map +1 -0
  266. package/types/utils/logger.d.ts +10 -0
  267. package/types/utils/logger.d.ts.map +1 -1
  268. package/types/utils/text.d.ts +17 -0
  269. package/types/utils/text.d.ts.map +1 -1
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * What stays hand-written here:
10
10
  * - `OfferModel` / `TransactionModel`: SDK-internal VIEW models (assembled by the
11
- * client, e.g. APIClient.fetchOffers flattens Campaign×Creative → OfferModel).
11
+ * client: `offerBuilder.ts` builds one OfferModel per campaign).
12
12
  * They are not backend contract shapes, so they are not generated.
13
13
  * - `*Request` types: the SDK's request-shaping helpers. (No contract consumers.)
14
14
  */
@@ -21,11 +21,15 @@ export interface OfferModel {
21
21
  id: string;
22
22
  title: string;
23
23
  description: string;
24
+ /** The creative's own `description`, which SDUI's `offerDescription` reads, as Swift does. */
25
+ creativeDescription?: string;
24
26
  imageUrl?: string;
25
- ctaText: string;
27
+ /** Absent when the server sends none: the card shows its own `card.claim` string. */
28
+ ctaText?: string;
26
29
  advertiserUrl: string;
27
30
  campaignId: string;
28
- creativeId: string;
31
+ /** Absent for a campaign served without a creative (no picture). */
32
+ creativeId?: string;
29
33
  merchantName?: string;
30
34
  logoUrl?: string;
31
35
  /**
@@ -45,6 +49,12 @@ export interface OfferModel {
45
49
  * `advertiserUrl`. See `readShareUrl` in `APIClient.ts` and `core/share.ts`.
46
50
  */
47
51
  shareUrl?: string;
52
+ /**
53
+ * The advertiser's bare hostname (`campaign.expectedDomain`, `www.` dropped), for the
54
+ * claim screen's "Finish on {domain}". Display only: never requested. See
55
+ * `readExpectedDomain` in `offerBuilder.ts`.
56
+ */
57
+ expectedDomain?: string;
48
58
  /**
49
59
  * Campaign-level perk line, e.g. "Enjoy 30 days of Apple Music free". Only set
50
60
  * when non-empty.
@@ -71,21 +81,32 @@ export interface OfferModel {
71
81
  * `ui/giftCategoryGroups.ts` maps it onto a gift sheet tab. Trimmed, only set when
72
82
  * non-empty.
73
83
  *
74
- * ⚠️ PROPOSED FIELD, NOT IN THE CONTRACT. The backend does not send a category
75
- * today; this is read tolerantly from `campaign.category` on the `/offers/search`
76
- * response, pending a Backend Change Report that adds it. Until that lands it is
77
- * always undefined against a real backend, and the sheet renders exactly as it did
78
- * before (one list, no tabs). See `readProposedCategory` in `APIClient.ts`.
84
+ * Read tolerantly from `campaign.category` on the `/offers/search` response (nullable
85
+ * in the contract). Absent, the sheet renders one list with no tabs. See
86
+ * `readCampaignText` in `offerBuilder.ts`.
87
+ *
88
+ * Stays English on every locale: it is a key, never display text.
79
89
  */
80
90
  category?: string;
91
+ /**
92
+ * The gift sheet group the server filed this offer under ("Watch & listen", "Money",
93
+ * "Everyday"), English, trimmed. Preferred over mapping `category` locally.
94
+ */
95
+ categoryGroup?: string;
96
+ /** `categoryGroup` in the response locale, for the tab label only. */
97
+ categoryGroupDisplayName?: string;
81
98
  instructions?: {
82
99
  title: string;
83
100
  subtitle: string;
84
101
  ctaButtonText?: string;
102
+ /** The step's image, when it has one. */
103
+ imageUrl?: string;
85
104
  }[];
86
105
  quickInstructions?: string;
87
106
  tooltipText?: string;
88
107
  trackingParameters?: Record<string, string>;
108
+ /** Admin copy a variant draws by key (`propertyKey`). Blank values are absent. */
109
+ displayProperties?: Record<string, string>;
89
110
  }
90
111
  export interface TransactionModel {
91
112
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/api/models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/api/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * `/offers/search` campaigns → the SDK's `OfferModel` list, ONE offer per campaign.
3
+ *
4
+ * Creative first: when a campaign arrives with a creative, every field
5
+ * comes from that creative exactly as before, and the offer-level fields are ignored.
6
+ * The switch to campaign-owned values happens on the server, which composes the
7
+ * served creative from the campaign, so every client flips together.
8
+ *
9
+ * Only a campaign with NO active creative reads the offer-level fields. Its claim link
10
+ * is `destinationUrl` + `trackingParameters` taken together, and without usable
11
+ * tracking the campaign is skipped: a link without it could not attribute the claim.
12
+ */
13
+ import type { OfferModel } from './models';
14
+ /**
15
+ * A campaign's category field, read tolerantly: only a non-blank string is kept (trimmed).
16
+ * Anything else, and the field's absence on an older backend, is `undefined`, so a
17
+ * response with none of them maps to one list with no tabs.
18
+ *
19
+ * `category` is the shelf taxonomy name (nullable free string in the contract);
20
+ * `categoryGroup` is the gift sheet group the server filed it under (English, a key);
21
+ * `categoryGroupDisplayName` is that group in the response locale, for the tab label.
22
+ */
23
+ export declare function readCampaignText(campaign: unknown, key: 'category' | 'categoryGroup' | 'categoryGroupDisplayName'): string | undefined;
24
+ /**
25
+ * A campaign-level URL (`heroImageUrl`, `termsUrl`), read tolerantly: a non-blank string,
26
+ * trimmed, that passes the SDK's https guard. Anything else, a `javascript:` or plain
27
+ * `http:` row included, is dropped, so a bad row can never inject a scheme.
28
+ */
29
+ export declare function readCampaignUrl(campaign: unknown, key: 'heroImageUrl' | 'termsUrl'): string | undefined;
30
+ /**
31
+ * The link a user can send someone for this offer (`campaign.shareUrl`, nullable in the
32
+ * contract), read tolerantly: a non-blank string,
33
+ * trimmed, that parses as an ABSOLUTE `http:` or `https:` URL. Anything else is absent,
34
+ * which the share action reports as `missing_share_link`.
35
+ *
36
+ * Only the field is dropped, never the offer: a bad link costs one button, not the
37
+ * offer list. A relative value is absent too, because `navigator.share` would resolve
38
+ * it against the HOST page and send the publisher's own URL.
39
+ */
40
+ export declare function readShareUrl(campaign: unknown): string | undefined;
41
+ /**
42
+ * The advertiser's hostname for the claim screen's "Finish on {domain}"
43
+ * (`campaign.expectedDomain`): trimmed, lowercased, a leading `www.` and a trailing root dot
44
+ * dropped. Only a bare hostname is kept, so a bad row can never put a URL on screen.
45
+ */
46
+ export declare function readExpectedDomain(campaign: unknown): string | undefined;
47
+ /** String values only, and a blank one is absent, as on iOS. Empty → undefined. */
48
+ export declare function readDisplayProperties(value: unknown): Record<string, string> | undefined;
49
+ /** Never throws: a malformed campaign is skipped, not allowed to fail the list. */
50
+ export declare function buildOffers(campaigns: readonly unknown[] | null | undefined): OfferModel[];
51
+ //# sourceMappingURL=offerBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offerBuilder.d.ts","sourceRoot":"","sources":["../../src/api/offerBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,UAAU,GAAG,eAAe,GAAG,0BAA0B,GAC7D,MAAM,GAAG,SAAS,CAMpB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,cAAc,GAAG,UAAU,GAC/B,MAAM,GAAG,SAAS,CAKpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAYlE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAYxE;AAuCD,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAQxF;AA2ID,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,EAAE,CAQ1F"}
@@ -3,6 +3,13 @@
3
3
  * Validates and stores SDK configuration
4
4
  */
5
5
  import type { EncoreConfig } from '../types';
6
+ /**
7
+ * @internal Not in `EncoreConfig`: scopes the offers search to the presented variant, which
8
+ * the server filters on links it is due to drop. Only a literal `true` turns it on.
9
+ */
10
+ export interface InternalConfigOptions {
11
+ filterOffersByVariant?: boolean;
12
+ }
6
13
  export declare class Configuration {
7
14
  #private;
8
15
  /**
@@ -41,6 +48,8 @@ export declare class Configuration {
41
48
  getUnlockMode(): 'strict' | 'optimistic';
42
49
  /** Whether a labelled reward placement resolves its own variant. See `EncoreConfig`. */
43
50
  getResolveVariantsByPlacement(): boolean;
51
+ /** Whether the offers search sends the presented variant. See `InternalConfigOptions`. */
52
+ getFilterOffersByVariant(): boolean;
44
53
  /**
45
54
  * Reset configuration (primarily for testing)
46
55
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Configuration.d.ts","sourceRoot":"","sources":["../../src/core/Configuration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAU7C,qBAAa,aAAa;;IAIxB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO;IAkGxC;;OAEG;IACH,SAAS,IAAI,YAAY,GAAG,IAAI;IAIhC;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;;OAGG;IACH,aAAa,IAAI,QAAQ,GAAG,YAAY;IAIxC,wFAAwF;IACxF,6BAA6B,IAAI,OAAO;IAIxC;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd"}
1
+ {"version":3,"file":"Configuration.d.ts","sourceRoot":"","sources":["../../src/core/Configuration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAUD,qBAAa,aAAa;;IAIxB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO;IAmGxC;;OAEG;IACH,SAAS,IAAI,YAAY,GAAG,IAAI;IAIhC;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;;OAGG;IACH,aAAa,IAAI,QAAQ,GAAG,YAAY;IAIxC,wFAAwF;IACxF,6BAA6B,IAAI,OAAO;IAIxC,0FAA0F;IAC1F,wBAAwB,IAAI,OAAO;IAInC;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd"}
@@ -2,16 +2,96 @@
2
2
  * Main Encore SDK Class
3
3
  * Singleton class that serves as the public API entry point
4
4
  */
5
- import type { EncoreConfig, UserAttributes, EntitlementType, EntitlementScope, EventHandler, Unsubscribe, PresentationOptions, PresentationResult, PlacementOptions, VerificationStatus, PlacementBuilder as IPlacementBuilder, RedeemOptions, RedeemResult, ShowResult, Transaction } from '../types';
5
+ import type { EncoreConfig, UserAttributes, EntitlementType, EntitlementScope, EventHandler, Unsubscribe, PresentationOptions, PresentationResult, PlacementOptions, VerificationStatus, PlacementBuilder as IPlacementBuilder, RedeemOptions, RedeemResult, ShowResult, Transaction, UseCase, EncoreClaim, EncoreClaimOptions, EncoreTriggers } from '../types';
6
+ import { APIClient } from '../api/APIClient';
7
+ import { type PlacementResolutionOverride } from '../analytics/placementResolved';
6
8
  import type { NCLExperimentState } from '../experiments/types';
9
+ import type { ClaimReminderSource } from '../triggers/claimReminder/source';
7
10
  import { type LogLevel } from '../utils/logger';
11
+ /**
12
+ * What an internal exit hands back to `show()`'s wrapper, so exactly one
13
+ * `sdk_placement_resolved` record is written per attempt no matter which path
14
+ * produced the result. Mirrors iOS's `OfferSheetCoordinator.present()` wrapping a
15
+ * `presentCore()`.
16
+ *
17
+ * `override` is set ONLY by sites whose public `ShowResult` collapses something the
18
+ * record still needs — the deliberately overloaded `'unavailable'`, and the
19
+ * `UNKNOWN_ERROR` code shared by three structurally different failures. See
20
+ * `PlacementResolutionOverride`.
21
+ */
22
+ export interface OfferFlowOutcome {
23
+ result: ShowResult;
24
+ /**
25
+ * THE id for this attempt — the same one every analytics event from this attempt
26
+ * carries, so the terminal record joins to all of them. Required: it is minted
27
+ * above every gate in #showCore, so there is no exit that lacks one.
28
+ */
29
+ presentationId: string;
30
+ variantId?: string;
31
+ override?: PlacementResolutionOverride;
32
+ /**
33
+ * INTERNAL: a trigger's automatic pop dropped before its sheet showed (its mount went
34
+ * away). Nothing happened, so no placement record is written, as on iOS.
35
+ */
36
+ aborted?: true;
37
+ }
38
+ /**
39
+ * The whole years since a date of birth, on today's UTC date as the native SDKs count
40
+ * it: floored, so the age turns only on the birthday itself. Null for an unreadable or
41
+ * future date, or one that gives an age outside 0 to 120.
42
+ */
43
+ export declare function ageFromDateOfBirth(value: unknown, now?: Date): number | null;
44
+ /**
45
+ * Attributes as they may be kept (`age` for this page load only, see savedAttributes): `age` only as a number from 0 to 120,
46
+ * floored to whole years (15.5 is 15), so a fractional age still restricts a minor; a
47
+ * `dateOfBirth` only when it names a real date. The date stays on the device, and
48
+ * `outgoingAttributes` turns it into an age each time attributes are sent.
49
+ */
50
+ export declare function cleanUserAttributes<T extends UserAttributes>(attributes: T): T;
51
+ /**
52
+ * Kept attributes as they are sent: never the date of birth, and `age` as of now. The
53
+ * age comes from `age`, from `dateOfBirth`, or, given both, the lower of the two, so a
54
+ * minor is never sent as an adult. A date that gives no age adds none.
55
+ */
56
+ export declare function outgoingAttributes<T extends UserAttributes>(attributes: T, now?: Date): T;
8
57
  export declare class EncoreSDK {
9
58
  #private;
59
+ /**
60
+ * Drop-in UI pieces a host places in its own layout.
61
+ *
62
+ * `mount(id, element, { placement, useCase, autoOpen, ... })` draws trigger
63
+ * `id` in `element`. It renders nothing (zero height) until there is something to
64
+ * show, including before `configure()`, for an id this version does not ship, and for
65
+ * churn, and never throws. An untyped `layout` pins a look for demos and tests only
66
+ * (as Swift's `@_spi(EncoreDemo)`): apps never pin, Encore picks looks per placement. Returns a handle whose
67
+ * `unmount()` removes it. `claimReminder.mount(element, options)` is
68
+ * `mount('claimReminder', element, options)`, and likewise `giftsButton`.
69
+ */
70
+ readonly triggers: EncoreTriggers;
71
+ /**
72
+ * Your own gifts button or claim reminder, counted and driven by Encore: a handle for
73
+ * `placement` whose `state` says what to draw (`hidden`, `gifts`, `reminder`). Bind your
74
+ * view with `handle.bind(element)` (or report visibility with `setVisible` and call
75
+ * `tap()`); Encore counts the impression and the tap, opens the reward sheet, and
76
+ * calls `onResult`. Encore decides what it shows after a claim and after a completion
77
+ * (rules read once the view is on screen; the defaults until then). Never throws; `hidden` until the
78
+ * SDK is configured.
79
+ */
80
+ claim(options: EncoreClaimOptions): EncoreClaim;
81
+ /**
82
+ * 🔴 INTERNAL: binds the claims adapter the claim reminder reads (null unbinds).
83
+ * Static, so it stays off the public instance. Its callers are the SDK's own
84
+ * mapper over the claims bank, once that is on main, and tests.
85
+ */
86
+ static bindClaimReminderSource(sdk: EncoreSDK, source: ClaimReminderSource | null): void;
10
87
  constructor();
11
88
  /**
12
89
  * Configure the SDK with API key and options
13
90
  */
14
91
  configure(config: EncoreConfig): boolean;
92
+ /**
93
+ * Identify user with custom user ID and optionally set attributes
94
+ */
15
95
  identify(userId: string, attributes?: UserAttributes): void;
16
96
  /**
17
97
  * Get current user ID
@@ -87,9 +167,45 @@ export declare class EncoreSDK {
87
167
  */
88
168
  revokeEntitlements(): Promise<boolean>;
89
169
  /**
90
- * Set user attributes (merges with existing attributes)
170
+ * Set user attributes (merges with existing attributes).
171
+ *
172
+ * A `language` here is not kept as an attribute: it is forwarded to
173
+ * `setLanguage()` (see `UserAttributes.language`, deprecated).
91
174
  */
92
175
  setUserAttributes(attributes: UserAttributes): void;
176
+ /**
177
+ * Show Encore's copy and offers in `tag`, a BCP 47 language tag such as `'fr'` or
178
+ * `'pt-BR'`, until `clearLanguage()`. Any case is accepted and stored in BCP 47
179
+ * case (`'PT-br'` → `'pt-BR'`), with a deprecated code replaced (`'iw'` →
180
+ * `'he'`); separators are hyphens only.
181
+ *
182
+ * The tag rides the next `/config` and `/offers/search` requests, so the sheet's
183
+ * copy and its offers are always in one language, and analytics events carry the
184
+ * locale the server then serves. Only languages enabled for your app are served;
185
+ * anything else falls back to the browser's `Accept-Language`, then the app's
186
+ * default language. Call it after `configure()`.
187
+ *
188
+ * The choice is kept on this device (localStorage, when the browser allows it)
189
+ * until `clearLanguage()`: a later `configure()`, a reload and `reset()` keep it.
190
+ * A change drops the served strings and the cached copy and offers and asks
191
+ * `/config` again at once; once it answers, the offers are fetched again in the new
192
+ * language and `user_identified` is sent again, as on iOS and Android. Setting the
193
+ * current language again does nothing. A value that is not a well-formed tag
194
+ * (`'pt_BR'`, `'english'`, `' fr'`) is ignored with one console warning, never
195
+ * thrown, and the current language stays. A new identity (`identify()` with
196
+ * another user, `reset()`) keeps it.
197
+ * iOS, Android, React Native and Flutter have the same call.
198
+ */
199
+ setLanguage(tag: string): void;
200
+ /**
201
+ * Stop choosing a language: forget the `setLanguage()` choice on this device, so
202
+ * copy and offers follow the browser's `Accept-Language` again. Every attribute is
203
+ * kept. Like any language change it drops the served strings and the config and
204
+ * offer caches, and it asks `/config` again at once for the current user (with no
205
+ * `?language=`), then fetches the offers again and identifies again. A no-op when
206
+ * no language was set. iOS, Android, React Native and Flutter have the same call.
207
+ */
208
+ clearLanguage(): void;
93
209
  /**
94
210
  * Get current user attributes
95
211
  */
@@ -99,7 +215,9 @@ export declare class EncoreSDK {
99
215
  *
100
216
  * Resolves 'claimed' when the user claims an offer (a transaction is recorded and
101
217
  * the advertiser opens in a new tab), 'dismissed' if the user closes the carousel,
102
- * or 'unavailable' if there are no eligible offers.
218
+ * or 'unavailable' if there are no eligible offers. A served variant with a
219
+ * post-claim screen keeps the sheet up, as iOS does, and resolves 'claimed' when
220
+ * that sheet closes.
103
221
  *
104
222
  * @param placementId The publisher's placement label. Attributed on the offers
105
223
  * request AND stamped as `placement_id` on every analytics row this
@@ -193,6 +311,30 @@ export declare class EncoreSDK {
193
311
  * placement("cancel_flow", { appearance: { ... } })
194
312
  */
195
313
  placement(idOrOptions?: string | PlacementOptions, options?: PlacementOptions): IPlacementBuilder;
314
+ /**
315
+ * 🔴 INTERNAL — the render-only preview behind `@encorekit/web-sdk/preview`, its only
316
+ * caller (which owns the session, `ready` and `destroy()`).
317
+ *
318
+ * Runs the REAL presentation (`#runOfferFlow`) on a fresh instance, never the
319
+ * singleton, whose only "network" is `transport`. No analytics client exists, so
320
+ * nothing is tracked, and nothing is stored (claims, the only path that stores, do
321
+ * nothing in a preview).
322
+ */
323
+ static runPreview(session: PreviewSession, transport: PreviewTransport, useCase: UseCase): {
324
+ flow: Promise<OfferFlowOutcome>;
325
+ stop: () => void;
326
+ };
327
+ }
328
+ /** The preview's stand-in for the API client: the only calls a presentation makes. */
329
+ export type PreviewTransport = Pick<APIClient, 'fetchConfig' | 'fetchOffers' | 'reportError'>;
330
+ /** A preview's hooks into the presentation. */
331
+ export interface PreviewSession {
332
+ /** Where the sheet mounts, inline. */
333
+ mount: HTMLElement | ShadowRoot;
334
+ /** Called once the sheet's content is in the DOM. */
335
+ mounted: () => void;
336
+ /** Set by the presentation: settles it and removes the sheet. */
337
+ end: (() => void) | null;
196
338
  }
197
339
  export declare const Encore: EncoreSDK;
198
340
  //# sourceMappingURL=Encore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Encore.d.ts","sourceRoot":"","sources":["../../src/core/Encore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Encore.d.ts","sourceRoot":"","sources":["../../src/core/Encore.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,15 @@
2
2
  * Offer Manager
3
3
  * Handles offer fetching, caching, and analytics tracking
4
4
  */
5
- import type { APIClient } from '../api/APIClient';
5
+ import type { APIClient, OffersSearchScope } from '../api/APIClient';
6
6
  import type { OfferModel } from '../api/models';
7
7
  import type { UserAttributes, UseCase } from '../types';
8
8
  import type { AnalyticsClient } from '../analytics/AnalyticsClient';
9
+ import { type PresentationTrigger } from '../analytics/events';
9
10
  export declare class OfferManager {
10
11
  #private;
12
+ /** Test hook: scopes with searches still out. */
13
+ pendingScopeCount(): number;
11
14
  constructor(apiClient: APIClient, userId: string, analyticsClient?: AnalyticsClient);
12
15
  /**
13
16
  * Fetch offers from API with optional caching.
@@ -19,9 +22,26 @@ export declare class OfferManager {
19
22
  * strict presentation, and caching the narrowed set would starve a later
20
23
  * optimistic one. Matches iOS.
21
24
  */
22
- fetchOffers(userAttributes: UserAttributes, useCache?: boolean, placementId?: string, maxPostbackTimeMs?: number): Promise<{
25
+ fetchOffers(userAttributes: UserAttributes, useCache?: boolean, placementId?: string, maxPostbackTimeMs?: number, scope?: OffersSearchScope): Promise<{
23
26
  offers: OfferModel[];
24
27
  }>;
28
+ /**
29
+ * Warm the cache for `scope` without presenting anything: the set a sheet already on
30
+ * screen reports its analytics against is left alone. Never throws. A set already
31
+ * cached is not fetched again.
32
+ */
33
+ prefetchOffers(userAttributes: UserAttributes, scope?: OffersSearchScope): Promise<void>;
34
+ /**
35
+ * A trigger's gate: the offers the sheet would show for `scope`.
36
+ * The result is cached under the same key the sheet's own search reads (the scope's
37
+ * `wireVariantId` and `purpose` are not part of it), so a tap that opens the sheet
38
+ * presents these offers without searching again. A set already cached is not
39
+ * fetched again unless `fresh` (after a claim, the held set may still list the
40
+ * claimed offer); a fresh answer replaces it. In strict unlock mode the cache is
41
+ * bypassed and every check searches. Rejects when the search fails; nothing on
42
+ * screen changes.
43
+ */
44
+ searchForTrigger(userAttributes: UserAttributes, placementId: string | undefined, scope: OffersSearchScope, maxPostbackTimeMs?: number, fresh?: boolean): Promise<OfferModel[]>;
25
45
  /**
26
46
  * Begin a new presentation session. `variantId` is the SDUI variant this
27
47
  * presentation renders — stamped onto every event the session emits — and
@@ -39,7 +59,7 @@ export declare class OfferManager {
39
59
  * presentation's own id the same value. Absent a caller-supplied one this still mints,
40
60
  * which is the behaviour every non-`show()` entry point relies on.
41
61
  */
42
- beginPresentation(variantId?: string, useCase?: UseCase, placementId?: string, presentationId?: string): string;
62
+ beginPresentation(variantId?: string, useCase?: UseCase, placementId?: string, presentationId?: string, experimentId?: string): string;
43
63
  /**
44
64
  * The live presentation's placement label, or undefined when the publisher gave
45
65
  * none. Exposed for the strict-unlock pending record, which has to persist the
@@ -50,9 +70,11 @@ export declare class OfferManager {
50
70
  /** The live presentation's id, or null between presentations. */
51
71
  get presentationId(): string | null;
52
72
  /**
53
- * Track that an offer was presented (replaces impression logging)
73
+ * Track that an offer was presented. Sent at most once per impression id; a repeat
74
+ * (a later view after a claim sent it, a second claim) is a no-op.
75
+ * `presentationTrigger` is `'claim'` when a claim sends it before any view did.
54
76
  */
55
- trackOfferPresented(offer: OfferModel, impressionId: string, offerIndex: number, totalOffers: number, useCase?: UseCase): void;
77
+ trackOfferPresented(offer: OfferModel, impressionId: string, offerIndex: number, totalOffers: number, useCase?: UseCase, presentationTrigger?: PresentationTrigger, imageCacheHit?: boolean): void;
56
78
  /**
57
79
  * Track that a user navigated away from an offer (pause time tracking)
58
80
  */
@@ -1 +1 @@
1
- {"version":3,"file":"OfferManager.d.ts","sourceRoot":"","sources":["../../src/core/OfferManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAMpE,qBAAa,YAAY;;gBAkDX,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,eAAe;IAOnF;;;;;;;;;OASG;IACG,WAAW,CACf,cAAc,EAAE,cAAc,EAC9B,QAAQ,UAAO,EACf,WAAW,CAAC,EAAE,MAAM,EACpB,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC;QAAE,MAAM,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IA8CpC;;;;;;;;;OASG;IACH;;;;;;OAMG;IACH,iBAAiB,CACf,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,OAAO,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM;IAaT;;;;;OAKG;IACH,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED,iEAAiE;IACjE,IAAI,cAAc,IAAI,MAAM,GAAG,IAAI,CAElC;IAiBD;;OAEG;IACH,mBAAmB,CACjB,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,OAAO,GAChB,IAAI;IA8CP;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQxC;;OAEG;IACH,iBAAiB,CACf,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,OAAO,GAChB,IAAI;IAoBP;;OAEG;IACH,kBAAkB,CAChB,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,OAAO,GAChB,IAAI;IAqBP;;OAEG;IACH,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IA+FhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAwCjE,kEAAkE;IAClE,OAAO,IAAI,IAAI;IAKf;;OAEG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAsB9E;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAKhC"}
1
+ {"version":3,"file":"OfferManager.d.ts","sourceRoot":"","sources":["../../src/core/OfferManager.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Placement Builder
3
3
  * Fluent API for configuring and presenting offers
4
4
  */
5
- import type { PlacementBuilder as IPlacementBuilder, PlacementOptions, RedeemResult, ShowResult, NotGrantedReason, UseCase } from '../types';
5
+ import type { PlacementBuilder as IPlacementBuilder, PlacementOptions, PublisherReward, RedeemResult, ShowResult, NotGrantedReason, UseCase } from '../types';
6
6
  export type PresentationExecutor = (options?: PlacementOptions) => Promise<ShowResult>;
7
7
  export type RedemptionExecutor = (placementId: string) => Promise<RedeemResult>;
8
8
  export declare class PlacementBuilder implements IPlacementBuilder {
@@ -25,6 +25,11 @@ export declare class PlacementBuilder implements IPlacementBuilder {
25
25
  headline(text: string): PlacementBuilder;
26
26
  /** Counterpart to {@link headline}: same precedence, same blank-falls-through rule. */
27
27
  subheadline(text: string): PlacementBuilder;
28
+ /**
29
+ * Your own prize for trying an offer here; the same as `PlacementOptions.publisherReward`.
30
+ * Passed to the sheet, which does not yet draw or grant it on web.
31
+ */
32
+ publisherReward(reward: PublisherReward): PlacementBuilder;
28
33
  /**
29
34
  * Set callback for when user declines or offer not granted
30
35
  */
@@ -1 +1 @@
1
- {"version":3,"file":"PlacementBuilder.d.ts","sourceRoot":"","sources":["../../src/core/PlacementBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,gBAAgB,IAAI,iBAAiB,EACrC,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,OAAO,EACR,MAAM,UAAU,CAAC;AAIlB,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AACvF,MAAM,MAAM,kBAAkB,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAEhF,qBAAa,gBAAiB,YAAW,iBAAiB;;gBAatD,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,QAAQ,EAAE,kBAAkB;IAQ9B;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB;IAK3C;;;;;;;;OAQG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAKxC,uFAAuF;IACvF,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAK3C;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,GAAG,gBAAgB;IAK5E;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,GAAG,gBAAgB;IAK9E;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IA8CjC;;;;;;;;;OASG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;CAItC"}
1
+ {"version":3,"file":"PlacementBuilder.d.ts","sourceRoot":"","sources":["../../src/core/PlacementBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,gBAAgB,IAAI,iBAAiB,EACrC,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,OAAO,EACR,MAAM,UAAU,CAAC;AAIlB,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AACvF,MAAM,MAAM,kBAAkB,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAEhF,qBAAa,gBAAiB,YAAW,iBAAiB;;gBAatD,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,QAAQ,EAAE,kBAAkB;IAQ9B;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB;IAK3C;;;;;;;;OAQG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAKxC,uFAAuF;IACvF,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAK3C;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB;IAK1D;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,GAAG,gBAAgB;IAK5E;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,GAAG,gBAAgB;IAK9E;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IA8CjC;;;;;;;;;OASG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;CAItC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SignalManager.d.ts","sourceRoot":"","sources":["../../src/core/SignalManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AASlD,UAAU,WAAW;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,aAAa;;gBAQZ,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;IAezE;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAuC/B;;OAEG;IACH,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,OAAO,GAAG,IAAI;IAuBxE;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAelC;;OAEG;IACH,QAAQ,IAAI,WAAW,EAAE;IAIzB;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;OAEG;IACG,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/F;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAyGnC;;OAEG;IACH,OAAO,IAAI,IAAI;CAahB"}
1
+ {"version":3,"file":"SignalManager.d.ts","sourceRoot":"","sources":["../../src/core/SignalManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AASlD,UAAU,WAAW;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAaD,qBAAa,aAAa;;gBAUZ,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;IAezE;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA+C/B;;OAEG;IACH,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,OAAO,GAAG,IAAI;IA+BxE;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAmBlC;;OAEG;IACH,QAAQ,IAAI,WAAW,EAAE;IAIzB;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;OAEG;IACG,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/F;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA0GnC;;OAEG;IACH,OAAO,IAAI,IAAI;CAchB"}
@@ -22,9 +22,10 @@ export declare class StorageManager {
22
22
  */
23
23
  remove(key: string): void;
24
24
  /**
25
- * Clear all Encore-prefixed items from storage
25
+ * Clear all Encore-prefixed items from storage, except those `keep` (given the
26
+ * unprefixed key) returns true for.
26
27
  */
27
- clear(): void;
28
+ clear(keep?: (key: string) => boolean): void;
28
29
  /**
29
30
  * Get the current storage type being used
30
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"StorageManager.d.ts","sourceRoot":"","sources":["../../src/core/StorageManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,KAAK,WAAW,GAAG,cAAc,GAAG,gBAAgB,GAAG,QAAQ,CAAC;AAIhE,qBAAa,cAAc;;;IAgEzB;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAoCnC;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IA+B7B;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAkBzB;;OAEG;IACH,KAAK,IAAI,IAAI;IA6Bb;;OAEG;IACH,cAAc,IAAI,WAAW;CAG9B"}
1
+ {"version":3,"file":"StorageManager.d.ts","sourceRoot":"","sources":["../../src/core/StorageManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,KAAK,WAAW,GAAG,cAAc,GAAG,gBAAgB,GAAG,QAAQ,CAAC;AAIhE,qBAAa,cAAc;;;IA2EzB;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAoCnC;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IA+B7B;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAkBzB;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI;IA+B5C;;OAEG;IACH,cAAc,IAAI,WAAW;CAG9B"}
@@ -59,7 +59,7 @@ export declare class StrictUnlockReconciler {
59
59
  * their unlock silently never lands. reset() is the destructive path, and it
60
60
  * clears storage before this runs, so nothing carries over there.
61
61
  */
62
- setUserId(userId: string): void;
62
+ setUserId(userId: string, carryPending?: boolean): void;
63
63
  /**
64
64
  * Record a claim as awaiting verification. Called as soon as the transaction id
65
65
  * exists and BEFORE the advertiser redirect opens, so a tab closed one moment
@@ -1 +1 @@
1
- {"version":3,"file":"StrictUnlockReconciler.d.ts","sourceRoot":"","sources":["../../src/core/StrictUnlockReconciler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAa5D,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,sBAAsB;;gBAKrB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;IAMzE;;;;;;;;;;OAUG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ/B;;;;OAIG;IACH,WAAW,CACT,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GACjF,IAAI;IAgBP,2EAA2E;IAC3E,YAAY,IAAI,IAAI;IAKpB;;;;;;;;;OASG;IACH,UAAU,IAAI,YAAY,GAAG,IAAI;IAsCjC;;;;;OAKG;IACG,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,GAAE,MAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAiBtG"}
1
+ {"version":3,"file":"StrictUnlockReconciler.d.ts","sourceRoot":"","sources":["../../src/core/StrictUnlockReconciler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAY5D,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,sBAAsB;;gBAKrB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;IAMzE;;;;;;;;;;OAUG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,UAAO,GAAG,IAAI;IASpD;;;;OAIG;IACH,WAAW,CACT,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GACjF,IAAI;IAgBP,2EAA2E;IAC3E,YAAY,IAAI,IAAI;IAKpB;;;;;;;;;OASG;IACH,UAAU,IAAI,YAAY,GAAG,IAAI;IAsCjC;;;;;OAKG;IACG,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,GAAE,MAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAiBtG"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * The `EncoreClaim` handle a host app holds for its own gifts button or claim reminder
3
+ * (`Encore.claim`). INTERNAL module, public object.
4
+ *
5
+ * This part is in the core bundle and stays small: the state and its listeners, and
6
+ * `bind()`'s DOM wiring (visibility, click, Enter/Space). Everything that decides
7
+ * (the sheet gate, the claim log, impressions, events, the tap and its sheet) is the
8
+ * controller in `triggers/host/customClaim.ts`, loaded on first use. Until it is
9
+ * attached the state is `hidden`, a tap resolves `unavailable`, and visibility is kept
10
+ * for it.
11
+ */
12
+ import type { ClaimTarget, EncoreClaim, EncoreClaimState, ShowResult } from '../types';
13
+ /** What the handle needs from its controller once loaded. */
14
+ export interface ClaimController {
15
+ /**
16
+ * `covered`: whether something the app presents sits over every bound element that is
17
+ * on screen (asked when an impression's dwell starts and ends); never covered with no
18
+ * bound element.
19
+ */
20
+ setVisible(fraction: number, covered?: () => boolean): void;
21
+ tap(target: ClaimTarget | undefined): Promise<ShowResult>;
22
+ dismiss(): void;
23
+ destroy(): void;
24
+ }
25
+ export declare class ClaimHandle implements EncoreClaim {
26
+ #private;
27
+ constructor(onDestroy?: () => void);
28
+ get state(): EncoreClaimState;
29
+ get destroyed(): boolean;
30
+ /** INTERNAL: the controller loaded. It hears the visibility reported so far. */
31
+ attach(controller: ClaimController): void;
32
+ /** INTERNAL: the controller's new state. Listeners hear it only when it changed. */
33
+ setState(next: EncoreClaimState): void;
34
+ subscribe(listener: (state: EncoreClaimState) => void): () => void;
35
+ setVisible(fraction: number): void;
36
+ tap(target?: ClaimTarget): Promise<ShowResult>;
37
+ dismiss(): void;
38
+ bind(element: HTMLElement, options?: {
39
+ target?: ClaimTarget;
40
+ tap?: boolean;
41
+ }): () => void;
42
+ destroy(): void;
43
+ }
44
+ //# sourceMappingURL=claimHandle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claimHandle.d.ts","sourceRoot":"","sources":["../../src/core/claimHandle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAKvF,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC;IAC5D,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1D,OAAO,IAAI,IAAI,CAAC;IAChB,OAAO,IAAI,IAAI,CAAC;CACjB;AAiDD,qBAAa,WAAY,YAAW,WAAW;;gBAiBjC,SAAS,CAAC,EAAE,MAAM,IAAI;IAIlC,IAAI,KAAK,IAAI,gBAAgB,CAE5B;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,gFAAgF;IAChF,MAAM,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI;IASzC,oFAAoF;IACpF,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAYtC,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,MAAM,IAAI;IAoClE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMlC,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAU9C,OAAO,IAAI,IAAI;IASf,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,IAAI;IAuHzF,OAAO,IAAI,IAAI;CAqBhB"}