0xtrails 0.2.6 → 0.3.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 (215) 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-BMB3uDZt.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-QXPUrZVv.js} +46592 -49247
  13. package/dist/index.d.ts +9 -8
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +743 -922
  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/transactionIntent/constants.d.ts +7 -0
  39. package/dist/transactionIntent/constants.d.ts.map +1 -0
  40. package/dist/transactionIntent/deposits/depositOrchestrator.d.ts +44 -0
  41. package/dist/transactionIntent/deposits/depositOrchestrator.d.ts.map +1 -0
  42. package/dist/transactionIntent/deposits/gaslessDeposit.d.ts +30 -0
  43. package/dist/transactionIntent/deposits/gaslessDeposit.d.ts.map +1 -0
  44. package/dist/transactionIntent/deposits/index.d.ts +4 -0
  45. package/dist/transactionIntent/deposits/index.d.ts.map +1 -0
  46. package/dist/transactionIntent/deposits/standardDeposit.d.ts +30 -0
  47. package/dist/transactionIntent/deposits/standardDeposit.d.ts.map +1 -0
  48. package/dist/transactionIntent/execution/index.d.ts +2 -0
  49. package/dist/transactionIntent/execution/index.d.ts.map +1 -0
  50. package/dist/transactionIntent/execution/transactionState.d.ts +5 -0
  51. package/dist/transactionIntent/execution/transactionState.d.ts.map +1 -0
  52. package/dist/transactionIntent/handlers/crossChain.d.ts +82 -0
  53. package/dist/transactionIntent/handlers/crossChain.d.ts.map +1 -0
  54. package/dist/transactionIntent/handlers/index.d.ts +4 -0
  55. package/dist/transactionIntent/handlers/index.d.ts.map +1 -0
  56. package/dist/transactionIntent/handlers/sameChainDifferentToken.d.ts +62 -0
  57. package/dist/transactionIntent/handlers/sameChainDifferentToken.d.ts.map +1 -0
  58. package/dist/transactionIntent/handlers/sameChainSameToken.d.ts +72 -0
  59. package/dist/transactionIntent/handlers/sameChainSameToken.d.ts.map +1 -0
  60. package/dist/transactionIntent/index.d.ts +9 -0
  61. package/dist/transactionIntent/index.d.ts.map +1 -0
  62. package/dist/transactionIntent/quote/feeExtractors.d.ts +17 -0
  63. package/dist/transactionIntent/quote/feeExtractors.d.ts.map +1 -0
  64. package/dist/transactionIntent/quote/index.d.ts +4 -0
  65. package/dist/transactionIntent/quote/index.d.ts.map +1 -0
  66. package/dist/transactionIntent/quote/normalizeQuote.d.ts +34 -0
  67. package/dist/transactionIntent/quote/normalizeQuote.d.ts.map +1 -0
  68. package/dist/transactionIntent/quote/quoteHelpers.d.ts +5 -0
  69. package/dist/transactionIntent/quote/quoteHelpers.d.ts.map +1 -0
  70. package/dist/transactionIntent/types.d.ts +131 -0
  71. package/dist/transactionIntent/types.d.ts.map +1 -0
  72. package/dist/transactionIntent/utils/balanceChecker.d.ts +18 -0
  73. package/dist/transactionIntent/utils/balanceChecker.d.ts.map +1 -0
  74. package/dist/transactionIntent/utils/index.d.ts +4 -0
  75. package/dist/transactionIntent/utils/index.d.ts.map +1 -0
  76. package/dist/transactionIntent/utils/lifiHelpers.d.ts +10 -0
  77. package/dist/transactionIntent/utils/lifiHelpers.d.ts.map +1 -0
  78. package/dist/transactionIntent/utils/testnetHelpers.d.ts +3 -0
  79. package/dist/transactionIntent/utils/testnetHelpers.d.ts.map +1 -0
  80. package/dist/transactionIntent/validators.d.ts +6 -0
  81. package/dist/transactionIntent/validators.d.ts.map +1 -0
  82. package/dist/transactions.d.ts +2 -1
  83. package/dist/transactions.d.ts.map +1 -1
  84. package/dist/widget/components/AccountSettings.d.ts.map +1 -1
  85. package/dist/widget/components/ClassicSwap.d.ts +0 -1
  86. package/dist/widget/components/ClassicSwap.d.ts.map +1 -1
  87. package/dist/widget/components/ConfigDisplay.d.ts.map +1 -1
  88. package/dist/widget/components/ConnectedWallets.d.ts.map +1 -1
  89. package/dist/widget/components/DynamicSizeInputField.d.ts +13 -0
  90. package/dist/widget/components/DynamicSizeInputField.d.ts.map +1 -0
  91. package/dist/widget/components/Earn.d.ts +0 -1
  92. package/dist/widget/components/Earn.d.ts.map +1 -1
  93. package/dist/widget/components/FeeOptions.d.ts +5 -13
  94. package/dist/widget/components/FeeOptions.d.ts.map +1 -1
  95. package/dist/widget/components/Fund.d.ts +0 -1
  96. package/dist/widget/components/Fund.d.ts.map +1 -1
  97. package/dist/widget/components/FundMethods.d.ts.map +1 -1
  98. package/dist/widget/components/FundSwap.d.ts +0 -1
  99. package/dist/widget/components/FundSwap.d.ts.map +1 -1
  100. package/dist/widget/components/Pay.d.ts +0 -1
  101. package/dist/widget/components/Pay.d.ts.map +1 -1
  102. package/dist/widget/components/PoolDeposit.d.ts +0 -1
  103. package/dist/widget/components/PoolDeposit.d.ts.map +1 -1
  104. package/dist/widget/components/PoolWithdraw.d.ts +0 -18
  105. package/dist/widget/components/PoolWithdraw.d.ts.map +1 -1
  106. package/dist/widget/components/QuoteDetails.d.ts +1 -0
  107. package/dist/widget/components/QuoteDetails.d.ts.map +1 -1
  108. package/dist/widget/components/Swap.d.ts +0 -1
  109. package/dist/widget/components/Swap.d.ts.map +1 -1
  110. package/dist/widget/components/TransferPendingVertical.d.ts.map +1 -1
  111. package/dist/widget/components/WaasFeeOptions.d.ts.map +1 -1
  112. package/dist/widget/css/compiled.css +2 -2
  113. package/dist/widget/hooks/useCheckout.d.ts +17 -4
  114. package/dist/widget/hooks/useCheckout.d.ts.map +1 -1
  115. package/dist/widget/hooks/useDefaultTokenSelection.d.ts.map +1 -1
  116. package/dist/widget/hooks/useQuote.d.ts +3 -4
  117. package/dist/widget/hooks/useQuote.d.ts.map +1 -1
  118. package/dist/widget/hooks/useSelectedFeeToken.d.ts +1 -0
  119. package/dist/widget/hooks/useSelectedFeeToken.d.ts.map +1 -1
  120. package/dist/widget/hooks/useSendForm.d.ts +3 -4
  121. package/dist/widget/hooks/useSendForm.d.ts.map +1 -1
  122. package/dist/widget/hooks/useTokenList.d.ts.map +1 -1
  123. package/dist/widget/hooks/useWalletConnectionContext.d.ts +25 -0
  124. package/dist/widget/hooks/useWalletConnectionContext.d.ts.map +1 -0
  125. package/dist/widget/index.js +1 -1
  126. package/dist/widget/widget.d.ts +12 -7
  127. package/dist/widget/widget.d.ts.map +1 -1
  128. package/package.json +19 -21
  129. package/src/aave.ts +54 -1
  130. package/src/config.ts +57 -58
  131. package/src/constants.ts +8 -9
  132. package/src/error.ts +21 -3
  133. package/src/fees.ts +53 -42
  134. package/src/index.ts +35 -13
  135. package/src/intentReceiptMonitor.ts +102 -0
  136. package/src/intentReceiptPoller.ts +299 -0
  137. package/src/intents.ts +205 -171
  138. package/src/morpho.ts +58 -9
  139. package/src/mutations.ts +129 -0
  140. package/src/preconditions.ts +16 -21
  141. package/src/prepareSend.ts +80 -4514
  142. package/src/prices.ts +26 -22
  143. package/src/relaySdk.ts +2 -2
  144. package/src/sequenceWallet.ts +6 -73
  145. package/src/tokenBalances.ts +175 -69
  146. package/src/trails.ts +230 -722
  147. package/src/transactionIntent/constants.ts +11 -0
  148. package/src/transactionIntent/deposits/depositOrchestrator.ts +210 -0
  149. package/src/transactionIntent/deposits/gaslessDeposit.ts +588 -0
  150. package/src/transactionIntent/deposits/index.ts +3 -0
  151. package/src/transactionIntent/deposits/standardDeposit.ts +379 -0
  152. package/src/transactionIntent/execution/index.ts +1 -0
  153. package/src/transactionIntent/execution/transactionState.ts +35 -0
  154. package/src/transactionIntent/handlers/crossChain.ts +1707 -0
  155. package/src/transactionIntent/handlers/index.ts +3 -0
  156. package/src/transactionIntent/handlers/sameChainDifferentToken.ts +323 -0
  157. package/src/transactionIntent/handlers/sameChainSameToken.ts +712 -0
  158. package/src/transactionIntent/index.ts +9 -0
  159. package/src/transactionIntent/quote/feeExtractors.ts +81 -0
  160. package/src/transactionIntent/quote/index.ts +3 -0
  161. package/src/transactionIntent/quote/normalizeQuote.ts +367 -0
  162. package/src/transactionIntent/quote/quoteHelpers.ts +53 -0
  163. package/src/transactionIntent/types.ts +157 -0
  164. package/src/transactionIntent/utils/balanceChecker.ts +96 -0
  165. package/src/transactionIntent/utils/index.ts +3 -0
  166. package/src/transactionIntent/utils/lifiHelpers.ts +68 -0
  167. package/src/transactionIntent/utils/testnetHelpers.ts +10 -0
  168. package/src/transactionIntent/validators.ts +57 -0
  169. package/src/transactions.ts +36 -53
  170. package/src/widget/compiled.css +2 -2
  171. package/src/widget/components/AccountIntentTransactionHistory.tsx +36 -36
  172. package/src/widget/components/AccountSettings.tsx +23 -6
  173. package/src/widget/components/ClassicSwap.tsx +28 -53
  174. package/src/widget/components/ConfigDisplay.tsx +0 -11
  175. package/src/widget/components/ConnectedWallets.tsx +30 -4
  176. package/src/widget/components/DynamicSizeInputField.tsx +109 -0
  177. package/src/widget/components/Earn.tsx +0 -16
  178. package/src/widget/components/FeeBreakdown.tsx +3 -3
  179. package/src/widget/components/FeeOption.tsx +2 -2
  180. package/src/widget/components/FeeOptions.tsx +151 -112
  181. package/src/widget/components/Fund.tsx +0 -3
  182. package/src/widget/components/FundMethods.tsx +4 -3
  183. package/src/widget/components/FundSwap.tsx +0 -1
  184. package/src/widget/components/Pay.tsx +11 -16
  185. package/src/widget/components/PoolDeposit.tsx +35 -32
  186. package/src/widget/components/PoolWithdraw.tsx +153 -256
  187. package/src/widget/components/QuoteDetails.tsx +899 -494
  188. package/src/widget/components/Swap.tsx +0 -1
  189. package/src/widget/components/TransferPendingVertical.tsx +12 -8
  190. package/src/widget/components/WaasFeeOptions.tsx +23 -7
  191. package/src/widget/components/WalletConfirmation.tsx +1 -1
  192. package/src/widget/hooks/useAmountUsd.ts +9 -9
  193. package/src/widget/hooks/useCheckout.ts +97 -9
  194. package/src/widget/hooks/useDefaultTokenSelection.tsx +27 -21
  195. package/src/widget/hooks/useQuote.ts +86 -33
  196. package/src/widget/hooks/useSelectedFeeToken.tsx +32 -37
  197. package/src/widget/hooks/useSendForm.ts +37 -47
  198. package/src/widget/hooks/useTokenList.ts +34 -26
  199. package/src/widget/hooks/useWalletConnectionContext.tsx +128 -0
  200. package/src/widget/widget.tsx +197 -207
  201. package/dist/apiClient.d.ts +0 -9
  202. package/dist/apiClient.d.ts.map +0 -1
  203. package/dist/intentEntrypoint.d.ts +0 -114
  204. package/dist/intentEntrypoint.d.ts.map +0 -1
  205. package/dist/metaTxnMonitor.d.ts +0 -15
  206. package/dist/metaTxnMonitor.d.ts.map +0 -1
  207. package/dist/metaTxns.d.ts +0 -11
  208. package/dist/metaTxns.d.ts.map +0 -1
  209. package/dist/relayer.d.ts +0 -43
  210. package/dist/relayer.d.ts.map +0 -1
  211. package/src/apiClient.ts +0 -35
  212. package/src/intentEntrypoint.ts +0 -203
  213. package/src/metaTxnMonitor.ts +0 -171
  214. package/src/metaTxns.ts +0 -45
  215. package/src/relayer.ts +0 -289
