@rhinestone/deposit-modal 0.14.1 → 0.15.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 (68) hide show
  1. package/README.md +6 -0
  2. package/bridge-transcript.json +14 -0
  3. package/dist/ClaimModal-GFDBVCN5.cjs +11 -0
  4. package/dist/ClaimModal-VQS3AKEL.mjs +11 -0
  5. package/dist/{DepositModalReown-2EVV64OA.mjs → DepositModalReown-KOJ7VEY7.mjs} +6 -7
  6. package/dist/{DepositModalReown-GAD45GIC.cjs → DepositModalReown-R37SSHUF.cjs} +21 -22
  7. package/dist/WithdrawModal-QVXHMH43.mjs +12 -0
  8. package/dist/WithdrawModal-RY2NMFLE.cjs +12 -0
  9. package/dist/{caip-D8aRWdEY.d.cts → caip-BMi-9t09.d.cts} +27 -3
  10. package/dist/{caip-D8aRWdEY.d.ts → caip-BMi-9t09.d.ts} +27 -3
  11. package/dist/{chunk-HAQOFI3D.cjs → chunk-3OOY67VJ.cjs} +1046 -226
  12. package/dist/{chunk-AQVJUXSG.cjs → chunk-5P2PVLS4.cjs} +1 -1
  13. package/dist/{chunk-UX35GYLM.mjs → chunk-5VONFVQN.mjs} +918 -98
  14. package/dist/chunk-6HUHVXCY.cjs +704 -0
  15. package/dist/{chunk-GZ4GQ5MC.mjs → chunk-7UQ6OUEE.mjs} +166 -45
  16. package/dist/{chunk-LMG46EP2.mjs → chunk-CXBMIZUF.mjs} +1 -1
  17. package/dist/{chunk-A6JPBMYY.cjs → chunk-DTVZUBHI.cjs} +236 -115
  18. package/dist/{chunk-VUATPOWJ.mjs → chunk-EAGMY3QE.mjs} +74 -17
  19. package/dist/{chunk-RN5VKWI6.mjs → chunk-FTWKAJGN.mjs} +1 -1
  20. package/dist/{chunk-5Q5CSVKF.mjs → chunk-IKUYZA7A.mjs} +195 -495
  21. package/dist/{chunk-DW2EQA2U.cjs → chunk-LVCD6RHF.cjs} +2 -2
  22. package/dist/{chunk-4KCSH4T3.cjs → chunk-OY5N3E6L.cjs} +86 -29
  23. package/dist/chunk-QJ7RCCU7.mjs +704 -0
  24. package/dist/{chunk-XCTRKCNM.mjs → chunk-UCBUCX2W.mjs} +1515 -194
  25. package/dist/{chunk-NQMC5VKQ.cjs → chunk-VPDCGD2D.cjs} +552 -852
  26. package/dist/{chunk-4J5ADVIN.cjs → chunk-X4D52IZK.cjs} +1496 -175
  27. package/dist/claim.cjs +5 -7
  28. package/dist/claim.d.cts +3 -3
  29. package/dist/claim.d.ts +3 -3
  30. package/dist/claim.mjs +4 -6
  31. package/dist/{constants-DBrWhJWE.d.cts → constants-BT4ctuHo.d.cts} +7 -6
  32. package/dist/{constants-DBrWhJWE.d.ts → constants-D21ZdNOP.d.ts} +7 -6
  33. package/dist/constants.cjs +3 -3
  34. package/dist/constants.d.cts +3 -3
  35. package/dist/constants.d.ts +3 -3
  36. package/dist/constants.mjs +2 -2
  37. package/dist/deposit.cjs +7 -8
  38. package/dist/deposit.d.cts +3 -3
  39. package/dist/deposit.d.ts +3 -3
  40. package/dist/deposit.mjs +6 -7
  41. package/dist/embed.cjs +135 -44
  42. package/dist/embed.d.cts +2 -2
  43. package/dist/embed.d.ts +2 -2
  44. package/dist/embed.mjs +116 -25
  45. package/dist/index.cjs +13 -11
  46. package/dist/index.d.cts +3 -3
  47. package/dist/index.d.ts +3 -3
  48. package/dist/index.mjs +12 -10
  49. package/dist/polymarket.cjs +6 -6
  50. package/dist/polymarket.mjs +2 -2
  51. package/dist/styles.css +132 -100
  52. package/dist/{types-DP_3KwlD.d.cts → types-CQ0NHqCy.d.ts} +146 -11
  53. package/dist/{types-Bho4OA03.d.ts → types-CxiLX5sv.d.cts} +146 -11
  54. package/dist/withdraw.cjs +6 -6
  55. package/dist/withdraw.d.cts +4 -4
  56. package/dist/withdraw.d.ts +4 -4
  57. package/dist/withdraw.mjs +5 -5
  58. package/package.json +6 -6
  59. package/dist/ClaimModal-GDFENSLV.mjs +0 -13
  60. package/dist/ClaimModal-L3FUBI5U.cjs +0 -13
  61. package/dist/WithdrawModal-FAQH35NG.cjs +0 -12
  62. package/dist/WithdrawModal-IKUHF5CF.mjs +0 -12
  63. package/dist/chunk-62UCV2LG.cjs +0 -81
  64. package/dist/chunk-7AZFT2MV.cjs +0 -163
  65. package/dist/chunk-QACOOLOE.mjs +0 -1062
  66. package/dist/chunk-R5UQ3TN4.mjs +0 -81
  67. package/dist/chunk-VALXN5IO.mjs +0 -163
  68. package/dist/chunk-YP7QVKQ6.cjs +0 -1062
@@ -24,7 +24,6 @@
24
24
 
25
25
 
26
26
 
27
- var _chunkHAQOFI3Dcjs = require('./chunk-HAQOFI3D.cjs');
28
27
 
29
28
 
30
29
 
@@ -34,7 +33,1214 @@ var _chunkHAQOFI3Dcjs = require('./chunk-HAQOFI3D.cjs');
34
33
 
35
34
 
36
35
 
