@seatlayer/core 0.52.0 → 0.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/LICENSE +16 -17
  2. package/README.md +8 -18
  3. package/dist/chunk-54A7LIL5.js +1 -0
  4. package/dist/chunk-IJI4WU57.js +1 -0
  5. package/dist/chunk-XPPT3OGQ.js +1 -0
  6. package/dist/core/seatConfidence.cjs +1 -76
  7. package/dist/core/seatConfidence.js +1 -51
  8. package/dist/de-75NWRKC5.js +1 -0
  9. package/dist/es-BM7EJ7PW.js +1 -0
  10. package/dist/fr-HPXQHIB4.js +1 -0
  11. package/dist/index.cjs +1 -12717
  12. package/dist/index.d.cts +38 -53
  13. package/dist/index.d.ts +38 -53
  14. package/dist/index.js +1 -10235
  15. package/dist/picker/minimapGeometry.cjs +1 -80
  16. package/dist/picker/minimapGeometry.js +1 -52
  17. package/dist/view/panoramaDelivery.cjs +1 -126
  18. package/dist/view/panoramaDelivery.js +1 -17
  19. package/dist/view3d/crossfade/panorama.cjs +1 -459
  20. package/dist/view3d/crossfade/panorama.d.cts +1 -3
  21. package/dist/view3d/crossfade/panorama.d.ts +1 -3
  22. package/dist/view3d/crossfade/panorama.js +1 -30
  23. package/dist/view3d/index.cjs +27 -7929
  24. package/dist/view3d/index.d.cts +62 -21
  25. package/dist/view3d/index.d.ts +62 -21
  26. package/dist/view3d/index.js +27 -7062
  27. package/package.json +2 -7
  28. package/dist/chunk-AZODENEL.js +0 -97
  29. package/dist/chunk-AZODENEL.js.map +0 -1
  30. package/dist/chunk-BE3F7CT3.js +0 -341
  31. package/dist/chunk-BE3F7CT3.js.map +0 -1
  32. package/dist/chunk-UID7KN44.js +0 -1569
  33. package/dist/chunk-UID7KN44.js.map +0 -1
  34. package/dist/core/seatConfidence.cjs.map +0 -1
  35. package/dist/core/seatConfidence.js.map +0 -1
  36. package/dist/de-YGODYJ3E.js +0 -292
  37. package/dist/de-YGODYJ3E.js.map +0 -1
  38. package/dist/es-VMBTGVFQ.js +0 -292
  39. package/dist/es-VMBTGVFQ.js.map +0 -1
  40. package/dist/fr-SLBE2ULB.js +0 -292
  41. package/dist/fr-SLBE2ULB.js.map +0 -1
  42. package/dist/index.cjs.map +0 -1
  43. package/dist/index.js.map +0 -1
  44. package/dist/picker/minimapGeometry.cjs.map +0 -1
  45. package/dist/picker/minimapGeometry.js.map +0 -1
  46. package/dist/view/panoramaDelivery.cjs.map +0 -1
  47. package/dist/view/panoramaDelivery.js.map +0 -1
  48. package/dist/view3d/crossfade/panorama.cjs.map +0 -1
  49. package/dist/view3d/crossfade/panorama.js.map +0 -1
  50. package/dist/view3d/index.cjs.map +0 -1
  51. package/dist/view3d/index.js.map +0 -1
package/dist/index.d.cts CHANGED
@@ -635,35 +635,18 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
635
635
  private resizeObs;
636
636
  /** Coalesces bursty view-change sources (pointermove, wheel) into ≤1 callback/frame. */
637
637
  private viewChangeRaf;
