@tagadapay/plugin-sdk 4.0.0 → 4.0.2

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 (63) hide show
  1. package/README.md +1129 -1129
  2. package/build-cdn.js +499 -499
  3. package/dist/external-tracker.js +156 -2
  4. package/dist/external-tracker.min.js +2 -2
  5. package/dist/external-tracker.min.js.map +4 -4
  6. package/dist/react/providers/TagadaProvider.js +5 -5
  7. package/dist/tagada-react-sdk-minimal.min.js +2 -2
  8. package/dist/tagada-react-sdk-minimal.min.js.map +4 -4
  9. package/dist/tagada-react-sdk.js +696 -245
  10. package/dist/tagada-react-sdk.min.js +2 -2
  11. package/dist/tagada-react-sdk.min.js.map +4 -4
  12. package/dist/tagada-sdk.js +2908 -94
  13. package/dist/tagada-sdk.min.js +2 -2
  14. package/dist/tagada-sdk.min.js.map +4 -4
  15. package/dist/v2/core/funnelClient.d.ts +40 -0
  16. package/dist/v2/core/funnelClient.js +30 -0
  17. package/dist/v2/core/pixelTracker.d.ts +51 -0
  18. package/dist/v2/core/pixelTracker.js +425 -0
  19. package/dist/v2/core/resources/checkout.d.ts +45 -1
  20. package/dist/v2/core/resources/checkout.js +13 -3
  21. package/dist/v2/core/resources/offers.d.ts +1 -1
  22. package/dist/v2/core/resources/offers.js +3 -1
  23. package/dist/v2/core/resources/promotionEvents.d.ts +5 -0
  24. package/dist/v2/core/resources/promotionEvents.js +2 -0
  25. package/dist/v2/core/resources/promotions.d.ts +6 -1
  26. package/dist/v2/core/resources/promotions.js +6 -1
  27. package/dist/v2/core/resources/shippingRates.d.ts +18 -0
  28. package/dist/v2/core/resources/shippingRates.js +18 -0
  29. package/dist/v2/core/utils/clickIdResolver.d.ts +79 -0
  30. package/dist/v2/core/utils/clickIdResolver.js +169 -0
  31. package/dist/v2/core/utils/index.d.ts +2 -0
  32. package/dist/v2/core/utils/index.js +4 -0
  33. package/dist/v2/core/utils/metaEventId.d.ts +14 -0
  34. package/dist/v2/core/utils/metaEventId.js +16 -0
  35. package/dist/v2/core/utils/previewModeIndicator.js +101 -101
  36. package/dist/v2/index.d.ts +7 -0
  37. package/dist/v2/index.js +10 -0
  38. package/dist/v2/react/components/ApplePayButton.js +50 -0
  39. package/dist/v2/react/components/FunnelScriptInjector.js +9 -9
  40. package/dist/v2/react/components/GooglePayButton.js +39 -1
  41. package/dist/v2/react/components/StripeExpressButton.js +54 -2
  42. package/dist/v2/react/hooks/payment-actions/useNgeniusThreedsAction.js +11 -11
  43. package/dist/v2/react/hooks/useCheckoutQuery.js +41 -29
  44. package/dist/v2/react/hooks/useDiscountsQuery.js +4 -0
  45. package/dist/v2/react/hooks/useFunnel.d.ts +7 -0
  46. package/dist/v2/react/hooks/useFunnel.js +2 -1
  47. package/dist/v2/react/hooks/usePixelTracking.d.ts +10 -5
  48. package/dist/v2/react/hooks/usePixelTracking.js +32 -374
  49. package/dist/v2/react/hooks/usePreviewOffer.d.ts +3 -1
  50. package/dist/v2/react/hooks/usePreviewOffer.js +8 -2
  51. package/dist/v2/react/hooks/usePromotionsQuery.js +9 -3
  52. package/dist/v2/react/hooks/useShippingRatesQuery.js +36 -21
  53. package/dist/v2/react/hooks/useStepConfig.d.ts +9 -0
  54. package/dist/v2/react/hooks/useStepConfig.js +5 -1
  55. package/dist/v2/react/index.d.ts +4 -0
  56. package/dist/v2/react/index.js +8 -0
  57. package/dist/v2/react/providers/TagadaProvider.js +18 -5
  58. package/dist/v2/standalone/apple-pay-service.d.ts +1 -1
  59. package/dist/v2/standalone/index.d.ts +3 -0
  60. package/dist/v2/standalone/index.js +23 -0
  61. package/dist/v2/standalone/payment-service.d.ts +54 -1
  62. package/dist/v2/standalone/payment-service.js +228 -61
  63. package/package.json +115 -115
@@ -1,5 +1,5 @@
1
1
  /**
2
- * TagadaPay SDK v4.0.0
2
+ * TagadaPay SDK v4.0.2
3
3
  * CDN Bundle - Full standalone SDK (Debug Build)
4
4
  * Usage: window.tgd.createTagadaClient(), window.tgd.formatMoney(), etc.
5
5
  * @license MIT
@@ -1019,8 +1019,11 @@ var TagadaSDKBundle = (() => {
1019
1019
  FunnelClient: () => FunnelClient,
1020
1020
  TrackingProvider: () => TrackingProvider,
1021
1021
  findMethod: () => findMethod,
1022
+ getAssignedCheckoutOfferDefault: () => getAssignedCheckoutOfferDefault,
1023
+ getAssignedCheckoutOfferIds: () => getAssignedCheckoutOfferIds,
1022
1024
  getAssignedOrderBumpOfferIds: () => getAssignedOrderBumpOfferIds,
1023
1025
  getAssignedPaymentFlowId: () => getAssignedPaymentFlowId,
1026
+ getAssignedPaymentInitiator: () => getAssignedPaymentInitiator,
1024
1027
  getAssignedPixels: () => getAssignedPixels,
1025
1028
  getAssignedResources: () => getAssignedResources,
1026
1029
  getAssignedScripts: () => getAssignedScripts,
@@ -1165,7 +1168,8 @@ var TagadaSDKBundle = (() => {
1165
1168
  scripts: local.scripts,
1166
1169
  pixels: local.pixels,
1167
1170
  orderBumps: local.orderBumps,
1168
- upsellOffers: local.upsellOffers
1171
+ upsellOffers: local.upsellOffers,
1172
+ checkoutOffers: local.checkoutOffers
1169
1173
  };
1170
1174
  }
1171
1175
  function getAssignedStepConfig() {
@@ -1211,6 +1215,10 @@ var TagadaSDKBundle = (() => {
1211
1215
  }
1212
1216
  return void 0;
1213
1217
  }
1218
+ function getAssignedPaymentInitiator() {
1219
+ const stepConfig = getAssignedStepConfig();
1220
+ return stepConfig == null ? void 0 : stepConfig.paymentInitiator;
1221
+ }
1214
1222
  function getAssignedResources() {
1215
1223
  const stepConfig = getAssignedStepConfig();
1216
1224
  const legacy = stepConfig == null ? void 0 : stepConfig.staticResources;
@@ -1265,6 +1273,17 @@ var TagadaSDKBundle = (() => {
1265
1273
  if (stepConfig.upsellOffers.mode !== "custom") return void 0;
1266
1274
  return stepConfig.upsellOffers.enabledUpsellIds;
1267
1275
  }
1276
+ function getAssignedCheckoutOfferIds() {
1277
+ const stepConfig = getAssignedStepConfig();
1278
+ if (!(stepConfig == null ? void 0 : stepConfig.checkoutOffers)) return void 0;
1279
+ if (stepConfig.checkoutOffers.mode !== "custom") return void 0;
1280
+ return stepConfig.checkoutOffers.enabledOfferIds;
1281
+ }
1282
+ function getAssignedCheckoutOfferDefault() {
1283
+ var _a;
1284
+ const stepConfig = getAssignedStepConfig();
1285
+ return (_a = stepConfig == null ? void 0 : stepConfig.checkoutOffers) == null ? void 0 : _a.defaultOfferId;
1286
+ }
1268
1287
  var lazyInjectPreviewIndicator, TrackingProvider, localFunnelConfigCache, localFunnelConfigLoading, FunnelClient;
1269
1288
  var init_funnelClient = __esm({
1270
1289
  "src/v2/core/funnelClient.ts"() {
@@ -8394,6 +8413,8 @@ var TagadaSDKBundle = (() => {
8394
8413
  var index_exports = {};
8395
8414
  __export(index_exports, {
8396
8415
  ApiClient: () => ApiClient,
8416
+ CLICK_ID_COOKIES: () => CLICK_ID_COOKIES,
8417
+ CLICK_ID_URL_PARAMS: () => CLICK_ID_URL_PARAMS,
8397
8418
  CheckoutResource: () => CheckoutResource,
8398
8419
  CheckoutUtils: () => CheckoutUtils,
8399
8420
  CurrencyUtils: () => CurrencyUtils,
@@ -8436,6 +8457,7 @@ var TagadaSDKBundle = (() => {
8436
8457
  getAssignedStepConfig: () => getAssignedStepConfig,
8437
8458
  getBasisTheoryApiKey: () => getBasisTheoryApiKey3,
8438
8459
  getBasisTheoryTenantId: () => getBasisTheoryTenantId2,
8460
+ getCurrencyInfo: () => getCurrencyInfo,
8439
8461
  getFunnelSessionCookie: () => getFunnelSessionCookie,
8440
8462
  getFunnelVariantId: () => getFunnelVariantId,
8441
8463
  getInternalPath: () => getInternalPath,
@@ -8448,8 +8470,13 @@ var TagadaSDKBundle = (() => {
8448
8470
  isPathRemapped: () => isPathRemapped,
8449
8471
  loadLocalConfig: () => loadLocalConfig,
8450
8472
  loadPluginConfig: () => loadPluginConfig,
8473
+ makeMetaEventId: () => makeMetaEventId,
8451
8474
  matchRoute: () => matchRoute,
8475
+ minorUnitsToMajorUnits: () => minorUnitsToMajorUnits,
8476
+ moneyStringOrNumberToMinorUnits: () => moneyStringOrNumberToMinorUnits,
8452
8477
  onConfigUpdate: () => onConfigUpdate,
8478
+ publishTrackingGlobal: () => publishTrackingGlobal,
8479
+ resolveClickId: () => resolveClickId,
8453
8480
  sendConfigUpdate: () => sendConfigUpdate,
8454
8481
  setFunnelSessionCookie: () => setFunnelSessionCookie,
8455
8482
  startApplePaySession: () => startApplePaySession,
@@ -10311,10 +10338,15 @@ var TagadaSDKBundle = (() => {
10311
10338
  }
10312
10339
  };
10313
10340
 
10341
+ // src/v2/core/resources/promotionEvents.ts
10342
+ var PROMOTION_APPLIED = "PROMOTION_APPLIED";
10343
+ var PROMOTION_REMOVED = "PROMOTION_REMOVED";
10344
+
10314
10345
  // src/v2/core/resources/checkout.ts
10315
10346
  var CheckoutResource = class {
10316
- constructor(apiClient) {
10347
+ constructor(apiClient, bus) {
10317
10348
  this.apiClient = apiClient;
10349
+ this.bus = bus;
10318
10350
  }
10319
10351
  /**
10320
10352
  * Initialize a new checkout session (sync mode)
@@ -10429,15 +10461,25 @@ var TagadaSDKBundle = (() => {
10429
10461
  * Apply promotion code
10430
10462
  */
