@tagadapay/headless-sdk 1.14.1 → 1.17.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 (201) hide show
  1. package/dist/core/client.d.ts +12 -0
  2. package/dist/core/client.d.ts.map +1 -1
  3. package/dist/core/client.js +16 -4
  4. package/dist/core/client.js.map +1 -1
  5. package/dist/core/http.d.ts +2 -0
  6. package/dist/core/http.d.ts.map +1 -1
  7. package/dist/core/http.js +21 -5
  8. package/dist/core/http.js.map +1 -1
  9. package/dist/core/index.d.ts +7 -1
  10. package/dist/core/index.d.ts.map +1 -1
  11. package/dist/core/index.js +3 -0
  12. package/dist/core/index.js.map +1 -1
  13. package/dist/core/modules/checkout.d.ts +5 -1
  14. package/dist/core/modules/checkout.d.ts.map +1 -1
  15. package/dist/core/modules/checkout.js +22 -1
  16. package/dist/core/modules/checkout.js.map +1 -1
  17. package/dist/core/modules/commerce.d.ts +4 -0
  18. package/dist/core/modules/commerce.d.ts.map +1 -0
  19. package/dist/core/modules/commerce.js +5 -0
  20. package/dist/core/modules/commerce.js.map +1 -0
  21. package/dist/core/modules/customer.d.ts +47 -1
  22. package/dist/core/modules/customer.d.ts.map +1 -1
  23. package/dist/core/modules/customer.js +60 -3
  24. package/dist/core/modules/customer.js.map +1 -1
  25. package/dist/core/modules/experiments.d.ts +21 -0
  26. package/dist/core/modules/experiments.d.ts.map +1 -0
  27. package/dist/core/modules/experiments.js +85 -0
  28. package/dist/core/modules/experiments.js.map +1 -0
  29. package/dist/core/modules/funnel.d.ts +2 -1
  30. package/dist/core/modules/funnel.d.ts.map +1 -1
  31. package/dist/core/modules/funnel.js +6 -1
  32. package/dist/core/modules/funnel.js.map +1 -1
  33. package/dist/core/modules/lazyCommerce.d.ts +16 -0
  34. package/dist/core/modules/lazyCommerce.d.ts.map +1 -0
  35. package/dist/core/modules/lazyCommerce.js +20 -0
  36. package/dist/core/modules/lazyCommerce.js.map +1 -0
  37. package/dist/core/modules/offers.d.ts +30 -5
  38. package/dist/core/modules/offers.d.ts.map +1 -1
  39. package/dist/core/modules/offers.js +66 -7
  40. package/dist/core/modules/offers.js.map +1 -1
  41. package/dist/core/modules/payment.d.ts +19 -1
  42. package/dist/core/modules/payment.d.ts.map +1 -1
  43. package/dist/core/modules/payment.js +42 -3
  44. package/dist/core/modules/payment.js.map +1 -1
  45. package/dist/core/modules/portal/index.d.ts +102 -0
  46. package/dist/core/modules/portal/index.d.ts.map +1 -0
  47. package/dist/core/modules/portal/index.js +166 -0
  48. package/dist/core/modules/portal/index.js.map +1 -0
  49. package/dist/core/modules/portal/types.d.ts +617 -0
  50. package/dist/core/modules/portal/types.d.ts.map +1 -0
  51. package/dist/core/modules/portal/types.js +11 -0
  52. package/dist/core/modules/portal/types.js.map +1 -0
  53. package/dist/core/modules/rx.d.ts +32 -1
  54. package/dist/core/modules/rx.d.ts.map +1 -1
  55. package/dist/core/modules/rx.js +17 -1
  56. package/dist/core/modules/rx.js.map +1 -1
  57. package/dist/core/modules/track.d.ts +135 -0
  58. package/dist/core/modules/track.d.ts.map +1 -0
  59. package/dist/core/modules/track.js +412 -0
  60. package/dist/core/modules/track.js.map +1 -0
  61. package/dist/core/types.d.ts +13 -0
  62. package/dist/core/types.d.ts.map +1 -1
  63. package/dist/core/types.js +0 -3
  64. package/dist/core/types.js.map +1 -1
  65. package/dist/core/version.d.ts +4 -0
  66. package/dist/core/version.d.ts.map +1 -0
  67. package/dist/core/version.js +4 -0
  68. package/dist/core/version.js.map +1 -0
  69. package/dist/pixels/engine.d.ts +56 -0
  70. package/dist/pixels/engine.d.ts.map +1 -0
  71. package/dist/pixels/engine.js +263 -0
  72. package/dist/pixels/engine.js.map +1 -0
  73. package/dist/pixels/index.d.ts +10 -0
  74. package/dist/pixels/index.d.ts.map +1 -0
  75. package/dist/pixels/index.js +5 -0
  76. package/dist/pixels/index.js.map +1 -0
  77. package/dist/pixels/metaEventId.d.ts +15 -0
  78. package/dist/pixels/metaEventId.d.ts.map +1 -0
  79. package/dist/pixels/metaEventId.js +17 -0
  80. package/dist/pixels/metaEventId.js.map +1 -0
  81. package/dist/pixels/pixelIdentity.d.ts +34 -0
  82. package/dist/pixels/pixelIdentity.d.ts.map +1 -0
  83. package/dist/pixels/pixelIdentity.js +65 -0
  84. package/dist/pixels/pixelIdentity.js.map +1 -0
  85. package/dist/pixels/pixelMapping.d.ts +172 -0
  86. package/dist/pixels/pixelMapping.d.ts.map +1 -0
  87. package/dist/pixels/pixelMapping.js +574 -0
  88. package/dist/pixels/pixelMapping.js.map +1 -0
  89. package/dist/pixels/pixelTracker.d.ts +81 -0
  90. package/dist/pixels/pixelTracker.d.ts.map +1 -0
  91. package/dist/pixels/pixelTracker.js +797 -0
  92. package/dist/pixels/pixelTracker.js.map +1 -0
  93. package/dist/pixels/types.d.ts +103 -0
  94. package/dist/pixels/types.d.ts.map +1 -0
  95. package/dist/pixels/types.js +14 -0
  96. package/dist/pixels/types.js.map +1 -0
  97. package/dist/react/hooks/useStep.d.ts +7 -0
  98. package/dist/react/hooks/useStep.d.ts.map +1 -0
  99. package/dist/react/hooks/useStep.js +14 -0
  100. package/dist/react/hooks/useStep.js.map +1 -0
  101. package/dist/react/index.d.ts +1 -0
  102. package/dist/react/index.d.ts.map +1 -1
  103. package/dist/react/index.js +1 -0
  104. package/dist/react/index.js.map +1 -1
  105. package/dist/stripe/index.d.ts +3 -1
  106. package/dist/stripe/index.d.ts.map +1 -1
  107. package/dist/stripe/index.js +13 -6
  108. package/dist/stripe/index.js.map +1 -1
  109. package/dist/stripe/useStripeExpress.d.ts.map +1 -1
  110. package/dist/stripe/useStripeExpress.js +15 -1
  111. package/dist/stripe/useStripeExpress.js.map +1 -1
  112. package/dist/tagada-headless-commerce.min.js +8 -0
  113. package/dist/tagada-headless-commerce.min.js.map +7 -0
  114. package/dist/tagada-headless-react.min.js +2 -2
  115. package/dist/tagada-headless-react.min.js.map +4 -4
  116. package/dist/tagada-headless.js +722 -288
  117. package/dist/tagada-headless.min.js +2 -2
  118. package/dist/tagada-headless.min.js.map +4 -4
  119. package/dist/tagada-pixels.min.js +7 -0
  120. package/dist/tagada-pixels.min.js.map +7 -0
  121. package/dist/tgd/contract/attribution.d.ts +28 -0
  122. package/dist/tgd/contract/attribution.d.ts.map +1 -0
  123. package/dist/tgd/contract/attribution.js +44 -0
  124. package/dist/tgd/contract/attribution.js.map +1 -0
  125. package/dist/tgd/contract/browser-api.d.ts +57 -0
  126. package/dist/tgd/contract/browser-api.d.ts.map +1 -0
  127. package/dist/tgd/contract/browser-api.js +2 -0
  128. package/dist/tgd/contract/browser-api.js.map +1 -0
  129. package/dist/tgd/contract/canvas.d.ts +120 -0
  130. package/dist/tgd/contract/canvas.d.ts.map +1 -0
  131. package/dist/tgd/contract/canvas.js +12 -0
  132. package/dist/tgd/contract/canvas.js.map +1 -0
  133. package/dist/tgd/contract/dedup-keys.d.ts +24 -0
  134. package/dist/tgd/contract/dedup-keys.d.ts.map +1 -0
  135. package/dist/tgd/contract/dedup-keys.js +23 -0
  136. package/dist/tgd/contract/dedup-keys.js.map +1 -0
  137. package/dist/tgd/contract/destination-names.d.ts +4 -0
  138. package/dist/tgd/contract/destination-names.d.ts.map +1 -0
  139. package/dist/tgd/contract/destination-names.js +66 -0
  140. package/dist/tgd/contract/destination-names.js.map +1 -0
  141. package/dist/tgd/contract/destinations.d.ts +124 -0
  142. package/dist/tgd/contract/destinations.d.ts.map +1 -0
  143. package/dist/tgd/contract/destinations.js +63 -0
  144. package/dist/tgd/contract/destinations.js.map +1 -0
  145. package/dist/tgd/contract/envelope.d.ts +203 -0
  146. package/dist/tgd/contract/envelope.d.ts.map +1 -0
  147. package/dist/tgd/contract/envelope.js +103 -0
  148. package/dist/tgd/contract/envelope.js.map +1 -0
  149. package/dist/tgd/contract/experiments.d.ts +87 -0
  150. package/dist/tgd/contract/experiments.d.ts.map +1 -0
  151. package/dist/tgd/contract/experiments.js +2 -0
  152. package/dist/tgd/contract/experiments.js.map +1 -0
  153. package/dist/tgd/contract/index.d.ts +20 -0
  154. package/dist/tgd/contract/index.d.ts.map +1 -0
  155. package/dist/tgd/contract/index.js +20 -0
  156. package/dist/tgd/contract/index.js.map +1 -0
  157. package/dist/tgd/contract/is-test.d.ts +2 -0
  158. package/dist/tgd/contract/is-test.d.ts.map +1 -0
  159. package/dist/tgd/contract/is-test.js +3 -0
  160. package/dist/tgd/contract/is-test.js.map +1 -0
  161. package/dist/tgd/contract/junk-ids.d.ts +4 -0
  162. package/dist/tgd/contract/junk-ids.d.ts.map +1 -0
  163. package/dist/tgd/contract/junk-ids.js +7 -0
  164. package/dist/tgd/contract/junk-ids.js.map +1 -0
  165. package/dist/tgd/contract/limits.d.ts +19 -0
  166. package/dist/tgd/contract/limits.d.ts.map +1 -0
  167. package/dist/tgd/contract/limits.js +20 -0
  168. package/dist/tgd/contract/limits.js.map +1 -0
  169. package/dist/tgd/contract/names.d.ts +13 -0
  170. package/dist/tgd/contract/names.d.ts.map +1 -0
  171. package/dist/tgd/contract/names.js +15 -0
  172. package/dist/tgd/contract/names.js.map +1 -0
  173. package/dist/tgd/contract/registry.d.ts +116 -0
  174. package/dist/tgd/contract/registry.d.ts.map +1 -0
  175. package/dist/tgd/contract/registry.js +59 -0
  176. package/dist/tgd/contract/registry.js.map +1 -0
  177. package/dist/tgd/contract/signed-ids.d.ts +33 -0
  178. package/dist/tgd/contract/signed-ids.d.ts.map +1 -0
  179. package/dist/tgd/contract/signed-ids.js +26 -0
  180. package/dist/tgd/contract/signed-ids.js.map +1 -0
  181. package/dist/tgd/contract/snapshots.d.ts +69 -0
  182. package/dist/tgd/contract/snapshots.d.ts.map +1 -0
  183. package/dist/tgd/contract/snapshots.js +2 -0
  184. package/dist/tgd/contract/snapshots.js.map +1 -0
  185. package/dist/tgd/contract/time.d.ts +9 -0
  186. package/dist/tgd/contract/time.d.ts.map +1 -0
  187. package/dist/tgd/contract/time.js +9 -0
  188. package/dist/tgd/contract/time.js.map +1 -0
  189. package/dist/tgd/contract/unions.d.ts +21 -0
  190. package/dist/tgd/contract/unions.d.ts.map +1 -0
  191. package/dist/tgd/contract/unions.js +17 -0
  192. package/dist/tgd/contract/unions.js.map +1 -0
  193. package/dist/tgd/contract/unit.d.ts +12 -0
  194. package/dist/tgd/contract/unit.d.ts.map +1 -0
  195. package/dist/tgd/contract/unit.js +18 -0
  196. package/dist/tgd/contract/unit.js.map +1 -0
  197. package/dist/tgd/contract/wire.d.ts +59 -0
  198. package/dist/tgd/contract/wire.d.ts.map +1 -0
  199. package/dist/tgd/contract/wire.js +2 -0
  200. package/dist/tgd/contract/wire.js.map +1 -0
  201. package/package.json +8 -1
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Client-side identity hashing for pixel advanced matching.
3
+ *
4
+ * Framework-agnostic (no DOM). Normalizes + SHA-256-hashes the customer
5
+ * identifiers (email / phone / external id) so the tracker can feed match
6
+ * keys to Snapchat (`user_hashed_email`/`user_hashed_phone_number`) and TikTok
7
+ * (`ttq.identify`). We hash in the browser ourselves so raw PII never leaves
8
+ * the page — TikTok requires pre-hashed values anyway, and Snap/Meta accept
9
+ * pre-hashed too.
10
+ */
11
+ /** Lowercase + trim — the normalization Meta/Snap/TikTok all expect for email. */
12
+ function normalizeEmail(email) {
13
+ return email.trim().toLowerCase();
14
+ }
15
+ /**
16
+ * Normalize to E.164-ish: keep a single leading `+` (if present) and digits.
17
+ * Snap and TikTok both expect E.164 with the country-code `+`, so a single
18
+ * hash satisfies both. (Meta wants digits-only — add a per-provider variant
19
+ * here if Meta browser matching is added later.)
20
+ */
21
+ function normalizePhone(phone) {
22
+ const trimmed = phone.trim();
23
+ const hasPlus = trimmed.startsWith('+');
24
+ const digits = trimmed.replace(/[^0-9]/g, '');
25
+ if (!digits)
26
+ return '';
27
+ return (hasPlus ? '+' : '') + digits;
28
+ }
29
+ async function sha256Hex(input) {
30
+ const data = new TextEncoder().encode(input);
31
+ const buf = await crypto.subtle.digest('SHA-256', data);
32
+ return Array.from(new Uint8Array(buf))
33
+ .map((b) => b.toString(16).padStart(2, '0'))
34
+ .join('');
35
+ }
36
+ /** True when SubtleCrypto is usable (secure context). */
37
+ export function canHashIdentity() {
38
+ return (typeof crypto !== 'undefined' &&
39
+ typeof crypto.subtle !== 'undefined' &&
40
+ typeof crypto.subtle.digest === 'function');
41
+ }
42
+ /**
43
+ * Hash whichever identifiers are present. Empty/whitespace-only fields are
44
+ * skipped so we never emit a hash of "". Returns `{}` when nothing usable.
45
+ */
46
+ export async function buildHashedIdentity(id) {
47
+ const out = {};
48
+ if (id.email) {
49
+ const n = normalizeEmail(id.email);
50
+ if (n)
51
+ out.email = await sha256Hex(n);
52
+ }
53
+ if (id.phone) {
54
+ const n = normalizePhone(id.phone);
55
+ if (n)
56
+ out.phone = await sha256Hex(n);
57
+ }
58
+ if (id.externalId) {
59
+ const n = id.externalId.trim();
60
+ if (n)
61
+ out.externalId = await sha256Hex(n);
62
+ }
63
+ return out;
64
+ }
65
+ //# sourceMappingURL=pixelIdentity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pixelIdentity.js","sourceRoot":"","sources":["../../src/pixels/pixelIdentity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAoBH,kFAAkF;AAClF,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,KAAa;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,KAAa;IACpC,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;SACnC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,eAAe;IAC7B,OAAO,CACL,OAAO,MAAM,KAAK,WAAW;QAC7B,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW;QACpC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAC3C,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,EAAoB;IAC5D,MAAM,GAAG,GAAwB,EAAE,CAAC;IAEpC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC;YAAE,GAAG,CAAC,KAAK,GAAG,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC;YAAE,GAAG,CAAC,KAAK,GAAG,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC;YAAE,GAAG,CAAC,UAAU,GAAG,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Core pixel event mapping, parameter transformation, and event gating.
3
+ *
4
+ * This module is framework-agnostic (no React, no DOM) so it can be shared
5
+ * between the React `PixelTrackingProvider` and the standalone vanilla SDK.
6
+ *
7
+ * Official event name references (verified Feb 2026 against vendor docs):
8
+ * Meta: fbq('track', 'Purchase', { value, currency }) — developers.facebook.com/docs/meta-pixel/reference
9
+ * TikTok: ttq.track('Purchase', { value, currency }) — ads.tiktok.com/help/article/standard-events-parameters (Sep 2025)
10
+ * Snapchat: snaptr('track', 'PURCHASE', { price, currency }) — developers.snap.com/api/marketing-api/Conversions-API/Parameters
11
+ * Pinterest: pintrk('track', 'checkout', { value, currency }) — help.pinterest.com/en/business/article/add-event-codes
12
+ * GTM/GA4: gtag('event', 'purchase', { value, currency, items })
13
+ * Clarity: clarity('event', 'Purchase') — learn.microsoft.com/en-us/clarity/setup-and-installation/clarity-api
14
+ */
15
+ import type { GTMTrackingConfig, PixelConfig, PixelsConfig } from './types.js';
16
+ export type StandardPixelEvent = 'PageView' | 'ViewContent' | 'AddToCart' | 'AddToWishlist' | 'Search' | 'InitiateCheckout' | 'AddPaymentInfo' | 'Purchase' | 'Lead' | 'CompleteRegistration' | 'Conversion';
17
+ export type PixelProviderKey = 'facebook' | 'tiktok' | 'snapchat' | 'pinterest' | 'gtm' | 'clarity';
18
+ /** The field a pixel entry carries its tracking id in. */
19
+ export type PixelIdKey = 'pixelId' | 'containerId' | 'projectId';
20
+ /**
21
+ * Which key holds this entry's id: GTM stores a `containerId`, Clarity a
22
+ * `projectId`, every other provider a `pixelId`. Callers that sanitize, split
23
+ * or display an id go through here rather than testing the keys themselves,
24
+ * so a new provider with its own field name is one edit, not six.
25
+ */
26
+ export declare function pixelIdKeyOf(pixel: unknown): PixelIdKey;
27
+ export interface MappedEvent {
28
+ name: string;
29
+ params: Record<string, unknown>;
30
+ }
31
+ export declare const GA4_PARAM_KEY: "_ga4";
32
+ export interface Ga4UserData {
33
+ email_address?: string;
34
+ phone_number?: string;
35
+ address?: {
36
+ first_name?: string;
37
+ last_name?: string;
38
+ street?: string;
39
+ city?: string;
40
+ region?: string;
41
+ postal_code?: string;
42
+ country?: string;
43
+ };
44
+ }
45
+ export interface Ga4Item {
46
+ item_id?: string;
47
+ item_name?: string;
48
+ item_variant?: string;
49
+ /** Minor units (cents). Post-discount unit price (GA4 spec). Converted to major by mapGTMEvent. */
50
+ price?: number;
51
+ quantity?: number;
52
+ /** Minor units (cents). Per-unit monetary discount (line-level + allocated order-level). */
53
+ discount?: number;
54
+ /** Coupon code(s) that discounted this item. */
55
+ coupon?: string;
56
+ }
57
+ export interface Ga4PurchasePayload {
58
+ user_id?: string;
59
+ user_data?: Ga4UserData;
60
+ /** Minor units (cents). */
61
+ value?: number;
62
+ /** Minor units (cents). */
63
+ tax?: number;
64
+ /** Minor units (cents). */
65
+ shipping?: number;
66
+ /** Order-level coupon code(s), comma-joined. */
67
+ coupon?: string;
68
+ items: Ga4Item[];
69
+ }
70
+ /** Loose order shape accepted by buildGa4PurchasePayload (subset of SDK Order). */
71
+ export interface Ga4OrderInput {
72
+ id?: string;
73
+ currency?: string;
74
+ paidAmount?: number;
75
+ items?: Array<{
76
+ productId?: string;
77
+ variantId?: string | null;
78
+ quantity?: number;
79
+ /** Pre-discount unit amount (minor units). */
80
+ amount?: number;
81
+ adjustedAmount?: number;
82
+ orderLineItemProduct?: {
83
+ name?: string;
84
+ };
85
+ orderLineItemVariant?: {
86
+ name?: string;
87
+ };
88
+ }>;
89
+ summaries?: Array<{
90
+ currency?: string;
91
+ totalTaxAmount?: number;
92
+ shippingCost?: number;
93
+ totalAdjustedAmount?: number;
94
+ totalPromotionAmount?: number;
95
+ }>;
96
+ /**
97
+ * Applied promotions. Accepts both shapes seen in the wild:
98
+ * promotion-usage rows with a nested `promotion` (CMS order endpoint) and
99
+ * flat promotion summaries with a `code` (SDK OrderWithRelations).
100
+ */
101
+ promotions?: Array<{
102
+ code?: string | null;
103
+ promotion?: {
104
+ code?: string | null;
105
+ } | null;
106
+ }>;
107
+ customer?: {
108
+ id?: string;
109
+ email?: string;
110
+ phone?: string;
111
+ firstName?: string;
112
+ lastName?: string;
113
+ };
114
+ billingAddress?: Ga4Address;
115
+ shippingAddress?: Ga4Address;
116
+ }
117
+ /**
118
+ * Extract the distinct coupon codes applied to an order, comma-joined.
119
+ * Returns undefined when the order carries no coded promotions (automatic
120
+ * promotions have `code: null` and are deliberately excluded — GA4's `coupon`
121
+ * dimension is for codes the shopper entered).
122
+ */
123
+ export declare function extractCouponCodes(order: Pick<Ga4OrderInput, 'promotions'>): string | undefined;
124
+ interface Ga4Address {
125
+ firstName?: string;
126
+ lastName?: string;
127
+ address1?: string;
128
+ city?: string;
129
+ state?: string;
130
+ postal?: string;
131
+ country?: string;
132
+ phone?: string;
133
+ }
134
+ /**
135
+ * Build the GA4-only enrichment payload (`_ga4`) from an order. Pure, defensive,
136
+ * framework-agnostic — shared by the native ThankYouPage and the Studio
137
+ * OrderConfirmation island so both emit an identical canonical GA4 purchase.
138
+ * Returns minor-unit amounts; mapGTMEvent converts them to major units.
139
+ */
140
+ export declare function buildGa4PurchasePayload(order: Ga4OrderInput): Ga4PurchasePayload;
141
+ /**
142
+ * Returns `true` if the given event is enabled on the pixel config.
143
+ * If the pixel has no `events` map (e.g. MetaConversionTrackingConfig) we allow all.
144
+ */
145
+ export declare function isEventEnabled(pixel: PixelConfig, eventName: StandardPixelEvent): boolean;
146
+ /**
147
+ * Filter an array of pixel configs to only those that are globally enabled
148
+ * AND have the specific event toggled on.
149
+ */
150
+ export declare function getEligiblePixels<T extends PixelConfig>(pixels: T[] | undefined, eventName: StandardPixelEvent): T[];
151
+ export declare function mapMetaEvent(eventName: StandardPixelEvent, parameters: Record<string, unknown>): MappedEvent;
152
+ export declare function mapTikTokEvent(eventName: StandardPixelEvent, parameters: Record<string, unknown>): MappedEvent;
153
+ export declare function mapSnapchatEvent(eventName: StandardPixelEvent, parameters: Record<string, unknown>): MappedEvent;
154
+ export declare function mapPinterestEvent(eventName: StandardPixelEvent, parameters: Record<string, unknown>): MappedEvent;
155
+ export declare function mapGTMEvent(eventName: StandardPixelEvent, parameters: Record<string, unknown>): MappedEvent;
156
+ export declare function mapClarityEvent(eventName: StandardPixelEvent, parameters: Record<string, unknown>): MappedEvent;
157
+ /**
158
+ * Append Google Ads `send_to` parameter when conversion tracking is configured.
159
+ */
160
+ export declare function applyGoogleAdsConversion(params: Record<string, unknown>, eventName: StandardPixelEvent, pixel: GTMTrackingConfig): Record<string, unknown>;
161
+ export interface ProviderEvent {
162
+ provider: PixelProviderKey;
163
+ mapped: MappedEvent;
164
+ pixel: PixelConfig;
165
+ }
166
+ /**
167
+ * Given a PixelsConfig and an event, return per-provider mapped events
168
+ * for every eligible (enabled + event-toggled-on) pixel.
169
+ */
170
+ export declare function resolvePixelEvents(pixels: PixelsConfig, eventName: StandardPixelEvent, parameters: Record<string, unknown>): ProviderEvent[];
171
+ export {};
172
+ //# sourceMappingURL=pixelMapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pixelMapping.d.ts","sourceRoot":"","sources":["../../src/pixels/pixelMapping.ts"],"names":[],"mappings":"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"}