37
- var _chunk4KCSH4T3cjs = require('./chunk-4KCSH4T3.cjs');
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+ var _chunk3OOY67VJcjs = require('./chunk-3OOY67VJ.cjs');
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+ var _chunkOY5N3E6Lcjs = require('./chunk-OY5N3E6L.cjs');
71
+
72
+ // src/core/history-status.ts
73
+ function normalizeStatus(raw, isSpam) {
74
+ const lower = raw.toLowerCase();
75
+ if (lower === "completed" || lower === "complete" || lower === "bridge-complete" || lower === "processed")
76
+ return "completed";
77
+ if (lower === "failed" || lower === "error" || lower === "bridge-failed" || lower === "rejected") {
78
+ return isSpam ? "spam" : "failed";
79
+ }
80
+ if (lower === "refunded") return "refunded";
81
+ if (lower === "processing" || lower === "submitted" || lower === "bridging")
82
+ return "processing";
83
+ return "pending";
84
+ }
85
+ var STATUS_LABEL = {
86
+ pending: "Pending",
87
+ processing: "Processing",
88
+ completed: "Completed",
89
+ failed: "Failed",
90
+ refunded: "Refunded",
91
+ spam: "Spam token"
92
+ };
93
+ function filterVisibleDeposits(deposits) {
94
+ const sourceHashes = new Set(
95
+ deposits.map((d) => _optionalChain([d, 'access', _ => _.sourceTxHash, 'optionalAccess', _2 => _2.toLowerCase, 'call', _3 => _3()])).filter((h) => Boolean(h))
96
+ );
97
+ return deposits.filter(
98
+ (d) => !(d.txHash && sourceHashes.has(d.txHash.toLowerCase()))
99
+ );
100
+ }
101
+
102
+ // src/core/history-badge.ts
103
+ function deriveHistoryBadge(deposits, { recipient, canRecover }) {
104
+ const visible = filterVisibleDeposits(deposits);
105
+ if (canRecover) {
106
+ const needsYou = visible.filter(
107
+ (row) => _chunk3OOY67VJcjs.toRecoverableDeposit.call(void 0, row, { recipient }) !== null
108
+ ).length;
109
+ if (needsYou > 0) return { state: "needs-you", count: needsYou };
110
+ }
111
+ const inProgress = visible.filter((row) => {
112
+ const status = normalizeStatus(row.status, row.isSpam);
113
+ return status === "pending" || status === "processing";
114
+ }).length;
115
+ if (inProgress > 0) return { state: "progress", count: inProgress };
116
+ return null;
117
+ }
118
+ function historyBadgeAriaLabel(badge) {
119
+ if (!badge) return "Deposit history";
120
+ const single = badge.count === 1;
121
+ const noun = single ? "deposit" : "deposits";
122
+ const state = badge.state === "needs-you" ? single ? "needs you" : "need you" : "in progress";
123
+ return `Deposit history \u2014 ${badge.count} ${noun} ${state}`;
124
+ }
125
+
126
+ // src/components/history/HistoryEntryButton.tsx
127
+ var _jsxruntime = require('react/jsx-runtime');
128
+ function HistoryEntryButton({
129
+ badge,
130
+ onClick,
131
+ disabled
132
+ }) {
133
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
134
+ "button",
135
+ {
136
+ type: "button",
137
+ className: "rs-modal-header-history",
138
+ "aria-label": historyBadgeAriaLabel(badge),
139
+ onClick,
140
+ disabled,
141
+ children: [
142
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.HistoryIcon, {}),
143
+ badge && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
144
+ "span",
145
+ {
146
+ className: `rs-history-dot rs-history-dot--${badge.state}`,
147
+ "aria-hidden": "true"
148
+ }
149
+ )
150
+ ]
151
+ }
152
+ );
153
+ }
154
+
155
+ // src/components/history/HistoryOverlay.tsx
156
+ var _react = require('react');
157
+
158
+ // src/components/history/DepositHistoryPanel.tsx
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+ function shortenHash(hash) {
169
+ if (hash.length <= 14) return hash;
170
+ return `${hash.slice(0, 6)}\u2026${hash.slice(-4)}`;
171
+ }
172
+ function formatDate(iso) {
173
+ try {
174
+ const date = new Date(iso);
175
+ if (Number.isNaN(date.getTime())) return iso;
176
+ return date.toLocaleDateString("en-US", {
177
+ day: "numeric",
178
+ month: "short",
179
+ year: "numeric"
180
+ });
181
+ } catch (e2) {
182
+ return iso;
183
+ }
184
+ }
185
+ function resolveChainId(value) {
186
+ if (value === void 0 || value === null) return null;
187
+ if (typeof value === "number") return value;
188
+ const display = _chunkOY5N3E6Lcjs.displayChainIdForCaip2.call(void 0, value);
189
+ if (display !== null) return display;
190
+ if (value === "solana" || value === "hypercore") return value;
191
+ const num = Number(value);
192
+ return Number.isFinite(num) ? num : null;
193
+ }
194
+ function resolveTokenSymbol(token, chainId) {
195
+ if (!token) return "";
196
+ if (chainId === "solana") {
197
+ const normalized = token.toLowerCase();
198
+ const matched = _chunkOY5N3E6Lcjs.SOLANA_TOKENS.find(
199
+ (entry) => entry.mint.toLowerCase() === normalized
200
+ );
201
+ if (matched) return matched.symbol;
202
+ if (normalized === "native" || normalized === "11111111111111111111111111111111" || normalized === "so11111111111111111111111111111111111111112") {
203
+ return "SOL";
204
+ }
205
+ }
206
+ if (chainId !== null && chainId !== void 0 && chainId !== "solana" && // Both callers pass the SOURCE chain, and `/chains` reports
207
+ // `deposit: false` for Tron and Stellar — so neither can appear here, and
208
+ // neither has an EVM token table to look one up in if it did.
209
+ chainId !== "tron" && chainId !== "stellar" && /^0x[a-fA-F0-9]{40}$/.test(token)) {
210
+ const evmChainId = chainId === "hypercore" ? _chunkOY5N3E6Lcjs.HYPERCORE_CHAIN_ID : chainId;
211
+ const sym = _chunkOY5N3E6Lcjs.getTokenSymbol.call(void 0, token, evmChainId);
212
+ if (sym !== "Token") return sym;
213
+ }
214
+ return shortenHash(token);
215
+ }
216
+ function formatAmount(rawAmount, token, chainId) {
217
+ if (!rawAmount) return "";
218
+ let decimals = 18;
219
+ if (token && chainId !== null && chainId !== void 0) {
220
+ if (chainId === "solana") {
221
+ const normalized = token.toLowerCase();
222
+ const matched = _chunkOY5N3E6Lcjs.SOLANA_TOKENS.find(
223
+ (entry) => entry.mint.toLowerCase() === normalized
224
+ );
225
+ if (matched) {
226
+ decimals = matched.decimals;
227
+ } else if (normalized === "native" || normalized === "11111111111111111111111111111111" || normalized === "so11111111111111111111111111111111111111112") {
228
+ decimals = 9;
229
+ }
230
+ } else if (
231
+ // See `resolveTokenSymbol`: this reads the source chain, which Tron and
232
+ // Stellar cannot be.
233
+ chainId !== "tron" && chainId !== "stellar" && /^0x[a-fA-F0-9]{40}$/.test(token)
234
+ ) {
235
+ const evmChainId = chainId === "hypercore" ? _chunkOY5N3E6Lcjs.HYPERCORE_CHAIN_ID : chainId;
236
+ decimals = _chunkOY5N3E6Lcjs.getTokenDecimalsByAddress.call(void 0, token, evmChainId);
237
+ }
238
+ }
239
+ try {
240
+ const raw = BigInt(rawAmount);
241
+ const divisor = 10n ** BigInt(decimals);
242
+ const whole = raw / divisor;
243
+ const remainder = raw % divisor;
244
+ const fracStr = remainder.toString().padStart(decimals, "0");
245
+ let frac = fracStr.slice(0, 5).replace(/0+$/, "");
246
+ if (frac.length < 2) frac = frac.padEnd(2, "0");
247
+ return `${whole}.${frac}`;
248
+ } catch (e3) {
249
+ return rawAmount;
250
+ }
251
+ }
252
+ function DepositHistoryPanel({
253
+ deposits,
254
+ isLoading,
255
+ error,
256
+ hasMore,
257
+ isLoadingMore,
258
+ onLoadMore,
259
+ onClose,
260
+ onCloseModal,
261
+ backLabel,
262
+ title = "History",
263
+ recipient,
264
+ onRecover,
265
+ onFindByTxHash,
266
+ onRowView,
267
+ obscured
268
+ }) {
269
+ const rootRef = _react.useRef.call(void 0, null);
270
+ _react.useEffect.call(void 0, () => {
271
+ _optionalChain([rootRef, 'access', _4 => _4.current, 'optionalAccess', _5 => _5.toggleAttribute, 'call', _6 => _6("inert", Boolean(obscured))]);
272
+ }, [obscured]);
273
+ const handleKeyDown = _react.useCallback.call(void 0,
274
+ (e) => {
275
+ if (obscured) return;
276
+ if (e.key === "Escape") {
277
+ e.stopPropagation();
278
+ onClose();
279
+ }
280
+ },
281
+ [onClose, obscured]
282
+ );
283
+ const visibleDeposits = _react.useMemo.call(void 0,
284
+ () => filterVisibleDeposits(deposits),
285
+ [deposits]
286
+ );
287
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
288
+ "div",
289
+ {
290
+ ref: rootRef,
291
+ className: "rs-history-panel",
292
+ role: "dialog",
293
+ "aria-label": "Deposit history",
294
+ "aria-hidden": obscured || void 0,
295
+ onKeyDown: handleKeyDown,
296
+ children: [
297
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-modal-header--redesigned", children: [
298
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "rs-modal-header-nav-left", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
299
+ "button",
300
+ {
301
+ type: "button",
302
+ className: `rs-modal-header-back${backLabel ? " rs-modal-header-back--labelled" : ""}`,
303
+ "aria-label": backLabel ? `Back to ${backLabel.toLowerCase()}` : "Back",
304
+ onClick: onClose,
305
+ children: [
306
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.ChevronLeftIcon, {}),
307
+ backLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: backLabel })
308
+ ]
309
+ }
310
+ ) }),
311
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "rs-modal-header-nav-right", children: onCloseModal && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
312
+ "button",
313
+ {
314
+ type: "button",
315
+ className: "rs-modal-close",
316
+ "aria-label": "Close",
317
+ onClick: onCloseModal,
318
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.CloseIcon, {})
319
+ }
320
+ ) })
321
+ ] }),
322
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-history-screen", children: [
323
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-history-screen-body", children: [
324
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.BodyHeader, { icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.HistoryIcon, {}), title }),
325
+ onFindByTxHash && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
326
+ "button",
327
+ {
328
+ type: "button",
329
+ className: "rs-history-hint",
330
+ onClick: onFindByTxHash,
331
+ children: [
332
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "Deposit missing?" }),
333
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "strong", { children: "Find it by transaction hash" })
334
+ ]
335
+ }
336
+ ),
337
+ isLoading && deposits.length === 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-history-empty", children: [
338
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-history-empty-glyph", "aria-hidden": "true", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.HistoryIcon, {}) }),
339
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-history-empty-text", children: [
340
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.Spinner, { className: "rs-spinner--sm" }),
341
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-history-empty-hint", children: "Loading history\u2026" })
342
+ ] })
343
+ ] }),
344
+ error && !isLoading && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-history-empty", children: [
345
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-history-empty-glyph", "aria-hidden": "true", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.AlertTriangleIcon, {}) }),
346
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-history-empty-text", children: [
347
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-history-empty-title", children: "Couldn't load history" }),
348
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-history-empty-hint", children: error })
349
+ ] })
350
+ ] }),
351
+ !isLoading && !error && visibleDeposits.length === 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-history-empty", children: [
352
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-history-empty-glyph", "aria-hidden": "true", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.HistoryIcon, {}) }),
353
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-history-empty-text", children: [
354
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-history-empty-title", children: "No deposits yet" }),
355
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-history-empty-hint", children: "Your deposit history will appear here" })
356
+ ] })
357
+ ] }),
358
+ visibleDeposits.length > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-history-list", children: [
359
+ visibleDeposits.map((deposit, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
360
+ HistoryCard,
361
+ {
362
+ deposit,
363
+ position: i,
364
+ recipient,
365
+ onRecover,
366
+ onRowView
367
+ },
368
+ deposit.txHash || i
369
+ )),
370
+ hasMore && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
371
+ "button",
372
+ {
373
+ type: "button",
374
+ className: "rs-history-load-more",
375
+ onClick: onLoadMore,
376
+ disabled: isLoadingMore,
377
+ children: isLoadingMore ? "Loading\u2026" : "Load more"
378
+ }
379
+ )
380
+ ] })
381
+ ] }),
382
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.PoweredBy, {})
383
+ ] })
384
+ ]
385
+ }
386
+ );
387
+ }
388
+ function HistoryCard({
389
+ deposit,
390
+ position,
391
+ recipient,
392
+ onRecover,
393
+ onRowView
394
+ }) {
395
+ const explorerTxUrl = _chunk3OOY67VJcjs.useExplorerTxUrl.call(void 0, );
396
+ const [expanded, setExpanded] = _react.useState.call(void 0, false);
397
+ const panelId = _react.useId.call(void 0, );
398
+ const status = normalizeStatus(deposit.status, deposit.isSpam);
399
+ const sourceChainId = resolveChainId(deposit.chain);
400
+ const targetChainId = resolveChainId(deposit.targetChain);
401
+ const sourceChainName = sourceChainId ? _chunkOY5N3E6Lcjs.getChainName.call(void 0, sourceChainId) : null;
402
+ const targetChainName = targetChainId ? _chunkOY5N3E6Lcjs.getChainName.call(void 0, targetChainId) : null;
403
+ const sourceChainIcon = sourceChainId ? _chunkOY5N3E6Lcjs.getChainIcon.call(void 0, sourceChainId) : void 0;
404
+ const targetChainIcon = targetChainId ? _chunkOY5N3E6Lcjs.getChainIcon.call(void 0, targetChainId) : void 0;
405
+ const sourceSymbol = resolveTokenSymbol(deposit.token, sourceChainId);
406
+ const rawAmount = deposit.sourceAmount && deposit.sourceAmount !== "0" ? deposit.sourceAmount : deposit.amount;
407
+ const formattedAmount = rawAmount ? formatAmount(rawAmount, deposit.token, sourceChainId) : null;
408
+ const displayAmount = formattedAmount ? sourceSymbol && /^USD/.test(sourceSymbol) ? `$${Number(formattedAmount).toLocaleString("en-US", {
409
+ minimumFractionDigits: 2,
410
+ maximumFractionDigits: 2
411
+ })}` : `${formattedAmount} ${sourceSymbol}` : "\u2014";
412
+ const date = deposit.createdAt ? formatDate(deposit.createdAt) : null;
413
+ const txTypeLabel = `Deposit${sourceSymbol ? ` ${sourceSymbol}` : ""}`;
414
+ const srcTxHash = sourceChainId === "hypercore" ? deposit.txHash : deposit.sourceTxHash;
415
+ const srcTxUrl = srcTxHash && sourceChainId ? explorerTxUrl(sourceChainId, srcTxHash) : null;
416
+ const eligible = _chunk3OOY67VJcjs.toRecoverableDeposit.call(void 0, deposit, { recipient });
417
+ const recoverable = onRecover ? eligible : null;
418
+ const toggleExpanded = () => {
419
+ const next = !expanded;
420
+ setExpanded(next);
421
+ const depositId = _nullishCoalesce(deposit.id, () => ( deposit.txHash));
422
+ if (!next || !depositId) return;
423
+ _optionalChain([onRowView, 'optionalCall', _7 => _7({
424
+ depositId,
425
+ status,
426
+ recoverable: eligible !== null,
427
+ position
428
+ })]);
429
+ };
430
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
431
+ "div",
432
+ {
433
+ className: `rs-history-card ${expanded ? "rs-history-card--expanded" : ""}`,
434
+ children: [
435
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
436
+ "button",
437
+ {
438
+ type: "button",
439
+ className: "rs-history-card-trigger",
440
+ onClick: toggleExpanded,
441
+ "aria-expanded": expanded,
442
+ "aria-controls": panelId,
443
+ children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-history-card-row", children: [
444
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-history-card-icons", children: [
445
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-history-card-token", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
446
+ _chunk3OOY67VJcjs.TokenIcon,
447
+ {
448
+ symbol: sourceSymbol,
449
+ fallback: sourceSymbol.slice(0, 2)
450
+ }
451
+ ) }),
452
+ sourceChainIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-history-card-chain", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.CdnIcon, { src: sourceChainIcon }) })
453
+ ] }),
454
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-history-card-text", children: [
455
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-history-card-title", children: txTypeLabel }),
456
+ date && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-history-card-date", children: date })
457
+ ] }),
458
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-history-card-side", children: [
459
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-history-card-amount", children: displayAmount }),
460
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `rs-history-badge rs-history-badge--${status}`, children: STATUS_LABEL[status] })
461
+ ] })
462
+ ] })
463
+ }
464
+ ),
465
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "rs-history-card-panel", id: panelId, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "rs-history-card-panel-inner", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-history-card-details", children: [
466
+ (status === "failed" || recoverable) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.Callout, { variant: "error", children: _chunk3OOY67VJcjs.recoveryFailureCause.call(void 0, sourceChainName) }),
467
+ sourceChainName && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-amount-detail-row", children: [
468
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "Source chain" }),
469
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "rs-amount-detail-value", children: [
470
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: sourceChainName }),
471
+ sourceChainIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-amount-detail-icon", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.CdnIcon, { src: sourceChainIcon }) })
472
+ ] })
473
+ ] }),
474
+ targetChainName && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-amount-detail-row", children: [
475
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "Destination chain" }),
476
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "rs-amount-detail-value", children: [
477
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: targetChainName }),
478
+ targetChainIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-amount-detail-icon", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.CdnIcon, { src: targetChainIcon }) })
479
+ ] })
480
+ ] }),
481
+ srcTxUrl && srcTxHash && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-amount-detail-row", children: [
482
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "Transaction details" }),
483
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
484
+ "a",
485
+ {
486
+ href: srcTxUrl,
487
+ target: "_blank",
488
+ rel: "noopener noreferrer",
489
+ className: "rs-history-card-link",
490
+ children: [
491
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: shortenHash(srcTxHash) }),
492
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.ArrowUpRightIcon, {})
493
+ ]
494
+ }
495
+ )
496
+ ] }),
497
+ recoverable && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
498
+ _chunk3OOY67VJcjs.Button,
499
+ {
500
+ onClick: () => _optionalChain([onRecover, 'optionalCall', _8 => _8(recoverable)]),
501
+ fullWidth: true,
502
+ className: "rs-history-card-recover",
503
+ children: [
504
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { children: [
505
+ "Recover ",
506
+ displayAmount
507
+ ] }),
508
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.ChevronRightIcon, {})
509
+ ]
510
+ }
511
+ )
512
+ ] }) }) })
513
+ ]
514
+ }
515
+ );
516
+ }
517
+ DepositHistoryPanel.displayName = "DepositHistoryPanel";
518
+
519
+ // src/components/history/HistoryFallbackFlow.tsx
520
+
521
+
522
+ function HistoryFallbackFlow({
523
+ service,
524
+ recipient,
525
+ onBack,
526
+ onCloseModal,
527
+ onFound
528
+ }) {
529
+ const analytics = _chunk3OOY67VJcjs.useClaimAnalyticsController.call(void 0, );
530
+ const [loading, setLoading] = _react.useState.call(void 0, false);
531
+ const [error, setError] = _react.useState.call(void 0, null);
532
+ const [matches, setMatches] = _react.useState.call(void 0, null);
533
+ _react.useEffect.call(void 0, () => {
534
+ analytics.openStep("lookup");
535
+ }, [analytics]);
536
+ const epochRef = _react.useRef.call(void 0, 0);
537
+ _react.useEffect.call(void 0, () => {
538
+ setMatches(null);
539
+ setError(null);
540
+ setLoading(false);
541
+ return () => {
542
+ epochRef.current += 1;
543
+ };
544
+ }, [recipient]);
545
+ const reportSelection = _react.useCallback.call(void 0,
546
+ (match, autoSelected) => {
547
+ analytics.selectDeposit({
548
+ depositId: match.depositId,
549
+ transactionHash: _nullishCoalesce(match.sourceTxHash, () => ( null)),
550
+ autoSelected
551
+ });
552
+ },
553
+ [analytics]
554
+ );
555
+ const lookup = _react.useCallback.call(void 0,
556
+ async (txHash) => {
557
+ const epoch = epochRef.current;
558
+ const isCurrentLookup = () => epochRef.current === epoch;
559
+ setError(null);
560
+ setLoading(true);
561
+ analytics.rearmStep("lookup");
562
+ try {
563
+ const rows = await service.lookupRecoverableDeposits({ txHash });
564
+ if (!isCurrentLookup()) return;
565
+ const outcome = _chunk3OOY67VJcjs.classifyRecoveryLookup.call(void 0, newestFirst(rows), {
566
+ recipient
567
+ });
568
+ const { eligible, miss } = outcome;
569
+ analytics.lookupResult(outcome.rows.length, eligible.length);
570
+ if (miss) {
571
+ analytics.friction(
572
+ miss === "not_found" ? "lookup_no_deposits_found" : "lookup_no_eligible_deposits",
573
+ "lookup"
574
+ );
575
+ setError(_chunk3OOY67VJcjs.RECOVERY_LOOKUP_MISS_COPY[miss]);
576
+ return;
577
+ }
578
+ analytics.completeStep("lookup");
579
+ if (eligible.length === 1) {
580
+ reportSelection(eligible[0], true);
581
+ onFound(eligible[0]);
582
+ return;
583
+ }
584
+ analytics.openStep("select");
585
+ setMatches(eligible);
586
+ } catch (err) {
587
+ if (!isCurrentLookup()) return;
588
+ analytics.failure("lookup_failed", true, "lookup");
589
+ setError(
590
+ _chunk3OOY67VJcjs.formatUserError.call(void 0, err instanceof Error ? err.message : "Lookup failed")
591
+ );
592
+ } finally {
593
+ if (isCurrentLookup()) setLoading(false);
594
+ }
595
+ },
596
+ [analytics, service, recipient, onFound, reportSelection]
597
+ );
598
+ const selectMatch = _react.useCallback.call(void 0,
599
+ (match) => {
600
+ analytics.completeStep("select");
601
+ reportSelection(match, false);
602
+ onFound(match);
603
+ },
604
+ [analytics, onFound, reportSelection]
605
+ );
606
+ const handleKeyDown = _react.useCallback.call(void 0,
607
+ (e) => {
608
+ if (e.key === "Escape") {
609
+ e.stopPropagation();
610
+ onBack("escape");
611
+ }
612
+ },
613
+ [onBack]
614
+ );
615
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
616
+ "div",
617
+ {
618
+ className: "rs-history-lookup",
619
+ role: "dialog",
620
+ "aria-label": "Find a deposit",
621
+ onKeyDown: handleKeyDown,
622
+ children: [
623
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-modal-header--redesigned", children: [
624
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "rs-modal-header-nav-left", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
625
+ "button",
626
+ {
627
+ type: "button",
628
+ className: "rs-modal-header-back rs-modal-header-back--labelled",
629
+ "aria-label": "Back to history",
630
+ onClick: () => onBack(),
631
+ children: [
632
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.ChevronLeftIcon, {}),
633
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "History" })
634
+ ]
635
+ }
636
+ ) }),
637
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "rs-modal-header-nav-right", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
638
+ "button",
639
+ {
640
+ type: "button",
641
+ className: "rs-modal-close",
642
+ "aria-label": "Close",
643
+ onClick: onCloseModal,
644
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.CloseIcon, {})
645
+ }
646
+ ) })
647
+ ] }),
648
+ matches ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-screen", children: [
649
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-screen-body rs-screen-body--gap-32", children: [
650
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
651
+ _chunk3OOY67VJcjs.BodyHeader,
652
+ {
653
+ icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.CoinsIcon, {}),
654
+ title: "Select a deposit",
655
+ subtitle: "This transaction produced multiple deposits. Choose the one to recover."
656
+ }
657
+ ),
658
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "rs-list", children: matches.map((match) => {
659
+ const { symbol, amount, chainName } = _chunk3OOY67VJcjs.describeRecoveryDeposit.call(void 0, {
660
+ chainId: match.sourceChainId,
661
+ token: match.token,
662
+ amountRaw: match.amountRaw
663
+ });
664
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
665
+ _chunk3OOY67VJcjs.ListRow,
666
+ {
667
+ leadingMedia: _chunkOY5N3E6Lcjs.tokenIconUrl.call(void 0, symbol),
668
+ title: `${amount} ${symbol}`,
669
+ subtitle: chainName,
670
+ onClick: () => selectMatch(match)
671
+ },
672
+ match.depositId
673
+ );
674
+ }) })
675
+ ] }),
676
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.PoweredBy, {})
677
+ ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
678
+ _chunk3OOY67VJcjs.RecoveryLookupScreen,
679
+ {
680
+ title: "Find a deposit",
681
+ subtitle: "Some deposits don't appear in your history. Look one up by the transaction that sent the funds.",
682
+ hint: "The transaction hash from the wallet or exchange you sent from.",
683
+ loading,
684
+ error,
685
+ onSubmit: lookup,
686
+ onInvalid: () => analytics.friction("lookup_transaction_hash_invalid", "lookup")
687
+ }
688
+ )
689
+ ]
690
+ }
691
+ );
692
+ }
693
+ function newestFirst(rows) {
694
+ return [...rows].sort(
695
+ (a, b) => (b.createdAt ? Date.parse(b.createdAt) : 0) - (a.createdAt ? Date.parse(a.createdAt) : 0)
696
+ );
697
+ }
698
+ HistoryFallbackFlow.displayName = "HistoryFallbackFlow";
699
+
700
+ // src/components/history/HistoryRecoveryFlow.tsx
701
+
702
+
703
+ function HistoryRecoveryFlow({
704
+ deposit,
705
+ entrySource,
706
+ backendUrl,
707
+ signRecovery,
708
+ debug,
709
+ onBack,
710
+ onCloseModal,
711
+ onSubmittingChange,
712
+ onRecovered
713
+ }) {
714
+ const analytics = _chunk3OOY67VJcjs.useClaimAnalyticsController.call(void 0, );
715
+ const [phase, setPhase] = _react.useState.call(void 0, "review");
716
+ const [outcome, setOutcome] = _react.useState.call(void 0, null);
717
+ const [error, setError] = _react.useState.call(void 0, null);
718
+ const [retryable, setRetryable] = _react.useState.call(void 0, false);
719
+ const lastFailureRef = _react.useRef.call(void 0, null);
720
+ _react.useEffect.call(void 0, () => {
721
+ if (entrySource === "history_row") {
722
+ analytics.selectDeposit({
723
+ depositId: deposit.depositId,
724
+ transactionHash: _nullishCoalesce(deposit.sourceTxHash, () => ( null)),
725
+ autoSelected: true
726
+ });
727
+ }
728
+ analytics.openStep("review");
729
+ }, [analytics, deposit, entrySource]);
730
+ const { symbol, decimals } = _chunk3OOY67VJcjs.describeRecoveryDeposit.call(void 0, {
731
+ chainId: deposit.sourceChainId,
732
+ token: deposit.token,
733
+ amountRaw: deposit.amountRaw
734
+ });
735
+ const submit = _react.useCallback.call(void 0,
736
+ async (destination) => {
737
+ setPhase("submitting");
738
+ onSubmittingChange(true);
739
+ analytics.completeStep("review");
740
+ analytics.openStep("submit");
741
+ try {
742
+ const result = await _chunk3OOY67VJcjs.submitSignedRecovery.call(void 0, {
743
+ backendUrl,
744
+ // The target chain: the processor verifies where the recipient wallet
745
+ // lives, not where the refund pays out.
746
+ chainId: deposit.targetChainId,
747
+ depositId: deposit.depositId,
748
+ signer: deposit.signer,
749
+ destination,
750
+ signRecovery,
751
+ debug
752
+ });
753
+ setOutcome({
754
+ // No destination to reconcile: it is inside the signed struct, so the
755
+ // processor cannot have paid anywhere else.
756
+ destination,
757
+ txHash: result.transactionHash,
758
+ symbol,
759
+ amountDisplay: _chunk3OOY67VJcjs.formatRecoveryAmount.call(void 0,
760
+ _nullishCoalesce(result.amount, () => ( deposit.amountRaw)),
761
+ decimals,
762
+ symbol
763
+ )
764
+ });
765
+ setPhase("success");
766
+ analytics.handoff(
767
+ {
768
+ depositId: deposit.depositId,
769
+ transactionHash: _nullishCoalesce(deposit.sourceTxHash, () => ( null)),
770
+ refundTransactionHash: result.transactionHash
771
+ },
772
+ "submit"
773
+ );
774
+ analytics.completeStep("submit");
775
+ analytics.outcome("completed");
776
+ onRecovered();
777
+ } catch (err) {
778
+ const recoveryError = err instanceof _chunk3OOY67VJcjs.RecoveryError ? err : void 0;
779
+ setError(
780
+ _nullishCoalesce(_optionalChain([recoveryError, 'optionalAccess', _9 => _9.message]), () => ( _chunk3OOY67VJcjs.formatUserError.call(void 0,
781
+ err instanceof Error ? err.message : "Recovery failed"
782
+ )))
783
+ );
784
+ const canRetry = _nullishCoalesce(_optionalChain([recoveryError, 'optionalAccess', _10 => _10.retryable]), () => ( true));
785
+ setRetryable(canRetry);
786
+ setPhase("failed");
787
+ const reason = _chunk3OOY67VJcjs.claimFailureReasonForError.call(void 0, err);
788
+ lastFailureRef.current = canRetry ? reason : null;
789
+ analytics.failure(reason, canRetry, "submit");
790
+ analytics.outcome("failed");
791
+ } finally {
792
+ onSubmittingChange(false);
793
+ }
794
+ },
795
+ [
796
+ analytics,
797
+ backendUrl,
798
+ debug,
799
+ decimals,
800
+ deposit,
801
+ onRecovered,
802
+ onSubmittingChange,
803
+ signRecovery,
804
+ symbol
805
+ ]
806
+ );
807
+ const retry = _react.useCallback.call(void 0, () => {
808
+ const reason = lastFailureRef.current;
809
+ if (reason) {
810
+ lastFailureRef.current = null;
811
+ analytics.retry(reason, "submit");
812
+ }
813
+ setError(null);
814
+ setPhase("review");
815
+ }, [analytics]);
816
+ const submitting = phase === "submitting";
817
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
818
+ "div",
819
+ {
820
+ className: "rs-history-recovery",
821
+ role: "dialog",
822
+ "aria-label": "Recover deposit",
823
+ children: [
824
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-modal-header--redesigned", children: [
825
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "rs-modal-header-nav-left", children: !submitting && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
826
+ "button",
827
+ {
828
+ type: "button",
829
+ className: "rs-modal-header-back rs-modal-header-back--labelled",
830
+ "aria-label": "Back to history",
831
+ onClick: onBack,
832
+ children: [
833
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.ChevronLeftIcon, {}),
834
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "History" })
835
+ ]
836
+ }
837
+ ) }),
838
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "rs-modal-header-nav-right", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
839
+ "button",
840
+ {
841
+ type: "button",
842
+ className: "rs-modal-close",
843
+ "aria-label": "Close",
844
+ onClick: onCloseModal,
845
+ disabled: submitting,
846
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.CloseIcon, {})
847
+ }
848
+ ) })
849
+ ] }),
850
+ (phase === "review" || submitting) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
851
+ _chunk3OOY67VJcjs.RecoveryReviewScreen,
852
+ {
853
+ chainId: deposit.sourceChainId,
854
+ token: deposit.token,
855
+ amountRaw: deposit.amountRaw,
856
+ txHash: deposit.sourceTxHash,
857
+ defaultDestination: deposit.destinationPrefill,
858
+ destinationHint: "Prefilled with the account this deposit was for. Editable.",
859
+ submitting,
860
+ onSubmit: submit,
861
+ onDestinationInvalid: () => analytics.friction("refund_destination_invalid", "review")
862
+ }
863
+ ),
864
+ phase === "success" && outcome && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
865
+ _chunk3OOY67VJcjs.RecoveryOutcomeScreen,
866
+ {
867
+ result: { ...outcome, chainId: deposit.sourceChainId },
868
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.Button, { variant: "outline", onClick: onBack, fullWidth: true, children: "Back to history" })
869
+ }
870
+ ),
871
+ phase === "failed" && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk3OOY67VJcjs.RecoveryOutcomeScreen, { error, children: [
872
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.Button, { variant: "outline", onClick: onBack, fullWidth: true, children: "Back to history" }),
873
+ retryable && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.Button, { onClick: retry, fullWidth: true, children: "Try again" })
874
+ ] })
875
+ ]
876
+ }
877
+ );
878
+ }
879
+ HistoryRecoveryFlow.displayName = "HistoryRecoveryFlow";
880
+
881
+ // src/components/history/HistoryOverlay.tsx
882
+
883
+ function HistoryOverlay({
884
+ controller,
885
+ backLabel,
886
+ title,
887
+ recipient,
888
+ backendUrl,
889
+ service,
890
+ signRecovery,
891
+ debug,
892
+ onCloseModal,
893
+ analytics,
894
+ inline,
895
+ closeOnOverlayClick,
896
+ enableAnalyticsIngest,
897
+ analyticsIngestUrl,
898
+ onEvent
899
+ }) {
900
+ const recovering = signRecovery ? controller.recovering : null;
901
+ const [fallbackOpen, setFallbackOpen] = _react.useState.call(void 0, false);
902
+ const [attempt, setAttempt] = _react.useState.call(void 0, null);
903
+ const claimControllerRef = _react.useRef.call(void 0, null);
904
+ const beginAttempt = _react.useCallback.call(void 0,
905
+ (entrySource) => {
906
+ const id = _chunk3OOY67VJcjs.randomUuid.call(void 0, );
907
+ const started = {
908
+ id,
909
+ entrySource,
910
+ correlation: {
911
+ entry_source: entrySource,
912
+ ...analytics.sourceSessionId ? { source_session_id: analytics.sourceSessionId } : {},
913
+ ...analytics.visitId ? { history_visit_id: analytics.visitId } : {},
914
+ claim_attempt_id: id
915
+ }
916
+ };
917
+ setAttempt(started);
918
+ return started;
919
+ },
920
+ [analytics]
921
+ );
922
+ const endAttempt = _react.useCallback.call(void 0,
923
+ (source, reason) => {
924
+ const claim = claimControllerRef.current;
925
+ _optionalChain([claim, 'optionalAccess', _11 => _11.abandon, 'call', _12 => _12(reason)]);
926
+ _optionalChain([claim, 'optionalAccess', _13 => _13.close, 'call', _14 => _14(source)]);
927
+ claimControllerRef.current = null;
928
+ setAttempt(null);
929
+ },
930
+ []
931
+ );
932
+ const openFallback = _react.useCallback.call(void 0, () => {
933
+ const started = beginAttempt("history_fallback");
934
+ analytics.fallbackOpened(started.id);
935
+ setFallbackOpen(true);
936
+ }, [analytics, beginAttempt]);
937
+ const closeFallback = _react.useCallback.call(void 0,
938
+ (via) => {
939
+ endAttempt(via === "escape" ? "escape" : "history_back", "back");
940
+ setFallbackOpen(false);
941
+ },
942
+ [endAttempt]
943
+ );
944
+ const canLookup = Boolean(signRecovery) && Boolean(recipient);
945
+ _react.useEffect.call(void 0, () => {
946
+ if (canLookup) return;
947
+ setFallbackOpen(false);
948
+ if (fallbackOpen && !recovering) endAttempt("host_controlled", "back");
949
+ }, [canLookup, fallbackOpen, recovering, endAttempt]);
950
+ const startRecoveryFromRow = _react.useCallback.call(void 0,
951
+ (deposit) => {
952
+ const started = beginAttempt("history_row");
953
+ analytics.recoveryStarted(started.id, "history_row", deposit.depositId);
954
+ controller.startRecovery(deposit);
955
+ },
956
+ [analytics, beginAttempt, controller]
957
+ );
958
+ const startRecoveryFromLookup = _react.useCallback.call(void 0,
959
+ (deposit) => {
960
+ if (attempt) {
961
+ analytics.recoveryStarted(
962
+ attempt.id,
963
+ attempt.entrySource,
964
+ deposit.depositId
965
+ );
966
+ }
967
+ setFallbackOpen(false);
968
+ controller.startRecovery(deposit);
969
+ },
970
+ [analytics, attempt, controller]
971
+ );
972
+ const cancelRecovery = _react.useCallback.call(void 0, () => {
973
+ endAttempt("history_back", "back");
974
+ controller.cancelRecovery();
975
+ }, [controller, endAttempt]);
976
+ const closeModal = _react.useCallback.call(void 0, () => {
977
+ endAttempt("header_button", "modal_close");
978
+ onCloseModal();
979
+ }, [endAttempt, onCloseModal]);
980
+ _react.useEffect.call(void 0, () => {
981
+ if (!attempt) return;
982
+ return () => {
983
+ const claim = claimControllerRef.current;
984
+ _optionalChain([claim, 'optionalAccess', _15 => _15.abandon, 'call', _16 => _16("modal_close")]);
985
+ _optionalChain([claim, 'optionalAccess', _17 => _17.close, 'call', _18 => _18("host_controlled")]);
986
+ };
987
+ }, [attempt]);
988
+ const claimSessionProperties = _react.useMemo.call(void 0,
989
+ () => ({
990
+ presentation: inline ? "inline" : "overlay",
991
+ overlay_close_enabled: !inline && Boolean(closeOnOverlayClick),
992
+ prefills: { transaction_hash: false, refund_destination: true }
993
+ }),
994
+ [inline, closeOnOverlayClick]
995
+ );
996
+ const layers = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
997
+ fallbackOpen && recipient && !recovering && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
998
+ HistoryFallbackFlow,
999
+ {
1000
+ service,
1001
+ recipient,
1002
+ onBack: closeFallback,
1003
+ onCloseModal: closeModal,
1004
+ onFound: startRecoveryFromLookup
1005
+ }
1006
+ ),
1007
+ recovering && signRecovery && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1008
+ HistoryRecoveryFlow,
1009
+ {
1010
+ deposit: recovering,
1011
+ entrySource: _nullishCoalesce(_optionalChain([attempt, 'optionalAccess', _19 => _19.entrySource]), () => ( "history_row")),
1012
+ backendUrl,
1013
+ signRecovery,
1014
+ debug,
1015
+ onBack: cancelRecovery,
1016
+ onCloseModal: closeModal,
1017
+ onSubmittingChange: controller.setRecoverySubmitting,
1018
+ onRecovered: controller.markStale
1019
+ }
1020
+ )
1021
+ ] });
1022
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1023
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1024
+ DepositHistoryPanel,
1025
+ {
1026
+ deposits: controller.deposits,
1027
+ isLoading: controller.isLoading,
1028
+ error: controller.error,
1029
+ hasMore: controller.hasMore,
1030
+ isLoadingMore: controller.isLoadingMore,
1031
+ onLoadMore: controller.loadMore,
1032
+ onClose: controller.closePanel,
1033
+ onCloseModal: closeModal,
1034
+ backLabel,
1035
+ title,
1036
+ recipient,
1037
+ onRecover: signRecovery ? startRecoveryFromRow : void 0,
1038
+ onFindByTxHash: canLookup ? openFallback : void 0,
1039
+ onRowView: analytics.rowViewed,
1040
+ obscured: Boolean(recovering) || fallbackOpen
1041
+ }
1042
+ ),
1043
+ attempt ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1044
+ _chunk3OOY67VJcjs.AnalyticsSession,
1045
+ {
1046
+ modal: "claim",
1047
+ sessionProperties: claimSessionProperties,
1048
+ onEvent,
1049
+ backendUrl,
1050
+ enableIngest: enableAnalyticsIngest,
1051
+ ingestUrl: analyticsIngestUrl,
1052
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1053
+ _chunk3OOY67VJcjs.ClaimAnalyticsControllerProvider,
1054
+ {
1055
+ controllerRef: claimControllerRef,
1056
+ correlation: attempt.correlation,
1057
+ children: layers
1058
+ }
1059
+ )
1060
+ },
1061
+ attempt.id
1062
+ ) : layers
1063
+ ] });
1064
+ }
1065
+
1066
+ // src/components/history/useHistoryPanel.ts
1067
+
1068
+ function sortByCreatedAtDesc(items) {
1069
+ return [...items].sort((a, b) => {
1070
+ const at = a.createdAt ? Date.parse(a.createdAt) : 0;
1071
+ const bt = b.createdAt ? Date.parse(b.createdAt) : 0;
1072
+ return bt - at;
1073
+ });
1074
+ }
1075
+ function useHistoryPanel({
1076
+ isOpen,
1077
+ recipient,
1078
+ service,
1079
+ canRecover,
1080
+ analytics
1081
+ }) {
1082
+ const [isPanelOpen, setIsPanelOpen] = _react.useState.call(void 0, false);
1083
+ const [deposits, setDeposits] = _react.useState.call(void 0, []);
1084
+ const [hasMore, setHasMore] = _react.useState.call(void 0, false);
1085
+ const [isLoading, setIsLoading] = _react.useState.call(void 0, false);
1086
+ const [isLoadingMore, setIsLoadingMore] = _react.useState.call(void 0, false);
1087
+ const [error, setError] = _react.useState.call(void 0, null);
1088
+ const cursorRef = _react.useRef.call(void 0, null);
1089
+ const staleRef = _react.useRef.call(void 0, false);
1090
+ const loadedRef = _react.useRef.call(void 0, false);
1091
+ const recipientRef = _react.useRef.call(void 0, recipient);
1092
+ const requestRef = _react.useRef.call(void 0, 0);
1093
+ const [recovering, setRecovering] = _react.useState.call(void 0, null);
1094
+ const [recoverySubmitting, setRecoverySubmitting] = _react.useState.call(void 0, false);
1095
+ const fetchHistory = _react.useCallback.call(void 0,
1096
+ async (mode = "initial") => {
1097
+ if (!recipient) return;
1098
+ const isInitial = mode === "initial";
1099
+ const requestId = isInitial ? ++requestRef.current : requestRef.current;
1100
+ const isCurrent = () => recipientRef.current === recipient && requestId === requestRef.current;
1101
+ if (isInitial) {
1102
+ setIsLoading(true);
1103
+ } else {
1104
+ setIsLoadingMore(true);
1105
+ }
1106
+ setError(null);
1107
+ try {
1108
+ const cursor = isInitial ? null : cursorRef.current;
1109
+ if (!isInitial && !cursor) {
1110
+ setHasMore(false);
1111
+ return;
1112
+ }
1113
+ const result = await service.fetchDepositHistory({
1114
+ recipient,
1115
+ limit: 20,
1116
+ cursor: _nullishCoalesce(cursor, () => ( void 0))
1117
+ });
1118
+ if (!isCurrent()) return;
1119
+ const incoming = result.deposits;
1120
+ const nextCursor = _nullishCoalesce(result.nextCursor, () => ( null));
1121
+ if (isInitial) {
1122
+ setDeposits(sortByCreatedAtDesc(incoming));
1123
+ } else {
1124
+ setDeposits((prev) => sortByCreatedAtDesc([...prev, ...incoming]));
1125
+ }
1126
+ cursorRef.current = nextCursor;
1127
+ setHasMore(Boolean(nextCursor));
1128
+ staleRef.current = false;
1129
+ loadedRef.current = true;
1130
+ } catch (err) {
1131
+ if (!isCurrent()) return;
1132
+ setError(err instanceof Error ? err.message : "Failed to load history");
1133
+ } finally {
1134
+ if (isCurrent()) {
1135
+ if (isInitial) {
1136
+ setIsLoading(false);
1137
+ } else {
1138
+ setIsLoadingMore(false);
1139
+ }
1140
+ }
1141
+ }
1142
+ },
1143
+ [recipient, service]
1144
+ );
1145
+ const badge = _react.useMemo.call(void 0,
1146
+ () => deriveHistoryBadge(deposits, { recipient, canRecover }),
1147
+ [deposits, recipient, canRecover]
1148
+ );
1149
+ const openPanel = _react.useCallback.call(void 0, () => {
1150
+ setIsPanelOpen(true);
1151
+ _optionalChain([analytics, 'optionalAccess', _20 => _20.visitOpened, 'call', _21 => _21(badge)]);
1152
+ if (!loadedRef.current || staleRef.current) {
1153
+ fetchHistory("initial");
1154
+ }
1155
+ }, [analytics, badge, fetchHistory]);
1156
+ const closePanel = _react.useCallback.call(void 0, () => {
1157
+ if (recovering) return;
1158
+ setIsPanelOpen(false);
1159
+ _optionalChain([analytics, 'optionalAccess', _22 => _22.visitEnded, 'call', _23 => _23()]);
1160
+ }, [analytics, recovering]);
1161
+ const loadMore = _react.useCallback.call(void 0, () => {
1162
+ _optionalChain([analytics, 'optionalAccess', _24 => _24.loadMore, 'call', _25 => _25(filterVisibleDeposits(deposits).length)]);
1163
+ fetchHistory("more");
1164
+ }, [analytics, deposits, fetchHistory]);
1165
+ const markStale = _react.useCallback.call(void 0, () => {
1166
+ staleRef.current = true;
1167
+ if (isOpen) {
1168
+ fetchHistory("initial");
1169
+ }
1170
+ }, [isOpen, fetchHistory]);
1171
+ _react.useEffect.call(void 0, () => {
1172
+ if (recipientRef.current === recipient) return;
1173
+ recipientRef.current = recipient;
1174
+ setDeposits([]);
1175
+ setHasMore(false);
1176
+ setError(null);
1177
+ cursorRef.current = null;
1178
+ staleRef.current = false;
1179
+ loadedRef.current = false;
1180
+ }, [recipient]);
1181
+ _react.useEffect.call(void 0, () => {
1182
+ if (!isOpen || !recipient) return;
1183
+ if (!loadedRef.current || staleRef.current) {
1184
+ fetchHistory("initial");
1185
+ }
1186
+ }, [isOpen, recipient, fetchHistory]);
1187
+ _react.useEffect.call(void 0, () => {
1188
+ if (isOpen) return;
1189
+ setIsPanelOpen(false);
1190
+ _optionalChain([analytics, 'optionalAccess', _26 => _26.visitEnded, 'call', _27 => _27()]);
1191
+ setDeposits([]);
1192
+ setHasMore(false);
1193
+ setError(null);
1194
+ cursorRef.current = null;
1195
+ staleRef.current = false;
1196
+ loadedRef.current = false;
1197
+ requestRef.current += 1;
1198
+ setRecovering(null);
1199
+ setRecoverySubmitting(false);
1200
+ }, [isOpen, analytics]);
1201
+ const invalidate = _react.useCallback.call(void 0, () => {
1202
+ staleRef.current = true;
1203
+ }, []);
1204
+ const cancelRecovery = _react.useCallback.call(void 0, () => setRecovering(null), []);
1205
+ return _react.useMemo.call(void 0,
1206
+ () => ({
1207
+ deposits,
1208
+ isLoading,
1209
+ isLoadingMore,
1210
+ error,
1211
+ hasMore,
1212
+ badge,
1213
+ isPanelOpen,
1214
+ openPanel,
1215
+ closePanel,
1216
+ loadMore,
1217
+ markStale,
1218
+ invalidate,
1219
+ recovering,
1220
+ startRecovery: setRecovering,
1221
+ cancelRecovery,
1222
+ recoverySubmitting,
1223
+ setRecoverySubmitting
1224
+ }),
1225
+ [
1226
+ deposits,
1227
+ isLoading,
1228
+ isLoadingMore,
1229
+ error,
1230
+ hasMore,
1231
+ badge,
1232
+ isPanelOpen,
1233
+ openPanel,
1234
+ closePanel,
1235
+ loadMore,
1236
+ markStale,
1237
+ invalidate,
1238
+ recovering,
1239
+ cancelRecovery,
1240
+ recoverySubmitting
1241
+ ]
1242
+ );
1243
+ }
38
1244
 
