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
@@ -1,27 +1,22 @@
1
1
  import { useConfig } from "@0xsequence/hooks"
2
- import { TrailsAPIClient } from "@0xsequence/trails-api"
2
+ import { TrailsApi } from "@0xsequence/trails-api"
3
3
  import { useMemo } from "react"
4
4
  import { getTrailsApiUrl, getSequenceProjectAccessKey } from "./config.js"
5
5
 
6
6
  export type TrailsClientConfig = {
7
- hostname?: string
8
- projectAccessKey?: string
7
+ apiKey?: string
9
8
  jwt?: string
9
+ hostname?: string
10
10
  }
11
11
 
12
- // Trails client for interacting with Trails APIs only
13
- export class TrailsClient extends TrailsAPIClient {
14
- constructor(hostname?: string, projectAccessKey?: string, jwt?: string) {
15
- super(hostname || getTrailsApiUrl(), projectAccessKey, jwt)
16
- }
17
- }
12
+ export class TrailsClient extends TrailsApi {}
18
13
 
19
14
  export function getTrailsClient({
20
- hostname,
21
- projectAccessKey = getSequenceProjectAccessKey(),
15
+ apiKey = getSequenceProjectAccessKey(),
22
16
  jwt,
17
+ hostname,
23
18
  }: TrailsClientConfig = {}): TrailsClient {
24
- return new TrailsClient(hostname, projectAccessKey, jwt)
19
+ return new TrailsApi(apiKey, { jwt, hostname })
25
20
  }
26
21
 
27
22
  export const useTrailsClient = (config?: TrailsClientConfig) => {
@@ -30,19 +25,11 @@ export const useTrailsClient = (config?: TrailsClientConfig) => {
30
25
  const trailsClient = useMemo(() => {
31
26
  return getTrailsClient({
32
27
  hostname: config?.hostname || getTrailsApiUrl(),
33
- projectAccessKey:
34
- getSequenceProjectAccessKey() ||
35
- config?.projectAccessKey ||
36
- projectAccessKey,
28
+ apiKey:
29
+ getSequenceProjectAccessKey() || config?.apiKey || projectAccessKey,
37
30
  jwt: config?.jwt || jwt,
38
31
  })
39
- }, [
40
- config?.hostname,
41
- config?.projectAccessKey,
42
- config?.jwt,
43
- projectAccessKey,
44
- jwt,
45
- ])
32
+ }, [config?.hostname, config?.apiKey, config?.jwt, projectAccessKey, jwt])
46
33
 
47
34
  return trailsClient
48
35
  }
