0xtrails 0.2.6 → 0.4.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 (218) hide show
  1. package/dist/aave.d.ts +2 -0
  2. package/dist/aave.d.ts.map +1 -1
  3. package/dist/{ccip-Xjh9d1gb.js → ccip-BpQGQiWq.js} +7 -7
  4. package/dist/config.d.ts +0 -5
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/constants.d.ts +2 -4
  7. package/dist/constants.d.ts.map +1 -1
  8. package/dist/error.d.ts +4 -1
  9. package/dist/error.d.ts.map +1 -1
  10. package/dist/fees.d.ts +2 -2
  11. package/dist/fees.d.ts.map +1 -1
  12. package/dist/{index-BnhdZ8Ho.js → index-DsJM5F-V.js} +46084 -48697
  13. package/dist/index.d.ts +9 -8
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +741 -923
  16. package/dist/intentReceiptMonitor.d.ts +24 -0
  17. package/dist/intentReceiptMonitor.d.ts.map +1 -0
  18. package/dist/intentReceiptPoller.d.ts +69 -0
  19. package/dist/intentReceiptPoller.d.ts.map +1 -0
  20. package/dist/intents.d.ts +15 -11
  21. package/dist/intents.d.ts.map +1 -1
  22. package/dist/morpho.d.ts +6 -5
  23. package/dist/morpho.d.ts.map +1 -1
  24. package/dist/mutations.d.ts +16 -0
  25. package/dist/mutations.d.ts.map +1 -0
  26. package/dist/preconditions.d.ts +5 -4
  27. package/dist/preconditions.d.ts.map +1 -1
  28. package/dist/prepareSend.d.ts +5 -190
  29. package/dist/prepareSend.d.ts.map +1 -1
  30. package/dist/prices.d.ts +9 -6
  31. package/dist/prices.d.ts.map +1 -1
  32. package/dist/sequenceWallet.d.ts +3 -16
  33. package/dist/sequenceWallet.d.ts.map +1 -1
  34. package/dist/tokenBalances.d.ts +17 -13
  35. package/dist/tokenBalances.d.ts.map +1 -1
  36. package/dist/trails.d.ts +24 -40
  37. package/dist/trails.d.ts.map +1 -1
  38. package/dist/trailsClient.d.ts +5 -6
  39. package/dist/trailsClient.d.ts.map +1 -1
  40. package/dist/transactionIntent/constants.d.ts +7 -0
  41. package/dist/transactionIntent/constants.d.ts.map +1 -0
  42. package/dist/transactionIntent/deposits/depositOrchestrator.d.ts +44 -0
  43. package/dist/transactionIntent/deposits/depositOrchestrator.d.ts.map +1 -0
  44. package/dist/transactionIntent/deposits/gaslessDeposit.d.ts +30 -0
  45. package/dist/transactionIntent/deposits/gaslessDeposit.d.ts.map +1 -0
  46. package/dist/transactionIntent/deposits/index.d.ts +4 -0
  47. package/dist/transactionIntent/deposits/index.d.ts.map +1 -0
  48. package/dist/transactionIntent/deposits/standardDeposit.d.ts +30 -0
  49. package/dist/transactionIntent/deposits/standardDeposit.d.ts.map +1 -0
  50. package/dist/transactionIntent/execution/index.d.ts +2 -0
  51. package/dist/transactionIntent/execution/index.d.ts.map +1 -0
  52. package/dist/transactionIntent/execution/transactionState.d.ts +5 -0
  53. package/dist/transactionIntent/execution/transactionState.d.ts.map +1 -0
  54. package/dist/transactionIntent/handlers/crossChain.d.ts +82 -0
  55. package/dist/transactionIntent/handlers/crossChain.d.ts.map +1 -0
  56. package/dist/transactionIntent/handlers/index.d.ts +4 -0
  57. package/dist/transactionIntent/handlers/index.d.ts.map +1 -0
  58. package/dist/transactionIntent/handlers/sameChainDifferentToken.d.ts +62 -0
  59. package/dist/transactionIntent/handlers/sameChainDifferentToken.d.ts.map +1 -0
  60. package/dist/transactionIntent/handlers/sameChainSameToken.d.ts +72 -0
  61. package/dist/transactionIntent/handlers/sameChainSameToken.d.ts.map +1 -0
  62. package/dist/transactionIntent/index.d.ts +9 -0
  63. package/dist/transactionIntent/index.d.ts.map +1 -0
  64. package/dist/transactionIntent/quote/feeExtractors.d.ts +17 -0
  65. package/dist/transactionIntent/quote/feeExtractors.d.ts.map +1 -0
  66. package/dist/transactionIntent/quote/index.d.ts +4 -0
  67. package/dist/transactionIntent/quote/index.d.ts.map +1 -0
  68. package/dist/transactionIntent/quote/normalizeQuote.d.ts +34 -0
  69. package/dist/transactionIntent/quote/normalizeQuote.d.ts.map +1 -0
  70. package/dist/transactionIntent/quote/quoteHelpers.d.ts +5 -0
  71. package/dist/transactionIntent/quote/quoteHelpers.d.ts.map +1 -0
  72. package/dist/transactionIntent/types.d.ts +131 -0
  73. package/dist/transactionIntent/types.d.ts.map +1 -0
  74. package/dist/transactionIntent/utils/balanceChecker.d.ts +18 -0
  75. package/dist/transactionIntent/utils/balanceChecker.d.ts.map +1 -0
  76. package/dist/transactionIntent/utils/index.d.ts +4 -0
  77. package/dist/transactionIntent/utils/index.d.ts.map +1 -0
  78. package/dist/transactionIntent/utils/lifiHelpers.d.ts +10 -0
  79. package/dist/transactionIntent/utils/lifiHelpers.d.ts.map +1 -0
  80. package/dist/transactionIntent/utils/testnetHelpers.d.ts +3 -0
  81. package/dist/transactionIntent/utils/testnetHelpers.d.ts.map +1 -0
  82. package/dist/transactionIntent/validators.d.ts +6 -0
  83. package/dist/transactionIntent/validators.d.ts.map +1 -0
  84. package/dist/transactions.d.ts +2 -1
  85. package/dist/transactions.d.ts.map +1 -1
  86. package/dist/widget/components/AccountSettings.d.ts.map +1 -1
  87. package/dist/widget/components/ClassicSwap.d.ts +0 -1
  88. package/dist/widget/components/ClassicSwap.d.ts.map +1 -1
  89. package/dist/widget/components/ConfigDisplay.d.ts.map +1 -1
  90. package/dist/widget/components/ConnectedWallets.d.ts.map +1 -1
  91. package/dist/widget/components/DynamicSizeInputField.d.ts +13 -0
  92. package/dist/widget/components/DynamicSizeInputField.d.ts.map +1 -0
  93. package/dist/widget/components/Earn.d.ts +0 -1
  94. package/dist/widget/components/Earn.d.ts.map +1 -1
  95. package/dist/widget/components/FeeOptions.d.ts +5 -13
  96. package/dist/widget/components/FeeOptions.d.ts.map +1 -1
  97. package/dist/widget/components/Fund.d.ts +0 -1
  98. package/dist/widget/components/Fund.d.ts.map +1 -1
  99. package/dist/widget/components/FundMethods.d.ts.map +1 -1
  100. package/dist/widget/components/FundSwap.d.ts +0 -1
  101. package/dist/widget/components/FundSwap.d.ts.map +1 -1
  102. package/dist/widget/components/Pay.d.ts +0 -1
  103. package/dist/widget/components/Pay.d.ts.map +1 -1
  104. package/dist/widget/components/PoolDeposit.d.ts +0 -1
  105. package/dist/widget/components/PoolDeposit.d.ts.map +1 -1
  106. package/dist/widget/components/PoolWithdraw.d.ts +0 -18
  107. package/dist/widget/components/PoolWithdraw.d.ts.map +1 -1
  108. package/dist/widget/components/QuoteDetails.d.ts +1 -0
  109. package/dist/widget/components/QuoteDetails.d.ts.map +1 -1
  110. package/dist/widget/components/Swap.d.ts +0 -1
  111. package/dist/widget/components/Swap.d.ts.map +1 -1
  112. package/dist/widget/components/TransferPendingVertical.d.ts.map +1 -1
  113. package/dist/widget/components/WaasFeeOptions.d.ts.map +1 -1
  114. package/dist/widget/css/compiled.css +2 -2
  115. package/dist/widget/hooks/useCheckout.d.ts +17 -4
  116. package/dist/widget/hooks/useCheckout.d.ts.map +1 -1
  117. package/dist/widget/hooks/useDefaultTokenSelection.d.ts.map +1 -1
  118. package/dist/widget/hooks/useQuote.d.ts +3 -4
  119. package/dist/widget/hooks/useQuote.d.ts.map +1 -1
  120. package/dist/widget/hooks/useSelectedFeeToken.d.ts +1 -0
  121. package/dist/widget/hooks/useSelectedFeeToken.d.ts.map +1 -1
  122. package/dist/widget/hooks/useSendForm.d.ts +3 -4
  123. package/dist/widget/hooks/useSendForm.d.ts.map +1 -1
  124. package/dist/widget/hooks/useTokenList.d.ts.map +1 -1
  125. package/dist/widget/hooks/useWalletConnectionContext.d.ts +25 -0
  126. package/dist/widget/hooks/useWalletConnectionContext.d.ts.map +1 -0
  127. package/dist/widget/index.js +1 -1
  128. package/dist/widget/widget.d.ts +12 -7
  129. package/dist/widget/widget.d.ts.map +1 -1
  130. package/package.json +21 -23
  131. package/src/aave.ts +54 -1
  132. package/src/config.ts +57 -58
  133. package/src/constants.ts +8 -9
  134. package/src/error.ts +21 -3
  135. package/src/fees.ts +53 -42
  136. package/src/index.ts +35 -13
  137. package/src/intentReceiptMonitor.ts +102 -0
  138. package/src/intentReceiptPoller.ts +299 -0
  139. package/src/intents.ts +206 -172
  140. package/src/morpho.ts +58 -9
  141. package/src/mutations.ts +129 -0
  142. package/src/preconditions.ts +16 -21
  143. package/src/prepareSend.ts +80 -4514
  144. package/src/prices.ts +26 -22
  145. package/src/relaySdk.ts +2 -2
  146. package/src/sequenceWallet.ts +6 -73
  147. package/src/tokenBalances.ts +175 -69
  148. package/src/trails.ts +230 -722
  149. package/src/trailsClient.ts +10 -23
  150. package/src/transactionIntent/constants.ts +11 -0
  151. package/src/transactionIntent/deposits/depositOrchestrator.ts +210 -0
  152. package/src/transactionIntent/deposits/gaslessDeposit.ts +588 -0
  153. package/src/transactionIntent/deposits/index.ts +3 -0
  154. package/src/transactionIntent/deposits/standardDeposit.ts +379 -0
  155. package/src/transactionIntent/execution/index.ts +1 -0
  156. package/src/transactionIntent/execution/transactionState.ts +35 -0
  157. package/src/transactionIntent/handlers/crossChain.ts +1707 -0
  158. package/src/transactionIntent/handlers/index.ts +3 -0
  159. package/src/transactionIntent/handlers/sameChainDifferentToken.ts +323 -0
  160. package/src/transactionIntent/handlers/sameChainSameToken.ts +712 -0
  161. package/src/transactionIntent/index.ts +9 -0
  162. package/src/transactionIntent/quote/feeExtractors.ts +81 -0
  163. package/src/transactionIntent/quote/index.ts +3 -0
  164. package/src/transactionIntent/quote/normalizeQuote.ts +367 -0
  165. package/src/transactionIntent/quote/quoteHelpers.ts +53 -0
  166. package/src/transactionIntent/types.ts +157 -0
  167. package/src/transactionIntent/utils/balanceChecker.ts +96 -0
  168. package/src/transactionIntent/utils/index.ts +3 -0
  169. package/src/transactionIntent/utils/lifiHelpers.ts +68 -0
  170. package/src/transactionIntent/utils/testnetHelpers.ts +10 -0
  171. package/src/transactionIntent/validators.ts +57 -0
  172. package/src/transactions.ts +36 -53
  173. package/src/widget/compiled.css +2 -2
  174. package/src/widget/components/AccountIntentTransactionHistory.tsx +36 -36
  175. package/src/widget/components/AccountSettings.tsx +23 -6
  176. package/src/widget/components/ClassicSwap.tsx +28 -53
  177. package/src/widget/components/ConfigDisplay.tsx +0 -11
  178. package/src/widget/components/ConnectedWallets.tsx +30 -4
  179. package/src/widget/components/DynamicSizeInputField.tsx +109 -0
  180. package/src/widget/components/Earn.tsx +0 -16
  181. package/src/widget/components/FeeBreakdown.tsx +3 -3
  182. package/src/widget/components/FeeOption.tsx +2 -2
  183. package/src/widget/components/FeeOptions.tsx +151 -112
  184. package/src/widget/components/Fund.tsx +0 -3
  185. package/src/widget/components/FundMethods.tsx +4 -3
  186. package/src/widget/components/FundSwap.tsx +0 -1
  187. package/src/widget/components/Pay.tsx +11 -16
  188. package/src/widget/components/PoolDeposit.tsx +35 -32
  189. package/src/widget/components/PoolWithdraw.tsx +153 -256
  190. package/src/widget/components/QuoteDetails.tsx +899 -494
  191. package/src/widget/components/Swap.tsx +0 -1
  192. package/src/widget/components/TransferPendingVertical.tsx +12 -8
  193. package/src/widget/components/WaasFeeOptions.tsx +23 -7
  194. package/src/widget/components/WalletConfirmation.tsx +1 -1
  195. package/src/widget/hooks/useAmountUsd.ts +9 -9
  196. package/src/widget/hooks/useCheckout.ts +97 -9
  197. package/src/widget/hooks/useDefaultTokenSelection.tsx +27 -21
  198. package/src/widget/hooks/useQuote.ts +86 -33
  199. package/src/widget/hooks/useSelectedFeeToken.tsx +32 -37
  200. package/src/widget/hooks/useSendForm.ts +37 -47
  201. package/src/widget/hooks/useTokenList.ts +34 -26
  202. package/src/widget/hooks/useWalletConnectionContext.tsx +128 -0
  203. package/src/widget/widget.tsx +197 -207
  204. package/dist/apiClient.d.ts +0 -9
  205. package/dist/apiClient.d.ts.map +0 -1
  206. package/dist/intentEntrypoint.d.ts +0 -114
  207. package/dist/intentEntrypoint.d.ts.map +0 -1
  208. package/dist/metaTxnMonitor.d.ts +0 -15
  209. package/dist/metaTxnMonitor.d.ts.map +0 -1
  210. package/dist/metaTxns.d.ts +0 -11
  211. package/dist/metaTxns.d.ts.map +0 -1
  212. package/dist/relayer.d.ts +0 -43
  213. package/dist/relayer.d.ts.map +0 -1
  214. package/src/apiClient.ts +0 -35
  215. package/src/intentEntrypoint.ts +0 -203
  216. package/src/metaTxnMonitor.ts +0 -171
  217. package/src/metaTxns.ts +0 -45
  218. package/src/relayer.ts +0 -289