39
1245
  // src/core/removed-props.ts
40
1246
  var MANAGED_ACCOUNT_REMOVALS = {
@@ -97,6 +1303,104 @@ function warnRemovedProps(component, props) {
97
1303
  }
98
1304
  }
99
1305
 
1306
+ // src/core/history-entry.ts
1307
+ var PROVIDER_SCREENS = /* @__PURE__ */ new Set(["fiat-onramp", "exchange-connect"]);
1308
+ function isHistoryEntryVisible(input) {
1309
+ if (input.submitting) return false;
1310
+ if (input.screen === "processing") return input.settled;
1311
+ if (PROVIDER_SCREENS.has(input.screen)) return false;
1312
+ return true;
1313
+ }
1314
+
1315
+ // src/core/history-analytics.ts
1316
+ function sinkFor(source) {
1317
+ if (source.modal === "deposit") {
1318
+ const at2 = () => source.controllerRef.current;
1319
+ return {
1320
+ opened: (detail) => _optionalChain([at2, 'call', _28 => _28(), 'optionalAccess', _29 => _29.historyOpened, 'call', _30 => _30({ ...detail, step: _nullishCoalesce(_optionalChain([at2, 'call', _31 => _31(), 'optionalAccess', _32 => _32.step]), () => ( null)) })]),
1321
+ rowViewed: (detail) => _optionalChain([at2, 'call', _33 => _33(), 'optionalAccess', _34 => _34.historyRowViewed, 'call', _35 => _35(detail)]),
1322
+ loadMore: (detail) => _optionalChain([at2, 'call', _36 => _36(), 'optionalAccess', _37 => _37.historyLoadMore, 'call', _38 => _38(detail)]),
1323
+ fallbackOpened: (detail) => _optionalChain([at2, 'call', _39 => _39(), 'optionalAccess', _40 => _40.historyFallbackOpened, 'call', _41 => _41(detail)]),
1324
+ recoveryStarted: (detail) => _optionalChain([at2, 'call', _42 => _42(), 'optionalAccess', _43 => _43.historyRecoveryStarted, 'call', _44 => _44(detail)])
1325
+ };
1326
+ }
1327
+ const at = () => source.controllerRef.current;
1328
+ return {
1329
+ opened: (detail) => _optionalChain([at, 'call', _45 => _45(), 'optionalAccess', _46 => _46.historyOpened, 'call', _47 => _47({ ...detail, step: _nullishCoalesce(_optionalChain([at, 'call', _48 => _48(), 'optionalAccess', _49 => _49.step]), () => ( null)) })]),
1330
+ rowViewed: (detail) => _optionalChain([at, 'call', _50 => _50(), 'optionalAccess', _51 => _51.historyRowViewed, 'call', _52 => _52(detail)]),
1331
+ loadMore: (detail) => _optionalChain([at, 'call', _53 => _53(), 'optionalAccess', _54 => _54.historyLoadMore, 'call', _55 => _55(detail)]),
1332
+ fallbackOpened: (detail) => _optionalChain([at, 'call', _56 => _56(), 'optionalAccess', _57 => _57.historyFallbackOpened, 'call', _58 => _58(detail)]),
1333
+ recoveryStarted: (detail) => _optionalChain([at, 'call', _59 => _59(), 'optionalAccess', _60 => _60.historyRecoveryStarted, 'call', _61 => _61(detail)])
1334
+ };
1335
+ }
1336
+ function badgeState(badge) {
1337
+ if (!badge) return "none";
1338
+ return badge.state === "needs-you" ? "needs_you" : "progress";
1339
+ }
1340
+ function createHistoryAnalytics(source) {
1341
+ const sink = sinkFor(source);
1342
+ let visitId = null;
1343
+ let loadMorePresses = 0;
1344
+ let viewedRows = /* @__PURE__ */ new Set();
1345
+ return {
1346
+ get sourceSessionId() {
1347
+ return source.sessionIdRef.current;
1348
+ },
1349
+ get visitId() {
1350
+ return visitId;
1351
+ },
1352
+ visitOpened(badge) {
1353
+ visitId = _chunk3OOY67VJcjs.randomUuid.call(void 0, );
1354
+ loadMorePresses = 0;
1355
+ viewedRows = /* @__PURE__ */ new Set();
1356
+ sink.opened({
1357
+ history_visit_id: visitId,
1358
+ badge: badgeState(badge),
1359
+ badge_count: _nullishCoalesce(_optionalChain([badge, 'optionalAccess', _62 => _62.count]), () => ( 0))
1360
+ });
1361
+ },
1362
+ visitEnded() {
1363
+ visitId = null;
1364
+ },
1365
+ rowViewed({ depositId, status, recoverable, position }) {
1366
+ if (!visitId || viewedRows.has(depositId)) return;
1367
+ viewedRows.add(depositId);
1368
+ sink.rowViewed({
1369
+ history_visit_id: visitId,
1370
+ deposit_id: depositId,
1371
+ status,
1372
+ recoverable,
1373
+ position
1374
+ });
1375
+ },
1376
+ loadMore(loadedRows) {
1377
+ if (!visitId) return;
1378
+ loadMorePresses += 1;
1379
+ sink.loadMore({
1380
+ history_visit_id: visitId,
1381
+ page: loadMorePresses,
1382
+ loaded_rows: loadedRows
1383
+ });
1384
+ },
1385
+ fallbackOpened(claimAttemptId) {
1386
+ if (!visitId) return;
1387
+ sink.fallbackOpened({
1388
+ history_visit_id: visitId,
1389
+ claim_attempt_id: claimAttemptId
1390
+ });
1391
+ },
1392
+ recoveryStarted(claimAttemptId, entrySource, depositId) {
1393
+ if (!visitId) return;
1394
+ sink.recoveryStarted({
1395
+ history_visit_id: visitId,
1396
+ claim_attempt_id: claimAttemptId,
1397
+ entry_source: entrySource,
1398
+ deposit_id: depositId
1399
+ });
1400
+ }
1401
+ };
1402
+ }
1403
+
100
1404
  // src/core/analytics-target.ts