638
- private pointers;
639
- private pinch;
640
- private panLast;
641
- private panStart;
642
- private panStarted;
643
- /** Maximum displacement from gesture start — suppress taps only after a real pan/pinch. */
644
- private moved;
645
- /**
646
- * Ghost-click guard. Konva binds `_pointerup` to mouseup, touchend AND
647
- * pointerup, so `on('click tap')` is two handlers for one finger tap unless
648
- * the browser's synthesized compatibility click is suppressed. Konva only
649
- * suppresses it when the touch lands on a LISTENING SHAPE (Stage.js returns
650
- * early before its preventDefault() when `!shape || !shape.isListening()`),
651
- * so a near-miss rescued by nearestSeatToScreen used to fire `tap` (select)
652
- * then `click` (deselect) 1-3ms apart and net to nothing. With
653
- * SEAT_TAP_SLOP_PX=14 against a ~12px seat radius, that broken annulus is
654
- * ~3.7x the area of the seat itself — i.e. most successful mobile taps.
655
- * `touch-action: none` does NOT suppress compatibility mouse events.
656
- */
657
- private lastTapAt;
658
- /**
659
- * True when this is the browser's synthesized compatibility click following a
660
- * finger tap we already handled. Discriminates on `e.type` deliberately —
661
- * `PointerEvent extends MouseEvent`, so an `instanceof MouseEvent` test
662
- * matches genuine pointer taps too. One shared timestamp across the layer and
663
- * stage handlers: a tap consumed at the layer must also suppress the ghost at
664
- * the stage, and only `click` is ever rejected, so bubbling stays intact.
638
+ /**
639
+ * Pan/pinch state machine (`render/interaction/pointer`). Raw pointer events
640
+ * on the container, not Konva stage dragging — its touch pipeline proved
641
+ * unreliable for multi-touch on real devices. Also owns the ghost-click
642
+ * timestamp shared by the layer and stage tap handlers.
665
643
  */
644
+ private gestures;
645
+ /** Displacement of the current gesture — a tap must stay under the slop. */
646
+ private get moved();
666
647
  private isGhostClick;
648
+ /** Behavioural surface the gesture machine calls back into. */
649
+ private get pointerHost();
667
650
  /**
668
651
  * Manage-mode rubber-band marquee (option-gated). `start`/`cur` are WORLD-space
669
652
  * points (overlayLayer rides the stage transform); `rect` is the on-canvas
@@ -806,6 +789,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
806
789
  setViewMode(mode: RendererViewMode): void;
807
790
  /** Current projection — reflects the tween target, not the mid-tween isoT. */
808
791
  getViewMode(): RendererViewMode;
792
+ /** Live ISO projection state handed to the `render/projection` free functions. */
793
+ private get isoState();
809
794
  /** Iso angle (rad) + y-squash for the current isoT. */
810
795
  private isoParams;
811
796
  /** Effective vertical scale = stage scale × iso squash — legibility math uses this. */
@@ -839,6 +824,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
839
824
  private resetLayerTransforms;
840
825
  /** Restore section-owned containers before applying another projection. */
841
826
  private resetSectionProjection;
827
+ /** Node/cache context the shared seat-anchor pass reads and updates. */
828
+ private get seatAnchorContext();
842
829
  /** Move native seat/booth hit shapes to or from their exact pinhole anchors. */
843
830
  private applyExactSeatAnchors;
844
831
  /**
@@ -1020,12 +1007,12 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1020
1007
  * single drawImage per frame, and it rides the same layer cache — effectively
1021
1008
  * zero per-frame cost. Never listens, so it can't intercept a seat click.
1022
1009
  */
1010
+ /** Node/registry surface the `render/objectDrawing` factories draw into. */
1011
+ private get objectDrawContext();
1023
1012
  private renderDecorImage;
1024
1013
  private renderTable;
1025
1014
  private renderText;
1026
1015
  private renderShape;
1027
- /** Prominent stage caption: uppercase, letter-spaced, larger, softly dimmed. */
1028
- private addStageLabel;
1029
1016
  private renderGA;
1030
1017
  /**
1031
1018
  * A section renders in three coordinated layers driven by the LOD melt:
@@ -1106,7 +1093,6 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1106
1093
  }): string | null;
1107
1094
  /** Seat ids belonging to a section (Slice 5 section-summary card). */
1108
1095
  sectionMembers(id: string): string[];
1109
- private addCentredLabel;
1110
1096
  private isSelectable;
1111
1097
  private toggleSeat;
1112
1098
  /**
@@ -1159,10 +1145,6 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1159
1145
  * so within-floor elevation offsets don't affect the result. Null if none.
1160
1146
  */
1161
1147
  private deckFloorAt;