@@ -0,0 +1,129 @@
1
+ import { useMutation } from "@tanstack/react-query"
2
+ import type { Intent, DepositSignature } from "@0xsequence/trails-api"
3
+ import { useTrailsClient } from "./trailsClient.js"
4
+ import { logger } from "./logger.js"
5
+ import { getFullErrorMessage } from "./error.js"
6
+ import {
7
+ trackIntentCommitStarted,
8
+ trackIntentCommitCompleted,
9
+ trackIntentCommitError,
10
+ } from "./analytics.js"
11
+
12
+ /**
13
+ * Hook for committing an intent to the Trails API
14
+ * Wraps trailsClient.commitIntent with mutation state and analytics tracking
15
+ */
16
+ export function useCommitIntent() {
17
+ const trailsClient = useTrailsClient()
18
+
19
+ return useMutation({
20
+ mutationFn: async (intent: Intent) => {
21
+ logger.console.log("[trails-sdk] useCommitIntent: Starting commit", {
22
+ intentId: intent.intentId,
23
+ originIntentAddress: intent.originIntentAddress,
24
+ })
25
+
26
+ const originChainIdStr = intent.calls[0]?.chainId
27
+ const destinationChainIdStr = intent.calls[1]?.chainId
28
+
29
+ try {
30
+ // Track intent commit start
31
+ trackIntentCommitStarted({
32
+ intentAddress: intent.originIntentAddress,
33
+ userAddress: intent.ownerAddress,
34
+ originChainId: originChainIdStr
35
+ ? Number(originChainIdStr)
36
+ : undefined,
37
+ destinationChainId: destinationChainIdStr
38
+ ? Number(destinationChainIdStr)
39
+ : undefined,
40
+ })
41
+
42
+ // Commit the intent
43
+ const response = await trailsClient.commitIntent({ intent })
44
+
45
+ logger.console.log("[trails-sdk] useCommitIntent: Commit successful", {
46
+ intentId: intent.intentId,
47
+ response,
48
+ })
49
+
50
+ // Track successful intent commit
51
+ trackIntentCommitCompleted({
52
+ intentAddress: intent.originIntentAddress,
53
+ userAddress: intent.ownerAddress,
54
+ originChainId: originChainIdStr
55
+ ? Number(originChainIdStr)
56
+ : undefined,
57
+ destinationChainId: destinationChainIdStr
58
+ ? Number(destinationChainIdStr)
59
+ : undefined,
60
+ })
61
+
62
+ return response
63
+ } catch (error) {
64
+ // Track intent commit error
65
+ trackIntentCommitError({
66
+ error: getFullErrorMessage(error),
67
+ userAddress: intent.ownerAddress,
68
+ intentAddress: intent.originIntentAddress,
69
+ originChainId: originChainIdStr
70
+ ? Number(originChainIdStr)
71
+ : undefined,
72
+ destinationChainId: destinationChainIdStr
73
+ ? Number(destinationChainIdStr)
74
+ : undefined,
75
+ })
76
+ throw error
77
+ }
78
+ },
79
+ })
80
+ }
81
+
82
+ /**
83
+ * Hook for executing an intent
84
+ * Wraps trailsClient.executeIntent with mutation state and analytics tracking
85
+ */
86
+ export function useExecuteIntent() {
87
+ const trailsClient = useTrailsClient()
88
+
89
+ return useMutation({
90
+ mutationFn: async ({
91
+ intentId,
92
+ depositTransactionHash,
93
+ depositSignature,
94
+ }: {
95
+ intentId: string
96
+ depositTransactionHash?: string
97
+ depositSignature?: DepositSignature
98
+ }) => {
99
+ logger.console.log("[trails-sdk] useExecuteIntent: Starting execution", {
100
+ intentId,
101
+ depositTransactionHash,
102
+ hasDepositSignature: !!depositSignature,
103
+ })
104
+
105
+ // Validate that we have either traditional or gasless deposit params
106
+ if (!depositTransactionHash && !depositSignature) {
107
+ throw new Error(
108
+ "[trails-sdk] Either depositTransactionHash or depositSignature must be provided",
109
+ )
110
+ }
111
+
112
+ const response = await trailsClient.executeIntent({
113
+ intentId,
114
+ depositTransactionHash,
115
+ depositSignature,
116
+ })
117
+
118
+ logger.console.log(
119
+ "[trails-sdk] useExecuteIntent: Execution successful",
120
+ {
121
+ intentId,
122
+ response,
123
+ },
124
+ )
125
+
126
+ return response
127
+ },
128
+ })
129
+ }
@@ -1,38 +1,35 @@
1
- import type { IntentPrecondition } from "@0xsequence/trails-api"
1
+ import type { TransactionPrecondition } from "@0xsequence/trails-api"
2
+
3
+ // Backward compatibility alias
4
+ export type IntentPrecondition = TransactionPrecondition
2
5
 