package/dist/index.js CHANGED
@@ -1,185 +1,325 @@
1
- import { u as qn, a as Ze, b as en, c as On, d as Rn, l as t, g as Un, T as Dn, p as Fn, e as je, f as Hn, h as Fe, i as $n, j as Ge, k as Nn, m as ae, S as Qe, n as _e, q as Bn, r as Ln, s as Ce, t as jn, v as Gn, w as We } from "./index-BnhdZ8Ho.js";
2
- import { U as it, ag as rt, ai as ct, C as lt, ah as dt, Y as ut, x as gt, I as mt, F as ft, A as ht, ad as pt, J as It, K as vt, B as Tt, E as Ct, X as St, ae as yt, V as At, _ as wt, a0 as bt, a6 as kt, Z as Et, ab as Pt, y as xt, P as Mt, $ as qt, af as Ot, R as Rt, a9 as Ut, W as Dt, D as Ft, ac as Ht, a2 as $t, a7 as Nt, a4 as Bt, a5 as Lt, a1 as jt, aa as Gt, a3 as Qt, a8 as _t, L as Wt, G as Vt, M as Kt, N as zt, H as Xt, z as Yt, O as Jt, Q as Zt } from "./index-BnhdZ8Ho.js";
3
- import { useQuery as nn, useMutation as He } from "@tanstack/react-query";
4
- import { useRef as $e, useState as d, useCallback as Ve, useEffect as F, useMemo as Qn } from "react";
5
- import { zeroAddress as Ne, isAddressEqual as me, isAddress as _n, createPublicClient as Ke, http as ze, createWalletClient as Xe, custom as Ye } from "viem";
6
- import { useSwitchChain as Wn, useSendTransaction as Vn, useEstimateGas as Kn, useWaitForTransactionReceipt as zn } from "wagmi";
7
- function tt({
8
- walletClient: K,
9
- fromTokenAddress: c,
10
- fromChainId: k,
11
- toTokenAddress: H,
12
- toChainId: P,
13
- swapAmount: T,
14
- tradeType: x,
15
- toRecipient: q,
16
- toCalldata: Z,
17
- slippageTolerance: ee,
18
- onStatusUpdate: z,
19
- quoteProvider: ie,
20
- gasless: u,
21
- paymasterUrl: $,
22
- selectedFeeToken: A,
23
- relayerEnv: N,
24
- nodeGatewayEnv: C,
25
- abortSignal: O
1
+ import { l as t, u as pe, t as Cn, a as Sn, b as wn, g as Ee, c as kn, d as yn, e as En, f as be, h as bn, T as xn, p as Pn, i as Me, j as Rn, k as ye, m as He, n as Un, o as te, q as De, r as qn, s as On, v as Mn, w as Fe } from "./index-DsJM5F-V.js";
2
+ import { I as Yn, W as Zn, ae as et, ag as nt, U as tt, C as st, af as it, X as ot, K as rt, G as at, A as ct, ab as lt, L as dt, M as ut, B as gt, F as mt, x as ft, ac as It, $ as ht, _ as pt, a4 as vt, Y as Tt, a9 as At, y as Ct, R as St, Z as wt, ad as kt, V as yt, a7 as Et, E as bt, D as xt, aa as Pt, a5 as Rt, a2 as Ut, a3 as qt, a0 as Ot, a8 as Mt, a1 as Ht, a6 as Dt, N as Ft, H as Lt, O as Bt, P as Nt, J as $t, z as Gt, Q as Qt, S as jt } from "./index-DsJM5F-V.js";
3
+ import { useQuery as xe, useMutation as Ie } from "@tanstack/react-query";
4
+ import { useRef as Hn, useState as l, useCallback as Le, useEffect as b } from "react";
5
+ import { zeroAddress as he, isAddressEqual as ce, isAddress as Dn, ethAddress as Fn, createWalletClient as Be, custom as Ne } from "viem";
6
+ import { useSwitchChain as Ln, useSendTransaction as Bn, useEstimateGas as Nn, useWaitForTransactionReceipt as $n } from "wagmi";
7
+ const $e = 150, Gn = (u, i) => {
8
+ const r = xe({
9
+ queryKey: ["waitIntentReceipt", u],
10
+ queryFn: async () => {
11
+ if (!u)
12
+ throw new Error("Intent ID is required for monitoring");
13
+ t.console.log(
14
+ `[trails-sdk] 🔍 Monitoring intent receipt for ${u}`
15
+ );
16
+ const o = await i.waitIntentReceipt({
17
+ intentId: u
18
+ });
19
+ return t.console.log(
20
+ `[trails-sdk] 📊 Intent ${u} status: ${o.intentReceipt.status}, done: ${o.done}`
21
+ ), o;
22
+ },
23
+ enabled: !!u,
24
+ refetchIntervalInBackground: !0,
25
+ refetchInterval: (o) => {
26
+ const a = o.state.data;
27
+ return a && a.done ? (t.console.log(
28
+ `[trails-sdk] ✅ Intent monitoring complete for ${u}`
29
+ ), !1) : $e;
30
+ },
31
+ retry: (o, a) => o >= 30 ? (t.console.error(
32
+ `[trails-sdk] ❌ Giving up on intent ${u} after 30 failed API attempts:`,
33
+ a
34
+ ), !1) : !0
35
+ });
36
+ return {
37
+ intentReceipt: r.data?.intentReceipt ?? null,
38
+ done: r.data?.done ?? !1,
39
+ isLoading: r.isLoading,
40
+ isError: r.isError,
41
+ error: r.error
42
+ };
43
+ };
44
+ function Ge() {
45
+ const u = pe();
46
+ return Ie({
47
+ mutationFn: async (i) => {
48
+ t.console.log("[trails-sdk] useCommitIntent: Starting commit", {
49
+ intentId: i.intentId,
50
+ originIntentAddress: i.originIntentAddress
51
+ });
52
+ const r = i.calls[0]?.chainId, o = i.calls[1]?.chainId;
53
+ try {
54
+ Cn({
55
+ intentAddress: i.originIntentAddress,
56
+ userAddress: i.ownerAddress,
57
+ originChainId: r ? Number(r) : void 0,
58
+ destinationChainId: o ? Number(o) : void 0
59
+ });
60
+ const a = await u.commitIntent({ intent: i });
61
+ return t.console.log("[trails-sdk] useCommitIntent: Commit successful", {
62
+ intentId: i.intentId,
63
+ response: a
64
+ }), Sn({
65
+ intentAddress: i.originIntentAddress,
66
+ userAddress: i.ownerAddress,
67
+ originChainId: r ? Number(r) : void 0,
68
+ destinationChainId: o ? Number(o) : void 0
69
+ }), a;
70
+ } catch (a) {
71
+ throw wn({
72
+ error: Ee(a),
73
+ userAddress: i.ownerAddress,
74
+ intentAddress: i.originIntentAddress,
75
+ originChainId: r ? Number(r) : void 0,
76
+ destinationChainId: o ? Number(o) : void 0
77
+ }), a;
78
+ }
79
+ }
80
+ });
81
+ }
82
+ function Qe() {
83
+ const u = pe();
84
+ return Ie({
85
+ mutationFn: async ({
86
+ intentId: i,
87
+ depositTransactionHash: r,
88
+ depositSignature: o
89
+ }) => {
90
+ if (t.console.log("[trails-sdk] useExecuteIntent: Starting execution", {
91
+ intentId: i,
92
+ depositTransactionHash: r,
93
+ hasDepositSignature: !!o
94
+ }), !r && !o)
95
+ throw new Error(
96
+ "[trails-sdk] Either depositTransactionHash or depositSignature must be provided"
97
+ );
98
+ const a = await u.executeIntent({
99
+ intentId: i,
100
+ depositTransactionHash: r,
101
+ depositSignature: o
102
+ });
103
+ return t.console.log(
104
+ "[trails-sdk] useExecuteIntent: Execution successful",
105
+ {
106
+ intentId: i,
107
+ response: a
108
+ }
109
+ ), a;
110
+ }
111
+ });
112
+ }
113
+ function Kn({
114
+ walletClient: u,
115
+ fromTokenAddress: i,
116
+ fromChainId: r,
117
+ toTokenAddress: o,
118
+ toChainId: a,
119
+ swapAmount: x,
120
+ tradeType: X,
121
+ toRecipient: L,
122
+ toCalldata: Q,
123
+ slippageTolerance: le,
124
+ onStatusUpdate: j,
125
+ quoteProvider: P,
126
+ paymasterUrl: W,
127
+ selectedFeeToken: R,
128
+ nodeGatewayEnv: k,
129
+ abortSignal: U
26
130
  } = {}) {
27
- C && (globalThis.__testNodeGatewayEnv = C);
28
- const h = $e(new AbortController()), X = O ? (() => {
29
- const S = new AbortController();
30
- return O.addEventListener("abort", () => {
31
- S.abort(), h.current?.abort();
32
- }), h.current?.signal.addEventListener("abort", () => {
33
- S.abort();
34
- }), S.signal;
35
- })() : h.current.signal, I = qn(), ne = Ze(), { getRelayer: R } = en({
36
- env: N || $n()
37
- }), U = On(), { supportedTokens: fe } = Rn(), { data: B, isLoading: L, error: Y, refetch: Se } = nn({
131
+ k && (globalThis.__testNodeGatewayEnv = k);
132
+ const A = Hn(new AbortController()), V = U ? (() => {
133
+ const p = new AbortController();
134
+ return U.addEventListener("abort", () => {
135
+ p.abort(), A.current?.abort();
136
+ }), A.current?.signal.addEventListener("abort", () => {
137
+ p.abort();
138
+ }), p.signal;
139
+ })() : A.current.signal, q = pe(), se = kn(), { supportedTokens: g } = yn(), ie = Ge(), h = Qe(), { data: B, isLoading: ve, error: N, refetch: $ } = xe({
38
140
  queryKey: [
39
- "quote",
40
- c,
41
- k,
42
- H,
43
- P,
44
- T?.toString(),
45
- q,
46
- Z,
47
- x,
48
- ee,
49
- ie
141
+ "prepareSend",
142
+ i,
143
+ r,
144
+ o,
145
+ a,
146
+ x?.toString(),
147
+ L,
148
+ Q,
149
+ X,
150
+ le,
151
+ P
50
152
  ],
51
153
  queryFn: async () => {
52
154
  try {
53
- if (h.current.signal.aborted && (t.console.log(
155
+ if (A.current.signal.aborted && (t.console.log(
54
156
  "[trails-sdk] Resetting aborted controller for new query"
55
- ), h.current = new AbortController()), !K || !I || !ne || !c || !H || !T || !q || !k || !P || !U)
157
+ ), A.current = new AbortController()), !u || !q || !i || !o || !x || !L || !r || !a || !se)
56
158
  return null;
57
- const { balances: S } = await Un({
58
- account: K.account.address,
59
- indexerGatewayClient: U,
60
- apiClient: I
61
- }), J = S.find(
62
- (g) => g.chainId === k && (g.contractAddress?.toLowerCase() === c.toLowerCase() || !g.contractAddress && c === Ne)
63
- )?.balance ?? "0", ye = R(P), he = R(k), j = fe?.find(
64
- (g) => g.contractAddress?.toLowerCase() === c?.toLowerCase() && g.chainId === k
65
- ), G = fe?.find(
66
- (g) => g.contractAddress?.toLowerCase() === H?.toLowerCase() && g.chainId === P
67
- ), re = j?.decimals;
68
- if (!re)
159
+ let p = [];
160
+ try {
161
+ p = (await En({
162
+ account: u.account.address,
163
+ indexerGatewayClient: se,
164
+ trailsClient: q
165
+ })).balances;
166
+ } catch (d) {
167
+ const f = Ee(d), v = f.includes("Cross-Origin") || f.includes("CORS") || f.includes("Same Origin Policy"), H = f.includes("fetch failed") || f.includes("network");
168
+ if (v || H)
169
+ t.console.warn(
170
+ "[trails-sdk] [useQuote] Network or CORS error fetching balances, proceeding with quote using zero balance:",
171
+ {
172
+ error: f,
173
+ account: u.account.address
174
+ }
175
+ ), p = [];
176
+ else
177
+ throw d;
178
+ }
179
+ const _ = p.find(
180
+ (d) => d.chainId === r && (d.contractAddress?.toLowerCase() === i.toLowerCase() || !d.contractAddress && i === he)
181
+ )?.balance ?? "0";
182
+ let s = 0;
183
+ try {
184
+ const f = be(r)?.nativeCurrency?.symbol ?? "";
185
+ f && (s = (await bn(q, {
186
+ tokenSymbol: f,
187
+ tokenAddress: he,
188
+ chainId: r
189
+ }))?.priceUsd ?? 0, t.console.log(
190
+ "[trails-sdk] [useQuote] Origin native token price:",
191
+ {
192
+ chainId: r,
193
+ symbol: f,
194
+ priceUsd: s
195
+ }
196
+ ));
197
+ } catch (d) {
198
+ t.console.error(
199
+ "[trails-sdk] [useQuote] Error getting origin native token price:",
200
+ d
201
+ );
202
+ }
203
+ const O = g?.find(
204
+ (d) => d.contractAddress?.toLowerCase() === i?.toLowerCase() && d.chainId === r
205
+ ), oe = g?.find(
206
+ (d) => d.contractAddress?.toLowerCase() === o?.toLowerCase() && d.chainId === a
207
+ ), de = O?.decimals;
208
+ if (!de)
69
209
  throw t.console.error(
70
210
  "[trails-sdk] [useQuote] Missing source token decimals:",
71
211
  {
72
- originToken: j,
73
- fromTokenAddress: c,
74
- fromChainId: k
212
+ originToken: O,
213
+ fromTokenAddress: i,
214
+ fromChainId: r
75
215
  }
76
216
  ), new Error("Source token decimals not found");
77
- const Q = G?.decimals;
78
- if (!Q)
217
+ const K = oe?.decimals;
218
+ if (!K)
79
219
  throw t.console.error(
80
220
  "[trails-sdk] Missing destination token decimals:",
81
221
  {
82
- destinationToken: G,
83
- toTokenAddress: H,
84
- toChainId: P
222
+ destinationToken: oe,
223
+ toTokenAddress: o,
224
+ toChainId: a
85
225
  }
86
226
  ), new Error("Destination token decimals not found");
87
- const Ae = G?.symbol ?? "", we = j?.symbol ?? "", _ = {
88
- account: K.account,
89
- originTokenAddress: c,
90
- originChainId: k,
91
- originTokenBalance: J,
92
- destinationChainId: P,
93
- recipient: q,
94
- destinationTokenAddress: H,
95
- swapAmount: T.toString(),
96
- tradeType: x ?? Dn.EXACT_OUTPUT,
97
- originTokenSymbol: we,
98
- destinationTokenSymbol: Ae,
99
- destinationCalldata: Z,
100
- client: K,
101
- apiClient: I,
102
- trailsClient: ne,
103
- originRelayer: he,
104
- destinationRelayer: ye,
105
- sourceTokenDecimals: re,
106
- destinationTokenDecimals: Q,
227
+ const J = oe?.symbol ?? "", ue = O?.symbol ?? "", G = {
228
+ account: u.account,
229
+ originTokenAddress: i,
230
+ originChainId: r,
231
+ originTokenBalance: _,
232
+ destinationChainId: a,
233
+ recipient: L,
234
+ destinationTokenAddress: o,
235
+ swapAmount: x.toString(),
236
+ tradeType: X ?? xn.EXACT_OUTPUT,
237
+ originTokenSymbol: ue,
238
+ destinationTokenSymbol: J,
239
+ destinationCalldata: Q,
240
+ client: u,
241
+ trailsClient: q,
242
+ sourceTokenDecimals: de,
243
+ destinationTokenDecimals: K,
107
244
  fee: "0",
108
245
  dryMode: !1,
109
- onTransactionStateChange: z ?? (() => {
246
+ onTransactionStateChange: j ?? (() => {
110
247
  }),
111
- slippageTolerance: ee?.toString(),
112
- quoteProvider: ie,
113
- gasless: u ?? !1,
114
- paymasterUrl: $,
115
- selectedFeeToken: A ?? void 0,
116
- abortSignal: X
248
+ slippageTolerance: le?.toString(),
249
+ quoteProvider: P,
250
+ paymasterUrl: W,
251
+ selectedFeeToken: R ?? void 0,
252
+ abortSignal: V,
253
+ originNativeTokenPriceUsd: s,
254
+ commitIntentFn: ie.mutateAsync,
255
+ executeIntentFn: h.mutateAsync
117
256
  };
118
- t.console.log("[trails-sdk] options", _);
119
- const { quote: r, send: be } = await Fn(_);
257
+ t.console.log("[trails-sdk] options", G);
258
+ const { quote: c, send: Te } = await Pn(G);
120
259
  return {
121
260
  quote: {
122
- fromAmount: r.originAmount,
123
- toAmount: r.destinationAmount,
124
- fromAmountMin: r.originAmountMin,
125
- toAmountMin: r.destinationAmountMin,
126
- originToken: r.originToken,
127
- destinationToken: r.destinationToken,
128
- originChain: r.originChain,
129
- destinationChain: r.destinationChain,
130
- fees: r.fees,
131
- priceImpact: r.priceImpact,
132
- completionEstimateSeconds: r.completionEstimateSeconds,
133
- slippageTolerance: r.slippageTolerance,
134
- transactionStates: r.transactionStates,
135
- originTokenRate: r.originTokenRate,
136
- destinationTokenRate: r.destinationTokenRate,
137
- quoteProvider: r.quoteProvider,
138
- fromAmountUsdDisplay: r.originAmountUsdDisplay ?? void 0,
139
- toAmountUsdDisplay: r.destinationAmountUsdDisplay ?? void 0,
140
- gasCostUsd: r.gasCostUsd ?? void 0,
141
- gasCostUsdDisplay: r.gasCostUsdDisplay ?? void 0,
142
- gasCost: r.gasCost ?? void 0,
143
- gasCostFormatted: r.gasCostFormatted ?? void 0
261
+ fromAmount: c.originAmount,
262
+ toAmount: c.destinationAmount,
263
+ fromAmountMin: c.originAmountMin,
264
+ toAmountMin: c.destinationAmountMin,
265
+ originToken: c.originToken,
266
+ destinationToken: c.destinationToken,
267
+ originChain: c.originChain,
268
+ destinationChain: c.destinationChain,
269
+ fees: c.fees,
270
+ priceImpact: c.priceImpact,
271
+ completionEstimateSeconds: c.completionEstimateSeconds,
272
+ slippageTolerance: c.slippageTolerance,
273
+ transactionStates: c.transactionStates,
274
+ originTokenRate: c.originTokenRate,
275
+ destinationTokenRate: c.destinationTokenRate,
276
+ quoteProvider: c.quoteProvider,
277
+ fromAmountUsdDisplay: c.originAmountUsdDisplay ?? void 0,
278
+ toAmountUsdDisplay: c.destinationAmountUsdDisplay ?? void 0,
279
+ gasCostUsd: c.gasCostUsd ?? void 0,
280
+ gasCostUsdDisplay: c.gasCostUsdDisplay ?? void 0,
281
+ gasCost: c.gasCost ?? void 0,
282
+ gasCostFormatted: c.gasCostFormatted ?? void 0
144
283
  },
145
284
  swap: async () => {
146
285
  const {
147
- originUserTxReceipt: g,
148
- destinationMetaTxnReceipt: ce,
149
- totalCompletionSeconds: W
150
- } = await be({
151
- selectedFeeToken: A ?? void 0
286
+ depositUserTxnReceipt: d,
287
+ destinationMetaTxnReceipt: f,
288
+ totalCompletionSeconds: v
289
+ } = await Te({
290
+ selectedFeeToken: R ?? void 0
152
291
  });
153
292
  return {
154
293
  originTransaction: {
155
- transactionHash: g?.transactionHash,
156
- explorerUrl: je({
157
- txHash: g?.transactionHash,
158
- chainId: k
294
+ transactionHash: d?.transactionHash,
295
+ explorerUrl: Me({
296
+ txHash: d?.transactionHash,
297
+ chainId: r
159
298
  }),
160
- receipt: g
299
+ receipt: d
161
300
  },
162
301
  destinationTransaction: {
163
- transactionHash: ce?.txnHash,
164
- explorerUrl: je({
165
- txHash: ce?.txnHash,
166
- chainId: P
302
+ transactionHash: f?.txnHash,
303
+ explorerUrl: Me({
304
+ txHash: f?.txnHash,
305
+ chainId: a
167
306
  }),
168
- receipt: ce
307
+ receipt: f
169
308
  },
170
- totalCompletionSeconds: W
309
+ totalCompletionSeconds: v
171
310
  };
172
311
  }
173
312
  };
174
- } catch (S) {
313
+ } catch (p) {
175
314
  throw t.console.error(
176
315
  "[trails-sdk] [useQuote] Error getting quote:",
177
- S
178
- ), Hn(S);
316
+ p
317
+ ), Ee(p);
179
318
  }
180
319
  },
181
320
  // Prevent unnecessary refetching
182
- enabled: !!(K && I && c && H && T && q && k && P && U),
321
+ enabled: !!(u && q && i && o && x && L && r && a && se && // !isLoadingTokens &&
322
+ g && g.length > 0),
183
323
  staleTime: 30 * 1e3,
184
324
  // Consider data fresh for 30 seconds
185
325
  refetchOnWindowFocus: !1,
@@ -196,133 +336,112 @@ function tt({
196
336
  return {
197
337
  quote: B?.quote || null,
198
338
  swap: B?.swap || null,
199
- isLoadingQuote: L,
200
- quoteError: Y,
201
- refetchQuote: () => Se(),
339
+ isLoadingQuote: ve,
340
+ quoteError: N,
341
+ quoteErrorPrettified: Rn(N),
342
+ refetchQuote: () => $(),
202
343
  abort: () => {
203
344
  t.console.log("[trails-sdk] useQuote abort() called"), t.console.log(
204
345
  "[trails-sdk] Active operations before abort:",
205
- Fe.getAll()
206
- ), h.current.abort(), Fe.abortAll(), t.console.log(
346
+ ye.getAll()
347
+ ), A.current.abort(), ye.abortAll(), t.console.log(
207
348
  "[trails-sdk] Abort completed, active operations:",
208
- Fe.getAll()
349
+ ye.getAll()
209
350
  );
210
351
  }
211
352
  };
212
353
  }
213
- const Je = 1e4;
214
- function st(K) {
354
+ function zn(u) {
215
355
  const {
216
- account: c,
217
- disableAutoExecute: k = !1,
218
- env: H,
219
- sequenceProjectAccessKey: P
220
- } = K, T = Ze({
221
- projectAccessKey: P
222
- }), [x, q] = d(!k), [Z, ee] = d(!1), [z, ie] = d(
356
+ account: i,
357
+ disableAutoExecute: r = !1
358
+ } = u, o = pe({}), [a, x] = l(!r), [X, L] = l(!1), [Q, le] = l(
223
359
  {}
224
- ), [u, $] = d(null), [A, N] = d(null), [C, O] = d(null), [h, X] = d(null), [I, ne] = d(), [R, U] = d(null), [
225
- fe,
226
- B
227
- ] = d(null), [L, Y] = d(
360
+ ), [j, P] = l(null), [W, R] = l(null), [k, U] = l(null), [A, V] = l(null), [q, se] = l(null), [g, ie] = l(), [h, B] = l(null), [
361
+ ve,
362
+ N
363
+ ] = l(null), [$, p] = l(
228
364
  null
229
- ), [Se, S] = d(null), [o, J] = d(null), [ye, he] = d({}), [j, G] = d(!1), [re, Q] = d(!1), {
230
- switchChain: Ae,
231
- isPending: we,
232
- error: _
233
- } = Wn(), r = Vn(), [be, ke] = d(!1), [M, g] = d(null), [ce, W] = d(null), [Ee, le] = d({}), [tn, pe] = d(null), { getRelayer: Pe, relayers: sn } = en({
234
- env: H
235
- }), {
236
- data: Ie,
237
- isError: xe,
238
- error: Me
239
- } = Kn(
240
- o?.to && o?.chainId && !o.error ? {
241
- to: o.to || void 0,
242
- data: o.data || void 0,
243
- value: o.value || void 0,
244
- chainId: o.chainId || void 0
365
+ ), [Pe, _] = l(null), [s, O] = l(null), [oe, de] = l({}), [K, J] = l(!1), [ue, G] = l(!1), {
366
+ switchChain: c,
367
+ isPending: Te,
368
+ error: Y
369
+ } = Ln(), M = Bn(), [d, f] = l(!1), [v, H] = l(null), [je, Ae] = l(null), [We, Re] = l({}), [Ve, ge] = l(null), {
370
+ data: me,
371
+ isError: Ce,
372
+ error: Se
373
+ } = Nn(
374
+ s?.to && s?.chainId && !s.error ? {
375
+ to: s.to || void 0,
376
+ data: s.data || void 0,
377
+ value: s.value || void 0,
378
+ chainId: s.chainId || void 0
245
379
  } : void 0
246
- ), w = He({
380
+ ), _e = Ge(), S = Ie({
247
381
  mutationFn: async (e) => {
248
- if (t.console.log(
249
- "[useTrails] commitIntentConfigMutation started with args:",
382
+ t.console.log(
383
+ "[useTrails] commitIntentMutation started with intent:",
250
384
  e
251
- ), !T)
252
- throw t.console.error("[useTrails] API client not available"), new Error("API client not available");
253
- if (!e.quoteProvider)
254
- throw t.console.error("[useTrails] quoteProvider is required"), new Error("quoteProvider is required");
385
+ );
255
386
  try {
256
- t.console.log("[useTrails] Calculating intent address..."), t.console.log("[useTrails] Main signer:", e.mainSignerAddress), t.console.log("[useTrails] Calls:", e.calls);
257
- const n = f.variables?.params.originChainId, a = f.variables?.params.destinationChainId;
258
- if (!n || !a)
387
+ const n = T.variables?.originChainId, m = T.variables?.destinationChainId;
388
+ if (!n || !m)
259
389
  throw t.console.error(
260
390
  "[useTrails] Could not determine origin/destination chain IDs for verification."
261
391
  ), new Error(
262
392
  "Could not determine origin/destination chain IDs for verification."
263
393
  );
264
- const { originIntentAddress: m, destinationIntentAddress: s } = Ge(
265
- e.mainSignerAddress,
394
+ t.console.log("[useTrails] Calculating intent address..."), t.console.log("[useTrails] Main signer:", e.ownerAddress), t.console.log("[useTrails] Calls:", e.calls);
395
+ const { originIntentAddress: w, destinationIntentAddress: y } = He(
396
+ e.ownerAddress,
266
397
  e.calls
267
398
  ), {
268
- originAddress: l,
269
- destinationAddress: v
270
- } = Nn(
399
+ originAddress: ae,
400
+ destinationAddress: z
401
+ } = Un(
271
402
  e.preconditions,
272
403
  n,
273
- a
404
+ m
274
405
  );
275
406
  t.console.log("[useTrails] Verification addresses:", {
276
- calculatedOrigin: m.toString(),
277
- calculatedDestination: s.toString(),
278
- preconditionOrigin: l,
279
- preconditionDestination: v
407
+ calculatedOrigin: w.toString(),
408
+ calculatedDestination: y.toString(),
409
+ preconditionOrigin: ae,
410
+ preconditionDestination: z
280
411
  });
281
- const p = !!l && me(
282
- ae(l),
283
- m
412
+ const E = !!ae && ce(
413
+ te(ae),
414
+ w
284
415
  );
285
- t.console.log("[useTrails] Origin verified:", p);
286
- const i = v && me(
287
- ae(v),
288
- s
289
- ) || !v && n === a && me(s, Ne);
416
+ t.console.log("[useTrails] Origin verified:", E);
417
+ const C = z && ce(
418
+ te(z),
419
+ y
420
+ ) || !z && n === m && ce(y, he);
290
421
  t.console.log(
291
422
  "[useTrails] Destination verified:",
292
- i
423
+ C
293
424
  );
294
- const y = p && i;
295
- if (pe({
296
- success: y,
297
- receivedOriginAddress: l,
298
- receivedDestinationAddress: v,
299
- calculatedOriginAddress: m.toString(),
300
- calculatedDestinationAddress: s.toString()
301
- }), !y)
425
+ const qe = E && C;
426
+ if (ge({
427
+ success: qe,
428
+ receivedOriginAddress: ae,
429
+ receivedDestinationAddress: z,
430
+ calculatedOriginAddress: w.toString(),
431
+ calculatedDestinationAddress: y.toString()
432
+ }), !qe)
302
433
  throw t.console.error("[useTrails] Address verification failed.", {
303
- isOriginVerified: p,
304
- isDestinationVerified: i
434
+ isOriginVerified: E,
435
+ isDestinationVerified: C
305
436
  }), new Error(
306
- `Address verification failed. Origin verified: ${p}, Destination verified: ${i}`
437
+ `Address verification failed. Origin verified: ${E}, Destination verified: ${C}`
307
438
  );
308
- t.console.log("[useTrails] Committing intent config to API...");
309
- const b = await T.commitIntentConfig({
310
- params: {
311
- originIntentAddress: m.toString(),
312
- destinationIntentAddress: s.toString(),
313
- mainSigner: e.mainSignerAddress,
314
- calls: e.calls,
315
- preconditions: e.preconditions,
316
- addressOverrides: {
317
- ...Qe,
318
- ...e.addressOverrides
319
- }
320
- }
321
- });
322
- return t.console.log("[useTrails] API Commit Response:", b), {
323
- originIntentAddress: m.toString(),
324
- destinationIntentAddress: s.toString(),
325
- response: b
439
+ t.console.log("[useTrails] Committing intent to API...");
440
+ const Oe = await _e.mutateAsync(e);
441
+ return t.console.log("[useTrails] API Commit Response:", Oe), {
442
+ originIntentAddress: w.toString(),
443
+ destinationIntentAddress: y.toString(),
444
+ response: Oe
326
445
  };
327
446
  } catch (n) {
328
447
  throw console.error("[useTrails] Error during commit intent mutation:", n), n;
@@ -335,95 +454,88 @@ function st(K) {
335
454
  ), t.console.log(
336
455
  "[useTrails] Setting committedOriginIntentAddress:",
337
456
  e.originIntentAddress
338
- ), U(e.originIntentAddress), B(e.destinationIntentAddress);
457
+ ), B(e.originIntentAddress), N(e.destinationIntentAddress);
339
458
  },
340
459
  onError: (e) => {
341
- t.console.error("[useTrails] Failed to commit intent config:", e), U(null), B(null);
460
+ t.console.error("[useTrails] Failed to commit intent config:", e), B(null), N(null);
342
461
  }
343
- }), {
344
- data: on,
345
- isLoading: an,
346
- error: rn
347
- } = nn({
348
- queryKey: ["getIntentConfig", R],
462
+ }), Z = Qe(), {
463
+ data: Ke,
464
+ isLoading: ze,
465
+ error: Xe
466
+ } = xe({
467
+ queryKey: ["getIntent", h],
349
468
  queryFn: async () => {
350
- if (!T || !R)
469
+ if (!o || !h)
351
470
  throw new Error("API client or committed intent address not available");
352
471
  return t.console.log(
353
472
  "Fetching intent config for address:",
354
- R
355
- ), await T.getIntentConfig({
356
- intentAddress: R
357
- });
473
+ h
474
+ ), (await o.getIntent({
475
+ intentId: h
476
+ })).intent;
358
477
  },
359
- enabled: !!R && !!T && w.isSuccess,
478
+ enabled: !!h && !!o && S.isSuccess,
360
479
  staleTime: 1e3 * 60 * 5,
361
480
  // 5 minutes
362
481
  retry: 1
363
482
  });
364
- async function Be(e) {
365
- return Gn(T, {
366
- params: {
367
- ...e.params,
368
- addressOverrides: {
369
- ...Qe,
370
- ...e.params.addressOverrides
371
- }
372
- }
373
- });
483
+ async function Je(e) {
484
+ const { intent: n } = await De(o, e);
485
+ return n;
374
486
  }
375
- const f = He({
487
+ const T = Ie({
376
488
  mutationFn: async (e) => {
377
- if (e.params.originChainId === e.params.destinationChainId && me(
378
- ae(e.params.originTokenAddress),
379
- ae(e.params.destinationTokenAddress)
489
+ if (e.originChainId === e.destinationChainId && ce(
490
+ te(e.originTokenAddress),
491
+ te(e.destinationTokenAddress)
380
492
  ))
381
493
  throw new Error(
382
494
  "The same token cannot be used as both the source and destination token."
383
495
  );
384
- if (!c.address)
496
+ if (!i.address)
385
497
  throw new Error("Missing selected token or account address");
386
- U(null), B(null), pe(null), X(null), $(null), N(null), O(null), Y(null), S(null);
387
- const n = await Be(e);
388
- return $(n.payloads.metaTxns), N(n.payloads.calls), O(n.payloads.preconditions), X(n.payloads.trailsFee), Y(n.payloads.originIntentAddress), S(n.payloads.destinationIntentAddress), U(null), B(null), pe(null), n;
498
+ B(null), N(null), ge(null), V(null), P(null), R(null), U(null), p(null), _(null);
499
+ const { intent: n } = await De(o, e);
500
+ return P(n.metaTxns), R(n.calls), U(n.preconditions), V(n.fees), p(n.originIntentAddress), _(n.destinationIntentAddress), se(n), B(null), N(null), ge(null), n;
389
501
  },
390
502
  onSuccess: (e) => {
391
- t.console.log("Intent Config Success:", e), X(e.payloads.trailsFee || null), Y(e.payloads.originIntentAddress), S(e.payloads.destinationIntentAddress), e.payloads?.calls && e.payloads.calls.length > 0 && e.payloads.preconditions && e.payloads.preconditions.length > 0 && e.payloads.metaTxns && e.payloads.metaTxns.length > 0 ? (N(e.payloads.calls), O(e.payloads.preconditions), $(e.payloads.metaTxns)) : (t.console.warn("API returned success but no operations found."), N(null), O(null), $(null));
503
+ t.console.log("Intent Config Success:", e), V(e.fees || null), p(e.originIntentAddress), _(e.destinationIntentAddress), e?.calls && e.calls.length > 0 && e.preconditions && e.preconditions.length > 0 && e.metaTxns && e.metaTxns.length > 0 ? (R(e.calls), U(e.preconditions), P(e.metaTxns)) : (t.console.warn("API returned success but no operations found."), R(null), U(null), P(null));
392
504
  },
393
505
  onError: (e) => {
394
- console.error("Intent Config Error:", e), N(null), O(null), $(null), X(null), Y(null), S(null);
506
+ console.error("Intent Config Error:", e), R(null), U(null), P(null), V(null), p(null), _(null);
395
507
  }
396
508
  });
397
- function cn(e) {
398
- f.mutate(e);
509
+ function Ye(e) {
510
+ T.mutate(e);
399
511
  }
400
- const ln = Ve(() => {
401
- t.console.log("[Trails] Clearing intent state"), N(null), O(null), $(null), X(null), U(null), B(null), pe(null), Y(null), S(null), he({}), ee(!1), le({});
402
- }, []), D = Ve(
403
- (e, n, a, m, s) => {
404
- g({
512
+ const Ze = Le(() => {
513
+ t.console.log("[Trails] Clearing intent state"), R(null), U(null), P(null), V(null), B(null), N(null), ge(null), p(null), _(null), de({}), L(!1), Re({});
514
+ }, []), D = Le(
515
+ (e, n, m, w, y) => {
516
+ H({
405
517
  txnHash: e,
406
518
  status: n === "success" ? "Success" : n === "reverted" ? "Failed" : n === "sending" ? "Sending..." : "Pending",
407
- revertReason: n === "reverted" ? s || "Transaction reverted" : void 0,
408
- gasUsed: a ? Number(a) : void 0,
409
- effectiveGasPrice: m?.toString()
519
+ revertReason: n === "reverted" ? y || "Transaction reverted" : void 0,
520
+ gasUsed: m ? Number(m) : void 0,
521
+ effectiveGasPrice: w?.toString()
410
522
  });
411
523
  },
412
524
  []
413
- ), dn = async () => {
525
+ ), en = async () => {
414
526
  if (t.console.log("Sending origin transaction..."), t.console.log(
415
- j,
416
- o,
417
- o?.error,
418
- o?.to,
419
- o?.data,
420
- o?.value,
421
- o?.chainId
422
- ), j || // Prevent duplicate transactions
423
- !o || o.error || !o.to || o.data === null || o.value === null || o.chainId === null) {
527
+ K,
528
+ s,
529
+ s?.error,
530
+ s?.to,
531
+ s?.data,
532
+ s?.value,
533
+ s?.chainId
534
+ ), K || // Prevent duplicate transactions
535
+ !s || s.error || !s.to || s.data === null || s.value === null || s.chainId === null) {
424
536
  t.console.error(
425
537
  "Origin call parameters not available or invalid:",
426
- o
538
+ s
427
539
  ), D(
428
540
  void 0,
429
541
  "reverted",
@@ -433,103 +545,103 @@ function st(K) {
433
545
  );
434
546
  return;
435
547
  }
436
- if (c.chainId !== o.chainId) {
437
- Q(!0), D(
548
+ if (i.chainId !== s.chainId) {
549
+ G(!0), D(
438
550
  void 0,
439
551
  "pending",
440
552
  void 0,
441
553
  void 0,
442
- `Switching to chain ${o.chainId}...`
554
+ `Switching to chain ${s.chainId}...`
443
555
  );
444
- const e = Xe({
445
- chain: Ce(o.chainId),
446
- transport: Ye(await c.connector.getProvider())
556
+ const e = Be({
557
+ chain: be(s.chainId),
558
+ transport: Ne(await i.connector.getProvider())
447
559
  // TODO: Add proper type
448
560
  });
449
561
  try {
450
- await We({
562
+ await Fe({
451
563
  walletClient: e,
452
- desiredChainId: o.chainId
453
- }), Q(!1);
564
+ desiredChainId: s.chainId
565
+ }), G(!1);
454
566
  } catch (n) {
455
- t.console.error("Chain switch failed:", n), n instanceof Error && n.message.includes("User rejected") && q(!1), D(
567
+ t.console.error("Chain switch failed:", n), n instanceof Error && n.message.includes("User rejected") && x(!1), D(
456
568
  void 0,
457
569
  "reverted",
458
570
  void 0,
459
571
  void 0,
460
572
  n instanceof Error ? n.message : "Unknown error switching chain"
461
- ), Q(!1);
573
+ ), G(!1);
462
574
  return;
463
575
  }
464
576
  }
465
- if (j)
577
+ if (K)
466
578
  t.console.warn(
467
579
  "Transaction already in progress. Skipping duplicate request."
468
580
  );
469
581
  else {
470
- if (G(!0), ne(void 0), D(void 0, "sending"), !Ie && !xe) {
471
- ke(!0);
582
+ if (J(!0), ie(void 0), D(void 0, "sending"), !me && !Ce) {
583
+ f(!0);
472
584
  return;
473
585
  }
474
- if (xe) {
475
- t.console.error("Gas estimation failed:", Me), D(
586
+ if (Ce) {
587
+ t.console.error("Gas estimation failed:", Se), D(
476
588
  void 0,
477
589
  "reverted",
478
590
  void 0,
479
591
  void 0,
480
- `Gas estimation failed: ${Me?.message}`
481
- ), G(!1);
592
+ `Gas estimation failed: ${Se?.message}`
593
+ ), J(!1);
482
594
  return;
483
595
  }
484
- const e = Ie ? BigInt(Math.floor(Number(Ie) * 1.2)) : void 0;
485
- r.sendTransaction(
596
+ const e = me ? BigInt(Math.floor(Number(me) * 1.2)) : void 0;
597
+ M.sendTransaction(
486
598
  {
487
- to: o.to,
488
- data: o.data,
489
- value: o.value,
490
- chainId: o.chainId,
599
+ to: s.to,
600
+ data: s.data,
601
+ value: s.value,
602
+ chainId: s.chainId,
491
603
  gas: e
492
604
  },
493
605
  {
494
606
  onSuccess: (n) => {
495
- t.console.log("Transaction sent, hash:", n), ne(n), G(!1);
607
+ t.console.log("Transaction sent, hash:", n), ie(n), J(!1);
496
608
  },
497
609
  onError: (n) => {
498
- t.console.error("Transaction failed:", n), n instanceof Error && (n.message.includes("User rejected") || n.message.includes("user rejected")) && q(!1), D(
610
+ t.console.error("Transaction failed:", n), n instanceof Error && (n.message.includes("User rejected") || n.message.includes("user rejected")) && x(!1), D(
499
611
  void 0,
500
612
  "reverted",
501
613
  void 0,
502
614
  void 0,
503
615
  n instanceof Error ? n.message : "Unknown error"
504
- ), G(!1);
616
+ ), J(!1);
505
617
  }
506
618
  }
507
619
  );
508
620
  }
509
621
  };
510
- F(() => {
511
- _ && (t.console.error("Chain switch error:", _), D(
622
+ b(() => {
623
+ Y && (t.console.error("Chain switch error:", Y), D(
512
624
  void 0,
513
625
  "reverted",
514
626
  void 0,
515
627
  void 0,
516
- `Chain switch failed: ${_.message || "Unknown error"}`
517
- ), Q(!1));
518
- }, [_, D]), F(() => {
519
- ke(!1);
520
- }, []), F(() => {
521
- o?.chainId && c.chainId === o.chainId && (t.console.log("No chain switch required"), Q(!1));
522
- }, [c.chainId, o?.chainId]), F(() => {
523
- if (o?.chainId && c.chainId !== o.chainId) {
628
+ `Chain switch failed: ${Y.message || "Unknown error"}`
629
+ ), G(!1));
630
+ }, [Y, D]), b(() => {
631
+ f(!1);
632
+ }, []), b(() => {
633
+ s?.chainId && i.chainId === s.chainId && (t.console.log("No chain switch required"), G(!1));
634
+ }, [i.chainId, s?.chainId]), b(() => {
635
+ if (s?.chainId && i.chainId !== s.chainId) {
524
636
  async function e() {
525
637
  try {
526
- const n = o.chainId, a = Xe({
527
- chain: Ce(n),
528
- transport: Ye(await c.connector.getProvider())
638
+ const n = s.chainId, m = Be({
639
+ chain: be(n),
640
+ transport: Ne(await i.connector.getProvider())
529
641
  // TODO: Add proper type
530
642
  });
531
- await We({
532
- walletClient: a,
643
+ await Fe({
644
+ walletClient: m,
533
645
  desiredChainId: n
534
646
  });
535
647
  } catch (n) {
@@ -538,365 +650,167 @@ function st(K) {
538
650
  }
539
651
  e().catch(t.console.error);
540
652
  }
541
- }, [c, o]);
653
+ }, [i, s]);
542
654
  const {
543
- data: E,
544
- isLoading: te,
545
- isSuccess: qe,
546
- isError: Oe,
547
- error: ve
548
- } = zn({
549
- hash: I,
655
+ data: F,
656
+ isLoading: ee,
657
+ isSuccess: we,
658
+ isError: ke,
659
+ error: fe
660
+ } = $n({
661
+ hash: g,
550
662
  confirmations: 1,
551
663
  query: {
552
- enabled: !!I
664
+ enabled: !!g
553
665
  }
554
666
  });
555
- F(() => {
556
- if (!I) {
557
- M?.txnHash && g(null), W(null), Object.keys(z).length > 0 && ie({});
667
+ b(() => {
668
+ if (!g) {
669
+ v?.txnHash && H(null), Ae(null), Object.keys(Q).length > 0 && le({});
558
670
  return;
559
671
  }
560
- if (!(M?.txnHash === I && (M?.status === "Success" || M?.status === "Failed") && !te)) {
561
- if (te) {
562
- g((e) => ({
563
- ...e?.txnHash === I ? e : {
672
+ if (!(v?.txnHash === g && (v?.status === "Success" || v?.status === "Failed") && !ee)) {
673
+ if (ee) {
674
+ H((e) => ({
675
+ ...e?.txnHash === g ? e : {
564
676
  gasUsed: void 0,
565
677
  effectiveGasPrice: void 0,
566
678
  revertReason: void 0
567
679
  },
568
- txnHash: I,
680
+ txnHash: g,
569
681
  status: "Pending"
570
682
  }));
571
683
  return;
572
684
  }
573
- if (qe && E) {
574
- const e = E.status === "success" ? "Success" : "Failed";
575
- g({
576
- txnHash: E.transactionHash,
685
+ if (we && F) {
686
+ const e = F.status === "success" ? "Success" : "Failed";
687
+ H({
688
+ txnHash: F.transactionHash,
577
689
  status: e,
578
- gasUsed: E.gasUsed ? Number(E.gasUsed) : void 0,
579
- effectiveGasPrice: E.effectiveGasPrice?.toString(),
580
- revertReason: E.status === "reverted" ? ve?.message || "Transaction reverted by receipt" : void 0
581
- }), e === "Success" && E.blockNumber ? (async () => {
582
- try {
583
- if (!o?.chainId) {
584
- t.console.error(
585
- "[Trails] Origin chainId not available for fetching origin block timestamp."
586
- ), W(null);
587
- return;
588
- }
589
- const a = Ce(o.chainId), s = await Ke({
590
- chain: a,
591
- transport: ze()
592
- }).getBlock({
593
- blockNumber: BigInt(E.blockNumber)
594
- });
595
- W(Number(s.timestamp));
596
- } catch (a) {
597
- t.console.error(
598
- "[Trails] Error fetching origin block timestamp:",
599
- a
600
- ), W(null);
601
- }
602
- })() : e !== "Success" && W(null), e === "Success" && u && u.length > 0 && x && !u.some((n) => z[`${n.chainId}-${n.id}`]) && (t.console.log(
603
- "Origin transaction successful, auto-sending all meta transactions..."
604
- ), se.mutate({ selectedId: null }));
605
- } else Oe && (g({
606
- txnHash: I,
690
+ gasUsed: F.gasUsed ? Number(F.gasUsed) : void 0,
691
+ effectiveGasPrice: F.effectiveGasPrice?.toString(),
692
+ revertReason: F.status === "reverted" ? fe?.message || "Transaction reverted by receipt" : void 0
693
+ }), e !== "Success" && Ae(null), e === "Success" && j && j.length > 0 && a && !j.some((n) => Q[`${n.chainId}-${n.id}`]) && (t.console.log(
694
+ "Origin transaction successful, calling executeIntent and auto-sending all meta transactions..."
695
+ ), h && g && Z.mutate({
696
+ intentId: h,
697
+ depositTransactionHash: g
698
+ }));
699
+ } else ke && (H({
700
+ txnHash: g,
607
701
  status: "Failed",
608
- revertReason: ve?.message || "Failed to get receipt",
702
+ revertReason: fe?.message || "Failed to get receipt",
609
703
  gasUsed: void 0,
610
704
  effectiveGasPrice: void 0
611
- }), W(null));
705
+ }), Ae(null));
612
706
  }
613
707
  }, [
614
- I,
615
- te,
616
- qe,
617
- Oe,
618
- E,
619
- ve,
620
- u,
621
- z,
622
- x,
623
- o?.chainId,
624
- M?.status,
625
- M?.txnHash
626
- ]), F(() => {
627
- x && w.isSuccess && o?.chainId && c.chainId === o.chainId && !o.error && o.to && o.data !== null && o.value !== null && !r.isPending && !te && !I && !re && !M && !Z && (t.console.log("Auto-executing transaction: All conditions met."), ee(!0), g({
708
+ g,
709
+ ee,
710
+ we,
711
+ ke,
712
+ F,
713
+ fe,
714
+ j,
715
+ Q,
716
+ a,
717
+ v?.status,
718
+ v?.txnHash,
719
+ h,
720
+ Z
721
+ ]), b(() => {
722
+ a && S.isSuccess && s?.chainId && i.chainId === s.chainId && !s.error && s.to && s.data !== null && s.value !== null && !M.isPending && !ee && !g && !ue && !v && !X && (t.console.log("Auto-executing transaction: All conditions met."), L(!0), H({
628
723
  status: "Sending..."
629
- }), r.sendTransaction(
724
+ }), M.sendTransaction(
630
725
  {
631
- to: o.to,
632
- data: o.data,
633
- value: o.value,
634
- chainId: o.chainId
726
+ to: s.to,
727
+ data: s.data,
728
+ value: s.value,
729
+ chainId: s.chainId
635
730
  },
636
731
  {
637
732
  onSuccess: (n) => {
638
- t.console.log("Auto-executed transaction sent, hash:", n), ne(n);
733
+ t.console.log("Auto-executed transaction sent, hash:", n), ie(n);
639
734
  },
640
735
  onError: (n) => {
641
- t.console.error("Auto-executed transaction failed:", n), n instanceof Error && (n.message.includes("User rejected") || n.message.includes("user rejected")) && q(!1), g({
736
+ t.console.error("Auto-executed transaction failed:", n), n instanceof Error && (n.message.includes("User rejected") || n.message.includes("user rejected")) && x(!1), H({
642
737
  status: "Failed",
643
738
  revertReason: n instanceof Error ? n.message : "Unknown error"
644
- }), ee(!1);
739
+ }), L(!1);
645
740
  }
646
741
  }
647
742
  ));
648
743
  }, [
649
- x,
650
- w.isSuccess,
651
- o,
652
- c.chainId,
653
- r.isPending,
654
- te,
655
- I,
656
- re,
657
- M,
658
- Z,
659
- r
660
- ]), F(() => {
661
- x && A && C && h && c.address && L && !w.isPending && !w.isSuccess && (t.console.log("Auto-committing intent configuration..."), w.mutate({
662
- mainSignerAddress: c.address,
663
- calls: A,
664
- preconditions: C,
665
- quoteProvider: h.quoteProvider,
666
- addressOverrides: f.variables?.params.addressOverrides
667
- }));
744
+ a,
745
+ S.isSuccess,
746
+ s,
747
+ i.chainId,
748
+ M.isPending,
749
+ ee,
750
+ g,
751
+ ue,
752
+ v,
753
+ X,
754
+ M
755
+ ]), b(() => {
756
+ a && W && k && A && i.address && $ && !S.isPending && !S.isSuccess && (t.console.log("Auto-committing intent configuration..."), q && S.mutate(q));
668
757
  }, [
669
- x,
758
+ a,
759
+ q,
760
+ W,
761
+ k,
670
762
  A,
671
- C,
672
- h,
673
- c.address,
674
- L,
675
- w,
676
- f.variables
763
+ i.address,
764
+ $,
765
+ S
677
766
  ]);
678
- const se = He({
679
- mutationFn: async ({ selectedId: e }) => {
680
- if (t.console.log("[trails-sdk] Starting sendMetaTxn mutation", {
681
- selectedId: e,
682
- hasIntentCallsPayloads: !!A,
683
- hasIntentPreconditions: !!C,
684
- hasMetaTxns: !!u,
685
- hasAccountAddress: !!c.address,
686
- quoteProvider: h?.quoteProvider
687
- }), !A || !C || !u || !c.address)
688
- throw new Error("Missing required data for meta-transaction");
689
- if (!h?.quoteProvider)
690
- throw new Error("quoteProvider is required");
691
- const n = _e(
692
- c.address,
693
- A
694
- ), a = e ? [u.find((s) => s.id === e)] : u;
695
- if (t.console.log("[trails-sdk] Selected transactions to send", {
696
- selectedId: e,
697
- totalMetaTxns: u.length,
698
- txnsToSendCount: a.filter((s) => s).length,
699
- txnsToSend: a.filter((s) => s).map((s) => ({
700
- id: s?.id,
701
- chainId: s?.chainId,
702
- walletAddress: s?.walletAddress,
703
- contract: s?.contract
704
- }))
705
- }), !a || e && !a[0])
706
- throw new Error("Meta transaction not found");
707
- const m = [];
708
- for (const s of a) {
709
- if (!s) continue;
710
- const l = `${s.chainId}-${s.id}`, v = z[l], p = Date.now();
711
- if (t.console.log(
712
- `[trails-sdk] Processing meta transaction ${l}`,
713
- {
714
- metaTxnId: s.id,
715
- chainId: s.chainId,
716
- walletAddress: s.walletAddress,
717
- contract: s.contract,
718
- intentAddress: n
719
- }
720
- ), v && p - v < Je) {
721
- const i = Math.ceil(
722
- (Je - (p - v)) / 1e3
723
- );
724
- t.console.log(
725
- `[trails-sdk] Meta transaction for ${l} was sent recently. Wait ${i}s before retry`,
726
- {
727
- lastSentTime: v,
728
- now: p,
729
- timeLeft: i
730
- }
731
- );
732
- continue;
733
- }
734
- try {
735
- const i = parseInt(s.chainId, 10);
736
- if (Number.isNaN(i) || i <= 0)
737
- throw t.console.error(
738
- "[trails-sdk] Invalid chainId for meta transaction",
739
- {
740
- chainId: i,
741
- operationKey: l,
742
- metaTxn: s
743
- }
744
- ), new Error(`Invalid chainId for meta transaction: ${i}`);
745
- const y = Pe(i);
746
- if (!y)
747
- throw t.console.error("[trails-sdk] No relayer found for chainId", {
748
- chainId: i,
749
- operationKey: l,
750
- availableRelayers: Array.from(sn.keys())
751
- }), new Error(`No relayer found for chainId: ${i}`);
752
- const b = C.filter(
753
- (oe) => oe.chainId && parseInt(oe.chainId, 10) === i
754
- );
755
- t.console.log(
756
- `[trails-sdk] Relaying meta transaction ${l} to intent ${n} via relayer`,
757
- {
758
- chainId: i,
759
- operationKey: l,
760
- intentAddress: n,
761
- relayer: !!y,
762
- preconditionsCount: b.length
763
- }
764
- );
765
- const { opHash: ge } = await y.sendMetaTxn(
766
- s.walletAddress,
767
- s.contract,
768
- s.input,
769
- Number(s.chainId),
770
- void 0,
771
- b
772
- );
773
- t.console.log(
774
- `[trails-sdk] Successfully sent meta transaction ${l}`,
775
- {
776
- operationKey: l,
777
- opHash: ge,
778
- chainId: i
779
- }
780
- );
781
- const Te = !1;
782
- m.push({
783
- operationKey: l,
784
- opHash: ge,
785
- success: !0
786
- });
787
- } catch (i) {
788
- const y = i instanceof Error ? i.message : "Unknown error";
789
- t.console.error(
790
- `[trails-sdk] Failed to send meta transaction ${l}`,
791
- {
792
- operationKey: l,
793
- error: y,
794
- chainId: s.chainId,
795
- metaTxnId: s.id,
796
- walletAddress: s.walletAddress,
797
- contract: s.contract
798
- }
799
- ), m.push({
800
- operationKey: l,
801
- error: y,
802
- success: !1
803
- });
804
- }
805
- }
806
- return m;
807
- },
808
- onSuccess: (e) => {
809
- t.console.log(
810
- "[trails-sdk] sendMetaTxn mutation completed successfully",
811
- {
812
- totalResults: e.length,
813
- successfulResults: e.filter((n) => n.success).length,
814
- failedResults: e.filter((n) => !n.success).length,
815
- results: e.map((n) => ({
816
- operationKey: n.operationKey,
817
- success: n.success,
818
- opHash: n.opHash || null,
819
- error: n.error || null
820
- }))
821
- }
822
- ), e.forEach(({ operationKey: n, opHash: a, success: m }) => {
823
- m && a ? (ie((s) => ({
824
- ...s,
825
- [n]: Date.now()
826
- })), he((s) => ({
827
- ...s,
828
- [n]: a
829
- }))) : t.console.warn(
830
- `[trails-sdk] Not updating state for failed meta transaction ${n}`,
831
- {
832
- operationKey: n,
833
- error: e.find((s) => s.operationKey === n)?.error
834
- }
835
- );
836
- });
837
- },
838
- onError: (e) => {
839
- t.console.error("[trails-sdk] Error in meta-transaction process", {
840
- error: e instanceof Error ? e.message : String(e),
841
- errorType: e instanceof Error ? e.constructor.name : typeof e,
842
- stack: e instanceof Error ? e.stack : void 0
843
- });
844
- },
845
- retry: 5,
846
- // Allow up to 2 retries
847
- retryDelay: (e) => Math.min(1e3 * 2 ** e, 3e4)
848
- // Exponential backoff
849
- }), [de, un] = d(null), [ue, gn] = d(null);
850
- F(() => {
851
- if (!L || !A?.[0]?.chainId || !de || !ue || !C || !c.address) {
852
- J(null);
767
+ const [ne, nn] = l(null), [re, tn] = l(null);
768
+ b(() => {
769
+ if (!$ || !W?.[0]?.chainId || !ne || !re || !k || !i.address) {
770
+ O(null);
853
771
  return;
854
772
  }
855
773
  try {
856
- const e = L;
857
- if (!e || !_n(e)) {
858
- J(null);
774
+ const e = $;
775
+ if (!e || !Dn(e)) {
776
+ O(null);
859
777
  return;
860
778
  }
861
- let n, a = "0x", m = 0n;
862
- const s = e;
863
- if (de === Ne) {
864
- const p = C.find(
865
- (i) => (i.type === "transfer-native" || i.type === "native-balance") && i.chainId === ue.toString()
866
- )?.data?.min?.toString();
867
- if (p === void 0)
868
- throw new Error(
869
- "Could not find native precondition (transfer-native or native-balance) or min amount"
870
- );
871
- m = BigInt(p), n = s;
779
+ let n, m = "0x", w = 0n;
780
+ const y = e;
781
+ if (ne === he || ne === Fn) {
782
+ const E = k.find(
783
+ (C) => (C.type === "transfer-native" || C.type === "native-balance") && C.chainId === re
784
+ )?.minAmount?.toString();
785
+ if (E === void 0)
786
+ throw new Error("Could not find precondition or min amount");
787
+ w = BigInt(E), n = y;
872
788
  } else {
873
- const p = C.find(
874
- (i) => i.type === "erc20-balance" && i.chainId === ue.toString() && i.data?.token && me(
875
- ae(i.data.token),
876
- ae(de)
789
+ const E = k.find(
790
+ (C) => C.type === "erc20-balance" && C.chainId === re && C.tokenAddress && ce(
791
+ te(C.tokenAddress),
792
+ te(ne)
877
793
  )
878
- )?.data?.min?.toString();
879
- if (p === void 0)
880
- throw new Error(
881
- "Could not find ERC20 balance precondition or min amount"
882
- );
883
- a = Bn({
884
- recipient: s,
885
- amount: BigInt(p)
886
- }), n = de;
794
+ )?.minAmount?.toString();
795
+ if (E === void 0)
796
+ throw new Error("Could not find precondition or min amount");
797
+ m = qn({
798
+ recipient: y,
799
+ amount: BigInt(E)
800
+ }), n = ne;
887
801
  }
888
- J({
802
+ O({
889
803
  to: n,
890
- data: a,
891
- value: m,
892
- chainId: ue,
804
+ data: m,
805
+ value: w,
806
+ chainId: re,
893
807
  error: void 0
894
808
  });
895
809
  } catch (e) {
896
810
  t.console.error(
897
811
  "[trails-sdk] Failed to calculate origin call params for UI:",
898
812
  e
899
- ), J({
813
+ ), O({
900
814
  to: null,
901
815
  data: null,
902
816
  value: null,
@@ -905,313 +819,217 @@ function st(K) {
905
819
  });
906
820
  }
907
821
  }, [
908
- A,
909
- de,
910
- ue,
911
- C,
912
- c.address,
913
- L
822
+ W,
823
+ ne,
824
+ re,
825
+ k,
826
+ i.address,
827
+ $
914
828
  ]);
915
- const V = Ln(
916
- u,
917
- Pe
829
+ const I = Gn(
830
+ h ?? void 0,
831
+ o
918
832
  );
919
- Qn(() => !u || Object.keys(V).length === 0 ? "no_statuses" : u.map((n) => `${n.chainId}-${n.id}`).sort().map((n) => {
920
- const a = V[n];
921
- return `${n}:${a ? a.status : "loading"}`;
922
- }).join(","), [u, V]);
923
- const Re = $e(/* @__PURE__ */ new Set()), Ue = $e(null);
924
- F(() => {
925
- if (t.console.log(
926
- "[trails-sdk] Running meta-transaction block timestamp effect:",
927
- {
928
- metaTxnsLength: u?.length,
929
- monitorStatusesLength: Object.keys(V).length
930
- }
931
- ), !u || u.length === 0) {
932
- t.console.log(
933
- "[trails-sdk] No meta transactions, clearing timestamps"
934
- ), Re.current.clear(), Object.keys(Ee).length > 0 && le({});
833
+ b(() => {
834
+ if (t.console.log("[trails-sdk] Intent receipt status update:", {
835
+ intentId: h,
836
+ done: I.done,
837
+ hasReceipt: !!I.intentReceipt
838
+ }), !I.intentReceipt) {
839
+ t.console.log("[trails-sdk] No intent receipt yet, waiting...");
935
840
  return;
936
841
  }
937
- if (!Object.keys(V).length) {
938
- t.console.log("[trails-sdk] No monitor statuses yet, waiting...");
939
- return;
842
+ const e = {};
843
+ if (I.intentReceipt.originTransaction) {
844
+ const n = I.intentReceipt.originTransaction, m = `${n.chainId}-${n.metaTxnId}`;
845
+ e[m] = { timestamp: null };
940
846
  }
941
- u.forEach(async (e, n) => {
942
- const a = `${e.chainId}-${e.id}`;
943
- if (Re.current.has(a)) {
944
- t.console.log(
945
- `[trails-sdk] MetaTxn ${a}: Already processed, skipping`
946
- );
947
- return;
948
- }
949
- const m = V[a];
950
- if (!m || m.status !== "confirmed") {
951
- t.console.log(
952
- `[trails-sdk] MetaTxn ${a}: Status not confirmed, skipping`
953
- );
954
- return;
955
- }
956
- const s = m.transactionHash;
957
- if (!s) {
958
- t.console.log(
959
- `[trails-sdk] MetaTxn ${a}: No transaction hash, skipping`
960
- );
961
- return;
962
- }
963
- t.console.log(
964
- `[trails-sdk] MetaTxn ${a}: Processing transaction ${s}`
965
- ), Re.current.add(a);
966
- try {
967
- const l = parseInt(e.chainId, 10);
968
- if (Number.isNaN(l) || l <= 0)
969
- throw new Error(
970
- `Invalid chainId for meta transaction: ${e.chainId}`
971
- );
972
- const v = Ce(l), p = Ke({
973
- chain: v,
974
- transport: ze()
975
- }), i = await p.getTransactionReceipt({
976
- hash: s
977
- });
978
- if (i && typeof i.blockNumber == "bigint") {
979
- const y = await p.getBlock({
980
- blockNumber: i.blockNumber
847
+ if (I.intentReceipt.destinationTransaction) {
848
+ const n = I.intentReceipt.destinationTransaction, m = `${n.chainId}-${n.metaTxnId}`;
849
+ e[m] = { timestamp: null };
850
+ }
851
+ Re(e);
852
+ }, [
853
+ I.intentReceipt,
854
+ I.done,
855
+ h
856
+ ]), b(() => {
857
+ if (I.done && I.intentReceipt && (t.console.log("[trails-sdk] Intent execution completed", {
858
+ intentId: h,
859
+ status: I.intentReceipt.status
860
+ }), I.intentReceipt.originTransaction?.txnHash)) {
861
+ const e = A?.quoteProvider ? String(A.quoteProvider).toLowerCase() : void 0, n = T.variables?.options?.quoteProvider ? String(
862
+ T.variables.options.quoteProvider
863
+ ).toLowerCase() : void 0;
864
+ if ((e === "cctp" || n === "cctp") && T.variables)
865
+ try {
866
+ On({
867
+ sourceTxHash: I.intentReceipt.originTransaction.txnHash,
868
+ sourceChainId: T.variables.originChainId,
869
+ destinationChainId: T.variables.destinationChainId,
870
+ trailsClient: o
981
871
  });
982
- t.console.log(
983
- `[trails-sdk] MetaTxn ${a}: Got block timestamp ${y.timestamp}`
984
- ), le((b) => ({
985
- ...b,
986
- [a]: {
987
- timestamp: Number(y.timestamp),
988
- error: void 0
989
- }
990
- }));
991
- try {
992
- const b = h?.quoteProvider ? String(h.quoteProvider).toLowerCase() : void 0, ge = f.variables?.params.provider ? String(
993
- f.variables.params.provider
994
- ).toLowerCase() : void 0, Te = b === "cctp" || ge === "cctp", oe = f.variables?.params.originChainId, De = f.variables?.params.destinationChainId;
995
- t.console.log("[Trails] isCctp", Te), t.console.log("[Trails] providerFromQuote", b), t.console.log("[Trails] providerFromArgs", ge), t.console.log("[Trails] trailsFee", h), t.console.log(
996
- "[Trails] createIntentMutation.variables",
997
- f.variables
998
- ), t.console.log(
999
- "[Trails] createIntentMutation.variables.params.provider",
1000
- f.variables?.params.provider
1001
- ), t.console.log(
1002
- "[Trails] createIntentMutation.variables.params.originChainId",
1003
- f.variables?.params.originChainId
1004
- ), t.console.log(
1005
- "[Trails] createIntentMutation.variables.params.destinationChainId",
1006
- f.variables?.params.destinationChainId
1007
- ), t.console.log(
1008
- "[Trails] lastQueuedCctpSourceTxHash",
1009
- Ue.current
1010
- ), t.console.log("[Trails] transactionHash", s), t.console.log(
1011
- "[Trails] originChainIdForCctp",
1012
- oe
1013
- ), t.console.log(
1014
- "[Trails] destinationChainIdForCctp",
1015
- De
1016
- ), Te && T && s && typeof oe == "number" && typeof De == "number" && Ue.current !== s && n === 0 && (Ue.current = s, await jn({
1017
- trailsClient: T,
1018
- sourceTxHash: s,
1019
- sourceChainId: oe,
1020
- destinationChainId: De
1021
- }));
1022
- } catch (b) {
1023
- t.console.error(
1024
- `[trails-sdk] Queue CCTP on meta-tx error (${a}):`,
1025
- b
1026
- );
1027
- }
1028
- } else
1029
- t.console.warn(
1030
- `[trails-sdk] MetaTxn ${a}: No block number in receipt`
1031
- ), le((y) => ({
1032
- ...y,
1033
- [a]: {
1034
- timestamp: null,
1035
- error: "Block number not found in receipt"
1036
- }
1037
- }));
1038
- } catch (l) {
1039
- t.console.error(
1040
- `[trails-sdk] MetaTxn ${a}: Error:`,
1041
- l
1042
- ), le((v) => ({
1043
- ...v,
1044
- [a]: {
1045
- timestamp: null,
1046
- error: l.message || "Failed to fetch receipt/timestamp"
1047
- }
1048
- }));
1049
- }
1050
- });
872
+ } catch (w) {
873
+ t.console.error("[Trails] queueCCTPTransfer error", w);
874
+ }
875
+ }
1051
876
  }, [
1052
- u,
1053
- V,
1054
- Ee,
877
+ I.done,
878
+ I.intentReceipt,
1055
879
  h,
1056
- f.variables,
1057
- T
880
+ A,
881
+ T.variables,
882
+ o
1058
883
  ]);
1059
- const mn = (e) => {
1060
- q(e);
884
+ const sn = (e) => {
885
+ x(e);
1061
886
  };
1062
- function fn(e) {
1063
- f.mutate({
1064
- ...e,
1065
- destinationSalt: Date.now().toString()
1066
- });
887
+ function on(e) {
888
+ T.mutate(e);
1067
889
  }
1068
- function hn(e) {
1069
- t.console.log("[trails-sdk] commitIntentConfig", e), w.mutate(e);
890
+ function rn(e) {
891
+ t.console.log("[trails-sdk] commitIntent", e), S.mutate(e);
1070
892
  }
1071
- function pn(e) {
893
+ function an(e) {
1072
894
  if (!e) {
1073
- J(null);
895
+ O(null);
1074
896
  return;
1075
897
  }
1076
- const { originChainId: n, tokenAddress: a } = e;
1077
- gn(n), un(a);
898
+ const { originChainId: n, tokenAddress: m } = e;
899
+ tn(n), nn(m);
1078
900
  }
1079
- function In(e) {
1080
- se.mutate({ selectedId: e });
901
+ const { chainId: cn } = i, Ue = s?.chainId, ln = T.isPending, dn = T.isSuccess, un = T.error, gn = T.variables, mn = S.isPending, fn = S.isSuccess, In = S.error, hn = S.variables, pn = Z.isPending, vn = Z.isSuccess, Tn = Z.error;
902
+ function An(e) {
903
+ Z.mutate(e);
1081
904
  }
1082
- const { chainId: vn } = c, Le = o?.chainId, Tn = f.isPending, Cn = f.isSuccess, Sn = f.error, yn = f.variables, An = w.isPending, wn = w.isSuccess, bn = w.error, kn = w.variables, En = se.isPending, Pn = se.isSuccess, xn = se.error, Mn = se.variables;
1083
905
  return {
1084
- trailsClient: T,
1085
- metaTxns: u,
1086
- intentCallsPayloads: A,
1087
- intentPreconditions: C,
1088
- trailsFee: h,
1089
- txnHash: I,
1090
- committedOriginIntentAddress: R,
1091
- committedDestinationIntentAddress: fe,
1092
- verificationStatus: tn,
1093
- getRelayer: Pe,
1094
- estimatedGas: Ie,
1095
- isEstimateError: xe,
1096
- estimateError: Me,
1097
- calculateIntentAddress: _e,
1098
- calculateOriginAndDestinationIntentAddresses: Ge,
1099
- committedIntentConfig: on,
1100
- isLoadingCommittedConfig: an,
1101
- committedConfigError: rn,
1102
- commitIntentConfig: hn,
1103
- commitIntentConfigPending: An,
1104
- commitIntentConfigSuccess: wn,
1105
- commitIntentConfigError: bn,
1106
- commitIntentConfigArgs: kn,
1107
- getIntentCallsPayloads: Be,
1108
- operationHashes: ye,
1109
- callIntentCallsPayload: cn,
1110
- sendOriginTransaction: dn,
1111
- switchChain: Ae,
1112
- isSwitchingChain: we,
1113
- switchChainError: _,
1114
- isTransactionInProgress: j,
1115
- isChainSwitchRequired: vn !== Le && !!Le,
1116
- sendTransaction: r.sendTransaction,
1117
- isSendingTransaction: r.isPending,
1118
- originCallStatus: M,
906
+ trailsClient: o,
907
+ metaTxns: j,
908
+ intentCallsPayloads: W,
909
+ intentPreconditions: k,
910
+ trailsFee: A,
911
+ txnHash: g,
912
+ committedOriginIntentAddress: h,
913
+ committedDestinationIntentAddress: ve,
914
+ verificationStatus: Ve,
915
+ estimatedGas: me,
916
+ isEstimateError: Ce,
917
+ estimateError: Se,
918
+ calculateIntentAddress: Mn,
919
+ calculateOriginAndDestinationIntentAddresses: He,
920
+ committedIntentConfig: Ke,
921
+ isLoadingCommittedConfig: ze,
922
+ committedConfigError: Xe,
923
+ commitIntent: rn,
924
+ commitIntentPending: mn,
925
+ commitIntentSuccess: fn,
926
+ commitIntentError: In,
927
+ commitIntentArgs: hn,
928
+ executeIntent: An,
929
+ executeIntentPending: pn,
930
+ executeIntentSuccess: vn,
931
+ executeIntentError: Tn,
932
+ getIntent: Je,
933
+ operationHashes: oe,
934
+ callIntentCallsPayload: Ye,
935
+ sendOriginTransaction: en,
936
+ switchChain: c,
937
+ isSwitchingChain: Te,
938
+ switchChainError: Y,
939
+ isTransactionInProgress: K,
940
+ isChainSwitchRequired: cn !== Ue && !!Ue,
941
+ sendTransaction: M.sendTransaction,
942
+ isSendingTransaction: M.isPending,
943
+ originCallStatus: v,
1119
944
  updateOriginCallStatus: D,
1120
- isEstimatingGas: be,
1121
- isAutoExecute: x,
1122
- updateAutoExecute: mn,
1123
- receipt: E,
1124
- isWaitingForReceipt: te,
1125
- receiptIsSuccess: qe,
1126
- receiptIsError: Oe,
1127
- receiptError: ve,
1128
- hasAutoExecuted: Z,
1129
- originCallSuccess: r.isSuccess,
1130
- sentMetaTxns: z,
1131
- sendMetaTxn: In,
1132
- sendMetaTxnPending: En,
1133
- sendMetaTxnSuccess: Pn,
1134
- sendMetaTxnError: xn,
1135
- sendMetaTxnArgs: Mn,
1136
- clearIntent: ln,
1137
- metaTxnMonitorStatuses: V,
1138
- createIntent: fn,
1139
- createIntentPending: Tn,
1140
- createIntentSuccess: Cn,
1141
- createIntentError: Sn,
1142
- createIntentArgs: yn,
1143
- originCallParams: o,
1144
- updateOriginCallParams: pn,
1145
- originBlockTimestamp: ce,
1146
- metaTxnBlockTimestamps: Ee,
1147
- originIntentAddress: L,
1148
- destinationIntentAddress: Se
945
+ isEstimatingGas: d,
946
+ isAutoExecute: a,
947
+ updateAutoExecute: sn,
948
+ receipt: F,
949
+ isWaitingForReceipt: ee,
950
+ receiptIsSuccess: we,
951
+ receiptIsError: ke,
952
+ receiptError: fe,
953
+ hasAutoExecuted: X,
954
+ originCallSuccess: M.isSuccess,
955
+ sentMetaTxns: Q,
956
+ clearIntent: Ze,
957
+ intentReceiptStatus: I,
958
+ createIntent: on,
959
+ createIntentPending: ln,
960
+ createIntentSuccess: dn,
961
+ createIntentError: un,
962
+ createIntentArgs: gn,
963
+ originCallParams: s,
964
+ updateOriginCallParams: an,
965
+ originBlockTimestamp: je,
966
+ metaTxnBlockTimestamps: We,
967
+ originIntentAddress: $,
968
+ destinationIntentAddress: Pe
1149
969
  };
1150
970
  }
1151
971
  export {
1152
- it as TRAILS_ROUTER_PLACEHOLDER_AMOUNT,
1153
- Dn as TradeType,
1154
- rt as TrailsClient,
1155
- ct as TrailsWidget,
1156
- _e as calculateIntentAddress,
1157
- Ge as calculateOriginAndDestinationIntentAddresses,
1158
- lt as commitIntentConfig,
1159
- dt as createModalController,
1160
- ut as declareSequenceEnv,
1161
- gt as getAPIClient,
1162
- mt as getAccountTotalBalanceUsd,
1163
- ft as getAccountTransactionHistory,
1164
- ht as getAllChains,
1165
- Ce as getChainInfo,
1166
- pt as getDebug,
1167
- Bn as getERC20TransferData,
1168
- It as getHasSufficientBalanceToken,
1169
- vt as getHasSufficientBalanceUsd,
1170
- Tt as getIndexerGatewayClient,
1171
- Gn as getIntentCallsPayloads,
1172
- Ct as getIntentTransactionHistory,
1173
- St as getMetaTxnReceipt,
1174
- yt as getMinLogLevel,
1175
- At as getRelayer,
1176
- wt as getSequenceApiUrl,
1177
- $n as getSequenceEnv,
1178
- bt as getSequenceIndexerUrl,
1179
- kt as getSequenceNodeGatewayUrl,
1180
- Et as getSequenceProjectAccessKey,
1181
- Pt as getSlippageTolerance,
1182
- xt as getSupportedChains,
1183
- Mt as getSupportedTokens,
1184
- qt as getTrailsApiUrl,
1185
- Ot as getTrailsClient,
1186
- Rt as getTxTimeDiff,
1187
- Ut as getWalletConnectProjectId,
972
+ Yn as InsufficientBalanceError,
973
+ Zn as TRAILS_ROUTER_PLACEHOLDER_AMOUNT,
974
+ xn as TradeType,
975
+ et as TrailsClient,
976
+ nt as TrailsWidget,
977
+ tt as UserRejectionError,
978
+ Mn as calculateIntentAddress,
979
+ He as calculateOriginAndDestinationIntentAddresses,
980
+ st as commitIntent,
981
+ it as createModalController,
982
+ ot as declareSequenceEnv,
983
+ rt as getAccountTotalBalanceUsd,
984
+ at as getAccountTransactionHistory,
985
+ ct as getAllChains,
986
+ be as getChainInfo,
987
+ lt as getDebug,
988
+ qn as getERC20TransferData,
989
+ dt as getHasSufficientBalanceToken,
990
+ ut as getHasSufficientBalanceUsd,
991
+ gt as getIndexerGatewayClient,
992
+ De as getIntent,
993
+ mt as getIntentTransactionHistory,
994
+ ft as getIsUserRejectionError,
995
+ It as getMinLogLevel,
996
+ ht as getSequenceEnv,
997
+ pt as getSequenceIndexerUrl,
998
+ vt as getSequenceNodeGatewayUrl,
999
+ Tt as getSequenceProjectAccessKey,
1000
+ At as getSlippageTolerance,
1001
+ Ct as getSupportedChains,
1002
+ St as getSupportedTokens,
1003
+ wt as getTrailsApiUrl,
1004
+ kt as getTrailsClient,
1005
+ yt as getTxTimeDiff,
1006
+ Et as getWalletConnectProjectId,
1188
1007
  t as logger,
1189
- Fn as prepareSend,
1190
- Dt as relayerSendMetaTx,
1191
- Ft as sendOriginTransaction,
1192
- Ht as setDebug,
1193
- $t as setSequenceApiUrl,
1194
- Nt as setSequenceEnv,
1195
- Bt as setSequenceIndexerUrl,
1196
- Lt as setSequenceNodeGatewayUrl,
1197
- jt as setSequenceProjectAccessKey,
1198
- Gt as setSlippageTolerance,
1199
- Qt as setTrailsApiUrl,
1200
- _t as setWalletConnectProjectId,
1201
- qn as useAPIClient,
1202
- Wt as useAccountTotalBalanceUsd,
1203
- Vt as useAccountTransactionHistory,
1204
- Kt as useHasSufficientBalanceToken,
1205
- zt as useHasSufficientBalanceUsd,
1206
- On as useIndexerGatewayClient,
1207
- Xt as useIntentTransactionHistory,
1208
- Ln as useMetaTxnsMonitor,
1209
- tt as useQuote,
1210
- en as useRelayers,
1211
- Yt as useSupportedChains,
1212
- Rn as useSupportedTokens,
1213
- Jt as useTokenBalances,
1214
- Zt as useTokenList,
1215
- st as useTrails,
1216
- Ze as useTrailsClient
1008
+ bt as pollIntentReceipt,
1009
+ Pn as prepareSend,
1010
+ xt as sendOriginTransaction,
1011
+ Pt as setDebug,
1012
+ Rt as setSequenceEnv,
1013
+ Ut as setSequenceIndexerUrl,
1014
+ qt as setSequenceNodeGatewayUrl,
1015
+ Ot as setSequenceProjectAccessKey,
1016
+ Mt as setSlippageTolerance,
1017
+ Ht as setTrailsApiUrl,
1018
+ Dt as setWalletConnectProjectId,
1019
+ Ft as useAccountTotalBalanceUsd,
1020
+ Lt as useAccountTransactionHistory,
1021
+ Ge as useCommitIntent,
1022
+ Qe as useExecuteIntent,
1023
+ Bt as useHasSufficientBalanceToken,
1024
+ Nt as useHasSufficientBalanceUsd,
1025
+ kn as useIndexerGatewayClient,
1026
+ Gn as useIntentReceiptMonitor,
1027
+ $t as useIntentTransactionHistory,
1028
+ Kn as useQuote,
1029
+ Gt as useSupportedChains,
1030
+ yn as useSupportedTokens,
1031
+ Qt as useTokenBalances,
1032
+ jt as useTokenList,
1033
+ zn as useTrails,
1034
+ pe as useTrailsClient
1217
1035
  };