1162
- private toLocal;
1163
- private onPointerDown;
1164
- private onPointerMove;
1165
- private onPointerEnd;
1166
1148
  /**
1167
1149
  * Min is chart-relative (never lose the room); max is absolute so seats
1168
1150
  * reach a readable size on any chart, however large the venue.
@@ -1193,6 +1175,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1193
1175
  private cancelGlide;
1194
1176
  /** Current LOD rung derived from effective zoom — drives the ZONES/SECTIONS/SEATS pill. */
1195
1177
  getRung(): LodRung;
1178
+ /** Explicit view of this renderer as the evidence pass's declared surface. */
1179
+ private get renderedQualityContext();
1196
1180
  getRenderedQualityEvidence(): RendererQualityEvidence;
1197
1181
  /** Jump the camera to a rung's zoom band (glided). */
1198
1182
  setRung(rung: LodRung): void;
@@ -1260,20 +1244,11 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1260
1244
  /** Geometric association only: importer data remains unchanged. */
1261
1245
  private nodeBelongsToFocusedSection;
1262
1246
  /** OV-45(a): resolve authored row-letter labels for the buyer/preview map, in
1263
- * world space, matching the Designer's placement contract (start/end/both/none
1264
- * preset, a free-drag `position` that wins over the preset, rotation, and
1265
- * labelStyle colour/size fed through the same auto-contrast guard). Segmented
1266
- * rows keep their own logical-label handling and are resolved by their owner. */
1247
+ * world space (see `render/rowLabelPlan`). */
1267
1248
  private buildRowLabelPlan;
1268
1249
  /** Axis-aligned world bounds of a centred, potentially rotated row label. */
1269
1250
  private rowLabelBox;
1270
- /**
1271
- * Keep an automatic start/end label out of seat markers and already-painted
1272
- * text. The authored point is never altered. Candidates are deliberately
1273
- * bounded and deterministic: the closest clear offset wins; if a chart is so
1274
- * dense that none is clear, the least-colliding candidate wins so the required
1275
- * row label remains present rather than being silently dropped.
1276
- */
1251
+ /** Keep an automatic start/end label out of seats and already-painted text. */
1277
1252
  private resolveAutomaticRowLabelPosition;
1278
1253
  /** Row labels never carry status; the buyer just dims them under the same
1279
1254
  * category/price filters that dim their seats. */
@@ -2120,11 +2095,8 @@ declare class PickerController {
2120
2095
  private connect;
2121
2096
  /**
2122
2097
  * Backoff for the PLAIN-socket fallback (a transport with no v1 client of its
2123
- * own). Full jitter, for the same reason BuyerRealtimeClient uses it: a
2124
- * deterministic `2**attempt` schedule brings every browser that lost the same
2125
- * socket back in the same millisecond, and an on-sale crowd reconnecting in
2126
- * lockstep turns one blip into a thundering herd. The ceiling still doubles,
2127
- * so a sustained outage still backs off.
2098
+ * own). Full jitter, for the same reason BuyerRealtimeClient uses it — see
2099
+ * `core/backoff`, which now owns that rationale and the schedule.
2128
2100
  */
2129
2101
  private scheduleReconnect;
2130
2102
  }
@@ -2212,6 +2184,14 @@ declare function setStringOverrides(next: Dict): void;
2212
2184
  declare function t(key: string, vars?: Record<string, string | number>): string;
2213
2185
  /** "1 seat" / "3 seats" without hand-rolled concatenation. */
2214
2186
  declare function tCount(key: string, count: number, vars?: Record<string, string | number>): string;
2187
+ /**
2188
+ * Kept for the SDK surface that imports dates from here. It is a thin pass to
2189
+ * `core/datetime`, which owns every date shape in the app and caches its
2190
+ * formatters per (locale, shape) — the defaults below are the same ones it
2191
+ * uses, so the two were already interchangeable and are now literally the same
2192
+ * code. `active` is passed explicitly so this cannot drift from `t()` even if
2193
+ * something calls `setDateTimeLocale` on its own.
2194
+ */
2215
2195
  declare function formatDate(value: number | Date, opts?: Intl.DateTimeFormatOptions): string;
2216
2196
 