3
6
  export function findPreconditionAddresses(
4
- preconditions: IntentPrecondition[],
7
+ preconditions: TransactionPrecondition[],
5
8
  originChainId: number,
6
9
  destinationChainId: number,
7
10
  ): { originAddress?: string; destinationAddress?: string } {
8
11
  const origin = preconditions.find(
9
- (p) => p.chainId === originChainId.toString() && p.data?.address,
12
+ (p) => p.chainId === originChainId && p.ownerAddress,
10
13
  )
11
14
  const destination = preconditions.find(
12
- (p) => p.chainId === destinationChainId.toString() && p.data?.address,
15
+ (p) => p.chainId === destinationChainId && p.ownerAddress,
13
16
  )
14
17
 
15
18
  return {
16
- originAddress: origin?.data?.address,
17
- destinationAddress: destination?.data?.address,
19
+ originAddress: origin?.ownerAddress,
20
+ destinationAddress: destination?.ownerAddress,
18
21
  }
19
22
  }
20
23
 
21
24
  export function findChainAndAddressesFromPreconditions(
22
- preconditions: IntentPrecondition[],
25
+ preconditions: TransactionPrecondition[],
23
26
  ): { chainId: number; address: string }[] {
24
27
  const addressesFromPreconditions: { chainId: number; address: string }[] = []
25
28
  preconditions.forEach((p) => {
26
- if (
27
- (p.type === "erc20-balance" ||
28
- p.type === "native-balance" ||
29
- p.type === "transfer-native") &&
30
- p.data?.address &&
31
- p.chainId
32
- ) {
29
+ if (p.type === "tokenMinBalance" && p.ownerAddress && p.chainId) {
33
30
  addressesFromPreconditions.push({
34
- chainId: parseInt(p.chainId, 10),
35
- address: p.data.address,
31
+ chainId: p.chainId,
32
+ address: p.ownerAddress,
36
33
  })
37
34
  }
38
35
  })
@@ -40,13 +37,11 @@ export function findChainAndAddressesFromPreconditions(
40
37
  }
41
38
 
42
39
  export function findFirstPreconditionForChainId(
43
- preconditions: IntentPrecondition[],
40
+ preconditions: TransactionPrecondition[],
44
41
  chainId: number,
45
- ): IntentPrecondition | null {
42
+ ): TransactionPrecondition | null {
46
43
  const precondition = preconditions.find(
47
- (p) =>
48
- (p.type === "erc20-balance" || p.type === "native-balance") &&
49
- p.chainId === chainId?.toString(),
44
+ (p) => p.type === "tokenMinBalance" && p.chainId === chainId,
50
45
  )
51
46
  return precondition ?? null
52
47
  }