10431
10463
  async applyPromotionCode(checkoutSessionId, code) {
10432
- return this.apiClient.post("/api/v1/checkout-sessions/".concat(checkoutSessionId, "/promotions/apply"), {
10464
+ var _a;
10465
+ const result = await this.apiClient.post("/api/v1/checkout-sessions/".concat(checkoutSessionId, "/promotions/apply"), {
10433
10466
  code
10434
10467
  });
10468
+ if (result.success) {
10469
+ void ((_a = this.bus) == null ? void 0 : _a.emit(PROMOTION_APPLIED, { checkoutSessionId }));
10470
+ }
10471
+ return result;
10435
10472
  }
10436
10473
  /**
10437
10474
  * Remove promotion
10438
10475
  */
10439
10476
  async removePromotion(checkoutSessionId, promotionId) {
10440
- return this.apiClient.delete("/api/v1/checkout-sessions/".concat(checkoutSessionId, "/promotions/").concat(promotionId));
10477
+ var _a;
10478
+ const result = await this.apiClient.delete("/api/v1/checkout-sessions/".concat(checkoutSessionId, "/promotions/").concat(promotionId));
10479
+ if (result.success) {
10480
+ void ((_a = this.bus) == null ? void 0 : _a.emit(PROMOTION_REMOVED, { checkoutSessionId }));
10481
+ }
10482
+ return result;
10441
10483
  }
10442
10484
  /**
10443
10485
  * Get applied promotions
@@ -10567,6 +10609,134 @@ var TagadaSDKBundle = (() => {
10567
10609
  return keys.tenantId;
10568
10610
  }
10569
10611
 
10612
+ // src/v2/core/utils/clickIdResolver.ts
10613
+ var CLICK_ID_URL_PARAMS = Object.freeze([
10614
+ // Postback ad-trackers (most specific first)
10615
+ "cf_click_id",
10616
+ // ClickFlare canonical
10617
+ "cid",
10618
+ // Voluum canonical (also: ClickFlare receiving-side)
10619
+ "rtkclickid",
10620
+ // RedTrack canonical
10621
+ "cmc_tid",
10622
+ // ClickMagick canonical (replaces legacy #S2#)
10623
+ "cmc_id",
10624
+ // ClickMagick legacy
10625
+ "cmcid",
10626
+ // ClickMagick alt
10627
+ "clickid",
10628
+ // Generic affiliate-network token (Binom, RedTrack, Voluum, …)
10629
+ "click_id",
10630
+ // Generic snake_case (ClickFlare, ClickMagick, …)
10631
+ // Ad-platform native click ids
10632
+ "gclid",
10633
+ // Google Ads
10634
+ "gbraid",
10635
+ // Google Ads (iOS app)
10636
+ "wbraid",
10637
+ // Google Ads (web→app)
10638
+ "fbclid",
10639
+ // Meta
10640
+ "msclkid",
10641
+ // Microsoft Ads
10642
+ "ttclid",
10643
+ // TikTok
10644
+ "twclid",
10645
+ // X / Twitter
10646
+ "li_fat_id",
10647
+ // LinkedIn
10648
+ "epik",
10649
+ // Pinterest
10650
+ "dclid",
10651
+ // Display & Video 360
10652
+ "yclid",
10653
+ // Yandex
10654
+ "irclickid"
10655
+ // Impact
10656
+ ]);
10657
+ var CLICK_ID_COOKIES = Object.freeze([
10658
+ // ClickFlare
10659
+ "cf_click_id",
10660
+ "cfclid",
10661
+ // RedTrack — `rtkclickid-store` is the canonical first-party cookie
10662
+ // set by RedTrack's Universal Tracking Script.
10663
+ "rtkclickid-store",
10664
+ "_rtkclickid",
10665
+ "rtkclickid",
10666
+ // Voluum
10667
+ "_voluum",
10668
+ "_voluumclickid",
10669
+ // Binom
10670
+ "_binom",
10671
+ "_binomclickid",
10672
+ // ClickMagick
10673
+ "_mck",
10674
+ "cmcid",
10675
+ // Other
10676
+ "skro-click-id",
10677
+ // Skro
10678
+ "click_id"
10679
+ // generic catch-all (last)
10680
+ ]);
10681
+ function readCookie(name) {
10682
+ if (typeof document === "undefined" || !document.cookie) return null;
10683
+ const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
10684
+ const m = document.cookie.match(new RegExp("(?:^|; )" + escaped + "=([^;]*)"));
10685
+ if (!m) return null;
10686
+ try {
10687
+ return decodeURIComponent(m[1]);
10688
+ } catch (e) {
10689
+ return m[1];
10690
+ }
10691
+ }
10692
+ function readUrlParam(search, name) {
10693
+ if (!search) return null;
10694
+ try {
10695
+ return new URLSearchParams(search).get(name);
10696
+ } catch (e) {
10697
+ return null;
10698
+ }
10699
+ }
10700
+ function resolveClickId() {
10701
+ var _a, _b;
10702
+ const all = {};
10703
+ let clickId = null;
10704
+ let source = null;
10705
+ let key = null;
10706
+ const search = typeof window !== "undefined" ? (_b = (_a = window.location) == null ? void 0 : _a.search) != null ? _b : "" : "";
10707
+ for (const name of CLICK_ID_URL_PARAMS) {
10708
+ const v = readUrlParam(search, name);
10709
+ if (v) {
10710
+ all["url:".concat(name)] = v;
10711
+ if (clickId === null) {
10712
+ clickId = v;
10713
+ source = "url";
10714
+ key = name;
10715
+ }
10716
+ }
10717
+ }
10718
+ for (const name of CLICK_ID_COOKIES) {
10719
+ const v = readCookie(name);
10720
+ if (v) {
10721
+ all["cookie:".concat(name)] = v;
10722
+ if (clickId === null) {
10723
+ clickId = v;
10724
+ source = "cookie";
10725
+ key = name;
10726
+ }
10727
+ }
10728
+ }
10729
+ return { clickId, source, key, all };
10730
+ }
10731
+ function publishTrackingGlobal() {
10732
+ var _a;
10733
+ if (typeof window === "undefined") return null;
10734
+ const resolved = resolveClickId();
10735
+ const tracking = __spreadProps(__spreadValues({}, resolved), { resolvedAt: Date.now() });
10736
+ window.TagadaPay = __spreadProps(__spreadValues({}, (_a = window.TagadaPay) != null ? _a : {}), { tracking });
10737
+ return tracking;
10738
+ }
10739
+
10570
10740
  // src/v2/core/resources/shippingRates.ts
10571
10741
  var ShippingRatesResource = class {
10572
10742
  constructor(apiClient) {
@@ -10599,6 +10769,26 @@ var TagadaSDKBundle = (() => {
10599
10769
  "/api/v1/checkout-sessions/".concat(sessionId, "/shipping-rates/preview?").concat(queryParams.toString())
10600
10770
  );
10601
10771
  }
10772
+ /**
10773
+ * Preview shipping rates for a country AND persist the auto-selected rate on the session.
10774
+ *
10775
+ * Difference with `previewShippingRates` (which is read-only):
10776
+ * - the server picks the highlighted (or cheapest) rate for `countryCode`
10777
+ * - it writes `checkoutSession.shippingRateId` to the DB
10778
+ * - the next `getCheckout()` will return a summary that includes shipping cost
10779
+ *
10780
+ * Use this from the studio when geolocation (or any client-side hint) determines a country
10781
+ * BEFORE the user submits the full address. Otherwise the wallet sheet (Apple Pay, etc.) will
10782
+ * be opened with a stale total that doesn't include shipping fees.
10783
+ */
10784
+ async selectPreviewShippingRate(sessionId, params) {
10785
+ return this.apiClient.post(
10786
+ "/api/v1/checkout-sessions/".concat(sessionId, "/shipping-rates/select-preview"),
10787
+ __spreadValues({
10788
+ countryCode: params.countryCode
10789
+ }, params.stateCode ? { stateCode: params.stateCode } : {})
10790
+ );
10791
+ }
10602
10792
  };
10603
10793
 
10604
10794
  // src/v2/core/resources/payments.ts
@@ -10933,22 +11123,23 @@ var TagadaSDKBundle = (() => {
10933
11123
  * @param returnUrl - Optional return URL for checkout
10934
11124
  * @param mainOrderId - Optional main order ID (for upsells)
10935
11125
  */
10936
- async payPreviewedOffer(offerId, currency = "", lineItems, returnUrl, mainOrderId) {
11126
+ async payPreviewedOffer(offerId, currency = "", lineItems, returnUrl, mainOrderId, initiatedBy) {
10937
11127
  console.log("\u{1F4B3} [OffersResource] Calling pay-preview API:", {
10938
11128
  offerId,
10939
11129
  currency,
10940
11130
  lineItems,
10941
11131
  returnUrl,
10942
11132
  mainOrderId,
11133
+ initiatedBy,
10943
11134
  endpoint: "/api/v1/offers/".concat(offerId, "/pay-preview")
10944
11135
  });
10945
- const response = await this.apiClient.post("/api/v1/offers/".concat(offerId, "/pay-preview"), {
11136
+ const response = await this.apiClient.post("/api/v1/offers/".concat(offerId, "/pay-preview"), __spreadValues({
10946
11137
  offerId,
10947
11138
  currency,
10948
11139
  lineItems,
10949
11140
  returnUrl: returnUrl || (typeof window !== "undefined" ? window.location.href : ""),
10950
11141
  mainOrderId
10951
- });
11142
+ }, initiatedBy ? { initiatedBy } : {}));
10952
11143
  console.log("\u{1F4E5} [OffersResource] Pay-preview API response:", response);
10953
11144
  return response;
10954
11145
  }
@@ -11616,26 +11807,6 @@ var TagadaSDKBundle = (() => {
11616
11807
  };
11617
11808
 
11618
11809
  // src/v2/core/utils/currency.ts
11619
- function formatMoney(amountMinorUnits, currencyCode = "USD", locale = "en-US") {
11620
- const decimalPlaces = CurrencyUtils.getDecimalPlaces(currencyCode);
11621
- let value;
11622
- if (decimalPlaces === 0) {
11623
- value = amountMinorUnits / 100;
11624
- } else {
11625
- value = amountMinorUnits / Math.pow(10, decimalPlaces);
11626
- }
11627
- try {
11628
- return new Intl.NumberFormat(locale, {
11629
- style: "currency",
11630
- currency: currencyCode,
11631
- minimumFractionDigits: decimalPlaces,
11632
- maximumFractionDigits: decimalPlaces
11633
- }).format(value);
11634
- } catch (e) {
11635
- const symbol = CurrencyUtils.getCurrencySymbol(currencyCode);
11636
- return "".concat(symbol).concat(value.toFixed(decimalPlaces));
11637
- }
11638
- }
11639
11810
  var CurrencyUtils = class _CurrencyUtils {
11640
11811
  /**
11641
11812
  * Get currency from context or fallback to default
@@ -12145,6 +12316,11 @@ var TagadaSDKBundle = (() => {
12145
12316
  };
12146
12317
  }
12147
12318
 
12319
+ // src/v2/core/utils/metaEventId.ts
12320
+ function makeMetaEventId(eventName, entityId) {
12321
+ return "".concat(eventName, "_").concat(entityId);
12322
+ }
12323
+
12148
12324
  // src/v2/core/pathRemapping.ts
12149
12325
  var import_path_to_regexp = __toESM(require_dist());
12150
12326
  var internalPathCache = void 0;
@@ -12641,7 +12817,7 @@ var TagadaSDKBundle = (() => {
12641
12817
  * Shared by processCardPayment, processApplePayPayment, etc.
12642
12818
  */
12643
12819
  async processAndHandle(checkoutSessionId, paymentInstrumentId, threedsSessionId, extra) {
12644
- var _a, _b, _c, _d, _e, _f, _g, _h;
12820
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s;
12645
12821
  const paymentFlowId = getAssignedPaymentFlowId();
12646
12822
  const response = await this.paymentsResource.processPaymentDirect(
12647
12823
  checkoutSessionId,
@@ -12663,13 +12839,26 @@ var TagadaSDKBundle = (() => {
12663
12839
  });
12664
12840
  (_f = (_e = this.callbacks).onCurrentPaymentId) == null ? void 0 : _f.call(_e, ((_d = response.payment) == null ? void 0 : _d.id) || null);
12665
12841
  if (response.payment.requireAction !== "none") {
12666
- await this.handlePaymentAction(response.payment);
12667
- return { success: true, payment: response.payment, order: response.order, redirecting: true };
12842
+ if (response.payment.requireAction === "error" || response.payment.status === "declined" || response.payment.status === "failed") {
12843
+ const msg = ((_g = response.payment.requireActionData) == null ? void 0 : _g.message) || ((_h = response.payment.error) == null ? void 0 : _h.message) || "Payment declined";
12844
+ (_j = (_i = this.callbacks).onError) == null ? void 0 : _j.call(_i, msg);
12845
+ (_l = (_k = this.callbacks).onProcessing) == null ? void 0 : _l.call(_k, false);
12846
+ return { success: false, error: msg, payment: response.payment, order: response.order };
12847
+ }
12848
+ const outcome = await this.handlePaymentAction(response.payment);
12849
+ const settled = this.settleActionOutcome(outcome, response.payment, response.order);
12850
+ if (settled) return settled;
12668
12851
  }
12669
12852
  if (response.payment.status === "succeeded") {
12670
- (_h = (_g = this.callbacks).onProcessing) == null ? void 0 : _h.call(_g, false);
12853
+ (_n = (_m = this.callbacks).onProcessing) == null ? void 0 : _n.call(_m, false);
12671
12854
  return { success: true, payment: response.payment, order: response.order };
12672
12855
  }
12856
+ if (response.payment.status === "declined" || response.payment.status === "failed") {
12857
+ const msg = ((_o = response.payment.error) == null ? void 0 : _o.message) || "Payment declined";
12858
+ (_q = (_p = this.callbacks).onError) == null ? void 0 : _q.call(_p, msg);
12859
+ (_s = (_r = this.callbacks).onProcessing) == null ? void 0 : _s.call(_r, false);
12860
+ return { success: false, error: msg, payment: response.payment, order: response.order };
12861
+ }
12673
12862
  return new Promise((resolve) => {
12674
12863
  this.startPolling(response.payment.id, {
12675
12864
  onSuccess: (payment) => {
@@ -12683,14 +12872,39 @@ var TagadaSDKBundle = (() => {
12683
12872
  (_d2 = (_c2 = this.callbacks).onProcessing) == null ? void 0 : _d2.call(_c2, false);
12684
12873
  resolve({ success: false, error });
12685
12874
  },
12686
- onRequireAction: (payment) => {
12687
- void this.handlePaymentAction(payment);
12875
+ onRequireAction: async (payment) => {
12876
+ var _a2, _b2;
12877
+ const outcome = await this.handlePaymentAction(payment);
12878
+ const settled = this.settleActionOutcome(outcome, payment, response.order);
12879
+ if (settled) {
12880
+ (_b2 = (_a2 = this.callbacks).onProcessing) == null ? void 0 : _b2.call(_a2, false);
12881
+ resolve(settled);
12882
+ }
12688
12883
  }
12689
12884
  });
12690
12885
  });
12691
12886
  }
12887
+ /**
12888
+ * Translate an ActionOutcome into a PaymentResult, or null when the outcome
12889
+ * is 'pending' (caller should keep polling instead of resolving).
12890
+ */
12891
+ settleActionOutcome(outcome, payment, order) {
12892
+ var _a;
12893
+ switch (outcome.kind) {
12894
+ case "redirected":
12895
+ return { success: true, payment, order, redirecting: true };
12896
+ case "completed":
12897
+ return { success: true, payment: outcome.payment, order };
12898
+ case "failed":
12899
+ return { success: false, error: outcome.error, payment: (_a = outcome.payment) != null ? _a : payment, order };
12900
+ case "pending":
12901
+ return null;
12902
+ }
12903
+ }
12692
12904
  /**
12693
12905
  * After radar / completePaymentAfterAction, handle the resumed payment.
12906
+ * Fires callbacks for side effects AND returns an outcome so the caller
12907
+ * (handlePaymentAction) can propagate failure into PaymentResult.
12694
12908
  */
12695
12909
  async handleResumedPayment(resumedPayment) {
12696
12910
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
@@ -12699,16 +12913,15 @@ var TagadaSDKBundle = (() => {
12699
12913
  (_d = (_c = this.callbacks).onError) == null ? void 0 : _d.call(_c, errorMsg);
12700
12914
  (_f = (_e = this.callbacks).onProcessing) == null ? void 0 : _f.call(_e, false);
12701
12915
  (_h = (_g = this.callbacks).onFailure) == null ? void 0 : _h.call(_g, errorMsg);
12702
- return;
12916
+ return { kind: "failed", error: errorMsg, payment: resumedPayment };
12703
12917
  }
12704
12918
  if (resumedPayment.status === "succeeded") {
12705
12919
  (_j = (_i = this.callbacks).onProcessing) == null ? void 0 : _j.call(_i, false);
12706
12920
  (_l = (_k = this.callbacks).onSuccess) == null ? void 0 : _l.call(_k, resumedPayment);
12707
- return;
12921
+ return { kind: "completed", payment: resumedPayment };
12708
12922
  }
12709
12923
  if (resumedPayment.requireAction !== "none" && resumedPayment.requireActionData) {
12710
- await this.handlePaymentAction(resumedPayment);
12711
- return;
12924
+ return this.handlePaymentAction(resumedPayment);
12712
12925
  }
12713
12926
  this.startPolling(resumedPayment.id, {
12714
12927
  onSuccess: (p) => {
@@ -12725,16 +12938,17 @@ var TagadaSDKBundle = (() => {
12725
12938
  void this.handlePaymentAction(p);
12726
12939
  }
12727
12940
  });
12941
+ return { kind: "pending" };
12728
12942
  }
12729
12943
  // ==========================================================================
12730
12944
  // PAYMENT ACTION HANDLER (mirrors usePaymentActionHandler)
12731
12945
  // ==========================================================================
12732
12946
  async handlePaymentAction(payment) {
12733
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
12734
- if (payment.requireAction === "none") return;
12735
- if ((_a = payment.requireActionData) == null ? void 0 : _a.processed) return;
12947
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
12948
+ if (payment.requireAction === "none") return { kind: "pending" };
12949
+ if ((_a = payment.requireActionData) == null ? void 0 : _a.processed) return { kind: "pending" };
12736
12950
  const actionData = payment.requireActionData;
12737
- if (!actionData) return;
12951
+ if (!actionData) return { kind: "pending" };
12738
12952
  try {
12739
12953
  await this.paymentsResource.markPaymentActionProcessed(payment.id);
12740
12954
  } catch (e) {
@@ -12750,49 +12964,53 @@ var TagadaSDKBundle = (() => {
12750
12964
  await this.callbacks.onBeforeRedirect(payment, redirectUrl);
12751
12965
  }
12752
12966
  window.location.href = redirectUrl;
12753
- } else if (payment.status === "succeeded") {
12967
+ return { kind: "redirected" };
12968
+ }
12969
+ if (payment.status === "succeeded") {
12754
12970
  (_e = (_d = this.callbacks).onProcessing) == null ? void 0 : _e.call(_d, false);
12755
12971
  (_g = (_f = this.callbacks).onSuccess) == null ? void 0 : _g.call(_f, payment);
12972
+ return { kind: "completed", payment };
12756
12973
  }
12757
- break;
12974
+ const noUrlMsg = "Payment redirect URL missing";
12975
+ (_i = (_h = this.callbacks).onError) == null ? void 0 : _i.call(_h, noUrlMsg);
12976
+ (_k = (_j = this.callbacks).onProcessing) == null ? void 0 : _k.call(_j, false);
12977
+ return { kind: "failed", error: noUrlMsg, payment };
12758
12978
  }
12759
12979
  case "threeds_auth": {
12760
- const session = (_h = actionData.metadata) == null ? void 0 : _h.threedsSession;
12980
+ const session = (_l = actionData.metadata) == null ? void 0 : _l.threedsSession;
12761
12981
  if (session == null ? void 0 : session.acsChallengeUrl) {
12762
12982
  console.log("[PaymentService] 3DS challenge redirect:", session.acsChallengeUrl);
12763
12983
  window.location.href = session.acsChallengeUrl;
12984
+ return { kind: "redirected" };
12764
12985
  }
12765
- break;
12986
+ const noUrlMsg = "3DS challenge URL missing";
12987
+ (_n = (_m = this.callbacks).onError) == null ? void 0 : _n.call(_m, noUrlMsg);
12988
+ (_p = (_o = this.callbacks).onProcessing) == null ? void 0 : _p.call(_o, false);
12989
+ return { kind: "failed", error: noUrlMsg, payment };
12766
12990
  }
12767
12991
  case "error": {
12768
12992
  const msg = actionData.message || "Payment action failed";
12769
- (_j = (_i = this.callbacks).onError) == null ? void 0 : _j.call(_i, msg);
12770
- (_l = (_k = this.callbacks).onProcessing) == null ? void 0 : _l.call(_k, false);
12771
- break;
12993
+ (_r = (_q = this.callbacks).onError) == null ? void 0 : _r.call(_q, msg);
12994
+ (_t = (_s = this.callbacks).onProcessing) == null ? void 0 : _t.call(_s, false);
12995
+ return { kind: "failed", error: msg, payment };
12772
12996
  }
12773
12997
  case "kesspay_auth":
12774
- this.handleKessPayAuth(actionData);
12775
- break;
12998
+ return this.handleKessPayAuth(actionData);
12776
12999
  case "trustflow_auth":
12777
- this.handleTrustFlowAuth(actionData);
12778
- break;
13000
+ return this.handleTrustFlowAuth(actionData);
12779
13001
  case "finix_radar":
12780
- await this.handleFinixRadar(payment, actionData);
12781
- break;
13002
+ return this.handleFinixRadar(payment, actionData);
12782
13003
  case "stripe_radar":
12783
- await this.handleStripeRadar(payment, actionData);
12784
- break;
13004
+ return this.handleStripeRadar(payment, actionData);
12785
13005
  case "radar":
12786
- if (((_m = actionData.metadata) == null ? void 0 : _m.provider) === "airwallex") {
12787
- await this.handleAirwallexRadar(payment, actionData);
13006
+ if (((_u = actionData.metadata) == null ? void 0 : _u.provider) === "airwallex") {
13007
+ return this.handleAirwallexRadar(payment, actionData);
12788
13008
  }
12789
- break;
13009
+ return { kind: "pending" };
12790
13010
  case "mastercard_auth":
12791
- await this.handleMasterCardAuth(payment, actionData);
12792
- break;
13011
+ return this.handleMasterCardAuth(payment, actionData);
12793
13012
  case "ngenius_3ds":
12794
- await this.handleNgeniusThreeds(payment, actionData);
12795
- break;
13013
+ return this.handleNgeniusThreeds(payment, actionData);
12796
13014
  default: {
12797
13015
  console.log("[PaymentService] Unhandled action, starting polling:", actionData.type);
12798
13016
  this.startPolling(payment.id, {
@@ -12810,7 +13028,7 @@ var TagadaSDKBundle = (() => {
12810
13028
  void this.handlePaymentAction(p);
12811
13029
  }
12812
13030
  });
12813
- break;
13031
+ return { kind: "pending" };
12814
13032
  }
12815
13033
  }
12816
13034
  }
@@ -12821,9 +13039,10 @@ var TagadaSDKBundle = (() => {
12821
13039
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
12822
13040
  const threeDSData = (_a = actionData == null ? void 0 : actionData.metadata) == null ? void 0 : _a.threeds;
12823
13041
  if (!(threeDSData == null ? void 0 : threeDSData.challengeHtml)) {
12824
- (_c = (_b = this.callbacks).onError) == null ? void 0 : _c.call(_b, "Missing KessPay 3DS challenge HTML");
13042
+ const msg = "Missing KessPay 3DS challenge HTML";
13043
+ (_c = (_b = this.callbacks).onError) == null ? void 0 : _c.call(_b, msg);
12825
13044
  (_e = (_d = this.callbacks).onProcessing) == null ? void 0 : _e.call(_d, false);
12826
- return;
13045
+ return { kind: "failed", error: msg };
12827
13046
  }
12828
13047
  try {
12829
13048
  (_g = (_f = this.callbacks).onProcessing) == null ? void 0 : _g.call(_f, false);
@@ -12849,9 +13068,12 @@ var TagadaSDKBundle = (() => {
12849
13068
  document.write(threeDSData.challengeHtml);
12850
13069
  document.close();
12851
13070
  }
13071
+ return { kind: "redirected" };
12852
13072
  } catch (error) {
12853
- (_i = (_h = this.callbacks).onError) == null ? void 0 : _i.call(_h, error instanceof Error ? error.message : "KessPay 3DS failed");
13073
+ const msg = error instanceof Error ? error.message : "KessPay 3DS failed";
13074
+ (_i = (_h = this.callbacks).onError) == null ? void 0 : _i.call(_h, msg);
12854
13075
  (_k = (_j = this.callbacks).onProcessing) == null ? void 0 : _k.call(_j, false);
13076
+ return { kind: "failed", error: msg };
12855
13077
  }
12856
13078
  }
12857
13079
  // --------------------------------------------------------------------------
@@ -12861,9 +13083,10 @@ var TagadaSDKBundle = (() => {
12861
13083
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
12862
13084
  const authData = (_a = actionData == null ? void 0 : actionData.metadata) == null ? void 0 : _a.trustflow;
12863
13085
  if (!(authData == null ? void 0 : authData.appId) || !(authData == null ? void 0 : authData.txnId) || !(authData == null ? void 0 : authData.hash)) {
12864
- (_c = (_b = this.callbacks).onError) == null ? void 0 : _c.call(_b, "Missing Trust Flow 3DS data");
13086
+ const msg = "Missing Trust Flow 3DS data";
13087
+ (_c = (_b = this.callbacks).onError) == null ? void 0 : _c.call(_b, msg);
12865
13088
  (_e = (_d = this.callbacks).onProcessing) == null ? void 0 : _e.call(_d, false);
12866
- return;
13089
+ return { kind: "failed", error: msg };
12867
13090
  }
12868
13091
  try {
12869
13092
  (_g = (_f = this.callbacks).onProcessing) == null ? void 0 : _g.call(_f, false);
@@ -12880,9 +13103,12 @@ var TagadaSDKBundle = (() => {
12880
13103
  }
12881
13104
  document.body.appendChild(form);
12882
13105
  form.submit();
13106
+ return { kind: "redirected" };
12883
13107
  } catch (error) {
12884
- (_i = (_h = this.callbacks).onError) == null ? void 0 : _i.call(_h, error instanceof Error ? error.message : "Trust Flow 3DS failed");
13108
+ const msg = error instanceof Error ? error.message : "Trust Flow 3DS failed";
13109
+ (_i = (_h = this.callbacks).onError) == null ? void 0 : _i.call(_h, msg);
12885
13110
  (_k = (_j = this.callbacks).onProcessing) == null ? void 0 : _k.call(_j, false);
13111
+ return { kind: "failed", error: msg };
12886
13112
  }
12887
13113
  }
12888
13114
  // --------------------------------------------------------------------------
@@ -12892,9 +13118,10 @@ var TagadaSDKBundle = (() => {
12892
13118
  var _a, _b, _c, _d, _e, _f, _g, _h, _i;
12893
13119
  const radarConfig = (_a = actionData.metadata) == null ? void 0 : _a.radar;
12894
13120
  if (!radarConfig) {
12895
- (_c = (_b = this.callbacks).onError) == null ? void 0 : _c.call(_b, "Finix radar config missing");
13121
+ const msg = "Finix radar config missing";
13122
+ (_c = (_b = this.callbacks).onError) == null ? void 0 : _c.call(_b, msg);
12896
13123
  (_e = (_d = this.callbacks).onProcessing) == null ? void 0 : _e.call(_d, false);
12897
- return;
13124
+ return { kind: "failed", error: msg, payment };
12898
13125
  }
12899
13126
  try {
12900
13127
  await this.loadScript("https://js.finix.com/v/1/finix.js", () => {
@@ -12925,10 +13152,12 @@ var TagadaSDKBundle = (() => {
12925
13152
  }
12926
13153
  });
12927
13154
  const resumed = await this.paymentsResource.completePaymentAfterAction(payment.id);
12928
- await this.handleResumedPayment(resumed);
13155
+ return await this.handleResumedPayment(resumed);
12929
13156
  } catch (error) {
12930
- (_g = (_f = this.callbacks).onError) == null ? void 0 : _g.call(_f, error instanceof Error ? error.message : "Finix radar failed");
13157
+ const msg = error instanceof Error ? error.message : "Finix radar failed";
13158
+ (_g = (_f = this.callbacks).onError) == null ? void 0 : _g.call(_f, msg);
12931
13159
  (_i = (_h = this.callbacks).onProcessing) == null ? void 0 : _i.call(_h, false);
13160
+ return { kind: "failed", error: msg, payment };
12932
13161
  }
12933
13162
  }
12934
13163
  // --------------------------------------------------------------------------
@@ -12938,9 +13167,10 @@ var TagadaSDKBundle = (() => {
12938
13167
  var _a, _b, _c, _d, _e, _f, _g, _h, _i;
12939
13168
  const radarConfig = (_a = actionData.metadata) == null ? void 0 : _a.radar;
12940
13169
  if (!(radarConfig == null ? void 0 : radarConfig.publishableKey)) {
12941
- (_c = (_b = this.callbacks).onError) == null ? void 0 : _c.call(_b, "Stripe radar config missing");
13170
+ const msg = "Stripe radar config missing";
13171
+ (_c = (_b = this.callbacks).onError) == null ? void 0 : _c.call(_b, msg);
12942
13172
  (_e = (_d = this.callbacks).onProcessing) == null ? void 0 : _e.call(_d, false);
12943
- return;
13173
+ return { kind: "failed", error: msg, payment };
12944
13174
  }
12945
13175
  try {
12946
13176
  await this.loadScript("https://js.stripe.com/v3/", () => typeof window.Stripe === "function");
@@ -12954,10 +13184,12 @@ var TagadaSDKBundle = (() => {
12954
13184
  stripeRadarSessionData: result.radarSession
12955
13185
  });
12956
13186
  const resumed = await this.paymentsResource.completePaymentAfterAction(payment.id);
12957
- await this.handleResumedPayment(resumed);
13187
+ return await this.handleResumedPayment(resumed);
12958
13188
  } catch (error) {
12959
- (_g = (_f = this.callbacks).onError) == null ? void 0 : _g.call(_f, error instanceof Error ? error.message : "Stripe radar failed");
13189
+ const msg = error instanceof Error ? error.message : "Stripe radar failed";
13190
+ (_g = (_f = this.callbacks).onError) == null ? void 0 : _g.call(_f, msg);
12960
13191
  (_i = (_h = this.callbacks).onProcessing) == null ? void 0 : _i.call(_h, false);
13192
+ return { kind: "failed", error: msg, payment };
12961
13193
  }
12962
13194
  }
12963
13195
  // --------------------------------------------------------------------------
@@ -12967,9 +13199,10 @@ var TagadaSDKBundle = (() => {
12967
13199
  var _a, _b, _c, _d, _e, _f, _g, _h, _i;
12968
13200
  const sdk = (_a = actionData.metadata) == null ? void 0 : _a.sdk;
12969
13201
  if (!(sdk == null ? void 0 : sdk.paymentResponse) || !sdk.orderReference || !sdk.paymentReference) {
12970
- (_c = (_b = this.callbacks).onError) == null ? void 0 : _c.call(_b, "N-Genius 3DS: missing SDK metadata");
13202
+ const msg = "N-Genius 3DS: missing SDK metadata";
13203
+ (_c = (_b = this.callbacks).onError) == null ? void 0 : _c.call(_b, msg);
12971
13204
  (_e = (_d = this.callbacks).onProcessing) == null ? void 0 : _e.call(_d, false);
12972
- return;
13205
+ return { kind: "failed", error: msg, payment };
12973
13206
  }
12974
13207
  try {
12975
13208
  const sdkUrl = sdk.isSandboxed ? "https://paypage.sandbox.ngenius-payments.com/hosted-sessions/sdk.js" : "https://paypage.ngenius-payments.com/hosted-sessions/sdk.js";
@@ -12998,12 +13231,13 @@ var TagadaSDKBundle = (() => {
12998
13231
  orderReference: sdk.orderReference,
12999
13232
  paymentReference: sdk.paymentReference
13000
13233
  });
13001
- await this.handleResumedPayment(completedPayment);
13234
+ return await this.handleResumedPayment(completedPayment);
13002
13235
  } catch (error) {
13003
13236
  const msg = error instanceof Error ? error.message : "N-Genius 3DS failed";
13004
13237
  console.error("[N-Genius 3DS] Error:", error);
13005
13238
  (_g = (_f = this.callbacks).onError) == null ? void 0 : _g.call(_f, msg);
13006
13239
  (_i = (_h = this.callbacks).onProcessing) == null ? void 0 : _i.call(_h, false);
13240
+ return { kind: "failed", error: msg, payment };
13007
13241
  }
13008
13242
  }
13009
13243
  // --------------------------------------------------------------------------
@@ -13015,9 +13249,10 @@ var TagadaSDKBundle = (() => {
13015
13249
  const orderId = (_b = payment.order) == null ? void 0 : _b.id;
13016
13250
  const checkoutSessionId = (_c = payment.order) == null ? void 0 : _c.checkoutSessionId;
13017
13251
  if (!orderId || !checkoutSessionId) {
13018
- (_e = (_d = this.callbacks).onError) == null ? void 0 : _e.call(_d, "Missing order info for Airwallex radar");
13252
+ const msg = "Missing order info for Airwallex radar";
13253
+ (_e = (_d = this.callbacks).onError) == null ? void 0 : _e.call(_d, msg);
13019
13254
  (_g = (_f = this.callbacks).onProcessing) == null ? void 0 : _g.call(_f, false);
13020
- return;
13255
+ return { kind: "failed", error: msg, payment };
13021
13256
  }
13022
13257
  try {
13023
13258
  const sessionId = crypto.randomUUID();
@@ -13045,10 +13280,12 @@ var TagadaSDKBundle = (() => {
13045
13280
  airwallexRadarSessionId: sessionId
13046
13281
  });
13047
13282
  const resumed = await this.paymentsResource.completePaymentAfterAction(payment.id);
13048
- await this.handleResumedPayment(resumed);
13283
+ return await this.handleResumedPayment(resumed);
13049
13284
  } catch (error) {
13050
- (_i = (_h = this.callbacks).onError) == null ? void 0 : _i.call(_h, error instanceof Error ? error.message : "Airwallex radar failed");
13285
+ const msg = error instanceof Error ? error.message : "Airwallex radar failed";
13286
+ (_i = (_h = this.callbacks).onError) == null ? void 0 : _i.call(_h, msg);
13051
13287
  (_k = (_j = this.callbacks).onProcessing) == null ? void 0 : _k.call(_j, false);
13288
+ return { kind: "failed", error: msg, payment };
13052
13289
  }
13053
13290
  }
13054
13291
  // --------------------------------------------------------------------------
@@ -13058,9 +13295,10 @@ var TagadaSDKBundle = (() => {
13058
13295
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
13059
13296
  const threeDSData = (_a = actionData == null ? void 0 : actionData.metadata) == null ? void 0 : _a.threeds;
13060
13297
  if (!(threeDSData == null ? void 0 : threeDSData.sessionId) || !(threeDSData == null ? void 0 : threeDSData.merchantId)) {
13061
- (_c = (_b = this.callbacks).onError) == null ? void 0 : _c.call(_b, "Missing MasterCard 3DS data");
13298
+ const msg = "Missing MasterCard 3DS data";
13299
+ (_c = (_b = this.callbacks).onError) == null ? void 0 : _c.call(_b, msg);
13062
13300
  (_e = (_d = this.callbacks).onProcessing) == null ? void 0 : _e.call(_d, false);
13063
- return;
13301
+ return { kind: "failed", error: msg, payment };
13064
13302
  }
13065
13303
  try {
13066
13304
  (_g = (_f = this.callbacks).onProcessing) == null ? void 0 : _g.call(_f, false);
@@ -13111,17 +13349,22 @@ var TagadaSDKBundle = (() => {
13111
13349
  document.write(challengeHtml);
13112
13350
  document.close();
13113
13351
  }
13114
- } else {
13115
- if (threeDSData.paymentId) {
13116
- const resumed = await this.paymentsResource.completePaymentAfterAction(threeDSData.paymentId);
13117
- await this.handleResumedPayment(resumed);
13118
- }
13352
+ return { kind: "redirected" };
13353
+ }
13354
+ if (threeDSData.paymentId) {
13355
+ const resumed = await this.paymentsResource.completePaymentAfterAction(threeDSData.paymentId);
13356
+ const cleanup2 = document.getElementById(containerId);
13357
+ if (cleanup2) cleanup2.remove();
13358
+ return await this.handleResumedPayment(resumed);
13119
13359
  }
13120
13360
  const cleanup = document.getElementById(containerId);
13121
13361
  if (cleanup) cleanup.remove();
13362
+ return { kind: "pending" };
13122
13363
  } catch (error) {
13123
- (_l = (_k = this.callbacks).onError) == null ? void 0 : _l.call(_k, error instanceof Error ? error.message : "MasterCard 3DS failed");
13364
+ const msg = error instanceof Error ? error.message : "MasterCard 3DS failed";
13365
+ (_l = (_k = this.callbacks).onError) == null ? void 0 : _l.call(_k, msg);
13124
13366
  (_n = (_m = this.callbacks).onProcessing) == null ? void 0 : _n.call(_m, false);
13367
+ return { kind: "failed", error: msg, payment };
13125
13368
  }
13126
13369
  }
13127
13370
  // --------------------------------------------------------------------------
@@ -13419,6 +13662,87 @@ var TagadaSDKBundle = (() => {
13419
13662
  return { success: false, error: msg };
13420
13663
  }
13421
13664
  }
13665
+ /**
13666
+ * Stripe Express Checkout Element payment.
13667
+ *
13668
+ * Mirrors the inline flow from `react/components/StripeExpressButton.onConfirm`:
13669
+ * 1. processPaymentDirect with isExpress=true → returns clientSecret
13670
+ * 2. stripe.confirmPayment(elements, clientSecret) — must run while wallet sheet is open
13671
+ * 3. Poll until webhook marks payment succeeded
13672
+ *
13673
+ * Used for ECE methods Stripe surfaces in one element: apple_pay, google_pay, link, klarna.
13674
+ * The `stripe` and `elements` refs come from Stripe React hooks at the call site.
13675
+ */
13676
+ async processStripeExpressPayment(checkoutSessionId, paymentMethod, processorId, stripe, elements, options) {
13677
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
13678
+ (_b = (_a = this.callbacks).onProcessing) == null ? void 0 : _b.call(_a, true);
13679
+ (_d = (_c = this.callbacks).onError) == null ? void 0 : _d.call(_c, null);
13680
+ try {
13681
+ const paymentFlowId = getAssignedPaymentFlowId();
13682
+ const response = await this.paymentsResource.processPaymentDirect(
13683
+ checkoutSessionId,
13684
+ "",
13685
+ void 0,
13686
+ {
13687
+ processorId,
13688
+ paymentMethod,
13689
+ isExpress: true,
13690
+ paymentFlowId,
13691
+ shippingRateId: options == null ? void 0 : options.shippingRateId
13692
+ }
13693
+ );
13694
+ (_g = (_f = this.callbacks).onCurrentPaymentId) == null ? void 0 : _g.call(_f, ((_e = response.payment) == null ? void 0 : _e.id) || null);
13695
+ const clientSecret = (_k = (_j = (_i = (_h = response == null ? void 0 : response.payment) == null ? void 0 : _h.requireActionData) == null ? void 0 : _i.metadata) == null ? void 0 : _j.stripeExpressCheckout) == null ? void 0 : _k.clientSecret;
13696
+ if (!clientSecret) {
13697
+ const msg = "Express checkout configuration missing \u2014 no client secret returned";
13698
+ (_m = (_l = this.callbacks).onError) == null ? void 0 : _m.call(_l, msg);
13699
+ (_o = (_n = this.callbacks).onProcessing) == null ? void 0 : _o.call(_n, false);
13700
+ return { success: false, error: msg, payment: response.payment, order: response.order };
13701
+ }
13702
+ const { error: confirmError } = await stripe.confirmPayment({
13703
+ elements,
13704
+ clientSecret,
13705
+ confirmParams: { return_url: window.location.href },
13706
+ redirect: "if_required"
13707
+ });
13708
+ if (confirmError) {
13709
+ const msg = (_p = confirmError.message) != null ? _p : "Payment confirmation failed";
13710
+ (_r = (_q = this.callbacks).onError) == null ? void 0 : _r.call(_q, msg);
13711
+ (_t = (_s = this.callbacks).onProcessing) == null ? void 0 : _t.call(_s, false);
13712
+ return { success: false, error: msg, payment: response.payment, order: response.order };
13713
+ }
13714
+ const paymentId = response.payment.id;
13715
+ return await new Promise((resolve) => {
13716
+ const tick = async () => {
13717
+ var _a2, _b2, _c2, _d2, _e2, _f2;
13718
+ try {
13719
+ const payment = await this.paymentsResource.getPaymentStatus(paymentId);
13720
+ if (payment.status === "succeeded" || payment.status === "pending" && payment.subStatus === "authorized") {
13721
+ (_b2 = (_a2 = this.callbacks).onProcessing) == null ? void 0 : _b2.call(_a2, false);
13722
+ resolve({ success: true, payment, order: response.order });
13723
+ return;
13724
+ }
13725
+ if (payment.status !== "succeeded" && payment.status !== "pending") {
13726
+ const msg = payment.status || "Payment failed";
13727
+ (_d2 = (_c2 = this.callbacks).onError) == null ? void 0 : _d2.call(_c2, msg);
13728
+ (_f2 = (_e2 = this.callbacks).onProcessing) == null ? void 0 : _f2.call(_e2, false);
13729
+ resolve({ success: false, error: msg, payment, order: response.order });
13730
+ return;
13731
+ }
13732
+ setTimeout(tick, 1500);
13733
+ } catch (e) {
13734
+ setTimeout(tick, 1500);
13735
+ }
13736
+ };
13737
+ void tick();
13738
+ });
13739
+ } catch (error) {
13740
+ const msg = error instanceof Error ? error.message : String(error);
13741
+ (_v = (_u = this.callbacks).onError) == null ? void 0 : _v.call(_u, msg);
13742
+ (_x = (_w = this.callbacks).onProcessing) == null ? void 0 : _x.call(_w, false);
13743
+ return { success: false, error: msg };
13744
+ }
13745
+ }
13422
13746
  };
13423
13747
 
13424
13748
  // ../core-js/dist/core/providers/BasisTheoryProvider.js
@@ -13584,6 +13908,9 @@ var TagadaSDKBundle = (() => {
13584
13908
  if (request.shippingMethods) {
13585
13909
  applePayRequest.shippingMethods = request.shippingMethods;
13586
13910
  }
13911
+ if (request.supportedCountries && request.supportedCountries.length > 0) {
13912
+ applePayRequest.supportedCountries = request.supportedCountries.map((c) => c.toUpperCase());
13913
+ }
13587
13914
  try {
13588
13915
  const session = new ApplePaySession(APPLE_PAY_SESSION_VERSION, applePayRequest);
13589
13916
  session.onvalidatemerchant = () => {
@@ -13625,6 +13952,17 @@ var TagadaSDKBundle = (() => {
13625
13952
  session.abort();
13626
13953
  return;
13627
13954
  }
13955
+ if (result.errors && result.errors.length > 0) {
13956
+ const ApplePayErrorCtor = window.ApplePayError;
13957
+ const nativeErrors = result.errors.map((e) => ApplePayErrorCtor ? new ApplePayErrorCtor(e.code, e.contactField, e.message) : { code: e.code, contactField: e.contactField, message: e.message });
13958
+ session.completeShippingContactSelection({
13959
+ newTotal: __spreadProps(__spreadValues({}, result.total), { type: "final" }),
13960
+ newLineItems: result.lineItems.map((li) => __spreadProps(__spreadValues({}, li), { type: "final" })),
13961
+ newShippingMethods: result.shippingMethods || [],
13962
+ errors: nativeErrors
13963
+ });
13964
+ return;
13965
+ }
13628
13966
  session.completeShippingContactSelection(ApplePaySession.STATUS_SUCCESS, result.shippingMethods || [], __spreadProps(__spreadValues({}, result.total), { type: "final" }), result.lineItems.map((li) => __spreadProps(__spreadValues({}, li), { type: "final" })));
13629
13967
  } catch (e) {
13630
13968
  session.abort();
@@ -13890,6 +14228,2477 @@ var TagadaSDKBundle = (() => {
13890
14228
  }
13891
14229
  }
13892
14230
 
14231
+ // src/data/currencies.json
14232
+ var currencies_default = {
14233
+ AED: {
14234
+ name: "United Arab Emirates Dirham",
14235
+ demonym: "UAE",
14236
+ majorSingle: "Dirham",
14237
+ majorPlural: "Dirhams",
14238
+ ISOnum: 784,
14239
+ symbol: "\u062F.\u0625.",
14240
+ symbolNative: "\u062F.\u0625.",
14241
+ minorSingle: "Fils",
14242
+ minorPlural: "Fils",
14243
+ ISOdigits: 2,
14244
+ decimals: 2,
14245
+ numToBasic: 100
14246
+ },
14247
+ AFN: {
14248
+ name: "Afghan Afghani",
14249
+ demonym: "Afghan",
14250
+ majorSingle: "Afghani",
14251
+ majorPlural: "Afghani",
14252
+ ISOnum: 971,
14253
+ symbol: "Af",
14254
+ symbolNative: "\u060B",
14255
+ minorSingle: "Pul",
14256
+ minorPlural: "Pul",
14257
+ ISOdigits: 2,
14258
+ decimals: 2,
14259
+ numToBasic: 100
14260
+ },
14261
+ ALL: {
14262
+ name: "Albanian Lek",
14263
+ demonym: "Albanian",
14264
+ majorSingle: "Lek",
14265
+ majorPlural: "Lek\xEB",
14266
+ ISOnum: 8,
14267
+ symbol: "L",
14268
+ symbolNative: "L",
14269
+ minorSingle: "Qindarka",
14270
+ minorPlural: "Qindarka",
14271
+ ISOdigits: 2,
14272
+ decimals: 2,
14273
+ numToBasic: 100
14274
+ },
14275
+ AMD: {
14276
+ name: "Armenian Dram",
14277
+ demonym: "Armenian",
14278
+ majorSingle: "Dram",
14279
+ majorPlural: "Dram",
14280
+ ISOnum: 51,
14281
+ symbol: "\u058F",
14282
+ symbolNative: "\u0564\u0580",
14283
+ minorSingle: "Luma",
14284
+ minorPlural: "Luma",
14285
+ ISOdigits: 2,
14286
+ decimals: 2,
14287
+ numToBasic: 100
14288
+ },
14289
+ ANG: {
14290
+ name: "Netherlands Antillean Guilder",
14291
+ demonym: "Netherlands Antillean",
14292
+ majorSingle: "Guilder",
14293
+ majorPlural: "Guilders",
14294
+ ISOnum: 532,
14295
+ symbol: "\u0192",
14296
+ symbolNative: "\u0192",
14297
+ minorSingle: "Cent",
14298
+ minorPlural: "Cents",
14299
+ ISOdigits: 2,
14300
+ decimals: 2,
14301
+ numToBasic: 100
14302
+ },
14303
+ AOA: {
14304
+ name: "Angolan Kwanza",
14305
+ demonym: "Angolan",
14306
+ majorSingle: "Kwanza",
14307
+ majorPlural: "Kwanza",
14308
+ ISOnum: 973,
14309
+ symbol: "Kz",
14310
+ symbolNative: "Kz",
14311
+ minorSingle: "Centimo",
14312
+ minorPlural: "Centimos",
14313
+ ISOdigits: 2,
14314
+ decimals: 2,
14315
+ numToBasic: 100
14316
+ },
14317
+ ARS: {
14318
+ name: "Argentine Peso",
14319
+ demonym: "Argentine",
14320
+ majorSingle: "Peso",
14321
+ majorPlural: "Pesos",
14322
+ ISOnum: 32,
14323
+ symbol: "AR$",
14324
+ symbolNative: "$",
14325
+ minorSingle: "Centavo",
14326
+ minorPlural: "Centavos",
14327
+ ISOdigits: 2,
14328
+ decimals: 2,
14329
+ numToBasic: 100
14330
+ },
14331
+ AUD: {
14332
+ name: "Australian Dollar",
14333
+ demonym: "Australian",
14334
+ majorSingle: "Dollar",
14335
+ majorPlural: "Dollars",
14336
+ ISOnum: 36,
14337
+ symbol: "AU$",
14338
+ symbolNative: "$",
14339
+ minorSingle: "Cent",
14340
+ minorPlural: "Cents",
14341
+ ISOdigits: 2,
14342
+ decimals: 2,
14343
+ numToBasic: 100
14344
+ },
14345
+ AWG: {
14346
+ name: "Aruban Florin",
14347
+ demonym: "Aruban",
14348
+ majorSingle: "Florin",
14349
+ majorPlural: "Florin",
14350
+ ISOnum: 533,
14351
+ symbol: "\u0192",
14352
+ symbolNative: "\u0192",
14353
+ minorSingle: "Cent",
14354
+ minorPlural: "Cents",
14355
+ ISOdigits: 2,
14356
+ decimals: 2,
14357
+ numToBasic: 100
14358
+ },
14359
+ AZN: {
14360
+ name: "Azerbaijani Manat",
14361
+ demonym: "Azerbaijani",
14362
+ majorSingle: "Manat",
14363
+ majorPlural: "Manat",
14364
+ ISOnum: 944,
14365
+ symbol: "\u043C\u0430\u043D",
14366
+ symbolNative: "\u20BC",
14367
+ minorSingle: "Qapik",
14368
+ minorPlural: "Qapik",
14369
+ ISOdigits: 2,
14370
+ decimals: 2,
14371
+ numToBasic: 100
14372
+ },
14373
+ BAM: {
14374
+ name: "Bosnia and Herzegovina Convertible Mark",
14375
+ demonym: "Bosnia-Herzegovina",
14376
+ majorSingle: "Convertible Mark",
14377
+ majorPlural: "Marks",
14378
+ ISOnum: 977,
14379
+ symbol: "KM",
14380
+ symbolNative: "\u041A\u041C",
14381
+ minorSingle: "Fening",
14382
+ minorPlural: "Fening",
14383
+ ISOdigits: 2,
14384
+ decimals: 2,
14385
+ numToBasic: 100
14386
+ },
14387
+ BBD: {
14388
+ name: "Barbadian Dollar",
14389
+ demonym: "Barbadian",
14390
+ majorSingle: "Dollar",
14391
+ majorPlural: "Dollars",
14392
+ ISOnum: 52,
14393
+ symbol: "BBD$",
14394
+ symbolNative: "$",
14395
+ minorSingle: "Cent",
14396
+ minorPlural: "Cents",
14397
+ ISOdigits: 2,
14398
+ decimals: 2,
14399
+ numToBasic: 100
14400
+ },
14401
+ BDT: {
14402
+ name: "Bangladeshi Taka",
14403
+ demonym: "Bangladeshi",
14404
+ majorSingle: "Taka",
14405
+ majorPlural: "Taka",
14406
+ ISOnum: 50,
14407
+ symbol: "\u09F3",
14408
+ symbolNative: "\u09F3",
14409
+ minorSingle: "Poisha",
14410
+ minorPlural: "Poisha",
14411
+ ISOdigits: 2,
14412
+ decimals: 2,
14413
+ numToBasic: 100
14414
+ },
14415
+ BGN: {
14416
+ name: "Bulgarian Lev",
14417
+ demonym: "Bulgarian",
14418
+ majorSingle: "Lev",
14419
+ majorPlural: "Leva",
14420
+ ISOnum: 975,
14421
+ symbol: "\u043B\u0432.",
14422
+ symbolNative: "\u043B\u0432.",
14423
+ minorSingle: "Stotinka",
14424
+ minorPlural: "Stotinki",
14425
+ ISOdigits: 2,
14426
+ decimals: 2,
14427
+ numToBasic: 100
14428
+ },
14429
+ BHD: {
14430
+ name: "Bahraini Dinar",
14431
+ demonym: "Bahraini",
14432
+ majorSingle: "Dinar",
14433
+ majorPlural: "Dinars",
14434
+ ISOnum: 48,
14435
+ symbol: "BD",
14436
+ symbolNative: "\u062F.\u0628.",
14437
+ minorSingle: "Fils",
14438
+ minorPlural: "Fils",
14439
+ ISOdigits: 3,
14440
+ decimals: 3,
14441
+ numToBasic: 1e3
14442
+ },
14443
+ BIF: {
14444
+ name: "Burundian Franc",
14445
+ demonym: "Burundian",
14446
+ majorSingle: "Franc",
14447
+ majorPlural: "Francs",
14448
+ ISOnum: 108,
14449
+ symbol: "FBu",
14450
+ symbolNative: "FBu",
14451
+ minorSingle: "Centime",
14452
+ minorPlural: "Centimes",
14453
+ ISOdigits: 0,
14454
+ decimals: 2,
14455
+ numToBasic: 100
14456
+ },
14457
+ BMD: {
14458
+ name: "Bermudian Dollar",
14459
+ demonym: "Bermudian",
14460
+ majorSingle: "Dollar",
14461
+ majorPlural: "Dollars",
14462
+ ISOnum: 60,
14463
+ symbol: "$",
14464
+ symbolNative: "$",
14465
+ minorSingle: "Cent",
14466
+ minorPlural: "Cents",
14467
+ ISOdigits: 2,
14468
+ decimals: 2,
14469
+ numToBasic: 100
14470
+ },
14471
+ BND: {
14472
+ name: "Brunei Dollar",
14473
+ demonym: "Brunei",
14474
+ majorSingle: "Dollar",
14475
+ majorPlural: "Dollars",
14476
+ ISOnum: 96,
14477
+ symbol: "B$",
14478
+ symbolNative: "$",
14479
+ minorSingle: "Cent",
14480
+ minorPlural: "Cents",
14481
+ ISOdigits: 2,
14482
+ decimals: 2,
14483
+ numToBasic: 100
14484
+ },
14485
+ BOB: {
14486
+ name: "Bolivian Boliviano",
14487
+ demonym: "Bolivian",
14488
+ majorSingle: "Boliviano",
14489
+ majorPlural: "Bolivianos",
14490
+ ISOnum: 68,
14491
+ symbol: "Bs.",
14492
+ symbolNative: "Bs.",
14493
+ minorSingle: "Centavo",
14494
+ minorPlural: "Centavos",
14495
+ ISOdigits: 2,
14496
+ decimals: 2,
14497
+ numToBasic: 100
14498
+ },
14499
+ BRL: {
14500
+ name: "Brazilian Real",
14501
+ demonym: "Brazilian",
14502
+ majorSingle: "Real",
14503
+ majorPlural: "Reais",
14504
+ ISOnum: 986,
14505
+ symbol: "R$",
14506
+ symbolNative: "R$",
14507
+ minorSingle: "Centavo",
14508
+ minorPlural: "Centavos",
14509
+ ISOdigits: 2,
14510
+ decimals: 2,
14511
+ numToBasic: 100
14512
+ },
14513
+ BSD: {
14514
+ name: "Bahamian Dollar",
14515
+ demonym: "Bahamian",
14516
+ majorSingle: "Dollar",
14517
+ majorPlural: "Dollars",
14518
+ ISOnum: 44,
14519
+ symbol: "$",
14520
+ symbolNative: "$",
14521
+ minorSingle: "Cent",
14522
+ minorPlural: "Cents",
14523
+ ISOdigits: 2,
14524
+ decimals: 2,
14525
+ numToBasic: 100
14526
+ },
14527
+ BTN: {
14528
+ name: "Bhutanese Ngultrum",
14529
+ demonym: "Bhutanese",
14530
+ majorSingle: "Ngultrum",
14531
+ majorPlural: "Ngultrums",
14532
+ ISOnum: 64,
14533
+ symbol: "Nu.",
14534
+ symbolNative: "Nu.",
14535
+ minorSingle: "Chetrum",
14536
+ minorPlural: "Chetrums",
14537
+ ISOdigits: 2,
14538
+ decimals: 2,
14539
+ numToBasic: 100
14540
+ },
14541
+ BWP: {
14542
+ name: "Botswana Pula",
14543
+ demonym: "Botswana",
14544
+ majorSingle: "Pula",
14545
+ majorPlural: "Pula",
14546
+ ISOnum: 72,
14547
+ symbol: "P",
14548
+ symbolNative: "P",
14549
+ minorSingle: "Thebe",
14550
+ minorPlural: "Thebe",
14551
+ ISOdigits: 2,
14552
+ decimals: 2,
14553
+ numToBasic: 100
14554
+ },
14555
+ BYN: {
14556
+ name: "Belarusian Ruble",
14557
+ demonym: "Belarusian",
14558
+ majorSingle: "Ruble",
14559
+ majorPlural: "Rubles",
14560
+ ISOnum: 933,
14561
+ symbol: "Br",
14562
+ symbolNative: "\u0440\u0443\u0431.",
14563
+ minorSingle: "Kapiejka",
14564
+ minorPlural: "Kapiejka",
14565
+ ISOdigits: 2,
14566
+ decimals: 2,
14567
+ numToBasic: 100
14568
+ },
14569
+ BZD: {
14570
+ name: "Belize Dollar",
14571
+ demonym: "Belize",
14572
+ majorSingle: "Dollar",
14573
+ majorPlural: "Dollars",
14574
+ ISOnum: 84,
14575
+ symbol: "BZ$",
14576
+ symbolNative: "$",
14577
+ minorSingle: "Cent",
14578
+ minorPlural: "Cents",
14579
+ ISOdigits: 2,
14580
+ decimals: 2,
14581
+ numToBasic: 100
14582
+ },
14583
+ CAD: {
14584
+ name: "Canadian Dollar",
14585
+ demonym: "Canadian",
14586
+ majorSingle: "Dollar",
14587
+ majorPlural: "Dollars",
14588
+ ISOnum: 124,
14589
+ symbol: "CA$",
14590
+ symbolNative: "$",
14591
+ minorSingle: "Cent",
14592
+ minorPlural: "Cents",
14593
+ ISOdigits: 2,
14594
+ decimals: 2,
14595
+ numToBasic: 100
14596
+ },
14597
+ CDF: {
14598
+ name: "Congolese Franc",
14599
+ demonym: "Congolese",
14600
+ majorSingle: "Franc",
14601
+ majorPlural: "Francs",
14602
+ ISOnum: 976,
14603
+ symbol: "FC",
14604
+ symbolNative: "\u20A3",
14605
+ minorSingle: "Centime",
14606
+ minorPlural: "Centimes",
14607
+ ISOdigits: 2,
14608
+ decimals: 2,
14609
+ numToBasic: 100
14610
+ },
14611
+ CHF: {
14612
+ name: "Swiss Franc",
14613
+ demonym: "Swiss",
14614
+ majorSingle: "Franc",
14615
+ majorPlural: "Francs",
14616
+ ISOnum: 756,
14617
+ symbol: "Fr.",
14618
+ symbolNative: "\u20A3",
14619
+ minorSingle: "Centime",
14620
+ minorPlural: "Centimes",
14621
+ ISOdigits: 2,
14622
+ decimals: 2,
14623
+ numToBasic: 100
14624
+ },
14625
+ CKD: {
14626
+ name: "Cook Islands Dollar",
14627
+ demonym: "Cook Islands",
14628
+ majorSingle: "Dollar",
14629
+ majorPlural: "Dollars",
14630
+ ISOnum: null,
14631
+ symbol: "$",
14632
+ symbolNative: "$",
14633
+ minorSingle: "Cent",
14634
+ minorPlural: "Cents",
14635
+ ISOdigits: 2,
14636
+ decimals: 2,
14637
+ numToBasic: 100
14638
+ },
14639
+ CLP: {
14640
+ name: "Chilean Peso",
14641
+ demonym: "Chilean",
14642
+ majorSingle: "Peso",
14643
+ majorPlural: "Pesos",
14644
+ ISOnum: 152,
14645
+ symbol: "CL$",
14646
+ symbolNative: "$",
14647
+ minorSingle: "Centavo",
14648
+ minorPlural: "Centavos",
14649
+ ISOdigits: 0,
14650
+ decimals: 0,
14651
+ numToBasic: 100
14652
+ },
14653
+ CNY: {
14654
+ name: "Chinese Yuan",
14655
+ demonym: "Chinese",
14656
+ majorSingle: "Yuan",
14657
+ majorPlural: "Yuan",
14658
+ ISOnum: 156,
14659
+ symbol: "CN\xA5",
14660
+ symbolNative: "\xA5\u5143",
14661
+ minorSingle: "Fen",
14662
+ minorPlural: "Fen",
14663
+ ISOdigits: 2,
14664
+ decimals: 2,
14665
+ numToBasic: 100
14666
+ },
14667
+ COP: {
14668
+ name: "Colombian Peso",
14669
+ demonym: "Colombian",
14670
+ majorSingle: "Peso",
14671
+ majorPlural: "Pesos",
14672
+ ISOnum: 170,
14673
+ symbol: "CO$",
14674
+ symbolNative: "$",
14675
+ minorSingle: "Centavo",
14676
+ minorPlural: "Centavos",
14677
+ ISOdigits: 2,
14678
+ decimals: 2,
14679
+ numToBasic: 100
14680
+ },
14681
+ CRC: {
14682
+ name: "Costa Rican Colon",
14683
+ demonym: "Costa Rican",
14684
+ majorSingle: "Col\xF3n",
14685
+ majorPlural: "Colones",
14686
+ ISOnum: 188,
14687
+ symbol: "\u20A1",
14688
+ symbolNative: "\u20A1",
14689
+ minorSingle: "Centimo",
14690
+ minorPlural: "Centimos",
14691
+ ISOdigits: 2,
14692
+ decimals: 2,
14693
+ numToBasic: 100
14694
+ },
14695
+ CUC: {
14696
+ name: "Cuban convertible Peso",
14697
+ demonym: "Cuban Convertible",
14698
+ majorSingle: "Peso",
14699
+ majorPlural: "Pesos",
14700
+ ISOnum: 931,
14701
+ symbol: "CUC$",
14702
+ symbolNative: "$",
14703
+ minorSingle: "Centavo",
14704
+ minorPlural: "Centavos",
14705
+ ISOdigits: 2,
14706
+ decimals: 2,
14707
+ numToBasic: 100
14708
+ },
14709
+ CUP: {
14710
+ name: "Cuban Peso",
14711
+ demonym: "Cuban",
14712
+ majorSingle: "Peso",
14713
+ majorPlural: "Pesos",
14714
+ ISOnum: 192,
14715
+ symbol: "$MN",
14716
+ symbolNative: "\u20B1",
14717
+ minorSingle: "Centavo",
14718
+ minorPlural: "Centavos",
14719
+ ISOdigits: 2,
14720
+ decimals: 2,
14721
+ numToBasic: 100
14722
+ },
14723
+ CVE: {
14724
+ name: "Cabo Verdean Escudo",
14725
+ demonym: "Cabo Verdean",
14726
+ majorSingle: "Escudo",
14727
+ majorPlural: "Escudo",
14728
+ ISOnum: 132,
14729
+ symbol: "CV$",
14730
+ symbolNative: "$",
14731
+ minorSingle: "Centavo",
14732
+ minorPlural: "Centavos",
14733
+ ISOdigits: 2,
14734
+ decimals: 2,
14735
+ numToBasic: 100
14736
+ },
14737
+ CZK: {
14738
+ name: "Czech Koruna",
14739
+ demonym: "Czech",
14740
+ majorSingle: "Koruna",
14741
+ majorPlural: "Koruny",
14742
+ ISOnum: 203,
14743
+ symbol: "K\u010D",
14744
+ symbolNative: "K\u010D",
14745
+ minorSingle: "Hal\xE9\u0159",
14746
+ minorPlural: "Hal\xE9\u0159",
14747
+ ISOdigits: 2,
14748
+ decimals: 2,
14749
+ numToBasic: 100
14750
+ },
14751
+ DJF: {
14752
+ name: "Djiboutian Franc",
14753
+ demonym: "Djiboutian",
14754
+ majorSingle: "Franc",
14755
+ majorPlural: "Francs",
14756
+ ISOnum: 262,
14757
+ symbol: "Fdj",
14758
+ symbolNative: "\u0641.\u062C.",
14759
+ minorSingle: "Centime",
14760
+ minorPlural: "Centimes",
14761
+ ISOdigits: 0,
14762
+ decimals: 2,
14763
+ numToBasic: 100
14764
+ },
14765
+ DKK: {
14766
+ name: "Danish Krone",
14767
+ demonym: "Danish",
14768
+ majorSingle: "Krone",
14769
+ majorPlural: "Kroner",
14770
+ ISOnum: 208,
14771
+ symbol: "kr.",
14772
+ symbolNative: "kr.",
14773
+ minorSingle: "\xD8re",
14774
+ minorPlural: "\xD8re",
14775
+ ISOdigits: 2,
14776
+ decimals: 2,
14777
+ numToBasic: 100
14778
+ },
14779
+ DOP: {
14780
+ name: "Dominican Peso",
14781
+ demonym: "Dominican",
14782
+ majorSingle: "Peso",
14783
+ majorPlural: "Pesos",
14784
+ ISOnum: 214,
14785
+ symbol: "RD$",
14786
+ symbolNative: "$",
14787
+ minorSingle: "Centavo",
14788
+ minorPlural: "Centavos",
14789
+ ISOdigits: 2,
14790
+ decimals: 2,
14791
+ numToBasic: 100
14792
+ },
14793
+ DZD: {
14794
+ name: "Algerian Dinar",
14795
+ demonym: "Algerian",
14796
+ majorSingle: "Dinar",
14797
+ majorPlural: "Dinars",
14798
+ ISOnum: 12,
14799
+ symbol: "DA",
14800
+ symbolNative: "\u062F.\u062C.",
14801
+ minorSingle: "Santeem",
14802
+ minorPlural: "Santeems",
14803
+ ISOdigits: 2,
14804
+ decimals: 2,
14805
+ numToBasic: 100
14806
+ },
14807
+ EGP: {
14808
+ name: "Egyptian Pound",
14809
+ demonym: "Egyptian",
14810
+ majorSingle: "Pound",
14811
+ majorPlural: "Pounds",
14812
+ ISOnum: 818,
14813
+ symbol: "E\xA3",
14814
+ symbolNative: "\u062C.\u0645.",
14815
+ minorSingle: "Qirsh",
14816
+ minorPlural: "Qirsh",
14817
+ ISOdigits: 2,
14818
+ decimals: 2,
14819
+ numToBasic: 100
14820
+ },
14821
+ EHP: {
14822
+ name: "Sahrawi Peseta",
14823
+ demonym: "Sahrawi",
14824
+ majorSingle: "Peseta",
14825
+ majorPlural: "Pesetas",
14826
+ ISOnum: null,
14827
+ symbol: "Ptas.",
14828
+ symbolNative: "Ptas.",
14829
+ minorSingle: "C\xE9ntimo",
14830
+ minorPlural: "C\xE9ntimos",
14831
+ ISOdigits: 2,
14832
+ decimals: 2,
14833
+ numToBasic: 100
14834
+ },
14835
+ ERN: {
14836
+ name: "Eritrean Nakfa",
14837
+ demonym: "Eritrean",
14838
+ majorSingle: "Nakfa",
14839
+ majorPlural: "Nakfa",
14840
+ ISOnum: 232,
14841
+ symbol: "Nkf",
14842
+ symbolNative: "\u0646\u0627\u0643\u0641\u0627",
14843
+ minorSingle: "Cent",
14844
+ minorPlural: "Cents",
14845
+ ISOdigits: 2,
14846
+ decimals: 2,
14847
+ numToBasic: 100
14848
+ },
14849
+ ETB: {
14850
+ name: "Ethiopian Birr",
14851
+ demonym: "Ethiopian",
14852
+ majorSingle: "Birr",
14853
+ majorPlural: "Birr",
14854
+ ISOnum: 230,
14855
+ symbol: "Br",
14856
+ symbolNative: "\u1265\u122D",
14857
+ minorSingle: "Santim",
14858
+ minorPlural: "Santim",
14859
+ ISOdigits: 2,
14860
+ decimals: 2,
14861
+ numToBasic: 100
14862
+ },
14863
+ EUR: {
14864
+ name: "Euro",
14865
+ demonym: "",
14866
+ majorSingle: "Euro",
14867
+ majorPlural: "Euros",
14868
+ ISOnum: 978,
14869
+ symbol: "\u20AC",
14870
+ symbolNative: "\u20AC",
14871
+ minorSingle: "Cent",
14872
+ minorPlural: "Cents",
14873
+ ISOdigits: 2,
14874
+ decimals: 2,
14875
+ numToBasic: 100
14876
+ },
14877
+ FJD: {
14878
+ name: "Fijian Dollar",
14879
+ demonym: "Fijian",
14880
+ majorSingle: "Dollar",
14881
+ majorPlural: "Dollars",
14882
+ ISOnum: 242,
14883
+ symbol: "FJ$",
14884
+ symbolNative: "$",
14885
+ minorSingle: "Cent",
14886
+ minorPlural: "Cents",
14887
+ ISOdigits: 2,
14888
+ decimals: 2,
14889
+ numToBasic: 100
14890
+ },
14891
+ FKP: {
14892
+ name: "Falkland Islands Pound",
14893
+ demonym: "Falkland Islands",
14894
+ majorSingle: "Pound",
14895
+ majorPlural: "Pounds",
14896
+ ISOnum: 238,
14897
+ symbol: "FK\xA3",
14898
+ symbolNative: "\xA3",
14899
+ minorSingle: "Penny",
14900
+ minorPlural: "Pence",
14901
+ ISOdigits: 2,
14902
+ decimals: 2,
14903
+ numToBasic: 100
14904
+ },
14905
+ FOK: {
14906
+ name: "Faroese Kr\xF3na",
14907
+ demonym: "Faroese",
14908
+ majorSingle: "Kr\xF3na",
14909
+ majorPlural: "Kr\xF3nas",
14910
+ ISOnum: null,
14911
+ symbol: "kr",
14912
+ symbolNative: "kr",
14913
+ minorSingle: "Oyra",
14914
+ minorPlural: "Oyra",
14915
+ ISOdigits: 2,
14916
+ decimals: 2,
14917
+ numToBasic: 100
14918
+ },
14919
+ GBP: {
14920
+ name: "Pound Sterling",
14921
+ demonym: "Pound Sterling",
14922
+ majorSingle: "Pound",
14923
+ majorPlural: "Pounds",
14924
+ ISOnum: 826,
14925
+ symbol: "\xA3",
14926
+ symbolNative: "\xA3",
14927
+ minorSingle: "Penny",
14928
+ minorPlural: "Pence",
14929
+ ISOdigits: 2,
14930
+ decimals: 2,
14931
+ numToBasic: 100
14932
+ },
14933
+ GEL: {
14934
+ name: "Georgian Lari",
14935
+ demonym: "Georgian",
14936
+ majorSingle: "Lari",
14937
+ majorPlural: "Lari",
14938
+ ISOnum: 981,
14939
+ symbol: "\u20BE",
14940
+ symbolNative: "\u20BE",
14941
+ minorSingle: "Tetri",
14942
+ minorPlural: "Tetri",
14943
+ ISOdigits: 2,
14944
+ decimals: 2,
14945
+ numToBasic: 100
14946
+ },
14947
+ GGP: {
14948
+ name: "Guernsey Pound",
14949
+ demonym: "Guernsey",
14950
+ majorSingle: "Pound",
14951
+ majorPlural: "Pounds",
14952
+ ISOnum: null,
14953
+ symbol: "\xA3",
14954
+ symbolNative: "\xA3",
14955
+ minorSingle: "Penny",
14956
+ minorPlural: "Pence",
14957
+ ISOdigits: 2,
14958
+ decimals: 2,
14959
+ numToBasic: 100
14960
+ },
14961
+ GHS: {
14962
+ name: "Ghanaian Cedi",
14963
+ demonym: "Ghanaian",
14964
+ majorSingle: "Cedi",
14965
+ majorPlural: "Cedis",
14966
+ ISOnum: 936,
14967
+ symbol: "GH\u20B5",
14968
+ symbolNative: "\u20B5",
14969
+ minorSingle: "Pesewa",
14970
+ minorPlural: "Pesewas",
14971
+ ISOdigits: 2,
14972
+ decimals: 2,
14973
+ numToBasic: 100
14974
+ },
14975
+ GIP: {
14976
+ name: "Gibraltar Pound",
14977
+ demonym: "Gibraltar",
14978
+ majorSingle: "Pound",
14979
+ majorPlural: "Pounds",
14980
+ ISOnum: 292,
14981
+ symbol: "\xA3",
14982
+ symbolNative: "\xA3",
14983
+ minorSingle: "Penny",
14984
+ minorPlural: "Pence",
14985
+ ISOdigits: 2,
14986
+ decimals: 2,
14987
+ numToBasic: 100
14988
+ },
14989
+ GMD: {
14990
+ name: "Gambian Dalasi",
14991
+ demonym: "Gambian",
14992
+ majorSingle: "Dalasi",
14993
+ majorPlural: "Dalasis",
14994
+ ISOnum: 270,
14995
+ symbol: "D",
14996
+ symbolNative: "D",
14997
+ minorSingle: "Butut",
14998
+ minorPlural: "Bututs",
14999
+ ISOdigits: 2,
15000
+ decimals: 2,
15001
+ numToBasic: 100
15002
+ },
15003
+ GNF: {
15004
+ name: "Guinean Franc",
15005
+ demonym: "Guinean",
15006
+ majorSingle: "Franc",
15007
+ majorPlural: "Francs",
15008
+ ISOnum: 324,
15009
+ symbol: "FG",
15010
+ symbolNative: "FG",
15011
+ minorSingle: "Centime",
15012
+ minorPlural: "Centimes",
15013
+ ISOdigits: 0,
15014
+ decimals: 2,
15015
+ numToBasic: 100
15016
+ },
15017
+ GTQ: {
15018
+ name: "Guatemalan Quetzal",
15019
+ demonym: "Guatemalan",
15020
+ majorSingle: "Quetzal",
15021
+ majorPlural: "Quetzales",
15022
+ ISOnum: 320,
15023
+ symbol: "Q",
15024
+ symbolNative: "$",
15025
+ minorSingle: "Centavo",
15026
+ minorPlural: "Centavos",
15027
+ ISOdigits: 2,
15028
+ decimals: 2,
15029
+ numToBasic: 100
15030
+ },
15031
+ GYD: {
15032
+ name: "Guyanese Dollar",
15033
+ demonym: "Guyanese",
15034
+ majorSingle: "Dollar",
15035
+ majorPlural: "Dollars",
15036
+ ISOnum: 328,
15037
+ symbol: "G$",
15038
+ symbolNative: "$",
15039
+ minorSingle: "Cent",
15040
+ minorPlural: "Cents",
15041
+ ISOdigits: 2,
15042
+ decimals: 2,
15043
+ numToBasic: 100
15044
+ },
15045
+ HKD: {
15046
+ name: "Hong Kong Dollar",
15047
+ demonym: "Hong Kong",
15048
+ majorSingle: "Dollar",
15049
+ majorPlural: "Dollars",
15050
+ ISOnum: 344,
15051
+ symbol: "HK$",
15052
+ symbolNative: "$",
15053
+ minorSingle: "Cent",
15054
+ minorPlural: "Cents",
15055
+ ISOdigits: 2,
15056
+ decimals: 2,
15057
+ numToBasic: 100
15058
+ },
15059
+ HNL: {
15060
+ name: "Honduran Lempira",
15061
+ demonym: "Honduran",
15062
+ majorSingle: "Lempira",
15063
+ majorPlural: "Lempiras",
15064
+ ISOnum: 340,
15065
+ symbol: "L",
15066
+ symbolNative: "L",
15067
+ minorSingle: "Centavo",
15068
+ minorPlural: "Centavos",
15069
+ ISOdigits: 2,
15070
+ decimals: 2,
15071
+ numToBasic: 100
15072
+ },
15073
+ HRK: {
15074
+ name: "Croatian Kuna",
15075
+ demonym: "Croatian",
15076
+ majorSingle: "Kuna",
15077
+ majorPlural: "Kuna",
15078
+ ISOnum: 191,
15079
+ symbol: "kn",
15080
+ symbolNative: "kn",
15081
+ minorSingle: "Lipa",
15082
+ minorPlural: "Lipa",
15083
+ ISOdigits: 2,
15084
+ decimals: 2,
15085
+ numToBasic: 100
15086
+ },
15087
+ HTG: {
15088
+ name: "Haitian Gourde",
15089
+ demonym: "Haitian",
15090
+ majorSingle: "Gourde",
15091
+ majorPlural: "Gourdes",
15092
+ ISOnum: 332,
15093
+ symbol: "G",
15094
+ symbolNative: "G",
15095
+ minorSingle: "Centime",
15096
+ minorPlural: "Centimes",
15097
+ ISOdigits: 2,
15098
+ decimals: 2,
15099
+ numToBasic: 100
15100
+ },
15101
+ HUF: {
15102
+ name: "Hungarian Forint",
15103
+ demonym: "Hungarian",
15104
+ majorSingle: "Forint",
15105
+ majorPlural: "Forint",
15106
+ ISOnum: 348,
15107
+ symbol: "Ft",
15108
+ symbolNative: "Ft",
15109
+ minorSingle: "fill\xE9r",
15110
+ minorPlural: "fill\xE9r",
15111
+ ISOdigits: 2,
15112
+ decimals: 2,
15113
+ numToBasic: 100
15114
+ },
15115
+ IDR: {
15116
+ name: "Indonesian Rupiah",
15117
+ demonym: "Indonesian",
15118
+ majorSingle: "Rupiah",
15119
+ majorPlural: "Rupiah",
15120
+ ISOnum: 360,
15121
+ symbol: "Rp",
15122
+ symbolNative: "Rp",
15123
+ minorSingle: "Sen",
15124
+ minorPlural: "Sen",
15125
+ ISOdigits: 2,
15126
+ decimals: 2,
15127
+ numToBasic: 100
15128
+ },
15129
+ ILS: {
15130
+ name: "Israeli new Shekel",
15131
+ demonym: "Israeli",
15132
+ majorSingle: "Shekel",
15133
+ majorPlural: "Shekels",
15134
+ ISOnum: 376,
15135
+ symbol: "\u20AA",
15136
+ symbolNative: "\u20AA",
15137
+ minorSingle: "Agora",
15138
+ minorPlural: "Agoras",
15139
+ ISOdigits: 2,
15140
+ decimals: 2,
15141
+ numToBasic: 100
15142
+ },
15143
+ IMP: {
15144
+ name: "Manx Pound",
15145
+ demonym: "Manx",
15146
+ majorSingle: "Pound",
15147
+ majorPlural: "Pounds",
15148
+ ISOnum: null,
15149
+ symbol: "\xA3",
15150
+ symbolNative: "\xA3",
15151
+ minorSingle: "Penny",
15152
+ minorPlural: "Pence",
15153
+ ISOdigits: 2,
15154
+ decimals: 2,
15155
+ numToBasic: 100
15156
+ },
15157
+ INR: {
15158
+ name: "Indian Rupee",
15159
+ demonym: "Indian",
15160
+ majorSingle: "Rupee",
15161
+ majorPlural: "Rupees",
15162
+ ISOnum: 356,
15163
+ symbol: "Rs.",
15164
+ symbolNative: "\u20B9",
15165
+ minorSingle: "Paisa",
15166
+ minorPlural: "Paise",
15167
+ ISOdigits: 2,
15168
+ decimals: 2,
15169
+ numToBasic: 100
15170
+ },
15171
+ IQD: {
15172
+ name: "Iraqi Dinar",
15173
+ demonym: "Iraqi",
15174
+ majorSingle: "Dinar",
15175
+ majorPlural: "Dinars",
15176
+ ISOnum: 368,
15177
+ symbol: "\u062F.\u0639.",
15178
+ symbolNative: "\u062F.\u0639.",
15179
+ minorSingle: "Fils",
15180
+ minorPlural: "Fils",
15181
+ ISOdigits: 3,
15182
+ decimals: 3,
15183
+ numToBasic: 1e3
15184
+ },
15185
+ IRR: {
15186
+ name: "Iranian Rial",
15187
+ demonym: "Iranian",
15188
+ majorSingle: "Rial",
15189
+ majorPlural: "Rials",
15190
+ ISOnum: 364,
15191
+ symbol: "\uFDFC",
15192
+ symbolNative: "\uFDFC",
15193
+ minorSingle: "Dinar",
15194
+ minorPlural: "Dinars",
15195
+ ISOdigits: 2,
15196
+ decimals: 2,
15197
+ numToBasic: 100
15198
+ },
15199
+ ISK: {
15200
+ name: "Icelandic Krona",
15201
+ demonym: "Icelandic",
15202
+ majorSingle: "Krona",
15203
+ majorPlural: "Kr\xF3nur",
15204
+ ISOnum: 352,
15205
+ symbol: "kr",
15206
+ symbolNative: "kr",
15207
+ minorSingle: "Aurar",
15208
+ minorPlural: "Aurar",
15209
+ ISOdigits: 0,
15210
+ decimals: 2,
15211
+ numToBasic: 100
15212
+ },
15213
+ JEP: {
15214
+ name: "Jersey Pound",
15215
+ demonym: "Jersey",
15216
+ majorSingle: "Pound",
15217
+ majorPlural: "Pounds",
15218
+ ISOnum: null,
15219
+ symbol: "\xA3",
15220
+ symbolNative: "\xA3",
15221
+ minorSingle: "Penny",
15222
+ minorPlural: "Pence",
15223
+ ISOdigits: 2,
15224
+ decimals: 2,
15225
+ numToBasic: 100
15226
+ },
15227
+ JMD: {
15228
+ name: "Jamaican Dollar",
15229
+ demonym: "Jamaican",
15230
+ majorSingle: "Dollar",
15231
+ majorPlural: "Dollars",
15232
+ ISOnum: 388,
15233
+ symbol: "J$",
15234
+ symbolNative: "$",
15235
+ minorSingle: "Cent",
15236
+ minorPlural: "Cents",
15237
+ ISOdigits: 2,
15238
+ decimals: 2,
15239
+ numToBasic: 100
15240
+ },
15241
+ JOD: {
15242
+ name: "Jordanian Dinar",
15243
+ demonym: "Jordanian",
15244
+ majorSingle: "Dinar",
15245
+ majorPlural: "Dinars",
15246
+ ISOnum: 400,
15247
+ symbol: "JD",
15248
+ symbolNative: "\u062F.\u0623.",
15249
+ minorSingle: "Fils",
15250
+ minorPlural: "Fils",
15251
+ ISOdigits: 3,
15252
+ decimals: 3,
15253
+ numToBasic: 1e3
15254
+ },
15255
+ JPY: {
15256
+ name: "Japanese Yen",
15257
+ demonym: "Japanese",
15258
+ majorSingle: "Yen",
15259
+ majorPlural: "Yen",
15260
+ ISOnum: 392,
15261
+ symbol: "\xA5",
15262
+ symbolNative: "\xA5",
15263
+ minorSingle: "Sen",
15264
+ minorPlural: "Sen",
15265
+ ISOdigits: 0,
15266
+ decimals: 2,
15267
+ numToBasic: 100
15268
+ },
15269
+ KES: {
15270
+ name: "Kenyan Shilling",
15271
+ demonym: "Kenyan",
15272
+ majorSingle: "Shilling",
15273
+ majorPlural: "Shillings",
15274
+ ISOnum: 404,
15275
+ symbol: "KSh",
15276
+ symbolNative: "KSh",
15277
+ minorSingle: "Cent",
15278
+ minorPlural: "Cents",
15279
+ ISOdigits: 2,
15280
+ decimals: 2,
15281
+ numToBasic: 100
15282
+ },
15283
+ KGS: {
15284
+ name: "Kyrgyzstani Som",
15285
+ demonym: "Kyrgyzstani",
15286
+ majorSingle: "Som",
15287
+ majorPlural: "Som",
15288
+ ISOnum: 417,
15289
+ symbol: "\u0441",
15290
+ symbolNative: "\u0441",
15291
+ minorSingle: "Tyiyn",
15292
+ minorPlural: "Tyiyn",
15293
+ ISOdigits: 2,
15294
+ decimals: 2,
15295
+ numToBasic: 100
15296
+ },
15297
+ KHR: {
15298
+ name: "Cambodian Riel",
15299
+ demonym: "Cambodian",
15300
+ majorSingle: "Riel",
15301
+ majorPlural: "Riels",
15302
+ ISOnum: 116,
15303
+ symbol: "\u17DB",
15304
+ symbolNative: "\u17DB",
15305
+ minorSingle: "Sen",
15306
+ minorPlural: "Sen",
15307
+ ISOdigits: 2,
15308
+ decimals: 2,
15309
+ numToBasic: 100
15310
+ },
15311
+ KID: {
15312
+ name: "Kiribati Dollar",
15313
+ demonym: "Kiribati",
15314
+ majorSingle: "Dollar",
15315
+ majorPlural: "Dollars",
15316
+ ISOnum: null,
15317
+ symbol: "$",
15318
+ symbolNative: "$",
15319
+ minorSingle: "Cent",
15320
+ minorPlural: "Cents",
15321
+ ISOdigits: 2,
15322
+ decimals: 2,
15323
+ numToBasic: 100
15324
+ },
15325
+ KMF: {
15326
+ name: "Comorian Franc",
15327
+ demonym: "Comorian",
15328
+ majorSingle: "Franc",
15329
+ majorPlural: "Francs",
15330
+ ISOnum: 174,
15331
+ symbol: "CF",
15332
+ symbolNative: "CF",
15333
+ minorSingle: "Centime",
15334
+ minorPlural: "Centimes",
15335
+ ISOdigits: 0,
15336
+ decimals: 2,
15337
+ numToBasic: 100
15338
+ },
15339
+ KPW: {
15340
+ name: "North Korean Won",
15341
+ demonym: "North Korean",
15342
+ majorSingle: "Won",
15343
+ majorPlural: "Won",
15344
+ ISOnum: 408,
15345
+ symbol: "\u20A9",
15346
+ symbolNative: "\u20A9",
15347
+ minorSingle: "Chon",
15348
+ minorPlural: "Chon",
15349
+ ISOdigits: 2,
15350
+ decimals: 2,
15351
+ numToBasic: 100
15352
+ },
15353
+ KRW: {
15354
+ name: "South Korean Won",
15355
+ demonym: "South Korean",
15356
+ majorSingle: "Won",
15357
+ majorPlural: "Won",
15358
+ ISOnum: 410,
15359
+ symbol: "\u20A9",
15360
+ symbolNative: "\u20A9",
15361
+ minorSingle: "Jeon",
15362
+ minorPlural: "Jeon",
15363
+ ISOdigits: 0,
15364
+ decimals: 2,
15365
+ numToBasic: 100
15366
+ },
15367
+ KWD: {
15368
+ name: "Kuwaiti Dinar",
15369
+ demonym: "Kuwaiti",
15370
+ majorSingle: "Dinar",
15371
+ majorPlural: "Dinars",
15372
+ ISOnum: 414,
15373
+ symbol: "KD",
15374
+ symbolNative: "\u062F.\u0643.",
15375
+ minorSingle: "Fils",
15376
+ minorPlural: "Fils",
15377
+ ISOdigits: 3,
15378
+ decimals: 3,
15379
+ numToBasic: 1e3
15380
+ },
15381
+ KYD: {
15382
+ name: "Cayman Islands Dollar",
15383
+ demonym: "Cayman Islands",
15384
+ majorSingle: "Dollar",
15385
+ majorPlural: "Dollars",
15386
+ ISOnum: 136,
15387
+ symbol: "CI$",
15388
+ symbolNative: "$",
15389
+ minorSingle: "Cent",
15390
+ minorPlural: "Cents",
15391
+ ISOdigits: 2,
15392
+ decimals: 2,
15393
+ numToBasic: 100
15394
+ },
15395
+ KZT: {
15396
+ name: "Kazakhstani Tenge",
15397
+ demonym: "Kazakhstani",
15398
+ majorSingle: "Tenge",
15399
+ majorPlural: "Tenge",
15400
+ ISOnum: 398,
15401
+ symbol: "\u20B8",
15402
+ symbolNative: "\u20B8",
15403
+ minorSingle: "T\u0131yn",
15404
+ minorPlural: "T\u0131yn",
15405
+ ISOdigits: 2,
15406
+ decimals: 2,
15407
+ numToBasic: 100
15408
+ },
15409
+ LAK: {
15410
+ name: "Lao Kip",
15411
+ demonym: "Lao",
15412
+ majorSingle: "Kip",
15413
+ majorPlural: "Kip",
15414
+ ISOnum: 418,
15415
+ symbol: "\u20ADN",
15416
+ symbolNative: "\u20AD",
15417
+ minorSingle: "Att",
15418
+ minorPlural: "Att",
15419
+ ISOdigits: 2,
15420
+ decimals: 2,
15421
+ numToBasic: 100
15422
+ },
15423
+ LBP: {
15424
+ name: "Lebanese Pound",
15425
+ demonym: "Lebanese",
15426
+ majorSingle: "Pound",
15427
+ majorPlural: "Pounds",
15428
+ ISOnum: 422,
15429
+ symbol: "LL.",
15430
+ symbolNative: "\u0644.\u0644.",
15431
+ minorSingle: "Qirsh",
15432
+ minorPlural: "Qirsh",
15433
+ ISOdigits: 2,
15434
+ decimals: 2,
15435
+ numToBasic: 100
15436
+ },
15437
+ LKR: {
15438
+ name: "Sri Lankan Rupee",
15439
+ demonym: "Sri Lankan",
15440
+ majorSingle: "Rupee",
15441
+ majorPlural: "Rupees",
15442
+ ISOnum: 144,
15443
+ symbol: "Rs.",
15444
+ symbolNative: "\u0DBB\u0DD4 or \u0BB0\u0BC2",
15445
+ minorSingle: "Cent",
15446
+ minorPlural: "Cents",
15447
+ ISOdigits: 2,
15448
+ decimals: 2,
15449
+ numToBasic: 100
15450
+ },
15451
+ LRD: {
15452
+ name: "Liberian Dollar",
15453
+ demonym: "Liberian",
15454
+ majorSingle: "Dollar",
15455
+ majorPlural: "Dollars",
15456
+ ISOnum: 430,
15457
+ symbol: "L$",
15458
+ symbolNative: "$",
15459
+ minorSingle: "Cent",
15460
+ minorPlural: "Cents",
15461
+ ISOdigits: 2,
15462
+ decimals: 2,
15463
+ numToBasic: 100
15464
+ },
15465
+ LSL: {
15466
+ name: "Lesotho Loti",
15467
+ demonym: "Lesotho",
15468
+ majorSingle: "Loti",
15469
+ majorPlural: "maLoti",
15470
+ ISOnum: 426,
15471
+ symbol: "L",
15472
+ symbolNative: "L",
15473
+ minorSingle: "Sente",
15474
+ minorPlural: "Lisente",
15475
+ ISOdigits: 2,
15476
+ decimals: 2,
15477
+ numToBasic: 100
15478
+ },
15479
+ LYD: {
15480
+ name: "Libyan Dinar",
15481
+ demonym: "Libyan",
15482
+ majorSingle: "Dinar",
15483
+ majorPlural: "Dinars",
15484
+ ISOnum: 434,
15485
+ symbol: "LD",
15486
+ symbolNative: "\u0644.\u062F.",
15487
+ minorSingle: "Dirham",
15488
+ minorPlural: "Dirhams",
15489
+ ISOdigits: 3,
15490
+ decimals: 3,
15491
+ numToBasic: 1e3
15492
+ },
15493
+ MAD: {
15494
+ name: "Moroccan Dirham",
15495
+ demonym: "Moroccan",
15496
+ majorSingle: "Dirham",
15497
+ majorPlural: "Dirhams",
15498
+ ISOnum: 504,
15499
+ symbol: "DH",
15500
+ symbolNative: "\u062F.\u0645.",
15501
+ minorSingle: "Centime",
15502
+ minorPlural: "Centimes",
15503
+ ISOdigits: 2,
15504
+ decimals: 2,
15505
+ numToBasic: 100
15506
+ },
15507
+ MDL: {
15508
+ name: "Moldovan Leu",
15509
+ demonym: "Moldovan",
15510
+ majorSingle: "Leu",
15511
+ majorPlural: "Lei",
15512
+ ISOnum: 498,
15513
+ symbol: "L",
15514
+ symbolNative: "L",
15515
+ minorSingle: "Ban",
15516
+ minorPlural: "Bani",
15517
+ ISOdigits: 2,
15518
+ decimals: 2,
15519
+ numToBasic: 100
15520
+ },
15521
+ MGA: {
15522
+ name: "Malagasy Ariary",
15523
+ demonym: "Malagasy",
15524
+ majorSingle: "Ariary",
15525
+ majorPlural: "Ariary",
15526
+ ISOnum: 969,
15527
+ symbol: "Ar",
15528
+ symbolNative: "Ar",
15529
+ minorSingle: "Iraimbilanja",
15530
+ minorPlural: "Iraimbilanja",
15531
+ ISOdigits: 2,
15532
+ decimals: 0,
15533
+ numToBasic: 5
15534
+ },
15535
+ MKD: {
15536
+ name: "Macedonian Denar",
15537
+ demonym: "Macedonian",
15538
+ majorSingle: "Denar",
15539
+ majorPlural: "Denars",
15540
+ ISOnum: 807,
15541
+ symbol: "den",
15542
+ symbolNative: "\u0434\u0435\u043D",
15543
+ minorSingle: "Deni",
15544
+ minorPlural: "Deni",
15545
+ ISOdigits: 2,
15546
+ decimals: 2,
15547
+ numToBasic: 100
15548
+ },
15549
+ MMK: {
15550
+ name: "Myanmar Kyat",
15551
+ demonym: "Myanmar",
15552
+ majorSingle: "Kyat",
15553
+ majorPlural: "Kyat",
15554
+ ISOnum: 104,
15555
+ symbol: "Ks",
15556
+ symbolNative: "Ks",
15557
+ minorSingle: "Pya",
15558
+ minorPlural: "Pya",
15559
+ ISOdigits: 2,
15560
+ decimals: 2,
15561
+ numToBasic: 100
15562
+ },
15563
+ MNT: {
15564
+ name: "Mongolian T\xF6gr\xF6g",
15565
+ demonym: "Mongolian",
15566
+ majorSingle: "T\xF6gr\xF6g",
15567
+ majorPlural: "T\xF6gr\xF6g",
15568
+ ISOnum: 496,
15569
+ symbol: "\u20AE",
15570
+ symbolNative: "\u20AE",
15571
+ minorSingle: "m\xF6ng\xF6",
15572
+ minorPlural: "m\xF6ng\xF6",
15573
+ ISOdigits: 2,
15574
+ decimals: 2,
15575
+ numToBasic: 100
15576
+ },
15577
+ MOP: {
15578
+ name: "Macanese Pataca",
15579
+ demonym: "Macanese",
15580
+ majorSingle: "Pataca",
15581
+ majorPlural: "Patacas",
15582
+ ISOnum: 446,
15583
+ symbol: "MOP$",
15584
+ symbolNative: "MOP$",
15585
+ minorSingle: "Avo",
15586
+ minorPlural: "Avos",
15587
+ ISOdigits: 2,
15588
+ decimals: 2,
15589
+ numToBasic: 100
15590
+ },
15591
+ MRU: {
15592
+ name: "Mauritanian Ouguiya",
15593
+ demonym: "Mauritanian",
15594
+ majorSingle: "Ouguiya",
15595
+ majorPlural: "Ouguiya",
15596
+ ISOnum: 929,
15597
+ symbol: "UM",
15598
+ symbolNative: "\u0623.\u0645.",
15599
+ minorSingle: "Khoums",
15600
+ minorPlural: "Khoums",
15601
+ ISOdigits: 2,
15602
+ decimals: 0,
15603
+ numToBasic: 5
15604
+ },
15605
+ MUR: {
15606
+ name: "Mauritian Rupee",
15607
+ demonym: "Mauritian",
15608
+ majorSingle: "Rupee",
15609
+ majorPlural: "Rupees",
15610
+ ISOnum: 480,
15611
+ symbol: "Rs.",
15612
+ symbolNative: "\u0930\u0941 ",
15613
+ minorSingle: "Cent",
15614
+ minorPlural: "Cents",
15615
+ ISOdigits: 2,
15616
+ decimals: 2,
15617
+ numToBasic: 100
15618
+ },
15619
+ MVR: {
15620
+ name: "Maldivian Rufiyaa",
15621
+ demonym: "Maldivian",
15622
+ majorSingle: "Rufiyaa",
15623
+ majorPlural: "Rufiyaa",
15624
+ ISOnum: 462,
15625
+ symbol: "MRf",
15626
+ symbolNative: ".\u0783",
15627
+ minorSingle: "laari",
15628
+ minorPlural: "laari",
15629
+ ISOdigits: 2,
15630
+ decimals: 2,
15631
+ numToBasic: 100
15632
+ },
15633
+ MWK: {
15634
+ name: "Malawian Kwacha",
15635
+ demonym: "Malawian",
15636
+ majorSingle: "Kwacha",
15637
+ majorPlural: "Kwacha",
15638
+ ISOnum: 454,
15639
+ symbol: "MK",
15640
+ symbolNative: "MK",
15641
+ minorSingle: "Tambala",
15642
+ minorPlural: "Tambala",
15643
+ ISOdigits: 2,
15644
+ decimals: 2,
15645
+ numToBasic: 100
15646
+ },
15647
+ MXN: {
15648
+ name: "Mexican Peso",
15649
+ demonym: "Mexican",
15650
+ majorSingle: "Peso",
15651
+ majorPlural: "Pesos",
15652
+ ISOnum: 484,
15653
+ symbol: "MX$",
15654
+ symbolNative: "$",
15655
+ minorSingle: "Centavo",
15656
+ minorPlural: "Centavos",
15657
+ ISOdigits: 2,
15658
+ decimals: 2,
15659
+ numToBasic: 100
15660
+ },
15661
+ MYR: {
15662
+ name: "Malaysian Ringgit",
15663
+ demonym: "Malaysian",
15664
+ majorSingle: "Ringgit",
15665
+ majorPlural: "Ringgit",
15666
+ ISOnum: 458,
15667
+ symbol: "RM",
15668
+ symbolNative: "RM",
15669
+ minorSingle: "Sen",
15670
+ minorPlural: "Sen",
15671
+ ISOdigits: 2,
15672
+ decimals: 2,
15673
+ numToBasic: 100
15674
+ },
15675
+ MZN: {
15676
+ name: "Mozambican Metical",
15677
+ demonym: "Mozambican",
15678
+ majorSingle: "Metical",
15679
+ majorPlural: "Meticais",
15680
+ ISOnum: 943,
15681
+ symbol: "MTn",
15682
+ symbolNative: "MT",
15683
+ minorSingle: "Centavo",
15684
+ minorPlural: "Centavos",
15685
+ ISOdigits: 2,
15686
+ decimals: 2,
15687
+ numToBasic: 100
15688
+ },
15689
+ NAD: {
15690
+ name: "Namibian Dollar",
15691
+ demonym: "Namibian",
15692
+ majorSingle: "Dollar",
15693
+ majorPlural: "Dollars",
15694
+ ISOnum: 516,
15695
+ symbol: "N$",
15696
+ symbolNative: "$",
15697
+ minorSingle: "Cent",
15698
+ minorPlural: "Cents",
15699
+ ISOdigits: 2,
15700
+ decimals: 2,
15701
+ numToBasic: 100
15702
+ },
15703
+ NGN: {
15704
+ name: "Nigerian Naira",
15705
+ demonym: "Nigerian",
15706
+ majorSingle: "Naira",
15707
+ majorPlural: "Naira",
15708
+ ISOnum: 566,
15709
+ symbol: "\u20A6",
15710
+ symbolNative: "\u20A6",
15711
+ minorSingle: "Kobo",
15712
+ minorPlural: "Kobo",
15713
+ ISOdigits: 2,
15714
+ decimals: 2,
15715
+ numToBasic: 100
15716
+ },
15717
+ NIO: {
15718
+ name: "Nicaraguan C\xF3rdoba",
15719
+ demonym: "Nicaraguan",
15720
+ majorSingle: "C\xF3rdoba Oro",
15721
+ majorPlural: "C\xF3rdoba Oro",
15722
+ ISOnum: 558,
15723
+ symbol: "C$",
15724
+ symbolNative: "C$",
15725
+ minorSingle: "Centavo",
15726
+ minorPlural: "Centavos",
15727
+ ISOdigits: 2,
15728
+ decimals: 2,
15729
+ numToBasic: 100
15730
+ },
15731
+ NOK: {
15732
+ name: "Norwegian Krone",
15733
+ demonym: "Norwegian",
15734
+ majorSingle: "Krone",
15735
+ majorPlural: "Kroner",
15736
+ ISOnum: 578,
15737
+ symbol: "kr",
15738
+ symbolNative: "kr",
15739
+ minorSingle: "\xF8re",
15740
+ minorPlural: "\xF8re",
15741
+ ISOdigits: 2,
15742
+ decimals: 2,
15743
+ numToBasic: 100
15744
+ },
15745
+ NPR: {
15746
+ name: "Nepalese Rupee",
15747
+ demonym: "Nepalese",
15748
+ majorSingle: "Rupee",
15749
+ majorPlural: "Rupees",
15750
+ ISOnum: 524,
15751
+ symbol: "Rs.",
15752
+ symbolNative: "\u0930\u0942",
15753
+ minorSingle: "Paisa",
15754
+ minorPlural: "Paise",
15755
+ ISOdigits: 2,
15756
+ decimals: 2,
15757
+ numToBasic: 100
15758
+ },
15759
+ NZD: {
15760
+ name: "New Zealand Dollar",
15761
+ demonym: "New Zealand",
15762
+ majorSingle: "Dollar",
15763
+ majorPlural: "Dollars",
15764
+ ISOnum: 554,
15765
+ symbol: "NZ$",
15766
+ symbolNative: "$",
15767
+ minorSingle: "Cent",
15768
+ minorPlural: "Cents",
15769
+ ISOdigits: 2,
15770
+ decimals: 2,
15771
+ numToBasic: 100
15772
+ },
15773
+ OMR: {
15774
+ name: "Omani Rial",
15775
+ demonym: "Omani",
15776
+ majorSingle: "Rial",
15777
+ majorPlural: "Rials",
15778
+ ISOnum: 512,
15779
+ symbol: "OR",
15780
+ symbolNative: "\u0631.\u0639.",
15781
+ minorSingle: "Baisa",
15782
+ minorPlural: "Baisa",
15783
+ ISOdigits: 3,
15784
+ decimals: 3,
15785
+ numToBasic: 1e3
15786
+ },
15787
+ PAB: {
15788
+ name: "Panamanian Balboa",
15789
+ demonym: "Panamanian",
15790
+ majorSingle: "Balboa",
15791
+ majorPlural: "Balboa",
15792
+ ISOnum: 590,
15793
+ symbol: "B/.",
15794
+ symbolNative: "B/.",
15795
+ minorSingle: "Cent\xE9simo",
15796
+ minorPlural: "Cent\xE9simos",
15797
+ ISOdigits: 2,
15798
+ decimals: 2,
15799
+ numToBasic: 100
15800
+ },
15801
+ PEN: {
15802
+ name: "Peruvian Sol",
15803
+ demonym: "Peruvian",
15804
+ majorSingle: "Sol",
15805
+ majorPlural: "Soles",
15806
+ ISOnum: 604,
15807
+ symbol: "S/.",
15808
+ symbolNative: "S/.",
15809
+ minorSingle: "C\xE9ntimo",
15810
+ minorPlural: "C\xE9ntimos",
15811
+ ISOdigits: 2,
15812
+ decimals: 2,
15813
+ numToBasic: 100
15814
+ },
15815
+ PGK: {
15816
+ name: "Papua New Guinean Kina",
15817
+ demonym: "Papua New Guinean",
15818
+ majorSingle: "Kina",
15819
+ majorPlural: "Kina",
15820
+ ISOnum: 598,
15821
+ symbol: "K",
15822
+ symbolNative: "K",
15823
+ minorSingle: "Toea",
15824
+ minorPlural: "Toea",
15825
+ ISOdigits: 2,
15826
+ decimals: 2,
15827
+ numToBasic: 100
15828
+ },
15829
+ PHP: {
15830
+ name: "Philippine Peso",
15831
+ demonym: "Philippine",
15832
+ majorSingle: "Peso",
15833
+ majorPlural: "Pesos",
15834
+ ISOnum: 608,
15835
+ symbol: "\u20B1",
15836
+ symbolNative: "\u20B1",
15837
+ minorSingle: "Sentimo",
15838
+ minorPlural: "Sentimo",
15839
+ ISOdigits: 2,
15840
+ decimals: 2,
15841
+ numToBasic: 100
15842
+ },
15843
+ PKR: {
15844
+ name: "Pakistani Rupee",
15845
+ demonym: "Pakistani",
15846
+ majorSingle: "Rupee",
15847
+ majorPlural: "Rupees",
15848
+ ISOnum: 586,
15849
+ symbol: "Rs.",
15850
+ symbolNative: "Rs",
15851
+ minorSingle: "Paisa",
15852
+ minorPlural: "Paise",
15853
+ ISOdigits: 2,
15854
+ decimals: 2,
15855
+ numToBasic: 100
15856
+ },
15857
+ PLN: {
15858
+ name: "Polish Zloty",
15859
+ demonym: "Polish",
15860
+ majorSingle: "Zloty",
15861
+ majorPlural: "Zlotys",
15862
+ ISOnum: 985,
15863
+ symbol: "z\u0142",
15864
+ symbolNative: "z\u0142",
15865
+ minorSingle: "Grosz",
15866
+ minorPlural: "Groszy",
15867
+ ISOdigits: 2,
15868
+ decimals: 2,
15869
+ numToBasic: 100
15870
+ },
15871
+ PND: {
15872
+ name: "Pitcairn Islands Dollar",
15873
+ demonym: "Pitcairn Islands",
15874
+ majorSingle: "Dollar",
15875
+ majorPlural: "Dollars",
15876
+ ISOnum: null,
15877
+ symbol: "$",
15878
+ symbolNative: "$",
15879
+ minorSingle: "Cent",
15880
+ minorPlural: "Cents",
15881
+ ISOdigits: 2,
15882
+ decimals: 2,
15883
+ numToBasic: 100
15884
+ },
15885
+ PRB: {
15886
+ name: "Transnistrian Ruble",
15887
+ demonym: "Transnistrian",
15888
+ majorSingle: "Ruble",
15889
+ majorPlural: "Rubles",
15890
+ ISOnum: null,
15891
+ symbol: "\u0440.",
15892
+ symbolNative: "\u0440.",
15893
+ minorSingle: "Kopek",
15894
+ minorPlural: "Kopeks",
15895
+ ISOdigits: 2,
15896
+ decimals: 2,
15897
+ numToBasic: 100
15898
+ },
15899
+ PYG: {
15900
+ name: "Paraguayan Guaran\xED",
15901
+ demonym: "Paraguayan",
15902
+ majorSingle: "Guaran\xED",
15903
+ majorPlural: "Guaran\xEDes",
15904
+ ISOnum: 600,
15905
+ symbol: "\u20B2",
15906
+ symbolNative: "\u20B2",
15907
+ minorSingle: "Centimo",
15908
+ minorPlural: "Centimos",
15909
+ ISOdigits: 0,
15910
+ decimals: 2,
15911
+ numToBasic: 100
15912
+ },
15913
+ QAR: {
15914
+ name: "Qatari Riyal",
15915
+ demonym: "Qatari",
15916
+ majorSingle: "Riyal",
15917
+ majorPlural: "Riyals",
15918
+ ISOnum: 634,
15919
+ symbol: "QR",
15920
+ symbolNative: "\u0631.\u0642.",
15921
+ minorSingle: "Dirham",
15922
+ minorPlural: "Dirhams",
15923
+ ISOdigits: 2,
15924
+ decimals: 2,
15925
+ numToBasic: 100
15926
+ },
15927
+ RON: {
15928
+ name: "Romanian Leu",
15929
+ demonym: "Romanian",
15930
+ majorSingle: "Leu",
15931
+ majorPlural: "Lei",
15932
+ ISOnum: 946,
15933
+ symbol: "L",
15934
+ symbolNative: "L",
15935
+ minorSingle: "Ban",
15936
+ minorPlural: "Bani",
15937
+ ISOdigits: 2,
15938
+ decimals: 2,
15939
+ numToBasic: 100
15940
+ },
15941
+ RSD: {
15942
+ name: "Serbian Dinar",
15943
+ demonym: "Serbian",
15944
+ majorSingle: "Dinar",
15945
+ majorPlural: "Dinars",
15946
+ ISOnum: 941,
15947
+ symbol: "din",
15948
+ symbolNative: "\u0434\u0438\u043D",
15949
+ minorSingle: "Para",
15950
+ minorPlural: "Para",
15951
+ ISOdigits: 2,
15952
+ decimals: 2,
15953
+ numToBasic: 100
15954
+ },
15955
+ RUB: {
15956
+ name: "Russian Ruble",
15957
+ demonym: "Russian",
15958
+ majorSingle: "Ruble",
15959
+ majorPlural: "Rubles",
15960
+ ISOnum: 643,
15961
+ symbol: "\u20BD",
15962
+ symbolNative: "\u20BD",
15963
+ minorSingle: "Kopek",
15964
+ minorPlural: "Kopeks",
15965
+ ISOdigits: 2,
15966
+ decimals: 2,
15967
+ numToBasic: 100
15968
+ },
15969
+ RWF: {
15970
+ name: "Rwandan Franc",
15971
+ demonym: "Rwandan",
15972
+ majorSingle: "Franc",
15973
+ majorPlural: "Francs",
15974
+ ISOnum: 646,
15975
+ symbol: "FRw",
15976
+ symbolNative: "R\u20A3",
15977
+ minorSingle: "Centime",
15978
+ minorPlural: "Centimes",
15979
+ ISOdigits: 0,
15980
+ decimals: 2,
15981
+ numToBasic: 100
15982
+ },
15983
+ SAR: {
15984
+ name: "Saudi Riyal",
15985
+ demonym: "Saudi",
15986
+ majorSingle: "Riyal",
15987
+ majorPlural: "Riyals",
15988
+ ISOnum: 682,
15989
+ symbol: "SR",
15990
+ symbolNative: "\u0631.\u0633.",
15991
+ minorSingle: "Halalah",
15992
+ minorPlural: "Halalahs",
15993
+ ISOdigits: 2,
15994
+ decimals: 2,
15995
+ numToBasic: 100
15996
+ },
15997
+ SBD: {
15998
+ name: "Solomon Islands Dollar",
15999
+ demonym: "Solomon Islands",
16000
+ majorSingle: "Dollar",
16001
+ majorPlural: "Dollars",
16002
+ ISOnum: 90,
16003
+ symbol: "SI$",
16004
+ symbolNative: "$",
16005
+ minorSingle: "Cent",
16006
+ minorPlural: "Cents",
16007
+ ISOdigits: 2,
16008
+ decimals: 2,
16009
+ numToBasic: 100
16010
+ },
16011
+ SCR: {
16012
+ name: "Seychellois Rupee",
16013
+ demonym: "Seychellois",
16014
+ majorSingle: "Rupee",
16015
+ majorPlural: "Rupees",
16016
+ ISOnum: 690,
16017
+ symbol: "Rs.",
16018
+ symbolNative: "Rs",
16019
+ minorSingle: "Cent",
16020
+ minorPlural: "Cents",
16021
+ ISOdigits: 2,
16022
+ decimals: 2,
16023
+ numToBasic: 100
16024
+ },
16025
+ SDG: {
16026
+ name: "Sudanese Pound",
16027
+ demonym: "Sudanese",
16028
+ majorSingle: "Pound",
16029
+ majorPlural: "Pounds",
16030
+ ISOnum: 938,
16031
+ symbol: "\xA3SD",
16032
+ symbolNative: "\u062C.\u0633.",
16033
+ minorSingle: "Qirsh",
16034
+ minorPlural: "Qirsh",
16035
+ ISOdigits: 2,
16036
+ decimals: 2,
16037
+ numToBasic: 100
16038
+ },
16039
+ SEK: {
16040
+ name: "Swedish Krona",
16041
+ demonym: "Swedish",
16042
+ majorSingle: "Krona",
16043
+ majorPlural: "Kronor",
16044
+ ISOnum: 752,
16045
+ symbol: "kr",
16046
+ symbolNative: "kr",
16047
+ minorSingle: "\xD6re",
16048
+ minorPlural: "\xD6re",
16049
+ ISOdigits: 2,
16050
+ decimals: 2,
16051
+ numToBasic: 100
16052
+ },
16053
+ SGD: {
16054
+ name: "Singapore Dollar",
16055
+ demonym: "Singapore",
16056
+ majorSingle: "Dollar",
16057
+ majorPlural: "Dollars",
16058
+ ISOnum: 702,
16059
+ symbol: "S$",
16060
+ symbolNative: "$",
16061
+ minorSingle: "Cent",
16062
+ minorPlural: "Cents",
16063
+ ISOdigits: 2,
16064
+ decimals: 2,
16065
+ numToBasic: 100
16066
+ },
16067
+ SHP: {
16068
+ name: "Saint Helena Pound",
16069
+ demonym: "Saint Helena",
16070
+ majorSingle: "Pound",
16071
+ majorPlural: "Pounds",
16072
+ ISOnum: 654,
16073
+ symbol: "\xA3",
16074
+ symbolNative: "\xA3",
16075
+ minorSingle: "Penny",
16076
+ minorPlural: "Pence",
16077
+ ISOdigits: 2,
16078
+ decimals: 2,
16079
+ numToBasic: 100
16080
+ },
16081
+ SLL: {
16082
+ name: "Sierra Leonean Leone",
16083
+ demonym: "Sierra Leonean",
16084
+ majorSingle: "Leone",
16085
+ majorPlural: "Leones",
16086
+ ISOnum: 694,
16087
+ symbol: "Le",
16088
+ symbolNative: "Le",
16089
+ minorSingle: "Cent",
16090
+ minorPlural: "Cents",
16091
+ ISOdigits: 2,
16092
+ decimals: 2,
16093
+ numToBasic: 100
16094
+ },
16095
+ SLS: {
16096
+ name: "Somaliland Shilling",
16097
+ demonym: "Somaliland",
16098
+ majorSingle: "Shilling",
16099
+ majorPlural: "Shillings",
16100
+ ISOnum: null,
16101
+ symbol: "Sl",
16102
+ symbolNative: "Sl",
16103
+ minorSingle: "Cent",
16104
+ minorPlural: "Cents",
16105
+ ISOdigits: 2,
16106
+ decimals: 2,
16107
+ numToBasic: 100
16108
+ },
16109
+ SOS: {
16110
+ name: "Somali Shilling",
16111
+ demonym: "Somali",
16112
+ majorSingle: "Shilling",
16113
+ majorPlural: "Shillings",
16114
+ ISOnum: 706,
16115
+ symbol: "Sh.So.",
16116
+ symbolNative: "Ssh",
16117
+ minorSingle: "Senti",
16118
+ minorPlural: "Senti",
16119
+ ISOdigits: 2,
16120
+ decimals: 2,
16121
+ numToBasic: 100
16122
+ },
16123
+ SRD: {
16124
+ name: "Surinamese Dollar",
16125
+ demonym: "Surinamese",
16126
+ majorSingle: "Dollar",
16127
+ majorPlural: "Dollars",
16128
+ ISOnum: 968,
16129
+ symbol: "Sr$",
16130
+ symbolNative: "$",
16131
+ minorSingle: "Cent",
16132
+ minorPlural: "Cents",
16133
+ ISOdigits: 2,
16134
+ decimals: 2,
16135
+ numToBasic: 100
16136
+ },
16137
+ SSP: {
16138
+ name: "South Sudanese Pound",
16139
+ demonym: "South Sudanese",
16140
+ majorSingle: "Pound",
16141
+ majorPlural: "Pounds",
16142
+ ISOnum: 728,
16143
+ symbol: "SS\xA3",
16144
+ symbolNative: "SS\xA3",
16145
+ minorSingle: "Qirsh",
16146
+ minorPlural: "Qirsh",
16147
+ ISOdigits: 2,
16148
+ decimals: 2,
16149
+ numToBasic: 100
16150
+ },
16151
+ STN: {
16152
+ name: "Sao Tome and Pr\xEDncipe Dobra",
16153
+ demonym: "Sao Tome",
16154
+ majorSingle: "Dobra",
16155
+ majorPlural: "Dobras",
16156
+ ISOnum: 930,
16157
+ symbol: "Db",
16158
+ symbolNative: "Db",
16159
+ minorSingle: "Centimo",
16160
+ minorPlural: "Centimos",
16161
+ ISOdigits: 2,
16162
+ decimals: 2,
16163
+ numToBasic: 100
16164
+ },
16165
+ SVC: {
16166
+ name: "Salvadoran Col\xF3n",
16167
+ demonym: "Salvadoran",
16168
+ majorSingle: "Col\xF3n",
16169
+ majorPlural: "Colones",
16170
+ ISOnum: 222,
16171
+ symbol: "\u20A1",
16172
+ symbolNative: "\u20A1",
16173
+ minorSingle: "Centavo",
16174
+ minorPlural: "Centavos",
16175
+ ISOdigits: 2,
16176
+ decimals: 2,
16177
+ numToBasic: 100
16178
+ },
16179
+ SYP: {
16180
+ name: "Syrian Pound",
16181
+ demonym: "Syrian",
16182
+ majorSingle: "Pound",
16183
+ majorPlural: "Pounds",
16184
+ ISOnum: 760,
16185
+ symbol: "LS",
16186
+ symbolNative: "\u0644.\u0633.",
16187
+ minorSingle: "Qirsh",
16188
+ minorPlural: "Qirsh",
16189
+ ISOdigits: 2,
16190
+ decimals: 2,
16191
+ numToBasic: 100
16192
+ },
16193
+ SZL: {
16194
+ name: "Swazi Lilangeni",
16195
+ demonym: "Swazi",
16196
+ majorSingle: "Lilangeni",
16197
+ majorPlural: "Emalangeni",
16198
+ ISOnum: 748,
16199
+ symbol: "L",
16200
+ symbolNative: "L",
16201
+ minorSingle: "Cent",
16202
+ minorPlural: "Cents",
16203
+ ISOdigits: 2,
16204
+ decimals: 2,
16205
+ numToBasic: 100
16206
+ },
16207
+ THB: {
16208
+ name: "Thai Baht",
16209
+ demonym: "Thai",
16210
+ majorSingle: "Baht",
16211
+ majorPlural: "Baht",
16212
+ ISOnum: 764,
16213
+ symbol: "\u0E3F",
16214
+ symbolNative: "\u0E3F",
16215
+ minorSingle: "Satang",
16216
+ minorPlural: "Satang",
16217
+ ISOdigits: 2,
16218
+ decimals: 2,
16219
+ numToBasic: 100
16220
+ },
16221
+ TJS: {
16222
+ name: "Tajikistani Somoni",
16223
+ demonym: "Tajikistani",
16224
+ majorSingle: "Somoni",
16225
+ majorPlural: "Somoni",
16226
+ ISOnum: 972,
16227
+ symbol: "SM",
16228
+ symbolNative: "SM",
16229
+ minorSingle: "Diram",
16230
+ minorPlural: "Diram",
16231
+ ISOdigits: 2,
16232
+ decimals: 2,
16233
+ numToBasic: 100
16234
+ },
16235
+ TMT: {
16236
+ name: "Turkmenistan Manat",
16237
+ demonym: "Turkmenistan",
16238
+ majorSingle: "Manat",
16239
+ majorPlural: "Manat",
16240
+ ISOnum: 934,
16241
+ symbol: "m.",
16242
+ symbolNative: "T",
16243
+ minorSingle: "Tenge",
16244
+ minorPlural: "Tenge",
16245
+ ISOdigits: 2,
16246
+ decimals: 2,
16247
+ numToBasic: 100
16248
+ },
16249
+ TND: {
16250
+ name: "Tunisian Dinar",
16251
+ demonym: "Tunisian",
16252
+ majorSingle: "Dinar",
16253
+ majorPlural: "Dinars",
16254
+ ISOnum: 788,
16255
+ symbol: "DT",
16256
+ symbolNative: "\u062F.\u062A.",
16257
+ minorSingle: "Millime",
16258
+ minorPlural: "Millime",
16259
+ ISOdigits: 3,
16260
+ decimals: 3,
16261
+ numToBasic: 1e3
16262
+ },
16263
+ TOP: {
16264
+ name: "Tongan Pa\u02BBanga",
16265
+ demonym: "Tongan",
16266
+ majorSingle: "Pa'anga",
16267
+ majorPlural: "Pa'anga",
16268
+ ISOnum: 776,
16269
+ symbol: "T$",
16270
+ symbolNative: "PT",
16271
+ minorSingle: "Seniti",
16272
+ minorPlural: "Seniti",
16273
+ ISOdigits: 2,
16274
+ decimals: 2,
16275
+ numToBasic: 100
16276
+ },
16277
+ TRY: {
16278
+ name: "Turkish Lira",
16279
+ demonym: "Turkish",
16280
+ majorSingle: "Lira",
16281
+ majorPlural: "Lira",
16282
+ ISOnum: 949,
16283
+ symbol: "TL",
16284
+ symbolNative: "\u20BA",
16285
+ minorSingle: "Kuru\u015F",
16286
+ minorPlural: "Kuru\u015F",
16287
+ ISOdigits: 2,
16288
+ decimals: 2,
16289
+ numToBasic: 100
16290
+ },
16291
+ TTD: {
16292
+ name: "Trinidad and Tobago Dollar",
16293
+ demonym: "Trinidad and Tobago",
16294
+ majorSingle: "Dollar",
16295
+ majorPlural: "Dollars",
16296
+ ISOnum: 780,
16297
+ symbol: "TT$",
16298
+ symbolNative: "$",
16299
+ minorSingle: "Cent",
16300
+ minorPlural: "Cents",
16301
+ ISOdigits: 2,
16302
+ decimals: 2,
16303
+ numToBasic: 100
16304
+ },
16305
+ TVD: {
16306
+ name: "Tuvaluan Dollar",
16307
+ demonym: "Tuvaluan",
16308
+ majorSingle: "Dollar",
16309
+ majorPlural: "Dollars",
16310
+ ISOnum: null,
16311
+ symbol: "$",
16312
+ symbolNative: "$",
16313
+ minorSingle: "Cent",
16314
+ minorPlural: "Cents",
16315
+ ISOdigits: 2,
16316
+ decimals: 2,
16317
+ numToBasic: 100
16318
+ },
16319
+ TWD: {
16320
+ name: "New Taiwan Dollar",
16321
+ demonym: "New Taiwan",
16322
+ majorSingle: "Dollar",
16323
+ majorPlural: "Dollars",
16324
+ ISOnum: 901,
16325
+ symbol: "NT$",
16326
+ symbolNative: "\u5713",
16327
+ minorSingle: "Cent",
16328
+ minorPlural: "Cents",
16329
+ ISOdigits: 2,
16330
+ decimals: 2,
16331
+ numToBasic: 100
16332
+ },
16333
+ TZS: {
16334
+ name: "Tanzanian Shilling",
16335
+ demonym: "Tanzanian",
16336
+ majorSingle: "Shilling",
16337
+ majorPlural: "Shillings",
16338
+ ISOnum: 834,
16339
+ symbol: "TSh",
16340
+ symbolNative: "TSh",
16341
+ minorSingle: "Senti",
16342
+ minorPlural: "Senti",
16343
+ ISOdigits: 2,
16344
+ decimals: 2,
16345
+ numToBasic: 100
16346
+ },
16347
+ UAH: {
16348
+ name: "Ukrainian Hryvnia",
16349
+ demonym: "Ukrainian",
16350
+ majorSingle: "Hryvnia",
16351
+ majorPlural: "Hryvnias",
16352
+ ISOnum: 980,
16353
+ symbol: "\u20B4",
16354
+ symbolNative: "\u0433\u0440\u043D",
16355
+ minorSingle: "Kopiyka",
16356
+ minorPlural: "kopiyky",
16357
+ ISOdigits: 2,
16358
+ decimals: 2,
16359
+ numToBasic: 100
16360
+ },
16361
+ UGX: {
16362
+ name: "Ugandan Shilling",
16363
+ demonym: "Ugandan",
16364
+ majorSingle: "Shilling",
16365
+ majorPlural: "Shillings",
16366
+ ISOnum: 800,
16367
+ symbol: "USh",
16368
+ symbolNative: "Sh",
16369
+ minorSingle: "Cent",
16370
+ minorPlural: "Cents",
16371
+ ISOdigits: 0,
16372
+ decimals: 2,
16373
+ numToBasic: 100
16374
+ },
16375
+ USD: {
16376
+ name: "United States Dollar",
16377
+ demonym: "US",
16378
+ majorSingle: "Dollar",
16379
+ majorPlural: "Dollars",
16380
+ ISOnum: 840,
16381
+ symbol: "$",
16382
+ symbolNative: "$",
16383
+ minorSingle: "Cent",
16384
+ minorPlural: "Cents",
16385
+ ISOdigits: 2,
16386
+ decimals: 2,
16387
+ numToBasic: 100
16388
+ },
16389
+ UYU: {
16390
+ name: "Uruguayan Peso",
16391
+ demonym: "Uruguayan",
16392
+ majorSingle: "Peso",
16393
+ majorPlural: "Pesos",
16394
+ ISOnum: 858,
16395
+ symbol: "$U",
16396
+ symbolNative: "$",
16397
+ minorSingle: "Cent\xE9simo",
16398
+ minorPlural: "Cent\xE9simos",
16399
+ ISOdigits: 2,
16400
+ decimals: 2,
16401
+ numToBasic: 100
16402
+ },
16403
+ UZS: {
16404
+ name: "Uzbekistani Som",
16405
+ demonym: "Uzbekistani",
16406
+ majorSingle: "Som",
16407
+ majorPlural: "Som",
16408
+ ISOnum: 860,
16409
+ symbol: "\u0441\u0443\u043C",
16410
+ symbolNative: "\u0441\u0443\u043C",
16411
+ minorSingle: "Tiyin",
16412
+ minorPlural: "Tiyin",
16413
+ ISOdigits: 2,
16414
+ decimals: 2,
16415
+ numToBasic: 100
16416
+ },
16417
+ VED: {
16418
+ name: "Venezuelan bol\xEDvar digital",
16419
+ demonym: "Venezuelan",
16420
+ majorSingle: "Bol\xEDvar Digital",
16421
+ majorPlural: "Bol\xEDvars Digital",
16422
+ ISOnum: null,
16423
+ symbol: "Bs.",
16424
+ symbolNative: "Bs.",
16425
+ minorSingle: "C\xE9ntimo",
16426
+ minorPlural: "C\xE9ntimos",
16427
+ ISOdigits: 2,
16428
+ decimals: 2,
16429
+ numToBasic: 100
16430
+ },
16431
+ VES: {
16432
+ name: "Venezuelan Bol\xEDvar Soberano",
16433
+ demonym: "Venezuelan",
16434
+ majorSingle: "Bol\xEDvar",
16435
+ majorPlural: "Bol\xEDvares",
16436
+ ISOnum: 928,
16437
+ symbol: "Bs.F",
16438
+ symbolNative: "Bs.F",
16439
+ minorSingle: "Centimo",
16440
+ minorPlural: "Centimos",
16441
+ ISOdigits: 2,
16442
+ decimals: 2,
16443
+ numToBasic: 100
16444
+ },
16445
+ VND: {
16446
+ name: "Vietnamese Dong",
16447
+ demonym: "Vietnamese",
16448
+ majorSingle: "Dong",
16449
+ majorPlural: "Dong",
16450
+ ISOnum: 704,
16451
+ symbol: "\u20AB",
16452
+ symbolNative: "\u20AB",
16453
+ minorSingle: "H\xE0o",
16454
+ minorPlural: "H\xE0o",
16455
+ ISOdigits: 0,
16456
+ decimals: 2,
16457
+ numToBasic: 10
16458
+ },
16459
+ VUV: {
16460
+ name: "Vanuatu Vatu",
16461
+ demonym: "Vanuatu",
16462
+ majorSingle: "Vatu",
16463
+ majorPlural: "Vatu",
16464
+ ISOnum: 548,
16465
+ symbol: "VT",
16466
+ symbolNative: "VT",
16467
+ minorSingle: "",
16468
+ minorPlural: "",
16469
+ ISOdigits: 0,
16470
+ decimals: 0,
16471
+ numToBasic: null
16472
+ },
16473
+ WST: {
16474
+ name: "Samoan Tala",
16475
+ demonym: "Samoan",
16476
+ majorSingle: "Tala",
16477
+ majorPlural: "Tala",
16478
+ ISOnum: 882,
16479
+ symbol: "T",
16480
+ symbolNative: "ST",
16481
+ minorSingle: "Sene",
16482
+ minorPlural: "Sene",
16483
+ ISOdigits: 2,
16484
+ decimals: 2,
16485
+ numToBasic: 100
16486
+ },
16487
+ XAF: {
16488
+ name: "Central African CFA Franc BEAC",
16489
+ demonym: "Central African CFA",
16490
+ majorSingle: "Franc",
16491
+ majorPlural: "Francs",
16492
+ ISOnum: 950,
16493
+ symbol: "Fr",
16494
+ symbolNative: "Fr.",
16495
+ minorSingle: "Centime",
16496
+ minorPlural: "Centimes",
16497
+ ISOdigits: 0,
16498
+ decimals: 2,
16499
+ numToBasic: 100
16500
+ },
16501
+ XCD: {
16502
+ name: "East Caribbean Dollar",
16503
+ demonym: "East Caribbean",
16504
+ majorSingle: "Dollar",
16505
+ majorPlural: "Dollars",
16506
+ ISOnum: 951,
16507
+ symbol: "$",
16508
+ symbolNative: "$",
16509
+ minorSingle: "Cent",
16510
+ minorPlural: "Cents",
16511
+ ISOdigits: 2,
16512
+ decimals: 2,
16513
+ numToBasic: 100
16514
+ },
16515
+ XOF: {
16516
+ name: "West African CFA Franc BCEAO",
16517
+ demonym: "West African CFA",
16518
+ majorSingle: "Franc",
16519
+ majorPlural: "Francs",
16520
+ ISOnum: 952,
16521
+ symbol: "\u20A3",
16522
+ symbolNative: "\u20A3",
16523
+ minorSingle: "Centime",
16524
+ minorPlural: "Centimes",
16525
+ ISOdigits: 0,
16526
+ decimals: 2,
16527
+ numToBasic: 100
16528
+ },
16529
+ XPF: {
16530
+ name: "CFP Franc (Franc Pacifique)",
16531
+ demonym: "CFP",
16532
+ majorSingle: "Franc",
16533
+ majorPlural: "Francs",
16534
+ ISOnum: 953,
16535
+ symbol: "\u20A3",
16536
+ symbolNative: "\u20A3",
16537
+ minorSingle: "Centime",
16538
+ minorPlural: "Centimes",
16539
+ ISOdigits: 0,
16540
+ decimals: 0,
16541
+ numToBasic: 100
16542
+ },
16543
+ YER: {
16544
+ name: "Yemeni Rial",
16545
+ demonym: "Yemeni",
16546
+ majorSingle: "Rial",
16547
+ majorPlural: "Rials",
16548
+ ISOnum: 886,
16549
+ symbol: "YR",
16550
+ symbolNative: "\u0631.\u064A.",
16551
+ minorSingle: "Fils",
16552
+ minorPlural: "Fils",
16553
+ ISOdigits: 2,
16554
+ decimals: 2,
16555
+ numToBasic: 100
16556
+ },
16557
+ ZAR: {
16558
+ name: "South African Rand",
16559
+ demonym: "South African",
16560
+ majorSingle: "Rand",
16561
+ majorPlural: "Rand",
16562
+ ISOnum: 710,
16563
+ symbol: "R",
16564
+ symbolNative: "R",
16565
+ minorSingle: "Cent",
16566
+ minorPlural: "Cents",
16567
+ ISOdigits: 2,
16568
+ decimals: 2,
16569
+ numToBasic: 100
16570
+ },
16571
+ ZMW: {
16572
+ name: "Zambian Kwacha",
16573
+ demonym: "Zambian",
16574
+ majorSingle: "Kwacha",
16575
+ majorPlural: "Kwacha",
16576
+ ISOnum: 967,
16577
+ symbol: "ZK",
16578
+ symbolNative: "ZK",
16579
+ minorSingle: "Ngwee",
16580
+ minorPlural: "Ngwee",
16581
+ ISOdigits: 2,
16582
+ decimals: 2,
16583
+ numToBasic: 100
16584
+ },
16585
+ ZWB: {
16586
+ name: "RTGS Dollar",
16587
+ demonym: "RTGS",
16588
+ majorSingle: "Dollar",
16589
+ majorPlural: "Dollars",
16590
+ ISOnum: null,
16591
+ symbol: "",
16592
+ symbolNative: "",
16593
+ minorSingle: "",
16594
+ minorPlural: "",
16595
+ ISOdigits: 0,
16596
+ decimals: 0,
16597
+ numToBasic: null
16598
+ },
16599
+ ZWL: {
16600
+ name: "Zimbabwean Dollar",
16601
+ demonym: "Zimbabwean",
16602
+ majorSingle: "Dollar",
16603
+ majorPlural: "Dollars",
16604
+ ISOnum: 932,
16605
+ symbol: "Z$",
16606
+ symbolNative: "$",
16607
+ minorSingle: "Cent",
16608
+ minorPlural: "Cents",
16609
+ ISOdigits: 2,
16610
+ decimals: 2,
16611
+ numToBasic: 100
16612
+ },
16613
+ Abkhazia: {
16614
+ name: "Abkhazian Apsar",
16615
+ demonym: "Abkhazian",
16616
+ majorSingle: "Apsar",
16617
+ majorPlural: "Apsark",
16618
+ ISOnum: null,
16619
+ symbol: "",
16620
+ symbolNative: "",
16621
+ minorSingle: "",
16622
+ minorPlural: "",
16623
+ ISOdigits: 0,
16624
+ decimals: 0,
16625
+ numToBasic: null
16626
+ },
16627
+ Artsakh: {
16628
+ name: "Artsakh Dram",
16629
+ demonym: "Artsakh",
16630
+ majorSingle: "Dram",
16631
+ majorPlural: "Dram",
16632
+ ISOnum: null,
16633
+ symbol: "\u0564\u0580.",
16634
+ symbolNative: "\u0564\u0580.",
16635
+ minorSingle: "Luma",
16636
+ minorPlural: "Luma",
16637
+ ISOdigits: 2,
16638
+ decimals: 2,
16639
+ numToBasic: 100
16640
+ }
16641
+ };
16642
+
16643
+ // src/react/utils/money.ts
16644
+ function formatCurrency(amount, locale, currency) {
16645
+ const currencySymbols = {
16646
+ AUD: "A$",
16647
+ CAD: "CA$",
16648
+ USD: "$"
16649
+ };
16650
+ try {
16651
+ const formatter = new Intl.NumberFormat(locale, {
16652
+ style: "currency",
16653
+ currency
16654
+ });
16655
+ let formatted = formatter.format(amount);
16656
+ if (currency in currencySymbols) {
16657
+ const correctSymbol = currencySymbols[currency];
16658
+ formatted = formatted.replace(/^[^\d\s.,]+/, correctSymbol);
16659
+ }
16660
+ return formatted;
16661
+ } catch (error) {
16662
+ console.error("Intl.NumberFormat Error:", error);
16663
+ return "".concat(currency in currencySymbols ? currencySymbols[currency] : "").concat(amount.toFixed(2));
16664
+ }
16665
+ }
16666
+ function formatMoney(amountMinorUnits, currencyCode = "USD", locale) {
16667
+ const safeLocale = locale || "en-US";
16668
+ const currencyInfo = currencies_default[currencyCode];
16669
+ if (!currencyInfo) {
16670
+ throw new Error("Currency ".concat(currencyCode, " not found in currency data."));
16671
+ }
16672
+ let value;
16673
+ if (currencyInfo.ISOdigits === 0 || currencyInfo.ISOdigits === 3) {
16674
+ value = amountMinorUnits / 100;
16675
+ } else {
16676
+ value = amountMinorUnits / Math.pow(10, currencyInfo.ISOdigits);
16677
+ }
16678
+ return formatCurrency(value, safeLocale, currencyCode);
16679
+ }
16680
+ function getCurrencyInfo(currencyCode) {
16681
+ return currencies_default[currencyCode] || null;
16682
+ }
16683
+ function moneyStringOrNumberToMinorUnits(moneyStringOrNumber, currencyCode) {
16684
+ const currencyInfo = currencies_default[currencyCode];
16685
+ if (!currencyInfo) {
16686
+ throw new Error("Currency ".concat(currencyCode, " not found in currency data."));
16687
+ }
16688
+ const value = typeof moneyStringOrNumber === "string" ? parseFloat(moneyStringOrNumber) : moneyStringOrNumber;
16689
+ return Math.round(value * Math.pow(10, currencyInfo.ISOdigits));
16690
+ }
16691
+ function minorUnitsToMajorUnits(amountMinorUnits, currencyCode) {
16692
+ const currencyInfo = currencies_default[currencyCode];
16693
+ if (!currencyInfo) {
16694
+ throw new Error("Currency ".concat(currencyCode, " not found in currency data."));
16695
+ }
16696
+ if (currencyInfo.ISOdigits === 0 || currencyInfo.ISOdigits === 3) {
16697
+ return amountMinorUnits / 100;
16698
+ }
16699
+ return amountMinorUnits / Math.pow(10, currencyInfo.ISOdigits);
16700
+ }
16701
+
13893
16702
  // src/v2/standalone/external-tracker.ts
13894
16703
  init_tokenStorage();
13895
16704
  var TRACKER_VERSION = "1.0.0";
@@ -14291,6 +17100,11 @@ var TagadaSDKBundle = (() => {
14291
17100
  });
14292
17101
  }
14293
17102
  if (typeof window !== "undefined" && typeof document !== "undefined") {
17103
+ try {
17104
+ publishTrackingGlobal();
17105
+ } catch (error) {
17106
+ console.error("[TagadaPay] Failed to publish tracking global:", error);
17107
+ }
14294
17108
  const runInjection = () => {
14295
17109
  if (document.body) {
14296
17110
  injectStepConfigScripts();