2217
2197
  /**
@@ -2255,9 +2235,14 @@ declare function setMoneyLocale(locale: string | undefined): void;
2255
2235
  /**
2256
2236
  * "€45" / "$1,500" / "45 €" (locale-dependent placement).
2257
2237
  * Whole amounts render without ".00" (design shows "$45", "$120"); pass
2258
- * `fractionDigits` for fixed precision (e.g. 3 for "$0.045 / credit").
2238
+ * `fractionDigits` for fixed precision (e.g. 3 for "$0.045 / credit", or `0`
2239
+ * for a report column that rounds to whole units).
2240
+ *
2241
+ * `locale` overrides the app locale for one call — the buyer-facing website
2242
+ * templates render in the VISITOR's language, which is not necessarily the
2243
+ * dashboard's. Mirrors `DateFormatOptions.locale` in `core/datetime`.
2259
2244
  */
2260
- declare function formatMoney(amount: number, currency?: string, fractionDigits?: number): string;
2245
+ declare function formatMoney(amount: number, currency?: string, fractionDigits?: number, locale?: string): string;
2261
2246
  /**
2262
2247
  * How many decimal places a currency has — 2 for USD/EUR, 0 for JPY/KRW/VND,
2263
2248
  * 3 for KWD/BHD/JOD.
@@ -2281,7 +2266,7 @@ declare function currencyExponent(currency?: string): number;
2281
2266
  */
2282
2267
  declare function fromMinorUnits(minor: number, currency?: string): number;
2283
2268
  /** "$90" / "¥9,000" — a minor-unit integer rendered for display. */
2284
- declare function formatMinor(minor: number, currency?: string): string;
2269
+ declare function formatMinor(minor: number, currency?: string, locale?: string): string;
2285
2270
  /** Bare symbol for input adornments ("€", "$", "₹"). */
2286
2271
  declare function currencySymbol(currency?: string): string;
2287
2272
 
package/dist/index.d.ts CHANGED
@@ -635,35 +635,18 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
635
635
  private resizeObs;
636
636
  /** Coalesces bursty view-change sources (pointermove, wheel) into ≤1 callback/frame. */
637
637
  private viewChangeRaf;
638
- private pointers;
639
- private pinch;
640
- private panLast;
641
- private panStart;
642
- private panStarted;
643
- /** Maximum displacement from gesture start — suppress taps only after a real pan/pinch. */
644
- private moved;
645
- /**
646
- * Ghost-click guard. Konva binds `_pointerup` to mouseup, touchend AND
647
- * pointerup, so `on('click tap')` is two handlers for one finger tap unless
648
- * the browser's synthesized compatibility click is suppressed. Konva only
649
- * suppresses it when the touch lands on a LISTENING SHAPE (Stage.js returns
650
- * early before its preventDefault() when `!shape || !shape.isListening()`),
651
- * so a near-miss rescued by nearestSeatToScreen used to fire `tap` (select)
652
- * then `click` (deselect) 1-3ms apart and net to nothing. With
653
- * SEAT_TAP_SLOP_PX=14 against a ~12px seat radius, that broken annulus is
654
- * ~3.7x the area of the seat itself — i.e. most successful mobile taps.
655
- * `touch-action: none` does NOT suppress compatibility mouse events.
656
- */
657
- private lastTapAt;
658
- /**
659
- * True when this is the browser's synthesized compatibility click following a
660
- * finger tap we already handled. Discriminates on `e.type` deliberately —
661
- * `PointerEvent extends MouseEvent`, so an `instanceof MouseEvent` test
662
- * matches genuine pointer taps too. One shared timestamp across the layer and
663
- * stage handlers: a tap consumed at the layer must also suppress the ghost at
664
- * the stage, and only `click` is ever rejected, so bubbling stays intact.
638
+ /**
639
+ * Pan/pinch state machine (`render/interaction/pointer`). Raw pointer events
640
+ * on the container, not Konva stage dragging — its touch pipeline proved
641
+ * unreliable for multi-touch on real devices. Also owns the ghost-click
642
+ * timestamp shared by the layer and stage tap handlers.
665
643
  */
644
+ private gestures;
645
+ /** Displacement of the current gesture — a tap must stay under the slop. */
646
+ private get moved();
666
647
  private isGhostClick;