101
1405
  var HEX_TOKEN = /^0x(?:[0-9a-f]{32}|[0-9a-f]{40})$/i;
102
1406
  var BASE58_TOKEN = /^[1-9A-HJ-NP-Za-km-z]{32,44}$/;
@@ -113,10 +1417,10 @@ function resolveChain(targetChain) {
113
1417
  if (typeof targetChain === "number" && !(targetChain > 0 && Number.isInteger(targetChain))) {
114
1418
  return void 0;
115
1419
  }
116
- return _chunk4KCSH4T3cjs.targetChainToCaip2.call(void 0, targetChain);
1420
+ return _chunkOY5N3E6Lcjs.targetChainToCaip2.call(void 0, targetChain);
117
1421
  }
118
1422
  function resolveToken(targetToken) {
119
- const raw = _optionalChain([targetToken, 'optionalAccess', _ => _.trim, 'call', _2 => _2()]);
1423
+ const raw = _optionalChain([targetToken, 'optionalAccess', _63 => _63.trim, 'call', _64 => _64()]);
120
1424
  if (!raw) return void 0;
121
1425
  if (HEX_TOKEN.test(raw)) return raw.toLowerCase();
122
1426
  if (BASE58_TOKEN.test(raw)) return raw;
@@ -143,7 +1447,7 @@ function isSubmissionUncertain(error) {
143
1447
  }
144
1448
 
145
1449
  // src/components/steps/ProcessingStep.tsx
146
- var _react = require('react');
1450
+
147
1451
 
148
1452
  // src/components/ui/Tooltip.tsx
149
1453
 
@@ -153,7 +1457,7 @@ var _react = require('react');
153
1457
 
154
1458
 
155
1459
  var _reactdom = require('react-dom');
156
- var _jsxruntime = require('react/jsx-runtime');
1460
+
157
1461
  function Tooltip({ content, children, className }) {
158
1462
  const [open, setOpen] = _react.useState.call(void 0, false);
159
1463
  const [position, setPosition] = _react.useState.call(void 0, null);
@@ -174,8 +1478,8 @@ function Tooltip({ content, children, className }) {
174
1478
  function handleOutside(event) {
175
1479
  const target = event.target;
176
1480
  if (!target) return;
177
- if (_optionalChain([triggerRef, 'access', _3 => _3.current, 'optionalAccess', _4 => _4.contains, 'call', _5 => _5(target)])) return;
178
- if (_optionalChain([bubbleRef, 'access', _6 => _6.current, 'optionalAccess', _7 => _7.contains, 'call', _8 => _8(target)])) return;
1481
+ if (_optionalChain([triggerRef, 'access', _65 => _65.current, 'optionalAccess', _66 => _66.contains, 'call', _67 => _67(target)])) return;
1482
+ if (_optionalChain([bubbleRef, 'access', _68 => _68.current, 'optionalAccess', _69 => _69.contains, 'call', _70 => _70(target)])) return;
179
1483
  setOpen(false);
180
1484
  }
181
1485
  function handleKey(event) {
@@ -252,7 +1556,7 @@ function FeesAccordion({ total, rows, tooltip }) {
252
1556
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-fees-accordion-summary", children: [
253
1557
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "rs-fees-accordion-label", children: [
254
1558
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "Fees" }),
255
- tooltip && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Tooltip, { content: tooltip, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-info", "aria-label": "Fees info", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.InfoIcon, {}) }) })
1559
+ tooltip && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Tooltip, { content: tooltip, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-info", "aria-label": "Fees info", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.InfoIcon, {}) }) })
256
1560
  ] }),
257
1561
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
258
1562
  "button",
@@ -270,7 +1574,7 @@ function FeesAccordion({ total, rows, tooltip }) {
270
1574
  {
271
1575
  className: `rs-fees-accordion-chevron${open ? " rs-fees-accordion-chevron--open" : ""}`,
272
1576
  "aria-hidden": "true",
273
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.ChevronDownIcon, {})
1577
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.ChevronDownIcon, {})
274
1578
  }
275
1579
  )
276
1580
  ]
@@ -292,7 +1596,7 @@ function FeesAccordion({ total, rows, tooltip }) {
292
1596
  {
293
1597
  className: "rs-review-detail-info",
294
1598
  "aria-label": `${row.label} info`,
295
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.InfoIcon, {})
1599
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.InfoIcon, {})
296
1600
  }
297
1601
  ) })
298
1602
  ] })
@@ -318,13 +1622,13 @@ function SwappedReceipt({
318
1622
  }) {
319
1623
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-screen", children: [
320
1624
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-screen-body rs-screen-body--gap-32", children: [
321
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.BodyHeader, { icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.CheckIcon, {}), title: "Deposit successful" }),
1625
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.BodyHeader, { icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.CheckIcon, {}), title: "Deposit successful" }),
322
1626
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-review-details", children: [
323
1627
  onrampMethod && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-review-detail-row", children: [
324
1628
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "Onramp method" }),
325
1629
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "rs-review-detail-value", children: [
326
1630
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: onrampMethod }),
327
- onrampMethodIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-icon rs-review-detail-icon--square", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.CdnIcon, { src: onrampMethodIcon }) })
1631
+ onrampMethodIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-icon rs-review-detail-icon--square", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.CdnIcon, { src: onrampMethodIcon }) })
328
1632
  ] })
329
1633
  ] }),
330
1634
  amountPaid && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-review-detail-row", children: [
@@ -335,7 +1639,7 @@ function SwappedReceipt({
335
1639
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "Deposited amount" }),
336
1640
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "rs-review-detail-value", children: [
337
1641
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: depositedAmount }),
338
- depositedSymbol && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-icon", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.TokenIcon, { symbol: depositedSymbol }) })
1642
+ depositedSymbol && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-icon", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.TokenIcon, { symbol: depositedSymbol }) })
339
1643
  ] })
340
1644
  ] }),
341
1645
  feesTotal != null && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -348,11 +1652,11 @@ function SwappedReceipt({
348
1652
  )
349
1653
  ] }),
350
1654
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-screen-button-row", children: [
351
- onNewDeposit && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.Button, { variant: "outline", onClick: onNewDeposit, fullWidth: true, children: newLabel }),
352
- onClose && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.Button, { onClick: onClose, fullWidth: true, children: "Done" })
1655
+ onNewDeposit && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.Button, { variant: "outline", onClick: onNewDeposit, fullWidth: true, children: newLabel }),
1656
+ onClose && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.Button, { onClick: onClose, fullWidth: true, children: "Done" })
353
1657
  ] })
354
1658
  ] }),
355
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.PoweredBy, {})
1659
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.PoweredBy, {})
356
1660
  ] });
357
1661
  }
358
1662
  SwappedReceipt.displayName = "SwappedReceipt";
@@ -371,7 +1675,7 @@ var EXCHANGE_SLUGS = [
371
1675
  "kucoin"
372
1676
  ];
373
1677
  var EXCHANGE_LOGO_SOURCES = Object.fromEntries(
374
- EXCHANGE_SLUGS.map((slug) => [slug, _chunk4KCSH4T3cjs.cdnIconUrl.call(void 0, "exchanges", slug)])
1678
+ EXCHANGE_SLUGS.map((slug) => [slug, _chunkOY5N3E6Lcjs.cdnIconUrl.call(void 0, "exchanges", slug)])
375
1679
  );
376
1680
  var EXCHANGE_LOGO_ALIASES = {
377
1681
  gate: "gateio"
@@ -388,7 +1692,7 @@ function getExchangeLogoSrc(name, connection) {
388
1692
  }
389
1693
  function getExchangeLogo(name, connection) {
390
1694
  const src = getExchangeLogoSrc(name, connection);
391
- return src ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.CdnIcon, { src }) : null;
1695
+ return src ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.CdnIcon, { src }) : null;
392
1696
  }
393
1697
 
394
1698
  // src/core/webhook.ts