@@ -0,0 +1,11 @@
1
+ // Polling intervals for different operations
2
+ export const POLLING_INTERVALS = {
3
+ // Consistent interval for transaction history polling (3 seconds)
4
+ TRANSACTION_HISTORY: 3000,
5
+ // Consistent interval for meta transaction polling (2 seconds)
6
+ META_TRANSACTION: 2000,
7
+ // Consistent interval for CCTP queue polling (5 seconds)
8
+ CCTP_QUEUE: 5000,
9
+ // Consistent interval for failure polling (2 seconds)
10
+ FAILURE_POLLING: 2000,
11
+ } as const
@@ -0,0 +1,210 @@
1
+ import type {
2
+ Account,
3
+ Chain,
4
+ PublicClient,
5
+ WalletClient,
6
+ TransactionReceipt,
7
+ } from "viem"
8
+ import { zeroAddress } from "viem"
9
+ import type { TrailsApi } from "@0xsequence/trails-api"
10
+ import type { TransactionState } from "../../transactions.js"
11
+ import type { CheckoutOnHandlers } from "../../widget/hooks/useCheckout.js"
12
+ import type {
13
+ DepositSignature,
14
+ GasFeeOptions,
15
+ ExecuteIntentResponse,
16
+ } from "@0xsequence/trails-api"
17
+ import type { SelectedFeeToken } from "../types.js"
18
+ import { logger } from "../../logger.js"
19
+ import { attemptGaslessDeposit, getDoGasless } from "./gaslessDeposit.js"
20
+ import { attemptStandardDeposit } from "./standardDeposit.js"
21
+
22
+ export async function attemptUserDepositTx({
23
+ originTokenAddress,
24
+ paymasterUrl,
25
+ chain,
26
+ account,
27
+ firstPreconditionMin,
28
+ originIntentAddress,
29
+ onOriginSend,
30
+ publicClient,
31
+ walletClient,
32
+ destinationTokenDecimals,
33
+ sourceTokenDecimals,
34
+ fee,
35
+ dryMode,
36
+ sourceTokenPriceUsd,
37
+ destinationTokenPriceUsd,
38
+ swapAmount,
39
+ onTransactionStateChange,
40
+ transactionStates,
41
+ fundMethod,
42
+ originTokenSymbol,
43
+ destinationTokenSymbol,
44
+ depositAmountUsd,
45
+ feeOptions,
46
+ trailsClient,
47
+ selectedFeeToken,
48
+ walletId,
49
+ abortSignal,
50
+ checkoutOnHandlers,
51
+ intentId,
52
+ executeIntentFn,
53
+ depositRecipientOverride,
54
+ isSameChainSameToken,
55
+ }: {
56
+ originTokenAddress: string
57
+ paymasterUrl?: string
58
+ chain: Chain
59
+ account: Account
60
+ firstPreconditionMin: string
61
+ originIntentAddress: string
62
+ onOriginSend?: () => void
63
+ publicClient: PublicClient
64
+ walletClient: WalletClient
65
+ destinationTokenDecimals: number
66
+ sourceTokenDecimals: number
67
+ swapAmount: string
68
+ dryMode: boolean
69
+ sourceTokenPriceUsd: number | null
70
+ destinationTokenPriceUsd: number | null
71
+ fee: string
72
+ onTransactionStateChange: (transactionStates: TransactionState[]) => void
73
+ transactionStates: TransactionState[]
74
+ fundMethod?: string
75
+ originTokenSymbol: string
76
+ destinationTokenSymbol: string
77
+ depositAmountUsd: number
78
+ feeOptions?: GasFeeOptions
79
+ trailsClient: TrailsApi
80
+ selectedFeeToken?: SelectedFeeToken
81
+ walletId?: string
82
+ abortSignal?: AbortSignal
83
+ checkoutOnHandlers?: CheckoutOnHandlers
84
+ intentId?: string
85
+ executeIntentFn?: (params: {
86
+ intentId: string
87
+ depositTransactionHash?: string
88
+ depositSignature?: DepositSignature
89
+ }) => Promise<ExecuteIntentResponse>
90
+ depositRecipientOverride?: string
91
+ isSameChainSameToken?: boolean
92
+ }): Promise<TransactionReceipt | null> {
93
+ let depositUserTxnReceipt: TransactionReceipt | null = null
94
+ const originChainId = chain.id
95
+
96
+ // Use override recipient if provided (for same-chain same-token non-gasless transfers)
97
+ // Otherwise use originIntentAddress
98
+ const effectiveDepositRecipient =
99
+ depositRecipientOverride || originIntentAddress
100
+
101
+ logger.console.log("[trails-sdk] attemptUserDepositTx called with:", {
102
+ fundMethod,
103
+ intentId,
104
+ hasPaymasterUrl: !!paymasterUrl,
105
+ depositRecipientOverride,
106
+ effectiveDepositRecipient,
107
+ isSameChainSameToken,
108
+ })
109
+
110
+ // Skip wallet deposit if fund method is qr-code
111
+ if (fundMethod === "qr-code" || fundMethod === "exchange") {
112
+ logger.console.log(
113
+ "[trails-sdk] Skipping wallet deposit for QR code mode - fundMethod is:",
114
+ fundMethod,
115
+ )
116
+ return null
117
+ }
118
+
119
+ const doGasless = getDoGasless(
120
+ originTokenAddress,
121
+ feeOptions,
122
+ selectedFeeToken,
123
+ walletId,
124
+ )
125
+ logger.console.log(
126
+ "[trails-sdk] [GASLESS-FLOW] [FEE-SELECT] doGasless check results:",
127
+ {
128
+ doGasless,
129
+ paymasterUrl,
130
+ hasFeeOptions: !!feeOptions,
131
+ feeOptionsCount: feeOptions?.feeOptions?.length || 0,
132
+ selectedFeeToken,
133
+ selectedFeeTokenSet:
134
+ selectedFeeToken !== null && selectedFeeToken !== undefined,
135
+ originTokenAddress,
136
+ isNotNative: originTokenAddress !== zeroAddress,
137
+ },
138
+ )
139
+ if (doGasless || paymasterUrl) {
140
+ logger.console.log(
141
+ "[trails-sdk] [GASLESS-FLOW] Entering gasless deposit flow",
142
+ {
143
+ doGasless,
144
+ hasPaymasterUrl: !!paymasterUrl,
145
+ paymasterUrl,
146
+ },
147
+ )
148
+ try {
149
+ await attemptGaslessDeposit({
150
+ paymasterUrl,
151
+ depositTokenAddress: originTokenAddress,
152
+ depositTokenAmount: firstPreconditionMin,
153
+ depositRecipient: originIntentAddress,
154
+ onOriginSend,
155
+ walletClient,
156
+ chain,
157
+ account,
158
+ trailsClient,
159
+ feeOptions: feeOptions,
160
+ selectedFeeToken: selectedFeeToken,
161
+ abortSignal,
162
+ checkoutOnHandlers,
163
+ intentId,
164
+ onTransactionStateChange,
165
+ transactionStates,
166
+ executeIntentFn,
167
+ })
168
+ // Gasless deposit submitted to backend, monitoring happens separately
169
+ depositUserTxnReceipt = null
170
+ } catch (error) {
171
+ logger.console.log("[trails-sdk] gassless attempt failed", error)
172
+ // If doGasless is true (ERC20 fee selected), re-throw error since we must use gasless
173
+ if (doGasless) {
174
+ throw error
175
+ }
176
+ }
177
+ }
178
+
179
+ // If gasless attempt failed, try to send a regular transaction
180
+ if (!depositUserTxnReceipt && !doGasless) {
181
+ depositUserTxnReceipt = await attemptStandardDeposit({
182
+ originTokenAddress,
183
+ firstPreconditionMin,
184
+ originIntentAddress,
185
+ onOriginSend,
186
+ publicClient,
187
+ walletClient,
188
+ originChainId,
189
+ chain,
190
+ account,
191
+ fee,
192
+ dryMode,
193
+ sourceTokenPriceUsd,
194
+ destinationTokenPriceUsd,
195
+ swapAmount,
196
+ destinationTokenDecimals,
197
+ sourceTokenDecimals,
198
+ onTransactionStateChange,
199
+ transactionStates,
200
+ originTokenSymbol,
201
+ destinationTokenSymbol,
202
+ depositAmountUsd,
203
+ checkoutOnHandlers,
204
+ isSameChainSameToken,
205
+ recipient: effectiveDepositRecipient,
206
+ })
207
+ }
208
+
209
+ return depositUserTxnReceipt
210
+ }