648
+ /** Behavioural surface the gesture machine calls back into. */
649
+ private get pointerHost();
667
650
  /**
668
651
  * Manage-mode rubber-band marquee (option-gated). `start`/`cur` are WORLD-space
669
652
  * points (overlayLayer rides the stage transform); `rect` is the on-canvas
@@ -806,6 +789,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
806
789
  setViewMode(mode: RendererViewMode): void;
807
790
  /** Current projection — reflects the tween target, not the mid-tween isoT. */
808
791
  getViewMode(): RendererViewMode;
792
+ /** Live ISO projection state handed to the `render/projection` free functions. */
793
+ private get isoState();
809
794
  /** Iso angle (rad) + y-squash for the current isoT. */
810
795
  private isoParams;
811
796
  /** Effective vertical scale = stage scale × iso squash — legibility math uses this. */
@@ -839,6 +824,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
839
824
  private resetLayerTransforms;
840
825
  /** Restore section-owned containers before applying another projection. */
841
826
  private resetSectionProjection;
827
+ /** Node/cache context the shared seat-anchor pass reads and updates. */
828
+ private get seatAnchorContext();
842
829
  /** Move native seat/booth hit shapes to or from their exact pinhole anchors. */
843
830
  private applyExactSeatAnchors;
844
831
  /**
@@ -1020,12 +1007,12 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1020
1007
  * single drawImage per frame, and it rides the same layer cache — effectively
1021
1008
  * zero per-frame cost. Never listens, so it can't intercept a seat click.
1022
1009
  */
1010
+ /** Node/registry surface the `render/objectDrawing` factories draw into. */
1011
+ private get objectDrawContext();
1023
1012
  private renderDecorImage;
1024
1013
  private renderTable;
1025
1014
  private renderText;
1026
1015
  private renderShape;
1027
- /** Prominent stage caption: uppercase, letter-spaced, larger, softly dimmed. */
1028
- private addStageLabel;
1029
1016
  private renderGA;
1030
1017
  /**
1031
1018
  * A section renders in three coordinated layers driven by the LOD melt:
@@ -1106,7 +1093,6 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1106
1093
  }): string | null;
1107
1094
  /** Seat ids belonging to a section (Slice 5 section-summary card). */
1108
1095
  sectionMembers(id: string): string[];
1109
- private addCentredLabel;
1110
1096
  private isSelectable;
1111
1097
  private toggleSeat;
1112
1098
  /**
@@ -1159,10 +1145,6 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1159
1145
  * so within-floor elevation offsets don't affect the result. Null if none.
1160
1146
  */
1161
1147
  private deckFloorAt;
1162
- private toLocal;
1163
- private onPointerDown;
1164
- private onPointerMove;
1165
- private onPointerEnd;
1166
1148
  /**
1167
1149
  * Min is chart-relative (never lose the room); max is absolute so seats
1168
1150
  * reach a readable size on any chart, however large the venue.
@@ -1193,6 +1175,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1193
1175
  private cancelGlide;
1194
1176
  /** Current LOD rung derived from effective zoom — drives the ZONES/SECTIONS/SEATS pill. */
1195
1177
  getRung(): LodRung;
1178
+ /** Explicit view of this renderer as the evidence pass's declared surface. */
1179
+ private get renderedQualityContext();
1196
1180
  getRenderedQualityEvidence(): RendererQualityEvidence;
1197
1181
  /** Jump the camera to a rung's zoom band (glided). */
1198
1182
  setRung(rung: LodRung): void;
@@ -1260,20 +1244,11 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1260
1244
  /** Geometric association only: importer data remains unchanged. */
1261
1245
  private nodeBelongsToFocusedSection;
1262
1246
  /** OV-45(a): resolve authored row-letter labels for the buyer/preview map, in
1263
- * world space, matching the Designer's placement contract (start/end/both/none
1264
- * preset, a free-drag `position` that wins over the preset, rotation, and
1265
- * labelStyle colour/size fed through the same auto-contrast guard). Segmented
1266
- * rows keep their own logical-label handling and are resolved by their owner. */
1247
+ * world space (see `render/rowLabelPlan`). */
1267
1248
  private buildRowLabelPlan;
1268
1249
  /** Axis-aligned world bounds of a centred, potentially rotated row label. */
1269
1250
  private rowLabelBox;