@@ -404,7 +1708,7 @@ function asNumber(value) {
404
1708
  const trimmed = value.trim();
405
1709
  if (!trimmed) return void 0;
406
1710
  const caipMatch = trimmed.match(/^eip155:(\d+)$/);
407
- if (_optionalChain([caipMatch, 'optionalAccess', _9 => _9[1]])) {
1711
+ if (_optionalChain([caipMatch, 'optionalAccess', _71 => _71[1]])) {
408
1712
  const parsed2 = Number(caipMatch[1]);
409
1713
  return Number.isFinite(parsed2) ? parsed2 : void 0;
410
1714
  }
@@ -423,24 +1727,24 @@ function asAddress(value) {
423
1727
  return /^0x[a-fA-F0-9]{40}$/.test(value) ? value : void 0;
424
1728
  }
425
1729
  function getEventTxHash(event) {
426
- if (!_optionalChain([event, 'optionalAccess', _10 => _10.type])) return void 0;
1730
+ if (!_optionalChain([event, 'optionalAccess', _72 => _72.type])) return void 0;
427
1731
  if (event.type === "deposit-received") {
428
- return asString(_optionalChain([event, 'access', _11 => _11.data, 'optionalAccess', _12 => _12.transactionHash]));
1732
+ return asString(_optionalChain([event, 'access', _73 => _73.data, 'optionalAccess', _74 => _74.transactionHash]));
429
1733
  }
430
1734
  if (event.type === "bridge-started" || event.type === "bridge-complete") {
431
- const deposit = isRecord(_optionalChain([event, 'access', _13 => _13.data, 'optionalAccess', _14 => _14.deposit])) ? event.data.deposit : void 0;
432
- const source = isRecord(_optionalChain([event, 'access', _15 => _15.data, 'optionalAccess', _16 => _16.source])) ? event.data.source : void 0;
433
- return _nullishCoalesce(asString(_optionalChain([deposit, 'optionalAccess', _17 => _17.transactionHash])), () => ( asString(_optionalChain([source, 'optionalAccess', _18 => _18.transactionHash]))));
1735
+ const deposit = isRecord(_optionalChain([event, 'access', _75 => _75.data, 'optionalAccess', _76 => _76.deposit])) ? event.data.deposit : void 0;
1736
+ const source = isRecord(_optionalChain([event, 'access', _77 => _77.data, 'optionalAccess', _78 => _78.source])) ? event.data.source : void 0;
1737
+ return _nullishCoalesce(asString(_optionalChain([deposit, 'optionalAccess', _79 => _79.transactionHash])), () => ( asString(_optionalChain([source, 'optionalAccess', _80 => _80.transactionHash]))));
434
1738
  }
435
1739
  if (event.type === "bridge-failed" || event.type === "error") {
436
- const deposit = isRecord(_optionalChain([event, 'access', _19 => _19.data, 'optionalAccess', _20 => _20.deposit])) ? event.data.deposit : void 0;
437
- const source = isRecord(_optionalChain([event, 'access', _21 => _21.data, 'optionalAccess', _22 => _22.source])) ? event.data.source : void 0;
438
- return _nullishCoalesce(asString(_optionalChain([deposit, 'optionalAccess', _23 => _23.transactionHash])), () => ( asString(_optionalChain([source, 'optionalAccess', _24 => _24.transactionHash]))));
1740
+ const deposit = isRecord(_optionalChain([event, 'access', _81 => _81.data, 'optionalAccess', _82 => _82.deposit])) ? event.data.deposit : void 0;
1741
+ const source = isRecord(_optionalChain([event, 'access', _83 => _83.data, 'optionalAccess', _84 => _84.source])) ? event.data.source : void 0;
1742
+ return _nullishCoalesce(asString(_optionalChain([deposit, 'optionalAccess', _85 => _85.transactionHash])), () => ( asString(_optionalChain([source, 'optionalAccess', _86 => _86.transactionHash]))));
439
1743
  }
440
1744
  return void 0;
441
1745
  }
442
1746
  function getEventSourceDetails(event) {
443
- if (!_optionalChain([event, 'optionalAccess', _25 => _25.type]) || !isRecord(event.data)) return {};
1747
+ if (!_optionalChain([event, 'optionalAccess', _87 => _87.type]) || !isRecord(event.data)) return {};
444
1748
  if (event.type === "deposit-received") {
445
1749
  return {
446
1750
  chainId: asNumber(event.data.chain),
@@ -452,9 +1756,9 @@ function getEventSourceDetails(event) {
452
1756
  const deposit = isRecord(event.data.deposit) ? event.data.deposit : void 0;
453
1757
  if (event.type === "bridge-started" || event.type === "bridge-complete" || event.type === "bridge-failed" || event.type === "error") {
454
1758
  return {
455
- chainId: _nullishCoalesce(asNumber(_optionalChain([source, 'optionalAccess', _26 => _26.chain])), () => ( asNumber(_optionalChain([deposit, 'optionalAccess', _27 => _27.chain])))),
456
- amount: _nullishCoalesce(asAmount(_optionalChain([source, 'optionalAccess', _28 => _28.amount])), () => ( asAmount(_optionalChain([deposit, 'optionalAccess', _29 => _29.amount])))),
457
- token: _nullishCoalesce(_nullishCoalesce(asAddress(_optionalChain([source, 'optionalAccess', _30 => _30.asset])), () => ( asAddress(_optionalChain([deposit, 'optionalAccess', _31 => _31.asset])))), () => ( asAddress(_optionalChain([deposit, 'optionalAccess', _32 => _32.token]))))
1759
+ chainId: _nullishCoalesce(asNumber(_optionalChain([source, 'optionalAccess', _88 => _88.chain])), () => ( asNumber(_optionalChain([deposit, 'optionalAccess', _89 => _89.chain])))),
1760
+ amount: _nullishCoalesce(asAmount(_optionalChain([source, 'optionalAccess', _90 => _90.amount])), () => ( asAmount(_optionalChain([deposit, 'optionalAccess', _91 => _91.amount])))),
1761
+ token: _nullishCoalesce(_nullishCoalesce(asAddress(_optionalChain([source, 'optionalAccess', _92 => _92.asset])), () => ( asAddress(_optionalChain([deposit, 'optionalAccess', _93 => _93.asset])))), () => ( asAddress(_optionalChain([deposit, 'optionalAccess', _94 => _94.token]))))
458
1762
  };
459
1763
  }
460
1764
  return {};
@@ -468,7 +1772,7 @@ function asChain(value) {
468
1772
  return asNumber(value);
469
1773
  }
470
1774
  function getEventDestinationDetails(event) {
471
- if (!_optionalChain([event, 'optionalAccess', _33 => _33.type]) || !isRecord(event.data)) return {};
1775
+ if (!_optionalChain([event, 'optionalAccess', _95 => _95.type]) || !isRecord(event.data)) return {};
472
1776
  if (event.type !== "bridge-started" && event.type !== "bridge-complete") {
473
1777
  return {};
474
1778
  }
@@ -478,14 +1782,14 @@ function getEventDestinationDetails(event) {
478
1782
  return {
479
1783
  chainId: asChain(destination.chain),
480
1784
  amount: asAmount(destination.amount),
481
- token: _optionalChain([token, 'optionalAccess', _34 => _34.trim, 'call', _35 => _35()]) || void 0
1785
+ token: _optionalChain([token, 'optionalAccess', _96 => _96.trim, 'call', _97 => _97()]) || void 0
482
1786
  };
483
1787
  }
484
1788
  function isDepositEvent(event) {
485
- return _optionalChain([event, 'optionalAccess', _36 => _36.type]) === "deposit-received" || _optionalChain([event, 'optionalAccess', _37 => _37.type]) === "bridge-started" || _optionalChain([event, 'optionalAccess', _38 => _38.type]) === "bridge-complete" || _optionalChain([event, 'optionalAccess', _39 => _39.type]) === "bridge-failed" || _optionalChain([event, 'optionalAccess', _40 => _40.type]) === "error";
1789
+ return _optionalChain([event, 'optionalAccess', _98 => _98.type]) === "deposit-received" || _optionalChain([event, 'optionalAccess', _99 => _99.type]) === "bridge-started" || _optionalChain([event, 'optionalAccess', _100 => _100.type]) === "bridge-complete" || _optionalChain([event, 'optionalAccess', _101 => _101.type]) === "bridge-failed" || _optionalChain([event, 'optionalAccess', _102 => _102.type]) === "error";
486
1790
  }
487
1791
  function isFailedEvent(event) {
488
- return _optionalChain([event, 'optionalAccess', _41 => _41.type]) === "bridge-failed" || _optionalChain([event, 'optionalAccess', _42 => _42.type]) === "error";
1792
+ return _optionalChain([event, 'optionalAccess', _103 => _103.type]) === "bridge-failed" || _optionalChain([event, 'optionalAccess', _104 => _104.type]) === "error";
489
1793
  }
490
1794
  function isHexString(value) {
491
1795
  return value.startsWith("0x") || value.startsWith("0X");
@@ -497,7 +1801,7 @@ function txRefsMatch(a, b) {
497
1801
  return a === b;
498
1802
  }
499
1803
  function formatBridgeFailedMessage(event) {
500
- const eventData = _nullishCoalesce(_optionalChain([event, 'optionalAccess', _43 => _43.data]), () => ( {}));
1804
+ const eventData = _nullishCoalesce(_optionalChain([event, 'optionalAccess', _105 => _105.data]), () => ( {}));
501
1805
  const code = typeof eventData.errorCode === "string" ? eventData.errorCode : void 0;
502
1806
  const backendMessage = typeof eventData.message === "string" ? eventData.message.trim() : "";
503
1807
  function toUserFacingFailure(raw) {
@@ -525,7 +1829,7 @@ function formatBridgeFailedMessage(event) {
525
1829
  return { message: "Bridge failed" };
526
1830
  }
527
1831
  function failureMessageForEvent(event) {
528
- if (_optionalChain([event, 'optionalAccess', _44 => _44.type]) === "error") {
1832
+ if (_optionalChain([event, 'optionalAccess', _106 => _106.type]) === "error") {
529
1833
  const message = isRecord(event.data) ? asString(event.data.message) : void 0;
530
1834
  return _nullishCoalesce(message, () => ( "Unknown error"));
531
1835
  }
@@ -544,16 +1848,16 @@ function isSolanaNativeAddress(address) {
544
1848
  }
545
1849
  function isNativeAddress(address) {
546
1850
  if (!address) return true;
547
- return address.toLowerCase() === _chunk4KCSH4T3cjs.NATIVE_TOKEN_ADDRESS.toLowerCase();
1851
+ return address.toLowerCase() === _chunkOY5N3E6Lcjs.NATIVE_TOKEN_ADDRESS.toLowerCase();
548
1852
  }
549
1853
  function caip2For(token) {
550
1854
  if (token.chainId === "solana") {
551
1855
  const mint = isSolanaNativeAddress(token.address) ? WRAPPED_SOL_MINT : token.address;
552
- return mint ? `${_chunk4KCSH4T3cjs.SOLANA_MAINNET_CAIP2}:${mint}` : void 0;
1856
+ return mint ? `${_chunkOY5N3E6Lcjs.SOLANA_MAINNET_CAIP2}:${mint}` : void 0;
553
1857
  }
554
1858
  if (typeof token.chainId !== "number") return void 0;
555
1859
  const address = isNativeAddress(token.address) ? PRICE_SERVICE_NATIVE : token.address;
556
- return `${_chunk4KCSH4T3cjs.toEvmCaip2.call(void 0, token.chainId)}:${address.toLowerCase()}`;
1860
+ return `${_chunkOY5N3E6Lcjs.toEvmCaip2.call(void 0, token.chainId)}:${address.toLowerCase()}`;
557
1861
  }
558
1862
  async function fetchTokenPriceUsd(service, token) {
559
1863
  const caip2 = caip2For(token);
@@ -564,7 +1868,7 @@ async function fetchTokenPriceUsd(service, token) {
564
1868
  }
565
1869
  function useTokenPrices(service, tokens) {
566
1870
  const [prices, setPrices] = _react.useState.call(void 0, {});
567
- const defined = tokens.filter((t) => Boolean(_optionalChain([t, 'optionalAccess', _45 => _45.symbol])));
1871
+ const defined = tokens.filter((t) => Boolean(_optionalChain([t, 'optionalAccess', _107 => _107.symbol])));
568
1872
  const entries = [
569
1873
  ...new Map(
570
1874
  defined.flatMap((token) => {
@@ -697,14 +2001,14 @@ function buildQuoteFeeRows(breakdown, sponsoredTooltip) {
697
2001
  if (!breakdown) return { rows: [], chargeableUsd: 0 };
698
2002
  const rows = [];
699
2003
  let chargeableUsd = 0;
700
- for (const group of _chunkHAQOFI3Dcjs.quoteFeeGroups.call(void 0, breakdown)) {
2004
+ for (const group of _chunk3OOY67VJcjs.quoteFeeGroups.call(void 0, breakdown)) {
701
2005
  if (group.chargedUsd > 0) {
702
2006
  chargeableUsd += group.chargedUsd;
703
- rows.push({ label: group.label, value: _chunkHAQOFI3Dcjs.formatFeeUsd.call(void 0, group.chargedUsd) });
2007
+ rows.push({ label: group.label, value: _chunk3OOY67VJcjs.formatFeeUsd.call(void 0, group.chargedUsd) });
704
2008
  } else if (group.sponsoredUsd > 0) {
705
2009
  rows.push({
706
2010
  label: group.label,
707
- value: _chunkHAQOFI3Dcjs.formatFeeUsd.call(void 0, group.sponsoredUsd),
2011
+ value: _chunk3OOY67VJcjs.formatFeeUsd.call(void 0, group.sponsoredUsd),
708
2012
  strike: true,
709
2013
  tooltip: sponsoredTooltip
710
2014
  });
@@ -733,7 +2037,7 @@ function loadPhaseTimings(txHash) {
733
2037
  const parsed = JSON.parse(raw);
734
2038
  if (typeof parsed.startedAt !== "number") return null;
735
2039
  return parsed;
736
- } catch (e2) {
2040
+ } catch (e4) {
737
2041
  return null;
738
2042
  }
739
2043
  }
@@ -744,7 +2048,7 @@ function savePhaseTimings(txHash, timings) {
744
2048
  `${PHASE_TIMINGS_PREFIX}:${txHash}`,
745
2049
  JSON.stringify(timings)
746
2050
  );
747
- } catch (e3) {
2051
+ } catch (e5) {
748
2052
  }
749
2053
  }
750
2054
  function isEventForTx(event, txHash) {
@@ -753,12 +2057,12 @@ function isEventForTx(event, txHash) {
753
2057
  return txRefsMatch(eventTxHash, txHash);
754
2058
  }
755
2059
  function parseWebhookTimestamp(event) {
756
- if (typeof _optionalChain([event, 'optionalAccess', _46 => _46.time]) !== "string") return void 0;
2060
+ if (typeof _optionalChain([event, 'optionalAccess', _108 => _108.time]) !== "string") return void 0;
757
2061
  const timestamp = Date.parse(event.time);
758
2062
  return Number.isFinite(timestamp) ? timestamp : void 0;
759
2063
  }
760
2064
  function syncPhaseTimings(previous, event) {
761
- if (!_optionalChain([event, 'optionalAccess', _47 => _47.type])) return previous;
2065
+ if (!_optionalChain([event, 'optionalAccess', _109 => _109.type])) return previous;
762
2066
  const timestamp = _nullishCoalesce(parseWebhookTimestamp(event), () => ( Date.now()));
763
2067
  const setReceived = (event.type === "deposit-received" || event.type === "bridge-started" || event.type === "bridge-complete" || event.type === "bridge-failed" || event.type === "error") && previous.receivedAt === void 0;
764
2068
  const setBridging = (event.type === "bridge-started" || event.type === "bridge-complete") && previous.bridgingAt === void 0;
@@ -820,46 +2124,46 @@ function getCurrentPhaseId(state, phaseTimings) {
820
2124
  if (state.type === "complete") {
821
2125
  return void 0;
822
2126
  }
823
- if (_optionalChain([state, 'access', _48 => _48.lastEvent, 'optionalAccess', _49 => _49.type]) === "bridge-started" || _optionalChain([state, 'access', _50 => _50.lastEvent, 'optionalAccess', _51 => _51.type]) === "bridge-complete")
2127
+ if (_optionalChain([state, 'access', _110 => _110.lastEvent, 'optionalAccess', _111 => _111.type]) === "bridge-started" || _optionalChain([state, 'access', _112 => _112.lastEvent, 'optionalAccess', _113 => _113.type]) === "bridge-complete")
824
2128
  return "bridging";
825
- if (_optionalChain([state, 'access', _52 => _52.lastEvent, 'optionalAccess', _53 => _53.type]) === "deposit-received") return "received";
2129
+ if (_optionalChain([state, 'access', _114 => _114.lastEvent, 'optionalAccess', _115 => _115.type]) === "deposit-received") return "received";
826
2130
  return "confirming";
827
2131
  }
828
2132
  function getCompletionDestinationTxHash(event) {
829
- const eventData = _optionalChain([event, 'optionalAccess', _54 => _54.data]);
830
- const swapTxHash = _optionalChain([eventData, 'optionalAccess', _55 => _55.swap, 'optionalAccess', _56 => _56.transactionHash]);
831
- const destinationTxHash = _optionalChain([eventData, 'optionalAccess', _57 => _57.destination, 'optionalAccess', _58 => _58.transactionHash]);
2133
+ const eventData = _optionalChain([event, 'optionalAccess', _116 => _116.data]);
2134
+ const swapTxHash = _optionalChain([eventData, 'optionalAccess', _117 => _117.swap, 'optionalAccess', _118 => _118.transactionHash]);
2135
+ const destinationTxHash = _optionalChain([eventData, 'optionalAccess', _119 => _119.destination, 'optionalAccess', _120 => _120.transactionHash]);
832
2136
  return _nullishCoalesce(swapTxHash, () => ( destinationTxHash));
833
2137
  }
834
2138
  function getTerminalProcessingOutcome(event) {
835
- if (_optionalChain([event, 'optionalAccess', _59 => _59.type]) === "post-bridge-swap-complete") {
2139
+ if (_optionalChain([event, 'optionalAccess', _121 => _121.type]) === "post-bridge-swap-complete") {
836
2140
  return {
837
2141
  type: "complete",
838
2142
  destinationTxHash: getCompletionDestinationTxHash(event)
839
2143
  };
840
2144
  }
841
- if (_optionalChain([event, 'optionalAccess', _60 => _60.type]) === "post-bridge-swap-failed") {
2145
+ if (_optionalChain([event, 'optionalAccess', _122 => _122.type]) === "post-bridge-swap-failed") {
842
2146
  return {
843
2147
  type: "failed",
844
2148
  message: formatBridgeFailedMessage(event).message
845
2149
  };
846
2150
  }
847
- if (_optionalChain([event, 'optionalAccess', _61 => _61.type]) === "bridge-complete") {
2151
+ if (_optionalChain([event, 'optionalAccess', _123 => _123.type]) === "bridge-complete") {
848
2152
  return {
849
2153
  type: "complete",
850
2154
  destinationTxHash: getCompletionDestinationTxHash(event)
851
2155
  };
852
2156
  }
853
- if (_optionalChain([event, 'optionalAccess', _62 => _62.type]) === "bridge-failed") {
2157
+ if (_optionalChain([event, 'optionalAccess', _124 => _124.type]) === "bridge-failed") {
854
2158
  return {
855
2159
  type: "failed",
856
2160
  message: formatBridgeFailedMessage(event).message
857
2161
  };
858
2162
  }
859
- if (_optionalChain([event, 'optionalAccess', _63 => _63.type]) === "error") {
2163
+ if (_optionalChain([event, 'optionalAccess', _125 => _125.type]) === "error") {
860
2164
  return {
861
2165
  type: "failed",
862
- message: _nullishCoalesce(_optionalChain([event, 'access', _64 => _64.data, 'optionalAccess', _65 => _65.message]), () => ( "Unknown error"))
2166
+ message: _nullishCoalesce(_optionalChain([event, 'access', _126 => _126.data, 'optionalAccess', _127 => _127.message]), () => ( "Unknown error"))
863
2167
  };
864
2168
  }
865
2169
  return null;
@@ -867,10 +2171,10 @@ function getTerminalProcessingOutcome(event) {
867
2171
  function getInitialProcessingState(event, txHash) {
868
2172
  if (!event || !isEventForTx(event, txHash)) return null;
869
2173
  const terminal = getTerminalProcessingOutcome(event);
870
- if (_optionalChain([terminal, 'optionalAccess', _66 => _66.type]) === "complete") {
2174
+ if (_optionalChain([terminal, 'optionalAccess', _128 => _128.type]) === "complete") {
871
2175
  return { type: "complete", lastEvent: event };
872
2176
  }
873
- if (_optionalChain([terminal, 'optionalAccess', _67 => _67.type]) === "failed") {
2177
+ if (_optionalChain([terminal, 'optionalAccess', _129 => _129.type]) === "failed") {
874
2178
  return { type: "failed", message: terminal.message, lastEvent: event };
875
2179
  }
876
2180
  if (isDepositEvent(event)) {
@@ -879,7 +2183,7 @@ function getInitialProcessingState(event, txHash) {
879
2183
  return null;
880
2184
  }
881
2185
  function getSettledSourceTxHash(event, fallbackTxHash) {
882
- return _nullishCoalesce(_optionalChain([event, 'optionalAccess', _68 => _68.data, 'optionalAccess', _69 => _69.source, 'optionalAccess', _70 => _70.transactionHash]), () => ( fallbackTxHash));
2186
+ return _nullishCoalesce(_optionalChain([event, 'optionalAccess', _130 => _130.data, 'optionalAccess', _131 => _131.source, 'optionalAccess', _132 => _132.transactionHash]), () => ( fallbackTxHash));
883
2187
  }
884
2188
  function ProcessingStep({
885
2189
  smartAccount,
@@ -912,13 +2216,14 @@ function ProcessingStep({
912
2216
  onDepositComplete,
913
2217
  onDepositFailed,
914
2218
  onSourceTransactionObserved,
2219
+ onSettledChange,
915
2220
  onError
916
2221
  }) {
917
2222
  const startTimeRef = _react.useRef.call(void 0, Date.now());
918
2223
  const pollIntervalRef = _react.useRef.call(void 0, INITIAL_POLL_INTERVAL);
919
2224
  const pollTimeoutRef = _react.useRef.call(void 0, null);
920
2225
  const escalatedDelayRef = _react.useRef.call(void 0, false);
921
- const processingContextRef = _chunkHAQOFI3Dcjs.useLatestRef.call(void 0, {
2226
+ const processingContextRef = _chunk3OOY67VJcjs.useLatestRef.call(void 0, {
922
2227
  amount,
923
2228
  sourceChain,
924
2229
  sourceToken,
@@ -927,10 +2232,10 @@ function ProcessingStep({
927
2232
  targetChain,
928
2233
  targetToken
929
2234
  });
930
- const onDepositCompleteRef = _chunkHAQOFI3Dcjs.useLatestRef.call(void 0, onDepositComplete);
931
- const onDepositFailedRef = _chunkHAQOFI3Dcjs.useLatestRef.call(void 0, onDepositFailed);
932
- const onErrorRef = _chunkHAQOFI3Dcjs.useLatestRef.call(void 0, onError);
933
- const explorerTxUrl = _chunkHAQOFI3Dcjs.useExplorerTxUrl.call(void 0, );
2235
+ const onDepositCompleteRef = _chunk3OOY67VJcjs.useLatestRef.call(void 0, onDepositComplete);
2236
+ const onDepositFailedRef = _chunk3OOY67VJcjs.useLatestRef.call(void 0, onDepositFailed);
2237
+ const onErrorRef = _chunk3OOY67VJcjs.useLatestRef.call(void 0, onError);
2238
+ const explorerTxUrl = _chunk3OOY67VJcjs.useExplorerTxUrl.call(void 0, );
934
2239
  const initialTerminalEventRef = _react.useRef.call(void 0, null);
935
2240
  const completedDirectTransferTxHashRef = _react.useRef.call(void 0, null);
936
2241
  const [state, setState] = _react.useState.call(void 0, () => {
@@ -978,12 +2283,12 @@ function ProcessingStep({
978
2283
  completedAt,
979
2284
  endedAt: completedAt
980
2285
  }));
981
- _chunkHAQOFI3Dcjs.debugLog.call(void 0, debug, "processing", "direct-transfer:complete", {
2286
+ _chunk3OOY67VJcjs.debugLog.call(void 0, debug, "processing", "direct-transfer:complete", {
982
2287
  txHash,
983
2288
  flowLabel
984
2289
  });
985
2290
  const context = processingContextRef.current;
986
- _optionalChain([onDepositCompleteRef, 'access', _71 => _71.current, 'optionalCall', _72 => _72(txHash, void 0, {
2291
+ _optionalChain([onDepositCompleteRef, 'access', _133 => _133.current, 'optionalCall', _134 => _134(txHash, void 0, {
987
2292
  amount: context.amount,
988
2293
  sourceChain: context.sourceChain,
989
2294
  sourceToken: context.sourceToken,
@@ -1010,13 +2315,13 @@ function ProcessingStep({
1010
2315
  if (outcome.type === "complete") {
1011
2316
  const context = processingContextRef.current;
1012
2317
  const sourceTxHash2 = getSettledSourceTxHash(event, txHash);
1013
- _chunkHAQOFI3Dcjs.debugLog.call(void 0, debug, "processing", "initial-event:complete", {
2318
+ _chunk3OOY67VJcjs.debugLog.call(void 0, debug, "processing", "initial-event:complete", {
1014
2319
  txHash,
1015
2320
  sourceTxHash: sourceTxHash2,
1016
2321
  destinationTxHash: outcome.destinationTxHash,
1017
2322
  event: event.type
1018
2323
  });
1019
- _optionalChain([onDepositCompleteRef, 'access', _73 => _73.current, 'optionalCall', _74 => _74(
2324
+ _optionalChain([onDepositCompleteRef, 'access', _135 => _135.current, 'optionalCall', _136 => _136(
1020
2325
  sourceTxHash2,
1021
2326
  outcome.destinationTxHash,
1022
2327
  {
@@ -1031,12 +2336,12 @@ function ProcessingStep({
1031
2336
  )]);
1032
2337
  return;
1033
2338
  }
1034
- _chunkHAQOFI3Dcjs.debugLog.call(void 0, debug, "processing", "initial-event:failed", {
2339
+ _chunk3OOY67VJcjs.debugLog.call(void 0, debug, "processing", "initial-event:failed", {
1035
2340
  txHash,
1036
2341
  message: outcome.message,
1037
2342
  event: event.type
1038
2343
  });
1039
- _optionalChain([onDepositFailedRef, 'access', _75 => _75.current, 'optionalCall', _76 => _76(txHash, outcome.message)]);
2344
+ _optionalChain([onDepositFailedRef, 'access', _137 => _137.current, 'optionalCall', _138 => _138(txHash, outcome.message)]);
1040
2345
  }, [
1041
2346
  debug,
1042
2347
  onDepositCompleteRef,
@@ -1044,6 +2349,12 @@ function ProcessingStep({
1044
2349
  processingContextRef,
1045
2350
  txHash
1046
2351
  ]);
2352
+ const onSettledChangeRef = _react.useRef.call(void 0, onSettledChange);
2353
+ onSettledChangeRef.current = onSettledChange;
2354
+ _react.useEffect.call(void 0, () => {
2355
+ _optionalChain([onSettledChangeRef, 'access', _139 => _139.current, 'optionalCall', _140 => _140(state.type !== "processing")]);
2356
+ return () => _optionalChain([onSettledChangeRef, 'access', _141 => _141.current, 'optionalCall', _142 => _142(false)]);
2357
+ }, [state.type]);
1047
2358
  _react.useEffect.call(void 0, () => {
1048
2359
  if (directTransfer || state.type !== "processing") return;
1049
2360
  const updateElapsed = () => {
@@ -1068,13 +2379,13 @@ function ProcessingStep({
1068
2379
  updatePhaseTimings(
1069
2380
  (previous) => syncPhaseTimings(previous, state.lastEvent)
1070
2381
  );
1071
- }, [_optionalChain([state, 'access', _77 => _77.lastEvent, 'optionalAccess', _78 => _78.time]), _optionalChain([state, 'access', _79 => _79.lastEvent, 'optionalAccess', _80 => _80.type]), updatePhaseTimings]);
2382
+ }, [_optionalChain([state, 'access', _143 => _143.lastEvent, 'optionalAccess', _144 => _144.time]), _optionalChain([state, 'access', _145 => _145.lastEvent, 'optionalAccess', _146 => _146.type]), updatePhaseTimings]);
1072
2383
  const [swappedFiatContext, setSwappedFiatContext] = _react.useState.call(void 0, null);
1073
2384
  _react.useEffect.call(void 0, () => {
1074
2385
  let cancelled = false;
1075
2386
  let timeoutId;
1076
- const isFiatSwappedOrder = isSwappedOrder && _optionalChain([swappedContext, 'optionalAccess', _81 => _81.variant]) === "fiat";
1077
- const expectedOrderUuid = _nullishCoalesce(_optionalChain([swappedContext, 'optionalAccess', _82 => _82.expectedOrderUuid]), () => ( null));
2387
+ const isFiatSwappedOrder = isSwappedOrder && _optionalChain([swappedContext, 'optionalAccess', _147 => _147.variant]) === "fiat";
2388
+ const expectedOrderUuid = _nullishCoalesce(_optionalChain([swappedContext, 'optionalAccess', _148 => _148.expectedOrderUuid]), () => ( null));
1078
2389
  setSwappedFiatContext(null);
1079
2390
  if (isFiatSwappedOrder && !expectedOrderUuid) {
1080
2391
  return () => {
@@ -1110,7 +2421,7 @@ function ProcessingStep({
1110
2421
  if (isFiatSwappedOrder && !hasFiatReceiptPricing(res)) {
1111
2422
  scheduleRetry();
1112
2423
  }
1113
- } catch (e4) {
2424
+ } catch (e6) {
1114
2425
  scheduleRetry();
1115
2426
  }
1116
2427
  }
@@ -1124,8 +2435,8 @@ function ProcessingStep({
1124
2435
  smartAccount,
1125
2436
  txHash,
1126
2437
  isSwappedOrder,
1127
- _optionalChain([swappedContext, 'optionalAccess', _83 => _83.variant]),
1128
- _optionalChain([swappedContext, 'optionalAccess', _84 => _84.expectedOrderUuid])
2438
+ _optionalChain([swappedContext, 'optionalAccess', _149 => _149.variant]),
2439
+ _optionalChain([swappedContext, 'optionalAccess', _150 => _150.expectedOrderUuid])
1129
2440
  ]);
1130
2441
  _react.useEffect.call(void 0, () => {
1131
2442
  if (directTransfer) return;
@@ -1137,7 +2448,7 @@ function ProcessingStep({
1137
2448
  async function pollStatus() {
1138
2449
  try {
1139
2450
  const account = sourceChain === "solana" && solanaDepositAddress ? solanaDepositAddress : smartAccount;
1140
- _chunkHAQOFI3Dcjs.debugLog.call(void 0, debug, "processing", "poll:request", {
2451
+ _chunk3OOY67VJcjs.debugLog.call(void 0, debug, "processing", "poll:request", {
1141
2452
  account,
1142
2453
  txHash,
1143
2454
  intervalMs: pollIntervalRef.current
@@ -1148,28 +2459,28 @@ function ProcessingStep({
1148
2459
  const eventForCurrentTx = eventMatchesTx ? lastEvent2 : void 0;
1149
2460
  if (lastEvent2) {
1150
2461
  const eventData = lastEvent2.data;
1151
- _chunkHAQOFI3Dcjs.debugLog.call(void 0, debug, "processing", "poll:event", {
2462
+ _chunk3OOY67VJcjs.debugLog.call(void 0, debug, "processing", "poll:event", {
1152
2463
  type: lastEvent2.type,
1153
2464
  matchesTx: eventMatchesTx,
1154
- intentId: _optionalChain([eventData, 'optionalAccess', _85 => _85.intentId])
2465
+ intentId: _optionalChain([eventData, 'optionalAccess', _151 => _151.intentId])
1155
2466
  });
1156
2467
  }
1157
2468
  if (!isMounted) return;
1158
- if (_optionalChain([eventForCurrentTx, 'optionalAccess', _86 => _86.type]) === "bridge-complete") {
2469
+ if (_optionalChain([eventForCurrentTx, 'optionalAccess', _152 => _152.type]) === "bridge-complete") {
1159
2470
  setState({ type: "complete", lastEvent: eventForCurrentTx });
1160
2471
  const sourceTxHash2 = getSettledSourceTxHash(
1161
2472
  eventForCurrentTx,
1162
2473
  txHash
1163
2474
  );
1164
- const destinationTxHash2 = _optionalChain([eventForCurrentTx, 'access', _87 => _87.data, 'optionalAccess', _88 => _88.destination, 'optionalAccess', _89 => _89.transactionHash]);
1165
- _chunkHAQOFI3Dcjs.debugLog.call(void 0, debug, "processing", "state:complete", {
2475
+ const destinationTxHash2 = _optionalChain([eventForCurrentTx, 'access', _153 => _153.data, 'optionalAccess', _154 => _154.destination, 'optionalAccess', _155 => _155.transactionHash]);
2476
+ _chunk3OOY67VJcjs.debugLog.call(void 0, debug, "processing", "state:complete", {
1166
2477
  txHash,
1167
2478
  sourceTxHash: sourceTxHash2,
1168
2479
  destinationTxHash: destinationTxHash2,
1169
2480
  event: eventForCurrentTx.type
1170
2481
  });
1171
2482
  const context = processingContextRef.current;
1172
- _optionalChain([onDepositCompleteRef, 'access', _90 => _90.current, 'optionalCall', _91 => _91(sourceTxHash2, destinationTxHash2, {
2483
+ _optionalChain([onDepositCompleteRef, 'access', _156 => _156.current, 'optionalCall', _157 => _157(sourceTxHash2, destinationTxHash2, {
1173
2484
  amount: context.amount,
1174
2485
  sourceChain: context.sourceChain,
1175
2486
  sourceToken: context.sourceToken,
@@ -1180,33 +2491,33 @@ function ProcessingStep({
1180
2491
  })]);
1181
2492
  return;
1182
2493
  }
1183
- if (_optionalChain([eventForCurrentTx, 'optionalAccess', _92 => _92.type]) === "bridge-failed") {
2494
+ if (_optionalChain([eventForCurrentTx, 'optionalAccess', _158 => _158.type]) === "bridge-failed") {
1184
2495
  const formatted = formatBridgeFailedMessage(eventForCurrentTx);
1185
2496
  setState({
1186
2497
  type: "failed",
1187
2498
  message: formatted.message,
1188
2499
  lastEvent: eventForCurrentTx
1189
2500
  });
1190
- _chunkHAQOFI3Dcjs.debugLog.call(void 0, debug, "processing", "state:failed", {
2501
+ _chunk3OOY67VJcjs.debugLog.call(void 0, debug, "processing", "state:failed", {
1191
2502
  txHash,
1192
2503
  message: formatted.message,
1193
2504
  code: formatted.code
1194
2505
  });
1195
- _optionalChain([onDepositFailedRef, 'access', _93 => _93.current, 'optionalCall', _94 => _94(txHash, formatted.message)]);
2506
+ _optionalChain([onDepositFailedRef, 'access', _159 => _159.current, 'optionalCall', _160 => _160(txHash, formatted.message)]);
1196
2507
  return;
1197
2508
  }
1198
- if (_optionalChain([eventForCurrentTx, 'optionalAccess', _95 => _95.type]) === "error") {
1199
- const errorMessage = _nullishCoalesce(_optionalChain([eventForCurrentTx, 'access', _96 => _96.data, 'optionalAccess', _97 => _97.message]), () => ( "Unknown error"));
2509
+ if (_optionalChain([eventForCurrentTx, 'optionalAccess', _161 => _161.type]) === "error") {
2510
+ const errorMessage = _nullishCoalesce(_optionalChain([eventForCurrentTx, 'access', _162 => _162.data, 'optionalAccess', _163 => _163.message]), () => ( "Unknown error"));
1200
2511
  setState({
1201
2512
  type: "failed",
1202
2513
  message: errorMessage,
1203
2514
  lastEvent: eventForCurrentTx
1204
2515
  });
1205
- _chunkHAQOFI3Dcjs.debugLog.call(void 0, debug, "processing", "state:error-event", {
2516
+ _chunk3OOY67VJcjs.debugLog.call(void 0, debug, "processing", "state:error-event", {
1206
2517
  txHash,
1207
2518
  message: errorMessage
1208
2519
  });
1209
- _optionalChain([onDepositFailedRef, 'access', _98 => _98.current, 'optionalCall', _99 => _99(txHash, errorMessage)]);
2520
+ _optionalChain([onDepositFailedRef, 'access', _164 => _164.current, 'optionalCall', _165 => _165(txHash, errorMessage)]);
1210
2521
  return;
1211
2522
  }
1212
2523
  setState((previous) => ({
@@ -1215,7 +2526,7 @@ function ProcessingStep({
1215
2526
  }));
1216
2527
  scheduleNextPoll();
1217
2528
  } catch (error) {
1218
- _chunkHAQOFI3Dcjs.debugError.call(void 0, debug, "processing", "poll:failure", error, {
2529
+ _chunk3OOY67VJcjs.debugError.call(void 0, debug, "processing", "poll:failure", error, {
1219
2530
  smartAccount,
1220
2531
  txHash,
1221
2532
  intervalMs: pollIntervalRef.current
@@ -1230,7 +2541,7 @@ function ProcessingStep({
1230
2541
  pollIntervalRef.current * BACKOFF_MULTIPLIER,
1231
2542
  MAX_POLL_INTERVAL
1232
2543
  );
1233
- _chunkHAQOFI3Dcjs.debugLog.call(void 0, debug, "processing", "poll:scheduled", {
2544
+ _chunk3OOY67VJcjs.debugLog.call(void 0, debug, "processing", "poll:scheduled", {
1234
2545
  nextIntervalMs: pollIntervalRef.current
1235
2546
  });
1236
2547
  pollStatus();
@@ -1263,11 +2574,11 @@ function ProcessingStep({
1263
2574
  escalatedDelayRef.current = true;
1264
2575
  setHasEscalatedDelay(true);
1265
2576
  const message = "Transfer is taking longer than expected. Your funds are safe and processing will continue automatically.";
1266
- _chunkHAQOFI3Dcjs.debugLog.call(void 0, debug, "processing", "state:delay-escalated", {
2577
+ _chunk3OOY67VJcjs.debugLog.call(void 0, debug, "processing", "state:delay-escalated", {
1267
2578
  txHash,
1268
2579
  timeoutMs: ESCALATED_DELAY_MS
1269
2580
  });
1270
- _optionalChain([onErrorRef, 'access', _100 => _100.current, 'optionalCall', _101 => _101(message, "PROCESS_TIMEOUT")]);
2581
+ _optionalChain([onErrorRef, 'access', _166 => _166.current, 'optionalCall', _167 => _167(message, "PROCESS_TIMEOUT")]);
1271
2582
  }, ESCALATED_DELAY_MS);
1272
2583
  return () => clearTimeout(timeoutId);
1273
2584
  }, [debug, directTransfer, onErrorRef, state.type, txHash]);
@@ -1279,24 +2590,24 @@ function ProcessingStep({
1279
2590
  const timelineNowMs = _nullishCoalesce(phaseTimings.endedAt, () => ( Date.now()));
1280
2591
  const flowNoun = flowLabel === "withdraw" ? "withdrawal" : "deposit";
1281
2592
  const flowCapitalized = flowLabel === "withdraw" ? "Withdrawal" : "Deposit";
1282
- const destinationTxHash = _optionalChain([lastEvent, 'optionalAccess', _102 => _102.data, 'optionalAccess', _103 => _103.destination, 'optionalAccess', _104 => _104.transactionHash]) || null;
2593
+ const destinationTxHash = _optionalChain([lastEvent, 'optionalAccess', _168 => _168.data, 'optionalAccess', _169 => _169.destination, 'optionalAccess', _170 => _170.transactionHash]) || null;
1283
2594
  const sourceTxHash = getSettledSourceTxHash(lastEvent, txHash);
1284
2595
  const sourceDetails = getEventSourceDetails(lastEvent);
1285
2596
  const displaySourceChain = _nullishCoalesce(sourceDetails.chainId, () => ( sourceChain));
1286
2597
  const displaySourceToken = _nullishCoalesce(sourceDetails.token, () => ( sourceToken));
1287
2598
  const displayAmount = _nullishCoalesce(sourceDetails.amount, () => ( amount));
1288
- const targetChainId = _chunk4KCSH4T3cjs.targetChainToChainId.call(void 0, targetChain);
1289
- const settledSourceTxHash = _optionalChain([lastEvent, 'optionalAccess', _105 => _105.data, 'optionalAccess', _106 => _106.source, 'optionalAccess', _107 => _107.transactionHash]);
2599
+ const targetChainId = _chunkOY5N3E6Lcjs.targetChainToChainId.call(void 0, targetChain);
2600
+ const settledSourceTxHash = _optionalChain([lastEvent, 'optionalAccess', _171 => _171.data, 'optionalAccess', _172 => _172.source, 'optionalAccess', _173 => _173.transactionHash]);
1290
2601
  const sourceExplorerHash = _nullishCoalesce(settledSourceTxHash, () => ( (sourceTxHashPending ? null : sourceTxHash)));
1291
2602
  _react.useEffect.call(void 0, () => {
1292
2603
  if (sourceTxHashPending && settledSourceTxHash) {
1293
- _optionalChain([onSourceTransactionObserved, 'optionalCall', _108 => _108(settledSourceTxHash)]);
2604
+ _optionalChain([onSourceTransactionObserved, 'optionalCall', _174 => _174(settledSourceTxHash)]);
1294
2605
  }
1295
2606
  }, [onSourceTransactionObserved, settledSourceTxHash, sourceTxHashPending]);
1296
2607
  const sourceExplorerUrl = sourceExplorerHash ? explorerTxUrl(displaySourceChain, sourceExplorerHash) : null;
1297
2608
  const destExplorerUrl = destinationTxHash ? explorerTxUrl(targetChainId, destinationTxHash) : null;
1298
2609
  const sourceDisplay = (() => {
1299
- const resolved = _chunkHAQOFI3Dcjs.resolveTokenDisplay.call(void 0, displaySourceToken, displaySourceChain, {
2610
+ const resolved = _chunk3OOY67VJcjs.resolveTokenDisplay.call(void 0, displaySourceToken, displaySourceChain, {
1300
2611
  symbol: _nullishCoalesce(providedSourceSymbol, () => ( (displaySourceChain === "solana" ? "SOL" : "Token"))),
1301
2612
  decimals: providedSourceDecimals
1302
2613
  });
@@ -1306,10 +2617,10 @@ function ProcessingStep({
1306
2617
  };
1307
2618
  })();
1308
2619
  const sourceSymbol = sourceDisplay.symbol;
1309
- const formattedSentAmount = _nullishCoalesce(_nullishCoalesce(_chunkHAQOFI3Dcjs.formatRawTokenAmount.call(void 0, displayAmount, sourceDisplay), () => ( // Not raw base units (e.g. a decimal string) — render the number as-is.
1310
- _chunkHAQOFI3Dcjs.formatTokenAmount.call(void 0, Number(displayAmount), sourceDisplay.symbol))), () => ( displayAmount));
2620
+ const formattedSentAmount = _nullishCoalesce(_nullishCoalesce(_chunk3OOY67VJcjs.formatRawTokenAmount.call(void 0, displayAmount, sourceDisplay), () => ( // Not raw base units (e.g. a decimal string) — render the number as-is.
2621
+ _chunk3OOY67VJcjs.formatTokenAmount.call(void 0, Number(displayAmount), sourceDisplay.symbol))), () => ( displayAmount));
1311
2622
  const eventDestination = getEventDestinationDetails(lastEvent);
1312
- const targetDisplay = _chunkHAQOFI3Dcjs.resolveTokenDisplay.call(void 0,
2623
+ const targetDisplay = _chunk3OOY67VJcjs.resolveTokenDisplay.call(void 0,
1313
2624
  _nullishCoalesce(eventDestination.token, () => ( targetToken)),
1314
2625
  _nullishCoalesce(eventDestination.chainId, () => ( targetChainId)),
1315
2626
  // Dapp deposits default to USDC targets; mirror the source symbol last so
@@ -1317,7 +2628,7 @@ function ProcessingStep({
1317
2628
  { symbol: _nullishCoalesce(providedSourceSymbol, () => ( "USDC")) }
1318
2629
  );
1319
2630
  const targetSymbol = targetDisplay.symbol;
1320
- const formattedDestinationAmount = eventDestination.amount !== void 0 ? _chunkHAQOFI3Dcjs.formatRawTokenAmount.call(void 0, eventDestination.amount, targetDisplay) : void 0;
2631
+ const formattedDestinationAmount = eventDestination.amount !== void 0 ? _chunk3OOY67VJcjs.formatRawTokenAmount.call(void 0, eventDestination.amount, targetDisplay) : void 0;
1321
2632
  const amountUsdNumber = amountUsd !== void 0 && Number(amountUsd) > 0 ? Number(amountUsd) : void 0;
1322
2633
  const prices = useTokenPrices(service, [
1323
2634
  {
@@ -1332,17 +2643,17 @@ function ProcessingStep({
1332
2643
  }
1333
2644
  ]);
1334
2645
  const estimatedReceiveAmount = (() => {
1335
- const estimate = _chunkHAQOFI3Dcjs.estimateReceiveAmount.call(void 0, {
1336
- sourceAmount: _chunkHAQOFI3Dcjs.tokenAmountToNumber.call(void 0, displayAmount, sourceDisplay.decimals),
2646
+ const estimate = _chunk3OOY67VJcjs.estimateReceiveAmount.call(void 0, {
2647
+ sourceAmount: _chunk3OOY67VJcjs.tokenAmountToNumber.call(void 0, displayAmount, sourceDisplay.decimals),
1337
2648
  sourceSymbol: sourceDisplay.symbol,
1338
2649
  targetSymbol: targetDisplay.symbol,
1339
2650
  sourceAmountUsd: amountUsdNumber,
1340
- sourceTrusted: _chunkHAQOFI3Dcjs.isRecognizedToken.call(void 0, displaySourceToken, displaySourceChain),
2651
+ sourceTrusted: _chunk3OOY67VJcjs.isRecognizedToken.call(void 0, displaySourceToken, displaySourceChain),
1341
2652
  prices
1342
2653
  });
1343
- return estimate !== void 0 ? _chunkHAQOFI3Dcjs.formatTokenAmount.call(void 0, estimate, targetDisplay.symbol) : void 0;
2654
+ return estimate !== void 0 ? _chunk3OOY67VJcjs.formatTokenAmount.call(void 0, estimate, targetDisplay.symbol) : void 0;
1344
2655
  })();
1345
- const quotedReceive = quote ? _chunkHAQOFI3Dcjs.formatQuotedReceive.call(void 0, quote.output, targetSymbol) : void 0;
2656
+ const quotedReceive = quote ? _chunk3OOY67VJcjs.formatQuotedReceive.call(void 0, quote.output, targetSymbol) : void 0;
1346
2657
  const receiveDisplay = formattedDestinationAmount ? (
1347
2658
  // The delivered amount, once the bridge reports it — actual, not an
1348
2659
  // estimate, so it wins over the quote and carries no "~".
@@ -1356,12 +2667,12 @@ function ProcessingStep({
1356
2667
  if (sourceSymbol.toUpperCase() !== targetSymbol.toUpperCase()) {
1357
2668
  return void 0;
1358
2669
  }
1359
- const sentValue = _chunkHAQOFI3Dcjs.tokenAmountToNumber.call(void 0, displayAmount, sourceDisplay.decimals);
1360
- const receivedValue = eventDestination.amount !== void 0 ? _chunkHAQOFI3Dcjs.tokenAmountToNumber.call(void 0, eventDestination.amount, targetDisplay.decimals) : void 0;
2670
+ const sentValue = _chunk3OOY67VJcjs.tokenAmountToNumber.call(void 0, displayAmount, sourceDisplay.decimals);
2671
+ const receivedValue = eventDestination.amount !== void 0 ? _chunk3OOY67VJcjs.tokenAmountToNumber.call(void 0, eventDestination.amount, targetDisplay.decimals) : void 0;
1361
2672
  if (sentValue === void 0 || receivedValue === void 0 || sentValue <= receivedValue) {
1362
2673
  return void 0;
1363
2674
  }
1364
- const formatted = _chunkHAQOFI3Dcjs.formatTokenAmount.call(void 0, sentValue - receivedValue, sourceSymbol);
2675
+ const formatted = _chunk3OOY67VJcjs.formatTokenAmount.call(void 0, sentValue - receivedValue, sourceSymbol);
1365
2676
  if (formatted === void 0 || Number(formatted.replace(/,/g, "")) === 0) {
1366
2677
  return void 0;
1367
2678
  }
@@ -1373,13 +2684,13 @@ function ProcessingStep({
1373
2684
  const delayPhaseId = isProcessing && currentPhaseId && activePhaseElapsedMs >= SOFT_DELAY_MS[currentPhaseId] ? currentPhaseId : void 0;
1374
2685
  void delayPhaseId;
1375
2686
  void hasEscalatedDelay;
1376
- const sourceChainIcon = _chunk4KCSH4T3cjs.getChainIcon.call(void 0, displaySourceChain);
1377
- const targetChainIcon = _chunk4KCSH4T3cjs.getChainIcon.call(void 0, targetChainId);
1378
- const sourceChainName = _chunk4KCSH4T3cjs.getChainName.call(void 0, displaySourceChain);
1379
- const targetChainName = _chunk4KCSH4T3cjs.getChainName.call(void 0, targetChainId);
2687
+ const sourceChainIcon = _chunkOY5N3E6Lcjs.getChainIcon.call(void 0, displaySourceChain);
2688
+ const targetChainIcon = _chunkOY5N3E6Lcjs.getChainIcon.call(void 0, targetChainId);
2689
+ const sourceChainName = _chunkOY5N3E6Lcjs.getChainName.call(void 0, displaySourceChain);
2690
+ const targetChainName = _chunkOY5N3E6Lcjs.getChainName.call(void 0, targetChainId);
1380
2691
  const timerText = formatTimer(elapsedSeconds);
1381
- const feeSponsored = _nullishCoalesce(_optionalChain([uiConfig, 'optionalAccess', _109 => _109.feeSponsored]), () => ( false));
1382
- const feeTooltip = _nullishCoalesce(_optionalChain([uiConfig, 'optionalAccess', _110 => _110.feeTooltip]), () => ( (feeSponsored ? "Network fees are sponsored for this deposit." : "Network fees apply.")));
2692
+ const feeSponsored = _nullishCoalesce(_optionalChain([uiConfig, 'optionalAccess', _175 => _175.feeSponsored]), () => ( false));
2693
+ const feeTooltip = _nullishCoalesce(_optionalChain([uiConfig, 'optionalAccess', _176 => _176.feeTooltip]), () => ( (feeSponsored ? "Network fees are sponsored for this deposit." : "Network fees apply.")));
1383
2694
  const stateTitle = isComplete ? `${flowCapitalized} successful` : isFailed ? `${flowCapitalized} failed` : "Processing...";
1384
2695
  const handleRetry = _nullishCoalesce(onRetry, () => ( onNewDeposit));
1385
2696
  const headerContent = isComplete ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-body-header", children: [
@@ -1388,29 +2699,29 @@ function ProcessingStep({
1388
2699
  ] }) : isFailed ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-body-header", children: [
1389
2700
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FailedBadge, {}),
1390
2701
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "rs-body-header-text", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "rs-body-header-title", children: stateTitle }) })
1391
- ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.BodyHeader, { icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.WalletIcon, {}), title: stateTitle });
2702
+ ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.BodyHeader, { icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.WalletIcon, {}), title: stateTitle });
1392
2703
  if (isComplete && isSwappedOrder) {
1393
- const effectivePaymentMethod = _nullishCoalesce(_nullishCoalesce(_optionalChain([swappedContext, 'optionalAccess', _111 => _111.method]), () => ( _optionalChain([swappedFiatContext, 'optionalAccess', _112 => _112.paymentMethod]))), () => ( null));
2704
+ const effectivePaymentMethod = _nullishCoalesce(_nullishCoalesce(_optionalChain([swappedContext, 'optionalAccess', _177 => _177.method]), () => ( _optionalChain([swappedFiatContext, 'optionalAccess', _178 => _178.paymentMethod]))), () => ( null));
1394
2705
  const onrampMethod = effectivePaymentMethod ? formatPaymentMethod(effectivePaymentMethod) : null;
1395
- const onrampMethodIcon = _optionalChain([swappedContext, 'optionalAccess', _113 => _113.variant]) === "connect" && effectivePaymentMethod ? getExchangeLogoSrc(
2706
+ const onrampMethodIcon = _optionalChain([swappedContext, 'optionalAccess', _179 => _179.variant]) === "connect" && effectivePaymentMethod ? getExchangeLogoSrc(
1396
2707
  _nullishCoalesce(onrampMethod, () => ( effectivePaymentMethod)),
1397
2708
  effectivePaymentMethod
1398
2709
  ) : null;
1399
- const connectPaidAmount = _optionalChain([swappedContext, 'optionalAccess', _114 => _114.variant]) === "connect" ? `${formattedSentAmount} ${sourceSymbol}` : null;
1400
- const amountPaid = _nullishCoalesce(connectPaidAmount, () => ( (_optionalChain([swappedFiatContext, 'optionalAccess', _115 => _115.paidAmountUsd]) != null ? `$${swappedFiatContext.paidAmountUsd.toFixed(2)}` : null)));
2710
+ const connectPaidAmount = _optionalChain([swappedContext, 'optionalAccess', _180 => _180.variant]) === "connect" ? `${formattedSentAmount} ${sourceSymbol}` : null;
2711
+ const amountPaid = _nullishCoalesce(connectPaidAmount, () => ( (_optionalChain([swappedFiatContext, 'optionalAccess', _181 => _181.paidAmountUsd]) != null ? `$${swappedFiatContext.paidAmountUsd.toFixed(2)}` : null)));
1401
2712
  const depositedAmount = receiveDisplay;
1402
- const onrampFeeUsd = _nullishCoalesce(_optionalChain([swappedFiatContext, 'optionalAccess', _116 => _116.onrampFeeUsd]), () => ( null));
2713
+ const onrampFeeUsd = _nullishCoalesce(_optionalChain([swappedFiatContext, 'optionalAccess', _182 => _182.onrampFeeUsd]), () => ( null));
1403
2714
  const sponsoredFeeTooltip = "This fee is sponsored for this deposit.";
1404
2715
  const feesTooltip = feeSponsored ? "On-ramp fees are charged by the payment provider. Market and network fees are sponsored for this deposit." : "Fees include on-ramp, market, and network costs for this deposit.";
1405
2716
  const { rows: quoteFeeRows, chargeableUsd } = buildQuoteFeeRows(
1406
- _optionalChain([quote, 'optionalAccess', _117 => _117.fees, 'access', _118 => _118.breakdown]),
2717
+ _optionalChain([quote, 'optionalAccess', _183 => _183.fees, 'access', _184 => _184.breakdown]),
1407
2718
  sponsoredFeeTooltip
1408
2719
  );
1409
2720
  const feeRows = [];
1410
2721
  if (onrampFeeUsd != null) {
1411
2722
  feeRows.push({
1412
2723
  label: "On-ramp fee",
1413
- value: _chunkHAQOFI3Dcjs.formatFeeUsd.call(void 0, onrampFeeUsd)
2724
+ value: _chunk3OOY67VJcjs.formatFeeUsd.call(void 0, onrampFeeUsd)
1414
2725
  });
1415
2726
  }
1416
2727
  const hasFallbackFee = quoteFeeRows.length === 0 && quotedFeeAmount !== void 0 && Number.isFinite(Number(quotedFeeAmount));
@@ -1419,13 +2730,13 @@ function ProcessingStep({
1419
2730
  } else if (hasFallbackFee) {
1420
2731
  feeRows.push({
1421
2732
  label: "Network fee",
1422
- value: _chunkHAQOFI3Dcjs.formatFeeUsd.call(void 0, Number(quotedFeeAmount)),
2733
+ value: _chunk3OOY67VJcjs.formatFeeUsd.call(void 0, Number(quotedFeeAmount)),
1423
2734
  strike: feeSponsored,
1424
2735
  tooltip: feeSponsored ? sponsoredFeeTooltip : void 0
1425
2736
  });
1426
2737
  }
1427
2738
  const fallbackChargeableUsd = hasFallbackFee && !feeSponsored ? Number(quotedFeeAmount) : 0;
1428
- const feesTotal = feeRows.length > 0 ? _chunkHAQOFI3Dcjs.formatFeeUsd.call(void 0,
2739
+ const feesTotal = feeRows.length > 0 ? _chunk3OOY67VJcjs.formatFeeUsd.call(void 0,
1429
2740
  (_nullishCoalesce(onrampFeeUsd, () => ( 0))) + chargeableUsd + fallbackChargeableUsd
1430
2741
  ) : null;
1431
2742
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -1453,7 +2764,7 @@ function ProcessingStep({
1453
2764
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "Source chain" }),
1454
2765
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "rs-review-detail-value", children: [
1455
2766
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: sourceChainName }),
1456
- sourceChainIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-icon", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.CdnIcon, { src: sourceChainIcon }) }),
2767
+ sourceChainIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-icon", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.CdnIcon, { src: sourceChainIcon }) }),
1457
2768
  sourceExplorerUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1458
2769
  "a",
1459
2770
  {
@@ -1462,7 +2773,7 @@ function ProcessingStep({
1462
2773
  rel: "noopener noreferrer",
1463
2774
  className: "rs-review-detail-link",
1464
2775
  "aria-label": "View source transaction",
1465
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.ExternalLinkIcon, {})
2776
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.ExternalLinkIcon, {})
1466
2777
  }
1467
2778
  )
1468
2779
  ] })
@@ -1471,7 +2782,7 @@ function ProcessingStep({
1471
2782
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "Destination chain" }),
1472
2783
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "rs-review-detail-value", children: [
1473
2784
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: targetChainName }),
1474
- targetChainIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-icon", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.CdnIcon, { src: targetChainIcon }) }),
2785
+ targetChainIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-icon", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.CdnIcon, { src: targetChainIcon }) }),
1475
2786
  destExplorerUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1476
2787
  "a",
1477
2788
  {
@@ -1480,7 +2791,7 @@ function ProcessingStep({
1480
2791
  rel: "noopener noreferrer",
1481
2792
  className: "rs-review-detail-link",
1482
2793
  "aria-label": "View destination transaction",
1483
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.ExternalLinkIcon, {})
2794
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.ExternalLinkIcon, {})
1484
2795
  }
1485
2796
  )
1486
2797
  ] })
@@ -1490,7 +2801,7 @@ function ProcessingStep({
1490
2801
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-value", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Ticker, { value: timerText }) })
1491
2802
  ] }),
1492
2803
  isSwappedOrder ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1493
- _optionalChain([swappedFiatContext, 'optionalAccess', _119 => _119.paidAmountUsd]) != null && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-review-detail-row", children: [
2804
+ _optionalChain([swappedFiatContext, 'optionalAccess', _185 => _185.paidAmountUsd]) != null && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-review-detail-row", children: [
1494
2805
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "You pay" }),
1495
2806
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "rs-review-detail-value", children: [
1496
2807
  "$",
@@ -1502,7 +2813,7 @@ function ProcessingStep({
1502
2813
  ] })
1503
2814
  ] })
1504
2815
  ] }),
1505
- _optionalChain([swappedFiatContext, 'optionalAccess', _120 => _120.onrampFeeUsd]) != null && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-review-detail-row", children: [
2816
+ _optionalChain([swappedFiatContext, 'optionalAccess', _186 => _186.onrampFeeUsd]) != null && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-review-detail-row", children: [
1506
2817
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "On-ramp fee" }),
1507
2818
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "rs-review-detail-value", children: [
1508
2819
  "$",
@@ -1517,7 +2828,7 @@ function ProcessingStep({
1517
2828
  " ",
1518
2829
  sourceSymbol
1519
2830
  ] }),
1520
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-icon", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.TokenIcon, { symbol: sourceSymbol }) })
2831
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-icon", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.TokenIcon, { symbol: sourceSymbol }) })
1521
2832
  ] })
1522
2833
  ] })
1523
2834
  ] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-review-detail-row", children: [
@@ -1528,14 +2839,14 @@ function ProcessingStep({
1528
2839
  " ",
1529
2840
  sourceSymbol
1530
2841
  ] }),
1531
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-icon", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.TokenIcon, { symbol: sourceSymbol }) })
2842
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-icon", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.TokenIcon, { symbol: sourceSymbol }) })
1532
2843
  ] })
1533
2844
  ] }),
1534
2845
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-review-detail-row", children: [
1535
2846
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: isProcessing ? "Receive" : "Received" }),
1536
2847
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "rs-review-detail-value", children: [
1537
2848
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: receiveDisplay }),
1538
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-icon", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.TokenIcon, { symbol: targetSymbol }) })
2849
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "rs-review-detail-icon", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.TokenIcon, { symbol: targetSymbol }) })
1539
2850
  ] })
1540
2851
  ] }),
1541
2852
  isFailed && balanceAfterUsd !== void 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-review-detail-row", children: [
@@ -1564,12 +2875,12 @@ function ProcessingStep({
1564
2875
  {
1565
2876
  className: "rs-review-detail-info",
1566
2877
  "aria-label": "Fee info",
1567
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.InfoIcon, {})
2878
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.InfoIcon, {})
1568
2879
  }
1569
2880
  ) })
1570
2881
  ] })
1571
2882
  ] }) : (() => {
1572
- const { display, struck } = _chunkHAQOFI3Dcjs.quoteFeeRow.call(void 0, _optionalChain([quote, 'optionalAccess', _121 => _121.fees]));
2883
+ const { display, struck } = _chunk3OOY67VJcjs.quoteFeeRow.call(void 0, _optionalChain([quote, 'optionalAccess', _187 => _187.fees]));
1573
2884
  if (display !== null) {
1574
2885
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-review-detail-row", children: [
1575
2886
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "Fees" }),
@@ -1600,9 +2911,9 @@ function ProcessingStep({
1600
2911
  ] });
1601
2912
  })()
1602
2913
  ] }),
1603
- isFailed && failureMessage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.Callout, { variant: "error", children: failureMessage }),
2914
+ isFailed && failureMessage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.Callout, { variant: "error", children: failureMessage }),
1604
2915
  isProcessing && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1605
- _chunkHAQOFI3Dcjs.Button,
2916
+ _chunk3OOY67VJcjs.Button,
1606
2917
  {
1607
2918
  fullWidth: true,
1608
2919
  disabled: true,
@@ -1612,15 +2923,15 @@ function ProcessingStep({
1612
2923
  }
1613
2924
  ),
1614
2925
  isComplete && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-screen-button-row", children: [
1615
- onNewDeposit && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkHAQOFI3Dcjs.Button, { variant: "outline", onClick: onNewDeposit, fullWidth: true, children: [
2926
+ onNewDeposit && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk3OOY67VJcjs.Button, { variant: "outline", onClick: onNewDeposit, fullWidth: true, children: [
1616
2927
  "New ",
1617
2928
  flowNoun
1618
2929
  ] }),
1619
- onClose && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.Button, { onClick: () => onClose("success_done"), fullWidth: true, children: "Done" })
2930
+ onClose && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.Button, { onClick: () => onClose("success_done"), fullWidth: true, children: "Done" })
1620
2931
  ] }),
1621
2932
  isFailed && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rs-screen-button-row", children: [
1622
2933
  onClose && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1623
- _chunkHAQOFI3Dcjs.Button,
2934
+ _chunk3OOY67VJcjs.Button,
1624
2935
  {
1625
2936
  variant: "outline",
1626
2937
  onClick: () => onClose("failure_cancel"),
@@ -1628,10 +2939,10 @@ function ProcessingStep({
1628
2939
  children: "Cancel"
1629
2940
  }
1630
2941
  ),
1631
- handleRetry && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.Button, { onClick: handleRetry, fullWidth: true, children: "Try again" })
2942
+ handleRetry && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.Button, { onClick: handleRetry, fullWidth: true, children: "Try again" })
1632
2943
  ] })
1633
2944
  ] }),
1634
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHAQOFI3Dcjs.PoweredBy, {})
2945
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3OOY67VJcjs.PoweredBy, {})
1635
2946
  ] });
1636
2947
  }
1637
2948
 
@@ -1660,15 +2971,28 @@ function normalizeKeyToken(value) {
1660
2971
  if (value === void 0) return void 0;
1661
2972
  return value.startsWith("0x") ? value.toLowerCase() : value;
1662
2973
  }
1663
- var SOLANA_ADDRESS_PATTERN = /^[1-9A-HJ-NP-Za-km-z]{32,44}$/;
2974
+ var RECIPIENT_PATTERNS = {
2975
+ solana: /^[1-9A-HJ-NP-Za-km-z]{32,44}$/,
2976
+ tron: /^T[1-9A-HJ-NP-Za-km-z]{33}$/,
2977
+ stellar: /^G[A-Z2-7]{55}$/
2978
+ };
2979
+ var RECIPIENT_HINTS = {
2980
+ solana: "A Solana destination needs a base58 recipient address.",
2981
+ tron: "A Tron destination needs a base58 recipient address starting with T.",
2982
+ stellar: "A Stellar destination needs a recipient account ID starting with G."
2983
+ };
2984
+ function recipientNamespace(targetChain) {
2985
+ return _nullishCoalesce(_chunkOY5N3E6Lcjs.targetChainToCaip2.call(void 0, targetChain).split(":")[0], () => ( ""));
2986
+ }
1664
2987
  function recipientMatchesTarget(recipient, targetChain) {
1665
- return _chunk4KCSH4T3cjs.targetChainToCaip2.call(void 0, targetChain).startsWith("solana:") ? SOLANA_ADDRESS_PATTERN.test(recipient) : _viem.isAddress.call(void 0, recipient);
2988
+ const pattern = RECIPIENT_PATTERNS[recipientNamespace(targetChain)];
2989
+ return pattern ? pattern.test(recipient) : _viem.isAddress.call(void 0, recipient);
1666
2990
  }
1667
2991
  function deriveAccountSalt(input) {
1668
2992
  return _viem.keccak256.call(void 0,
1669
2993
  _viem.concat.call(void 0, [
1670
2994
  _viem.keccak256.call(void 0, _viem.toHex.call(void 0, _nullishCoalesce(normalizeKeyToken(input.recipient), () => ( "")))),
1671
- _viem.keccak256.call(void 0, _viem.toHex.call(void 0, _chunk4KCSH4T3cjs.targetChainToCaip2.call(void 0, input.targetChain))),
2995
+ _viem.keccak256.call(void 0, _viem.toHex.call(void 0, _chunkOY5N3E6Lcjs.targetChainToCaip2.call(void 0, input.targetChain))),
1672
2996
  _viem.keccak256.call(void 0, _viem.toHex.call(void 0, _nullishCoalesce(normalizeKeyToken(input.targetToken), () => ( ""))))
1673
2997
  ])
1674
2998
  );
@@ -1700,7 +3024,7 @@ var setupRequestDedupe = /* @__PURE__ */ new Map();
1700
3024
  function readDedupedAccountSetupResult(requestKey) {
1701
3025
  const now = Date.now();
1702
3026
  const existing = setupRequestDedupe.get(requestKey);
1703
- if (_optionalChain([existing, 'optionalAccess', _122 => _122.settled]) && existing.expiresAt > now && existing.result) {
3027
+ if (_optionalChain([existing, 'optionalAccess', _188 => _188.settled]) && existing.expiresAt > now && existing.result) {
1704
3028
  return existing.result;
1705
3029
  }
1706
3030
  return null;
@@ -1716,13 +3040,13 @@ async function runAccountSetup(input, deps) {
1716
3040
  }
1717
3041
  if (!recipientMatchesTarget(input.recipient, input.targetChain)) {
1718
3042
  throw new SetupError(
1719
- input.targetChain === "solana" ? "A Solana destination needs a base58 recipient address." : "An EVM destination needs a 0x recipient address.",
3043
+ _nullishCoalesce(RECIPIENT_HINTS[recipientNamespace(input.targetChain)], () => ( "An EVM destination needs a 0x recipient address.")),
1720
3044
  "client"
1721
3045
  );
1722
3046
  }
1723
3047
  try {
1724
3048
  const salt = deriveAccountSalt(input);
1725
- _chunkHAQOFI3Dcjs.debugLog.call(void 0, debug, "account-setup", "setup:start", {
3049
+ _chunk3OOY67VJcjs.debugLog.call(void 0, debug, "account-setup", "setup:start", {
1726
3050
  salt,
1727
3051
  recipient: input.recipient,
1728
3052
  targetChain: input.targetChain,
@@ -1731,10 +3055,10 @@ async function runAccountSetup(input, deps) {
1731
3055
  const result = await service.registerManagedAccount({
1732
3056
  salt,
1733
3057
  target: {
1734
- chain: _chunk4KCSH4T3cjs.targetChainToCaip2.call(void 0, input.targetChain),
3058
+ chain: _chunkOY5N3E6Lcjs.targetChainToCaip2.call(void 0, input.targetChain),
1735
3059
  token: input.targetToken,
1736
3060
  recipient: input.recipient,
1737
- ..._optionalChain([input, 'access', _123 => _123.outputTokenRules, 'optionalAccess', _124 => _124.length]) && {
3061
+ ..._optionalChain([input, 'access', _189 => _189.outputTokenRules, 'optionalAccess', _190 => _190.length]) && {
1738
3062
  outputTokenRules: input.outputTokenRules
1739
3063
  },
1740
3064
  ...input.rejectUnmapped != null && {
@@ -1748,7 +3072,7 @@ async function runAccountSetup(input, deps) {
1748
3072
  cacheKey
1749
3073
  };
1750
3074
  } catch (error) {
1751
- _chunkHAQOFI3Dcjs.debugError.call(void 0, debug, "account-setup", "setup:failed", error, {
3075
+ _chunk3OOY67VJcjs.debugError.call(void 0, debug, "account-setup", "setup:failed", error, {
1752
3076
  recipient: input.recipient
1753
3077
  });
1754
3078
  if (error instanceof SetupError) throw error;
@@ -1759,7 +3083,7 @@ function runAccountSetupDeduped(input, deps, requestKey) {
1759
3083
  const now = Date.now();
1760
3084
  const existing = setupRequestDedupe.get(requestKey);
1761
3085
  if (existing && (!existing.settled || existing.expiresAt > now)) {
1762
- _chunkHAQOFI3Dcjs.debugLog.call(void 0, deps.debug, "account-setup", "setup:dedupe-hit", {
3086
+ _chunk3OOY67VJcjs.debugLog.call(void 0, deps.debug, "account-setup", "setup:dedupe-hit", {
1763
3087
  recipient: input.recipient,
1764
3088
  forceRegister: _nullishCoalesce(input.forceRegister, () => ( false))
1765
3089
  });
@@ -1798,22 +3122,14 @@ function mapError(error) {
1798
3122
  "network"
1799
3123
  );
1800
3124
  }
1801
- if (error instanceof Error) {
1802
- const statusMatch = error.message.match(/\b(4\d{2}|5\d{2})\b/);
1803
- if (statusMatch) {
1804
- const status = Number(statusMatch[1]);
1805
- if (status >= 500) {
1806
- return new SetupError(
1807
- "Deposit service is temporarily unavailable. Please try again shortly.",
1808
- "server"
1809
- );
1810
- }
1811
- return new SetupError(error.message, "client");
3125
+ if (error instanceof _chunk3OOY67VJcjs.RegistrationError) {
3126
+ if (error.status >= 500) {
3127
+ return new SetupError(
3128
+ "Deposit service is temporarily unavailable. Please try again shortly.",
3129
+ "server"
3130
+ );
1812
3131
  }
1813
- return new SetupError(
1814
- "Deposit service is temporarily unavailable. Please try again shortly.",
1815
- "unknown"
1816
- );
3132
+ return new SetupError(error.message, "client");
1817
3133
  }
1818
3134
  return new SetupError(
1819
3135
  "Deposit service is temporarily unavailable. Please try again shortly.",
@@ -1845,4 +3161,9 @@ function mapError(error) {
1845
3161
 
1846
3162
 
1847
3163
 
1848
- exports.getExchangeLogoSrc = getExchangeLogoSrc; exports.getExchangeLogo = getExchangeLogo; exports.Tooltip = Tooltip; exports.markSubmissionUncertain = markSubmissionUncertain; exports.isSubmissionUncertain = isSubmissionUncertain; exports.getEventTxHash = getEventTxHash; exports.getEventSourceDetails = getEventSourceDetails; exports.isDepositEvent = isDepositEvent; exports.isFailedEvent = isFailedEvent; exports.txRefsMatch = txRefsMatch; exports.failureMessageForEvent = failureMessageForEvent; exports.fetchTokenPriceUsd = fetchTokenPriceUsd; exports.useTokenPrices = useTokenPrices; exports.ProcessingStep = ProcessingStep; exports.SetupError = SetupError; exports.deriveAccountSalt = deriveAccountSalt; exports.computeRequestKey = computeRequestKey; exports.computeCacheKey = computeCacheKey; exports.computeIsCacheable = computeIsCacheable; exports.readDedupedAccountSetupResult = readDedupedAccountSetupResult; exports.runAccountSetupDeduped = runAccountSetupDeduped; exports.warnRemovedProps = warnRemovedProps; exports.analyticsTargetProperties = analyticsTargetProperties;
3164
+
3165
+
3166
+
3167
+
3168
+
3169
+ exports.getExchangeLogoSrc = getExchangeLogoSrc; exports.getExchangeLogo = getExchangeLogo; exports.Tooltip = Tooltip; exports.markSubmissionUncertain = markSubmissionUncertain; exports.isSubmissionUncertain = isSubmissionUncertain; exports.getEventTxHash = getEventTxHash; exports.getEventSourceDetails = getEventSourceDetails; exports.isDepositEvent = isDepositEvent; exports.isFailedEvent = isFailedEvent; exports.txRefsMatch = txRefsMatch; exports.failureMessageForEvent = failureMessageForEvent; exports.fetchTokenPriceUsd = fetchTokenPriceUsd; exports.useTokenPrices = useTokenPrices; exports.ProcessingStep = ProcessingStep; exports.SetupError = SetupError; exports.deriveAccountSalt = deriveAccountSalt; exports.computeRequestKey = computeRequestKey; exports.computeCacheKey = computeCacheKey; exports.computeIsCacheable = computeIsCacheable; exports.readDedupedAccountSetupResult = readDedupedAccountSetupResult; exports.runAccountSetupDeduped = runAccountSetupDeduped; exports.HistoryEntryButton = HistoryEntryButton; exports.HistoryOverlay = HistoryOverlay; exports.useHistoryPanel = useHistoryPanel; exports.warnRemovedProps = warnRemovedProps; exports.isHistoryEntryVisible = isHistoryEntryVisible; exports.createHistoryAnalytics = createHistoryAnalytics; exports.analyticsTargetProperties = analyticsTargetProperties;