@tagadapay/plugin-sdk 4.0.0 → 4.0.4

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