1270
- /**
1271
- * Keep an automatic start/end label out of seat markers and already-painted
1272
- * text. The authored point is never altered. Candidates are deliberately
1273
- * bounded and deterministic: the closest clear offset wins; if a chart is so
1274
- * dense that none is clear, the least-colliding candidate wins so the required
1275
- * row label remains present rather than being silently dropped.
1276
- */
1251
+ /** Keep an automatic start/end label out of seats and already-painted text. */
1277
1252
  private resolveAutomaticRowLabelPosition;
1278
1253
  /** Row labels never carry status; the buyer just dims them under the same
1279
1254
  * category/price filters that dim their seats. */
@@ -2120,11 +2095,8 @@ declare class PickerController {
2120
2095
  private connect;
2121
2096
  /**
2122
2097
  * Backoff for the PLAIN-socket fallback (a transport with no v1 client of its
2123
- * own). Full jitter, for the same reason BuyerRealtimeClient uses it: a
2124
- * deterministic `2**attempt` schedule brings every browser that lost the same
2125
- * socket back in the same millisecond, and an on-sale crowd reconnecting in
2126
- * lockstep turns one blip into a thundering herd. The ceiling still doubles,
2127
- * so a sustained outage still backs off.
2098
+ * own). Full jitter, for the same reason BuyerRealtimeClient uses it — see
2099
+ * `core/backoff`, which now owns that rationale and the schedule.
2128
2100
  */
2129
2101
  private scheduleReconnect;
2130
2102
  }
@@ -2212,6 +2184,14 @@ declare function setStringOverrides(next: Dict): void;
2212
2184
  declare function t(key: string, vars?: Record<string, string | number>): string;
2213
2185
  /** "1 seat" / "3 seats" without hand-rolled concatenation. */
2214
2186
  declare function tCount(key: string, count: number, vars?: Record<string, string | number>): string;
2187
+ /**
2188
+ * Kept for the SDK surface that imports dates from here. It is a thin pass to
2189
+ * `core/datetime`, which owns every date shape in the app and caches its
2190
+ * formatters per (locale, shape) — the defaults below are the same ones it
2191
+ * uses, so the two were already interchangeable and are now literally the same
2192
+ * code. `active` is passed explicitly so this cannot drift from `t()` even if
2193
+ * something calls `setDateTimeLocale` on its own.
2194
+ */
2215
2195
  declare function formatDate(value: number | Date, opts?: Intl.DateTimeFormatOptions): string;
2216
2196
 
2217
2197
  /**
@@ -2255,9 +2235,14 @@ declare function setMoneyLocale(locale: string | undefined): void;
2255
2235
  /**
2256
2236
  * "€45" / "$1,500" / "45 €" (locale-dependent placement).
2257
2237
  * Whole amounts render without ".00" (design shows "$45", "$120"); pass
2258
- * `fractionDigits` for fixed precision (e.g. 3 for "$0.045 / credit").
2238
+ * `fractionDigits` for fixed precision (e.g. 3 for "$0.045 / credit", or `0`
2239
+ * for a report column that rounds to whole units).
2240
+ *
2241
+ * `locale` overrides the app locale for one call — the buyer-facing website
2242
+ * templates render in the VISITOR's language, which is not necessarily the
2243
+ * dashboard's. Mirrors `DateFormatOptions.locale` in `core/datetime`.
2259
2244
  */
2260
- declare function formatMoney(amount: number, currency?: string, fractionDigits?: number): string;
2245
+ declare function formatMoney(amount: number, currency?: string, fractionDigits?: number, locale?: string): string;
2261
2246
  /**
2262
2247
  * How many decimal places a currency has — 2 for USD/EUR, 0 for JPY/KRW/VND,
2263
2248
  * 3 for KWD/BHD/JOD.
@@ -2281,7 +2266,7 @@ declare function currencyExponent(currency?: string): number;
2281
2266
  */
2282
2267
  declare function fromMinorUnits(minor: number, currency?: string): number;
2283
2268
  /** "$90" / "¥9,000" — a minor-unit integer rendered for display. */
2284
- declare function formatMinor(minor: number, currency?: string): string;
2269
+ declare function formatMinor(minor: number, currency?: string, locale?: string): string;
2285
2270
  /** Bare symbol for input adornments ("€", "$", "₹"). */
2286
2271
  declare function currencySymbol(currency?: string): string;
2287
2272