@lifi/sdk 3.3.0-alpha.3 → 3.3.0-beta.1

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 (431) hide show
  1. package/README.md +2 -2
  2. package/package.json +5 -8
  3. package/src/_cjs/config.js +4 -1
  4. package/src/_cjs/config.js.map +1 -1
  5. package/src/_cjs/core/EVM/EVM.js +1 -1
  6. package/src/_cjs/core/EVM/EVMStepExecutor.js +19 -7
  7. package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -1
  8. package/src/_cjs/core/EVM/checkAllowance.js +5 -1
  9. package/src/_cjs/core/EVM/checkAllowance.js.map +1 -1
  10. package/src/_cjs/core/EVM/getAllowance.js +3 -3
  11. package/src/_cjs/core/EVM/getAllowance.js.map +1 -1
  12. package/src/_cjs/core/EVM/getEVMBalance.js +4 -6
  13. package/src/_cjs/core/EVM/getEVMBalance.js.map +1 -1
  14. package/src/_cjs/core/EVM/parseEVMErrors.js +3 -3
  15. package/src/_cjs/core/EVM/parseEVMErrors.js.map +1 -1
  16. package/src/_cjs/core/EVM/switchChain.js +5 -1
  17. package/src/_cjs/core/EVM/switchChain.js.map +1 -1
  18. package/src/_cjs/core/EVM/utils.js +4 -1
  19. package/src/_cjs/core/EVM/utils.js.map +1 -1
  20. package/src/_cjs/core/EVM/waitForTransactionReceipt.js +5 -4
  21. package/src/_cjs/core/EVM/waitForTransactionReceipt.js.map +1 -1
  22. package/src/_cjs/core/Solana/Solana.js +1 -1
  23. package/src/_cjs/core/Solana/SolanaStepExecutor.js +14 -6
  24. package/src/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -1
  25. package/src/_cjs/core/Solana/connection.js +1 -3
  26. package/src/_cjs/core/Solana/connection.js.map +1 -1
  27. package/src/_cjs/core/Solana/getSolanaBalance.js +3 -3
  28. package/src/_cjs/core/Solana/getSolanaBalance.js.map +1 -1
  29. package/src/_cjs/core/Solana/isSVMAddress.js +1 -1
  30. package/src/_cjs/core/Solana/isSVMAddress.js.map +1 -1
  31. package/src/_cjs/core/Solana/parseSolanaErrors.js +1 -1
  32. package/src/_cjs/core/Solana/parseSolanaErrors.js.map +1 -1
  33. package/src/_cjs/core/StatusManager.js +4 -3
  34. package/src/_cjs/core/StatusManager.js.map +1 -1
  35. package/src/_cjs/core/UTXO/UTXO.js +1 -1
  36. package/src/_cjs/core/UTXO/UTXOStepExecutor.js +43 -21
  37. package/src/_cjs/core/UTXO/UTXOStepExecutor.js.map +1 -1
  38. package/src/_cjs/core/UTXO/getUTXOBalance.js +3 -3
  39. package/src/_cjs/core/UTXO/getUTXOBalance.js.map +1 -1
  40. package/src/_cjs/core/UTXO/getUTXOPublicClient.js +1 -0
  41. package/src/_cjs/core/UTXO/getUTXOPublicClient.js.map +1 -1
  42. package/src/_cjs/core/UTXO/isUTXOAddress.js +7 -7
  43. package/src/_cjs/core/UTXO/isUTXOAddress.js.map +1 -1
  44. package/src/_cjs/core/UTXO/parseUTXOErrors.js +5 -1
  45. package/src/_cjs/core/UTXO/parseUTXOErrors.js.map +1 -1
  46. package/src/_cjs/core/UTXO/utxo-stack/actions/getBlock.js +31 -0
  47. package/src/_cjs/core/UTXO/utxo-stack/actions/getBlock.js.map +1 -0
  48. package/src/_cjs/core/UTXO/utxo-stack/actions/getBlockStats.js +27 -0
  49. package/src/_cjs/core/UTXO/utxo-stack/actions/getBlockStats.js.map +1 -0
  50. package/src/_cjs/core/UTXO/utxo-stack/actions/getUTXOTransaction.js +18 -9
  51. package/src/_cjs/core/UTXO/utxo-stack/actions/getUTXOTransaction.js.map +1 -1
  52. package/src/_cjs/core/UTXO/utxo-stack/actions/waitForTransaction.js +185 -0
  53. package/src/_cjs/core/UTXO/utxo-stack/actions/waitForTransaction.js.map +1 -0
  54. package/src/_cjs/core/UTXO/utxo-stack/actions/watchBlockNumber.js +45 -0
  55. package/src/_cjs/core/UTXO/utxo-stack/actions/watchBlockNumber.js.map +1 -0
  56. package/src/_cjs/core/UTXO/utxo-stack/decorators/UTXOAPIActions.js.map +1 -1
  57. package/src/_cjs/core/UTXO/utxo-stack/types/blockStats.js +3 -0
  58. package/src/_cjs/core/UTXO/utxo-stack/types/blockStats.js.map +1 -0
  59. package/src/_cjs/core/UTXO/utxo-stack/utils/cancelTransaction.js +51 -0
  60. package/src/_cjs/core/UTXO/utxo-stack/utils/cancelTransaction.js.map +1 -0
  61. package/src/_cjs/core/UTXO/utxo-stack/utils/modifyFee.js +50 -0
  62. package/src/_cjs/core/UTXO/utxo-stack/utils/modifyFee.js.map +1 -0
  63. package/src/_cjs/core/UTXO/utxo-stack/utils/observe.js +48 -0
  64. package/src/_cjs/core/UTXO/utxo-stack/utils/observe.js.map +1 -0
  65. package/src/_cjs/core/UTXO/utxo-stack/utils/poll.js +30 -0
  66. package/src/_cjs/core/UTXO/utxo-stack/utils/poll.js.map +1 -0
  67. package/src/_cjs/core/checkBalance.js +2 -7
  68. package/src/_cjs/core/checkBalance.js.map +1 -1
  69. package/src/_cjs/core/execution.js.map +1 -1
  70. package/src/_cjs/core/stepComparison.js +1 -1
  71. package/src/_cjs/core/waitForReceivingTransaction.js +36 -41
  72. package/src/_cjs/core/waitForReceivingTransaction.js.map +1 -1
  73. package/src/_cjs/createConfig.js.map +1 -1
  74. package/src/_cjs/errors/baseError.js +1 -1
  75. package/src/_cjs/errors/baseError.js.map +1 -1
  76. package/src/_cjs/errors/constants.js +1 -0
  77. package/src/_cjs/errors/constants.js.map +1 -1
  78. package/src/_cjs/errors/errors.js +1 -1
  79. package/src/_cjs/errors/errors.js.map +1 -1
  80. package/src/_cjs/errors/httpError.js +1 -1
  81. package/src/_cjs/errors/httpError.js.map +1 -1
  82. package/src/_cjs/helpers.js +3 -3
  83. package/src/_cjs/helpers.js.map +1 -1
  84. package/src/_cjs/index.js +67 -11
  85. package/src/_cjs/index.js.map +1 -1
  86. package/src/_cjs/request.js +1 -1
  87. package/src/_cjs/request.js.map +1 -1
  88. package/src/_cjs/services/api.js +30 -18
  89. package/src/_cjs/services/api.js.map +1 -1
  90. package/src/_cjs/services/balance.js +11 -4
  91. package/src/_cjs/services/balance.js.map +1 -1
  92. package/src/_cjs/utils/getTransactionMessage.js +3 -4
  93. package/src/_cjs/utils/getTransactionMessage.js.map +1 -1
  94. package/src/_cjs/utils/withDedupe.js.map +1 -1
  95. package/src/_cjs/version.js +1 -1
  96. package/src/_cjs/version.js.map +1 -1
  97. package/src/_esm/config.js +4 -1
  98. package/src/_esm/config.js.map +1 -1
  99. package/src/_esm/core/EVM/EVM.js +1 -1
  100. package/src/_esm/core/EVM/EVMStepExecutor.js +18 -6
  101. package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -1
  102. package/src/_esm/core/EVM/checkAllowance.js +5 -1
  103. package/src/_esm/core/EVM/checkAllowance.js.map +1 -1
  104. package/src/_esm/core/EVM/getAllowance.js +3 -3
  105. package/src/_esm/core/EVM/getAllowance.js.map +1 -1
  106. package/src/_esm/core/EVM/getEVMBalance.js +4 -6
  107. package/src/_esm/core/EVM/getEVMBalance.js.map +1 -1
  108. package/src/_esm/core/EVM/parseEVMErrors.js +2 -3
  109. package/src/_esm/core/EVM/parseEVMErrors.js.map +1 -1
  110. package/src/_esm/core/EVM/publicClient.js +1 -1
  111. package/src/_esm/core/EVM/publicClient.js.map +1 -1
  112. package/src/_esm/core/EVM/switchChain.js +5 -1
  113. package/src/_esm/core/EVM/switchChain.js.map +1 -1
  114. package/src/_esm/core/EVM/types.js +0 -1
  115. package/src/_esm/core/EVM/types.js.map +1 -1
  116. package/src/_esm/core/EVM/utils.js +4 -2
  117. package/src/_esm/core/EVM/utils.js.map +1 -1
  118. package/src/_esm/core/EVM/waitForTransactionReceipt.js +3 -2
  119. package/src/_esm/core/EVM/waitForTransactionReceipt.js.map +1 -1
  120. package/src/_esm/core/Solana/Solana.js +1 -1
  121. package/src/_esm/core/Solana/SolanaStepExecutor.js +13 -6
  122. package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -1
  123. package/src/_esm/core/Solana/connection.js +1 -3
  124. package/src/_esm/core/Solana/connection.js.map +1 -1
  125. package/src/_esm/core/Solana/getSolanaBalance.js +3 -3
  126. package/src/_esm/core/Solana/getSolanaBalance.js.map +1 -1
  127. package/src/_esm/core/Solana/isSVMAddress.js +1 -1
  128. package/src/_esm/core/Solana/isSVMAddress.js.map +1 -1
  129. package/src/_esm/core/Solana/parseSolanaErrors.js +1 -1
  130. package/src/_esm/core/Solana/parseSolanaErrors.js.map +1 -1
  131. package/src/_esm/core/Solana/types.js +0 -1
  132. package/src/_esm/core/Solana/types.js.map +1 -1
  133. package/src/_esm/core/StatusManager.js +13 -6
  134. package/src/_esm/core/StatusManager.js.map +1 -1
  135. package/src/_esm/core/UTXO/UTXO.js +1 -1
  136. package/src/_esm/core/UTXO/UTXOStepExecutor.js +44 -38
  137. package/src/_esm/core/UTXO/UTXOStepExecutor.js.map +1 -1
  138. package/src/_esm/core/UTXO/getUTXOAPIPublicClient.js.map +1 -1
  139. package/src/_esm/core/UTXO/getUTXOBalance.js +3 -3
  140. package/src/_esm/core/UTXO/getUTXOBalance.js.map +1 -1
  141. package/src/_esm/core/UTXO/getUTXOPublicClient.js +2 -1
  142. package/src/_esm/core/UTXO/getUTXOPublicClient.js.map +1 -1
  143. package/src/_esm/core/UTXO/isUTXOAddress.js +7 -7
  144. package/src/_esm/core/UTXO/isUTXOAddress.js.map +1 -1
  145. package/src/_esm/core/UTXO/parseUTXOErrors.js +6 -1
  146. package/src/_esm/core/UTXO/parseUTXOErrors.js.map +1 -1
  147. package/src/_esm/core/UTXO/types.js +0 -1
  148. package/src/_esm/core/UTXO/types.js.map +1 -1
  149. package/src/_esm/core/UTXO/utxo-stack/actions/getBalance.js +0 -1
  150. package/src/_esm/core/UTXO/utxo-stack/actions/getBalance.js.map +1 -1
  151. package/src/_esm/core/UTXO/utxo-stack/actions/getBlock.js +28 -0
  152. package/src/_esm/core/UTXO/utxo-stack/actions/getBlock.js.map +1 -0
  153. package/src/_esm/core/UTXO/utxo-stack/actions/getBlockCount.js +0 -1
  154. package/src/_esm/core/UTXO/utxo-stack/actions/getBlockCount.js.map +1 -1
  155. package/src/_esm/core/UTXO/utxo-stack/actions/getBlockStats.js +24 -0
  156. package/src/_esm/core/UTXO/utxo-stack/actions/getBlockStats.js.map +1 -0
  157. package/src/_esm/core/UTXO/utxo-stack/actions/getUTXOTransaction.js +18 -10
  158. package/src/_esm/core/UTXO/utxo-stack/actions/getUTXOTransaction.js.map +1 -1
  159. package/src/_esm/core/UTXO/utxo-stack/actions/sendUTXOTransaction.js +0 -1
  160. package/src/_esm/core/UTXO/utxo-stack/actions/sendUTXOTransaction.js.map +1 -1
  161. package/src/_esm/core/UTXO/utxo-stack/actions/signPsbt.js +0 -1
  162. package/src/_esm/core/UTXO/utxo-stack/actions/signPsbt.js.map +1 -1
  163. package/src/_esm/core/UTXO/utxo-stack/actions/waitForTransaction.js +230 -0
  164. package/src/_esm/core/UTXO/utxo-stack/actions/waitForTransaction.js.map +1 -0
  165. package/src/_esm/core/UTXO/utxo-stack/actions/watchBlockNumber.js +58 -0
  166. package/src/_esm/core/UTXO/utxo-stack/actions/watchBlockNumber.js.map +1 -0
  167. package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOAPIActions.js.map +1 -1
  168. package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOActions.js.map +1 -1
  169. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.js +1 -1
  170. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.js.map +1 -1
  171. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/utxo.js +1 -1
  172. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/utxo.js.map +1 -1
  173. package/src/_esm/core/UTXO/utxo-stack/types/blockStats.js +2 -0
  174. package/src/_esm/core/UTXO/utxo-stack/types/blockStats.js.map +1 -0
  175. package/src/_esm/core/UTXO/utxo-stack/utils/cancelTransaction.js +55 -0
  176. package/src/_esm/core/UTXO/utxo-stack/utils/cancelTransaction.js.map +1 -0
  177. package/src/_esm/core/UTXO/utxo-stack/utils/modifyFee.js +53 -0
  178. package/src/_esm/core/UTXO/utxo-stack/utils/modifyFee.js.map +1 -0
  179. package/src/_esm/core/UTXO/utxo-stack/utils/observe.js +51 -0
  180. package/src/_esm/core/UTXO/utxo-stack/utils/observe.js.map +1 -0
  181. package/src/_esm/core/UTXO/utxo-stack/utils/poll.js +30 -0
  182. package/src/_esm/core/UTXO/utxo-stack/utils/poll.js.map +1 -0
  183. package/src/_esm/core/checkBalance.js +2 -7
  184. package/src/_esm/core/checkBalance.js.map +1 -1
  185. package/src/_esm/core/execution.js.map +1 -1
  186. package/src/_esm/core/processMessages.js +0 -1
  187. package/src/_esm/core/processMessages.js.map +1 -1
  188. package/src/_esm/core/rpc.js +0 -1
  189. package/src/_esm/core/rpc.js.map +1 -1
  190. package/src/_esm/core/stepComparison.js +1 -1
  191. package/src/_esm/core/utils.js +0 -1
  192. package/src/_esm/core/utils.js.map +1 -1
  193. package/src/_esm/core/waitForReceivingTransaction.js +36 -41
  194. package/src/_esm/core/waitForReceivingTransaction.js.map +1 -1
  195. package/src/_esm/createConfig.js +0 -1
  196. package/src/_esm/createConfig.js.map +1 -1
  197. package/src/_esm/errors/SDKError.js +0 -1
  198. package/src/_esm/errors/SDKError.js.map +1 -1
  199. package/src/_esm/errors/baseError.js +2 -2
  200. package/src/_esm/errors/baseError.js.map +1 -1
  201. package/src/_esm/errors/constants.js +1 -0
  202. package/src/_esm/errors/constants.js.map +1 -1
  203. package/src/_esm/errors/errors.js +1 -1
  204. package/src/_esm/errors/errors.js.map +1 -1
  205. package/src/_esm/errors/httpError.js +2 -2
  206. package/src/_esm/errors/httpError.js.map +1 -1
  207. package/src/_esm/helpers.js +4 -6
  208. package/src/_esm/helpers.js.map +1 -1
  209. package/src/_esm/index.js +13 -9
  210. package/src/_esm/index.js.map +1 -1
  211. package/src/_esm/request.js +1 -1
  212. package/src/_esm/request.js.map +1 -1
  213. package/src/_esm/services/api.js +30 -19
  214. package/src/_esm/services/api.js.map +1 -1
  215. package/src/_esm/services/balance.js +11 -4
  216. package/src/_esm/services/balance.js.map +1 -1
  217. package/src/_esm/utils/getTransactionMessage.js +3 -4
  218. package/src/_esm/utils/getTransactionMessage.js.map +1 -1
  219. package/src/_esm/utils/withDedupe.js +0 -1
  220. package/src/_esm/utils/withDedupe.js.map +1 -1
  221. package/src/_esm/version.js +1 -1
  222. package/src/_esm/version.js.map +1 -1
  223. package/src/_types/config.d.ts.map +1 -1
  224. package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -1
  225. package/src/_types/core/EVM/checkAllowance.d.ts.map +1 -1
  226. package/src/_types/core/EVM/getEVMBalance.d.ts.map +1 -1
  227. package/src/_types/core/EVM/parseEVMErrors.d.ts +1 -1
  228. package/src/_types/core/EVM/parseEVMErrors.d.ts.map +1 -1
  229. package/src/_types/core/EVM/types.d.ts +1 -1
  230. package/src/_types/core/EVM/types.d.ts.map +1 -1
  231. package/src/_types/core/EVM/utils.d.ts +1 -1
  232. package/src/_types/core/EVM/utils.d.ts.map +1 -1
  233. package/src/_types/core/EVM/waitForTransactionReceipt.d.ts.map +1 -1
  234. package/src/_types/core/Solana/SolanaStepExecutor.d.ts +1 -1
  235. package/src/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -1
  236. package/src/_types/core/Solana/connection.d.ts.map +1 -1
  237. package/src/_types/core/Solana/parseSolanaErrors.d.ts.map +1 -1
  238. package/src/_types/core/Solana/types.d.ts +1 -1
  239. package/src/_types/core/Solana/types.d.ts.map +1 -1
  240. package/src/_types/core/StatusManager.d.ts +18 -8
  241. package/src/_types/core/StatusManager.d.ts.map +1 -1
  242. package/src/_types/core/UTXO/UTXOStepExecutor.d.ts.map +1 -1
  243. package/src/_types/core/UTXO/getUTXOAPIPublicClient.d.ts.map +1 -1
  244. package/src/_types/core/UTXO/getUTXOBalance.d.ts.map +1 -1
  245. package/src/_types/core/UTXO/getUTXOPublicClient.d.ts.map +1 -1
  246. package/src/_types/core/UTXO/isUTXOAddress.d.ts.map +1 -1
  247. package/src/_types/core/UTXO/parseUTXOErrors.d.ts.map +1 -1
  248. package/src/_types/core/UTXO/types.d.ts +1 -1
  249. package/src/_types/core/UTXO/types.d.ts.map +1 -1
  250. package/src/_types/core/UTXO/utxo-stack/actions/getBalance.d.ts +1 -1
  251. package/src/_types/core/UTXO/utxo-stack/actions/getBalance.d.ts.map +1 -1
  252. package/src/_types/core/UTXO/utxo-stack/actions/getBlock.d.ts +13 -0
  253. package/src/_types/core/UTXO/utxo-stack/actions/getBlock.d.ts.map +1 -0
  254. package/src/_types/core/UTXO/utxo-stack/actions/getBlockCount.d.ts +1 -1
  255. package/src/_types/core/UTXO/utxo-stack/actions/getBlockCount.d.ts.map +1 -1
  256. package/src/_types/core/UTXO/utxo-stack/actions/getBlockStats.d.ts +15 -0
  257. package/src/_types/core/UTXO/utxo-stack/actions/getBlockStats.d.ts.map +1 -0
  258. package/src/_types/core/UTXO/utxo-stack/actions/getUTXOTransaction.d.ts +2 -2
  259. package/src/_types/core/UTXO/utxo-stack/actions/getUTXOTransaction.d.ts.map +1 -1
  260. package/src/_types/core/UTXO/utxo-stack/actions/sendUTXOTransaction.d.ts +2 -2
  261. package/src/_types/core/UTXO/utxo-stack/actions/sendUTXOTransaction.d.ts.map +1 -1
  262. package/src/_types/core/UTXO/utxo-stack/actions/signPsbt.d.ts +1 -1
  263. package/src/_types/core/UTXO/utxo-stack/actions/signPsbt.d.ts.map +1 -1
  264. package/src/_types/core/UTXO/utxo-stack/actions/waitForTransaction.d.ts +76 -0
  265. package/src/_types/core/UTXO/utxo-stack/actions/waitForTransaction.d.ts.map +1 -0
  266. package/src/_types/core/UTXO/utxo-stack/actions/watchBlockNumber.d.ts +26 -0
  267. package/src/_types/core/UTXO/utxo-stack/actions/watchBlockNumber.d.ts.map +1 -0
  268. package/src/_types/core/UTXO/utxo-stack/decorators/UTXOAPIActions.d.ts.map +1 -1
  269. package/src/_types/core/UTXO/utxo-stack/decorators/UTXOActions.d.ts.map +1 -1
  270. package/src/_types/core/UTXO/utxo-stack/transports/utxo/types.d.ts +16 -0
  271. package/src/_types/core/UTXO/utxo-stack/transports/utxo/types.d.ts.map +1 -1
  272. package/src/_types/core/UTXO/utxo-stack/transports/utxo/utxo.d.ts.map +1 -1
  273. package/src/_types/core/UTXO/utxo-stack/types/blockStats.d.ts +35 -0
  274. package/src/_types/core/UTXO/utxo-stack/types/blockStats.d.ts.map +1 -0
  275. package/src/_types/core/UTXO/utxo-stack/utils/cancelTransaction.d.ts +3 -0
  276. package/src/_types/core/UTXO/utxo-stack/utils/cancelTransaction.d.ts.map +1 -0
  277. package/src/_types/core/UTXO/utxo-stack/utils/modifyFee.d.ts +3 -0
  278. package/src/_types/core/UTXO/utxo-stack/utils/modifyFee.d.ts.map +1 -0
  279. package/src/_types/core/UTXO/utxo-stack/utils/observe.d.ts +19 -0
  280. package/src/_types/core/UTXO/utxo-stack/utils/observe.d.ts.map +1 -0
  281. package/src/_types/core/UTXO/utxo-stack/utils/poll.d.ts +13 -0
  282. package/src/_types/core/UTXO/utxo-stack/utils/poll.d.ts.map +1 -0
  283. package/src/_types/core/checkBalance.d.ts.map +1 -1
  284. package/src/_types/core/execution.d.ts.map +1 -1
  285. package/src/_types/core/processMessages.d.ts +1 -1
  286. package/src/_types/core/processMessages.d.ts.map +1 -1
  287. package/src/_types/core/rpc.d.ts +1 -1
  288. package/src/_types/core/rpc.d.ts.map +1 -1
  289. package/src/_types/core/utils.d.ts +1 -1
  290. package/src/_types/core/utils.d.ts.map +1 -1
  291. package/src/_types/core/waitForReceivingTransaction.d.ts.map +1 -1
  292. package/src/_types/createConfig.d.ts +1 -1
  293. package/src/_types/createConfig.d.ts.map +1 -1
  294. package/src/_types/errors/SDKError.d.ts +1 -1
  295. package/src/_types/errors/SDKError.d.ts.map +1 -1
  296. package/src/_types/errors/constants.d.ts +2 -1
  297. package/src/_types/errors/constants.d.ts.map +1 -1
  298. package/src/_types/errors/errors.d.ts +1 -1
  299. package/src/_types/errors/errors.d.ts.map +1 -1
  300. package/src/_types/errors/httpError.d.ts +1 -1
  301. package/src/_types/errors/httpError.d.ts.map +1 -1
  302. package/src/_types/helpers.d.ts +1 -1
  303. package/src/_types/helpers.d.ts.map +1 -1
  304. package/src/_types/index.d.ts +15 -9
  305. package/src/_types/index.d.ts.map +1 -1
  306. package/src/_types/services/api.d.ts.map +1 -1
  307. package/src/_types/services/balance.d.ts.map +1 -1
  308. package/src/_types/types/internal.d.ts +1 -39
  309. package/src/_types/types/internal.d.ts.map +1 -1
  310. package/src/_types/utils/getTransactionMessage.d.ts.map +1 -1
  311. package/src/_types/utils/withDedupe.d.ts.map +1 -1
  312. package/src/_types/version.d.ts +1 -1
  313. package/src/_types/version.d.ts.map +1 -1
  314. package/src/config.ts +4 -1
  315. package/src/core/EVM/EVM.ts +1 -1
  316. package/src/core/EVM/EVMStepExecutor.ts +15 -13
  317. package/src/core/EVM/checkAllowance.ts +4 -3
  318. package/src/core/EVM/getAllowance.ts +3 -3
  319. package/src/core/EVM/getEVMBalance.ts +4 -5
  320. package/src/core/EVM/parseEVMErrors.ts +3 -3
  321. package/src/core/EVM/publicClient.ts +2 -2
  322. package/src/core/EVM/switchChain.ts +5 -5
  323. package/src/core/EVM/types.ts +2 -2
  324. package/src/core/EVM/utils.ts +5 -5
  325. package/src/core/EVM/waitForTransactionReceipt.ts +3 -2
  326. package/src/core/Solana/Solana.ts +1 -1
  327. package/src/core/Solana/SolanaStepExecutor.ts +13 -12
  328. package/src/core/Solana/connection.ts +1 -2
  329. package/src/core/Solana/getSolanaBalance.ts +3 -3
  330. package/src/core/Solana/isSVMAddress.ts +1 -1
  331. package/src/core/Solana/parseSolanaErrors.ts +1 -1
  332. package/src/core/Solana/types.ts +1 -1
  333. package/src/core/StatusManager.ts +26 -28
  334. package/src/core/UTXO/UTXO.ts +1 -1
  335. package/src/core/UTXO/UTXOStepExecutor.ts +59 -56
  336. package/src/core/UTXO/getUTXOAPIPublicClient.ts +3 -3
  337. package/src/core/UTXO/getUTXOBalance.ts +3 -4
  338. package/src/core/UTXO/getUTXOPublicClient.ts +4 -3
  339. package/src/core/UTXO/isUTXOAddress.ts +10 -11
  340. package/src/core/UTXO/parseUTXOErrors.ts +12 -1
  341. package/src/core/UTXO/types.ts +1 -1
  342. package/src/core/UTXO/utxo-stack/actions/getBalance.ts +1 -1
  343. package/src/core/UTXO/utxo-stack/actions/getBlock.ts +58 -0
  344. package/src/core/UTXO/utxo-stack/actions/getBlockCount.ts +1 -1
  345. package/src/core/UTXO/utxo-stack/actions/getBlockStats.ts +55 -0
  346. package/src/core/UTXO/utxo-stack/actions/getUTXOTransaction.ts +24 -11
  347. package/src/core/UTXO/utxo-stack/actions/sendUTXOTransaction.ts +2 -2
  348. package/src/core/UTXO/utxo-stack/actions/signPsbt.ts +1 -1
  349. package/src/core/UTXO/utxo-stack/actions/waitForTransaction.ts +387 -0
  350. package/src/core/UTXO/utxo-stack/actions/watchBlockNumber.ts +105 -0
  351. package/src/core/UTXO/utxo-stack/decorators/UTXOAPIActions.ts +1 -2
  352. package/src/core/UTXO/utxo-stack/decorators/UTXOActions.ts +3 -3
  353. package/src/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.ts +1 -1
  354. package/src/core/UTXO/utxo-stack/transports/utxo/types.ts +16 -0
  355. package/src/core/UTXO/utxo-stack/transports/utxo/utxo.ts +3 -3
  356. package/src/core/UTXO/utxo-stack/types/blockStats.ts +35 -0
  357. package/src/core/UTXO/utxo-stack/utils/cancelTransaction.ts +75 -0
  358. package/src/core/UTXO/utxo-stack/utils/modifyFee.ts +78 -0
  359. package/src/core/UTXO/utxo-stack/utils/observe.ts +81 -0
  360. package/src/core/UTXO/utxo-stack/utils/poll.ts +48 -0
  361. package/src/core/checkBalance.ts +2 -8
  362. package/src/core/execution.ts +0 -1
  363. package/src/core/processMessages.ts +5 -5
  364. package/src/core/rpc.ts +1 -1
  365. package/src/core/stepComparison.ts +1 -1
  366. package/src/core/utils.ts +1 -1
  367. package/src/core/waitForReceivingTransaction.ts +42 -46
  368. package/src/createConfig.ts +1 -2
  369. package/src/errors/SDKError.ts +1 -1
  370. package/src/errors/baseError.ts +2 -2
  371. package/src/errors/constants.ts +1 -0
  372. package/src/errors/errors.ts +1 -1
  373. package/src/errors/httpError.ts +3 -3
  374. package/src/helpers.ts +4 -5
  375. package/src/index.ts +84 -9
  376. package/src/request.ts +1 -1
  377. package/src/services/api.ts +29 -33
  378. package/src/services/balance.ts +13 -4
  379. package/src/types/internal.ts +1 -40
  380. package/src/utils/getTransactionMessage.ts +3 -4
  381. package/src/utils/withDedupe.ts +0 -1
  382. package/src/version.ts +1 -1
  383. package/src/_cjs/core/UTXO/blockchairApi.js +0 -169
  384. package/src/_cjs/core/UTXO/blockchairApi.js.map +0 -1
  385. package/src/_cjs/core/UTXO/blockchairApiTypes.js +0 -26
  386. package/src/_cjs/core/UTXO/blockchairApiTypes.js.map +0 -1
  387. package/src/_cjs/core/UTXO/requestClient.js +0 -63
  388. package/src/_cjs/core/UTXO/requestClient.js.map +0 -1
  389. package/src/_cjs/core/index.js +0 -7
  390. package/src/_cjs/core/index.js.map +0 -1
  391. package/src/_cjs/errors/index.js +0 -11
  392. package/src/_cjs/errors/index.js.map +0 -1
  393. package/src/_cjs/types/index.js +0 -5
  394. package/src/_cjs/types/index.js.map +0 -1
  395. package/src/_cjs/utils/index.js +0 -8
  396. package/src/_cjs/utils/index.js.map +0 -1
  397. package/src/_esm/core/UTXO/blockchairApi.js +0 -167
  398. package/src/_esm/core/UTXO/blockchairApi.js.map +0 -1
  399. package/src/_esm/core/UTXO/blockchairApiTypes.js +0 -23
  400. package/src/_esm/core/UTXO/blockchairApiTypes.js.map +0 -1
  401. package/src/_esm/core/UTXO/requestClient.js +0 -59
  402. package/src/_esm/core/UTXO/requestClient.js.map +0 -1
  403. package/src/_esm/core/index.js +0 -4
  404. package/src/_esm/core/index.js.map +0 -1
  405. package/src/_esm/errors/index.js +0 -8
  406. package/src/_esm/errors/index.js.map +0 -1
  407. package/src/_esm/types/index.js +0 -2
  408. package/src/_esm/types/index.js.map +0 -1
  409. package/src/_esm/utils/index.js +0 -5
  410. package/src/_esm/utils/index.js.map +0 -1
  411. package/src/_types/core/UTXO/blockchairApi.d.ts +0 -37
  412. package/src/_types/core/UTXO/blockchairApi.d.ts.map +0 -1
  413. package/src/_types/core/UTXO/blockchairApiTypes.d.ts +0 -229
  414. package/src/_types/core/UTXO/blockchairApiTypes.d.ts.map +0 -1
  415. package/src/_types/core/UTXO/requestClient.d.ts +0 -22
  416. package/src/_types/core/UTXO/requestClient.d.ts.map +0 -1
  417. package/src/_types/core/index.d.ts +0 -4
  418. package/src/_types/core/index.d.ts.map +0 -1
  419. package/src/_types/errors/index.d.ts +0 -8
  420. package/src/_types/errors/index.d.ts.map +0 -1
  421. package/src/_types/types/index.d.ts +0 -2
  422. package/src/_types/types/index.d.ts.map +0 -1
  423. package/src/_types/utils/index.d.ts +0 -5
  424. package/src/_types/utils/index.d.ts.map +0 -1
  425. package/src/core/UTXO/blockchairApi.ts +0 -273
  426. package/src/core/UTXO/blockchairApiTypes.ts +0 -253
  427. package/src/core/UTXO/requestClient.ts +0 -84
  428. package/src/core/index.ts +0 -3
  429. package/src/errors/index.ts +0 -7
  430. package/src/types/index.ts +0 -1
  431. package/src/utils/index.ts +0 -4
@@ -19,11 +19,11 @@ export const getEVMBalance = async (
19
19
  return []
20
20
  }
21
21
  const { chainId } = tokens[0]
22
- tokens.forEach((token) => {
22
+ for (const token of tokens) {
23
23
  if (token.chainId !== chainId) {
24
- console.warn(`Requested tokens have to be on the same chain.`)
24
+ console.warn('Requested tokens have to be on the same chain.')
25
25
  }
26
- })
26
+ }
27
27
 
28
28
  const multicallAddress = await getMulticallAddress(chainId)
29
29
 
@@ -34,9 +34,8 @@ export const getEVMBalance = async (
34
34
  walletAddress,
35
35
  multicallAddress
36
36
  )
37
- } else {
38
- return getEVMBalanceDefault(chainId, tokens, walletAddress)
39
37
  }
38
+ return getEVMBalanceDefault(chainId, tokens, walletAddress)
40
39
  }
41
40
 
42
41
  const getEVMBalanceMulticall = async (
@@ -1,8 +1,8 @@
1
- import { type LiFiStep, type Process } from '@lifi/types'
2
- import { TransactionError, UnknownError } from '../../errors/errors.js'
1
+ import type { LiFiStep, Process } from '@lifi/types'
3
2
  import { SDKError } from '../../errors/SDKError.js'
3
+ import { BaseError } from '../../errors/baseError.js'
4
4
  import { ErrorMessage, LiFiErrorCode } from '../../errors/constants.js'
5
- import { BaseError } from '../../utils/index.js'
5
+ import { TransactionError, UnknownError } from '../../errors/errors.js'
6
6
  import { fetchTxErrorDetails } from '../../helpers.js'
7
7
 
8
8
  export const parseEVMErrors = async (
@@ -1,7 +1,7 @@
1
1
  import { ChainId } from '@lifi/types'
2
2
  import type { Client } from 'viem'
3
- import { createClient, fallback, http, webSocket } from 'viem'
4
- import { mainnet, type Chain } from 'viem/chains'
3
+ import { http, createClient, fallback, webSocket } from 'viem'
4
+ import { type Chain, mainnet } from 'viem/chains'
5
5
  import { config } from '../../config.js'
6
6
  import { getRpcUrls } from '../rpc.js'
7
7
 
@@ -39,11 +39,11 @@ export const switchChain = async (
39
39
  step.execution = statusManager.initExecutionObject(step)
40
40
  statusManager.updateExecution(step, 'ACTION_REQUIRED')
41
41
 
42
- let switchProcess = statusManager.findOrCreateProcess(
42
+ let switchProcess = statusManager.findOrCreateProcess({
43
43
  step,
44
- 'SWITCH_CHAIN',
45
- 'ACTION_REQUIRED'
46
- )
44
+ type: 'SWITCH_CHAIN',
45
+ status: 'ACTION_REQUIRED',
46
+ })
47
47
 
48
48
  if (!allowUserInteraction) {
49
49
  return
@@ -51,7 +51,7 @@ export const switchChain = async (
51
51
 
52
52
  try {
53
53
  const updatedClient = await switchChainHook?.(step.action.fromChainId)
54
- let updatedChainId
54
+ let updatedChainId: number | undefined
55
55
  if (updatedClient) {
56
56
  updatedChainId = await getChainId(updatedClient)
57
57
  }
@@ -1,7 +1,7 @@
1
- import { ChainType, type BaseToken } from '@lifi/types'
1
+ import { type BaseToken, ChainType } from '@lifi/types'
2
2
  import type { Client, Hash } from 'viem'
3
3
  import type { SwitchChainHook } from '../types.js'
4
- import { type SDKProvider } from '../types.js'
4
+ import type { SDKProvider } from '../types.js'
5
5
 
6
6
  export interface EVMProviderOptions {
7
7
  getWalletClient?: () => Promise<Client>
@@ -1,4 +1,4 @@
1
- import { type ChainId } from '@lifi/types'
1
+ import type { ChainId } from '@lifi/types'
2
2
  import type { Client, Transaction } from 'viem'
3
3
  import { getBlock } from 'viem/actions'
4
4
  import { config } from '../../config.js'
@@ -19,10 +19,10 @@ export const getMaxPriorityFeePerGas = async (
19
19
  return
20
20
  }
21
21
 
22
- const maxPriorityFeePerGasSum = maxPriorityFeePerGasList.reduce(
23
- (acc, value) => (acc += value),
24
- 0n
25
- )
22
+ let maxPriorityFeePerGasSum = 0n
23
+ for (const value of maxPriorityFeePerGasList) {
24
+ maxPriorityFeePerGasSum += value
25
+ }
26
26
 
27
27
  const maxPriorityFeePerGasMedian = median(maxPriorityFeePerGasList) ?? 0n
28
28
 
@@ -8,7 +8,8 @@ import type {
8
8
  TransactionReceipt,
9
9
  } from 'viem'
10
10
  import { waitForTransactionReceipt as waitForTransactionReceiptInternal } from 'viem/actions'
11
- import { LiFiErrorCode, TransactionError } from '../../utils/index.js'
11
+ import { LiFiErrorCode } from '../../errors/constants.js'
12
+ import { TransactionError } from '../../errors/errors.js'
12
13
  import { getPublicClient } from './publicClient.js'
13
14
  import { retryCount, retryDelay } from './utils.js'
14
15
 
@@ -75,7 +76,7 @@ async function waitForReceipt(
75
76
  retryCount,
76
77
  retryDelay,
77
78
  })
78
- } catch (error) {
79
+ } catch {
79
80
  // We can ignore errors from waitForTransactionReceipt as we have a status check fallback
80
81
  }
81
82
 
@@ -19,7 +19,7 @@ export function Solana(options?: SolanaProviderOptions): SolanaProvider {
19
19
  options: StepExecutorOptions
20
20
  ): Promise<SolanaStepExecutor> {
21
21
  if (!_options.getWalletAdapter) {
22
- throw new Error(`getWalletAdapter is not provided.`)
22
+ throw new Error('getWalletAdapter is not provided.')
23
23
  }
24
24
 
25
25
  const walletAdapter = await _options.getWalletAdapter()
@@ -1,9 +1,9 @@
1
1
  import type { ExtendedTransactionInfo, FullStatusData } from '@lifi/types'
2
- import { type SignerWalletAdapter } from '@solana/wallet-adapter-base'
2
+ import type { SignerWalletAdapter } from '@solana/wallet-adapter-base'
3
3
  import {
4
- VersionedTransaction,
5
4
  type SendOptions,
6
5
  type SignatureResult,
6
+ VersionedTransaction,
7
7
  } from '@solana/web3.js'
8
8
  import bs58 from 'bs58'
9
9
  import { withTimeout } from 'viem'
@@ -12,7 +12,7 @@ import { LiFiErrorCode } from '../../errors/constants.js'
12
12
  import { TransactionError } from '../../errors/errors.js'
13
13
  import { getStepTransaction } from '../../services/api.js'
14
14
  import { base64ToUint8Array } from '../../utils/base64ToUint8Array.js'
15
- import { getTransactionFailedMessage } from '../../utils/index.js'
15
+ import { getTransactionFailedMessage } from '../../utils/getTransactionMessage.js'
16
16
  import { sleep } from '../../utils/sleep.js'
17
17
  import { BaseStepExecutor } from '../BaseStepExecutor.js'
18
18
  import { checkBalance } from '../checkBalance.js'
@@ -59,10 +59,10 @@ export class SolanaStepExecutor extends BaseStepExecutor {
59
59
  const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'
60
60
 
61
61
  // STEP 2: Get transaction
62
- let process = this.statusManager.findOrCreateProcess(
62
+ let process = this.statusManager.findOrCreateProcess({
63
63
  step,
64
- currentProcessType
65
- )
64
+ type: currentProcessType,
65
+ })
66
66
 
67
67
  if (process.status !== 'DONE') {
68
68
  try {
@@ -88,10 +88,10 @@ export class SolanaStepExecutor extends BaseStepExecutor {
88
88
  this.allowUserInteraction,
89
89
  this.executionOptions
90
90
  )
91
- step = {
91
+ Object.assign(step, {
92
92
  ...comparedStep,
93
93
  execution: step.execution,
94
- }
94
+ })
95
95
  }
96
96
 
97
97
  if (!step.transactionRequest?.data) {
@@ -294,11 +294,12 @@ export class SolanaStepExecutor extends BaseStepExecutor {
294
294
  // STEP 5: Wait for the receiving chain
295
295
  const processTxHash = process.txHash
296
296
  if (isBridgeExecution) {
297
- process = this.statusManager.findOrCreateProcess(
297
+ process = this.statusManager.findOrCreateProcess({
298
298
  step,
299
- 'RECEIVING_CHAIN',
300
- 'PENDING'
301
- )
299
+ type: 'RECEIVING_CHAIN',
300
+ status: 'PENDING',
301
+ chainId: toChain.id,
302
+ })
302
303
  }
303
304
  let statusResponse: FullStatusData
304
305
  try {
@@ -13,7 +13,6 @@ export const getSolanaConnection = async (): Promise<Connection> => {
13
13
  const rpcUrl = await getRpcUrl(ChainId.SOL)
14
14
  connection = new Connection(rpcUrl)
15
15
  return connection
16
- } else {
17
- return connection
18
16
  }
17
+ return connection
19
18
  }
@@ -12,11 +12,11 @@ export const getSolanaBalance = async (
12
12
  return []
13
13
  }
14
14
  const { chainId } = tokens[0]
15
- tokens.forEach((token) => {
15
+ for (const token of tokens) {
16
16
  if (token.chainId !== chainId) {
17
- console.warn(`Requested tokens have to be on the same chain.`)
17
+ console.warn('Requested tokens have to be on the same chain.')
18
18
  }
19
- })
19
+ }
20
20
 
21
21
  return getSolanaBalanceDefault(chainId, tokens, walletAddress)
22
22
  }
@@ -4,7 +4,7 @@ export function isSVMAddress(address: string): boolean {
4
4
  try {
5
5
  new PublicKey(address)
6
6
  return true
7
- } catch (error) {
7
+ } catch (_error) {
8
8
  return false
9
9
  }
10
10
  }
@@ -1,8 +1,8 @@
1
1
  import type { LiFiStep, Process } from '@lifi/types'
2
+ import { SDKError } from '../../errors/SDKError.js'
2
3
  import { BaseError } from '../../errors/baseError.js'
3
4
  import { ErrorMessage, LiFiErrorCode } from '../../errors/constants.js'
4
5
  import { TransactionError, UnknownError } from '../../errors/errors.js'
5
- import { SDKError } from '../../errors/SDKError.js'
6
6
 
7
7
  export const parseSolanaErrors = async (
8
8
  e: Error,
@@ -1,6 +1,6 @@
1
1
  import { ChainType } from '@lifi/types'
2
2
  import type { SignerWalletAdapter } from '@solana/wallet-adapter-base'
3
- import { type SDKProvider } from '../types.js'
3
+ import type { SDKProvider } from '../types.js'
4
4
 
5
5
  export interface SolanaProviderOptions {
6
6
  getWalletAdapter?: () => Promise<SignerWalletAdapter>
@@ -1,4 +1,5 @@
1
1
  import type {
2
+ ChainId,
2
3
  Execution,
3
4
  ExecutionStatus,
4
5
  LiFiStep,
@@ -10,19 +11,12 @@ import { executionState } from './executionState.js'
10
11
  import { getProcessMessage } from './processMessages.js'
11
12
  import type { LiFiStepExtended } from './types.js'
12
13
 
13
- type OptionalParameters = Partial<
14
- Pick<
15
- Process,
16
- | 'doneAt'
17
- | 'failedAt'
18
- | 'txHash'
19
- | 'txLink'
20
- | 'error'
21
- | 'substatus'
22
- | 'substatusMessage'
23
- | 'multisigTxHash'
24
- >
25
- >
14
+ export type FindOrCreateProcessProps = {
15
+ step: LiFiStepExtended
16
+ type: ProcessType
17
+ chainId?: ChainId
18
+ status?: ProcessStatus
19
+ }
26
20
 
27
21
  /**
28
22
  * Manages status updates of a route and provides various functions for tracking processes
@@ -88,16 +82,23 @@ export class StatusManager {
88
82
 
89
83
  /**
90
84
  * Create and push a new process into the execution.
91
- * @param step The step that should contain the new process.
92
- * @param type Type of the process. Used to identify already existing processes.
93
- * @param status By default created procces is set to the STARTED status. We can override new process with the needed status.
85
+ * @param step.step The step that should contain the new process.
86
+ * @param step.type Type of the process. Used to identify already existing processes.
87
+ * @param step.chainId Chain Id of the process.
88
+ * @param step.status By default created procces is set to the STARTED status. We can override new process with the needed status.
89
+ * @param root0
90
+ * @param root0.step
91
+ * @param root0.type
92
+ * @param root0.chainId
93
+ * @param root0.status
94
94
  * @returns Returns process.
95
95
  */
96
- findOrCreateProcess = (
97
- step: LiFiStepExtended,
98
- type: ProcessType,
99
- status?: ProcessStatus
100
- ): Process => {
96
+ findOrCreateProcess = ({
97
+ step,
98
+ type,
99
+ chainId,
100
+ status,
101
+ }: FindOrCreateProcessProps): Process => {
101
102
  if (!step.execution?.process) {
102
103
  throw new Error("Execution hasn't been initialized.")
103
104
  }
@@ -117,6 +118,7 @@ export class StatusManager {
117
118
  startedAt: Date.now(),
118
119
  message: getProcessMessage(type, status ?? 'STARTED'),
119
120
  status: status ?? 'STARTED',
121
+ chainId: chainId,
120
122
  }
121
123
 
122
124
  step.execution.process.push(newProcess)
@@ -136,7 +138,7 @@ export class StatusManager {
136
138
  step: LiFiStepExtended,
137
139
  type: ProcessType,
138
140
  status: ProcessStatus,
139
- params?: OptionalParameters
141
+ params?: Partial<Process>
140
142
  ): Process => {
141
143
  if (!step.execution) {
142
144
  throw new Error("Can't update an empty step execution.")
@@ -178,12 +180,8 @@ export class StatusManager {
178
180
  }
179
181
  // Sort processes, the ones with DONE status go first
180
182
  step.execution.process = [
181
- ...step?.execution?.process.filter(
182
- (process) => process.status === 'DONE'
183
- ),
184
- ...step?.execution?.process.filter(
185
- (process) => process.status !== 'DONE'
186
- ),
183
+ ...step.execution.process.filter((process) => process.status === 'DONE'),
184
+ ...step.execution.process.filter((process) => process.status !== 'DONE'),
187
185
  ]
188
186
  this.updateStepInRoute(step) // updates the step in the route
189
187
  return currentProcess
@@ -21,7 +21,7 @@ export function UTXO(options?: UTXOProviderOptions): UTXOProvider {
21
21
  options: StepExecutorOptions
22
22
  ): Promise<UTXOStepExecutor> {
23
23
  if (!_options.getWalletClient) {
24
- throw new Error(`Client is not provided.`)
24
+ throw new Error('Client is not provided.')
25
25
  }
26
26
 
27
27
  const walletClient = await _options.getWalletClient()
@@ -3,16 +3,13 @@ import {
3
3
  type ExtendedTransactionInfo,
4
4
  type FullStatusData,
5
5
  } from '@lifi/types'
6
- import { address, networks, Psbt } from 'bitcoinjs-lib'
7
- import { withRetry, withTimeout, type Client } from 'viem'
6
+ import { Psbt, address, networks } from 'bitcoinjs-lib'
7
+ import { type Client, withTimeout } from 'viem'
8
8
  import { config } from '../../config.js'
9
9
  import { LiFiErrorCode } from '../../errors/constants.js'
10
10
  import { TransactionError } from '../../errors/errors.js'
11
11
  import { getStepTransaction } from '../../services/api.js'
12
- import {
13
- getTransactionFailedMessage,
14
- waitForResult,
15
- } from '../../utils/index.js'
12
+ import { getTransactionFailedMessage } from '../../utils/getTransactionMessage.js'
16
13
  import { BaseStepExecutor } from '../BaseStepExecutor.js'
17
14
  import { checkBalance } from '../checkBalance.js'
18
15
  import { getSubstatusMessage } from '../processMessages.js'
@@ -26,6 +23,10 @@ import { waitForReceivingTransaction } from '../waitForReceivingTransaction.js'
26
23
  import { getUTXOPublicClient } from './getUTXOPublicClient.js'
27
24
  import { parseUTXOErrors } from './parseUTXOErrors.js'
28
25
  import { signPsbt } from './utxo-stack/actions/signPsbt.js'
26
+ import {
27
+ type ReplacementReason,
28
+ waitForTransaction,
29
+ } from './utxo-stack/actions/waitForTransaction.js'
29
30
 
30
31
  export interface UTXOStepExecutorOptions extends StepExecutorOptions {
31
32
  client: Client
@@ -60,22 +61,25 @@ export class UTXOStepExecutor extends BaseStepExecutor {
60
61
  const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'
61
62
 
62
63
  // STEP 2: Get transaction
63
- let process = this.statusManager.findOrCreateProcess(
64
+ let process = this.statusManager.findOrCreateProcess({
64
65
  step,
65
- currentProcessType
66
- )
66
+ type: currentProcessType,
67
+ chainId: fromChain.id,
68
+ })
67
69
 
68
70
  const publicClient = await getUTXOPublicClient(ChainId.BTC)
69
71
 
70
72
  if (process.status !== 'DONE') {
71
73
  try {
72
74
  let txHash: string
75
+ let txHex: string
73
76
  if (process.txHash) {
74
77
  // Make sure that the chain is still correct
75
78
  this.checkClient(step)
76
79
 
77
80
  // Wait for exiting transaction
78
81
  txHash = process.txHash
82
+ txHex = process.txHex
79
83
  } else {
80
84
  process = this.statusManager.updateProcess(
81
85
  step,
@@ -97,10 +101,10 @@ export class UTXOStepExecutor extends BaseStepExecutor {
97
101
  this.allowUserInteraction,
98
102
  this.executionOptions
99
103
  )
100
- step = {
104
+ Object.assign(step, {
101
105
  ...comparedStep,
102
106
  execution: step.execution,
103
- }
107
+ })
104
108
  }
105
109
 
106
110
  if (!step.transactionRequest?.data) {
@@ -146,24 +150,7 @@ export class UTXOStepExecutor extends BaseStepExecutor {
146
150
 
147
151
  this.checkClient(step)
148
152
 
149
- // const toolbox = getToolboxByChain('BTC')({})
150
-
151
- // const apiClient = blockchairApi({ chain: Chain.Bitcoin })
152
- // const txFeeRate = await apiClient.getSuggestedTxFee()
153
-
154
- // const tx = await toolbox.buildTx({
155
- // assetValue: {
156
- // bigIntValue: step.transactionRequest.value,
157
- // },
158
- // recipient: step.transactionRequest.to,
159
- // memo: step.transactionRequest.data,
160
- // sender: this.client.account?.address,
161
- // chain: 'BTC',
162
- // apiClient: blockchairApi({ chain: Chain.Bitcoin }),
163
- // feeRate: txFeeRate,
164
- // })
165
-
166
- let psbtHex = transactionRequest.data // tx.psbt.toHex()
153
+ const psbtHex = transactionRequest.data
167
154
 
168
155
  const psbt = Psbt.fromHex(psbtHex, { network: networks.bitcoin })
169
156
 
@@ -190,8 +177,6 @@ export class UTXOStepExecutor extends BaseStepExecutor {
190
177
  .values()
191
178
  )
192
179
 
193
- psbtHex = psbt.toHex()
194
-
195
180
  // We give users 10 minutes to sign the transaction or it should be considered expired
196
181
  const signedPsbtHex = await withTimeout(
197
182
  () =>
@@ -211,10 +196,10 @@ export class UTXOStepExecutor extends BaseStepExecutor {
211
196
 
212
197
  const signedPsbt = Psbt.fromHex(signedPsbtHex).finalizeAllInputs()
213
198
 
214
- const transactionHex = signedPsbt.extractTransaction().toHex()
199
+ txHex = signedPsbt.extractTransaction().toHex()
215
200
 
216
201
  txHash = await publicClient.sendUTXOTransaction({
217
- hex: transactionHex,
202
+ hex: txHex,
218
203
  })
219
204
 
220
205
  process = this.statusManager.updateProcess(
@@ -224,31 +209,48 @@ export class UTXOStepExecutor extends BaseStepExecutor {
224
209
  {
225
210
  txHash: txHash,
226
211
  txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
212
+ txHex,
227
213
  }
228
214
  )
229
215
  }
230
216
 
231
- // TODO: improve logic to detect RBF transactions
232
- await waitForResult(
233
- () =>
234
- withRetry(
235
- async () => {
236
- const tx = await publicClient.getUTXOTransaction({
237
- txId: txHash,
238
- })
239
- // If there are no confirmations, it means the transaction is still in the mempool
240
- if (!tx.confirmations) {
241
- return
242
- }
243
- return tx
244
- },
217
+ let replacementReason: ReplacementReason | undefined
218
+ const transaction = await waitForTransaction(publicClient, {
219
+ txId: txHash,
220
+ txHex,
221
+ senderAddress: this.client.account?.address,
222
+ onReplaced: (response) => {
223
+ replacementReason = response.reason
224
+ process = this.statusManager.updateProcess(
225
+ step,
226
+ process.type,
227
+ 'PENDING',
245
228
  {
246
- retryCount: 10,
247
- delay: 1000,
229
+ txHash: response.transaction.txid,
230
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${response.transaction.txid}`,
248
231
  }
249
- ),
250
- 10_000
251
- )
232
+ )
233
+ },
234
+ })
235
+
236
+ if (replacementReason === 'cancelled') {
237
+ throw new TransactionError(
238
+ LiFiErrorCode.TransactionCanceled,
239
+ 'User canceled transaction.'
240
+ )
241
+ }
242
+
243
+ if (transaction.txid !== txHash) {
244
+ process = this.statusManager.updateProcess(
245
+ step,
246
+ process.type,
247
+ 'PENDING',
248
+ {
249
+ txHash: transaction.txid,
250
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${transaction.txid}`,
251
+ }
252
+ )
253
+ }
252
254
 
253
255
  if (isBridgeExecution) {
254
256
  process = this.statusManager.updateProcess(step, process.type, 'DONE')
@@ -274,11 +276,12 @@ export class UTXOStepExecutor extends BaseStepExecutor {
274
276
  // STEP 5: Wait for the receiving chain
275
277
  const processTxHash = process.txHash
276
278
  if (isBridgeExecution) {
277
- process = this.statusManager.findOrCreateProcess(
279
+ process = this.statusManager.findOrCreateProcess({
278
280
  step,
279
- 'RECEIVING_CHAIN',
280
- 'PENDING'
281
- )
281
+ type: 'RECEIVING_CHAIN',
282
+ status: 'PENDING',
283
+ chainId: toChain.id,
284
+ })
282
285
  }
283
286
  let statusResponse: FullStatusData
284
287
  try {
@@ -1,11 +1,11 @@
1
1
  import {
2
- createClient,
3
- fallback,
4
- rpcSchema,
5
2
  type Chain,
6
3
  type Client,
7
4
  type FallbackTransport,
8
5
  type HttpTransport,
6
+ createClient,
7
+ fallback,
8
+ rpcSchema,
9
9
  } from 'viem'
10
10
  import { config } from '../../config.js'
11
11
  import { UTXOAPIActions } from './utxo-stack/decorators/UTXOAPIActions.js'
@@ -10,12 +10,11 @@ export const getUTXOBalance = async (
10
10
  return []
11
11
  }
12
12
  const { chainId } = tokens[0]
13
- tokens.forEach((token) => {
13
+ for (const token of tokens) {
14
14
  if (token.chainId !== chainId) {
15
- console.warn(`Requested tokens have to be on the same chain.`)
15
+ console.warn('Requested tokens have to be on the same chain.')
16
16
  }
17
- })
18
-
17
+ }
19
18
  const apiClient = await getUTXOAPIPublicClient(ChainId.BTC)
20
19
  const client = await getUTXOPublicClient(ChainId.BTC)
21
20
  const [balance, blockCount] = await Promise.all([
@@ -1,12 +1,12 @@
1
1
  import {
2
- createClient,
3
- fallback,
4
2
  http,
5
- rpcSchema,
6
3
  type Chain,
7
4
  type Client,
8
5
  type FallbackTransport,
9
6
  type HttpTransport,
7
+ createClient,
8
+ fallback,
9
+ rpcSchema,
10
10
  } from 'viem'
11
11
  import { config } from '../../config.js'
12
12
  import { getRpcUrls } from '../rpc.js'
@@ -48,6 +48,7 @@ export const getUTXOPublicClient = async (chainId: number) => {
48
48
  chain,
49
49
  rpcSchema: rpcSchema<UTXOSchema>(),
50
50
  transport: fallback(fallbackTransports),
51
+ pollingInterval: 10_000,
51
52
  }).extend(UTXOActions)
52
53
  publicClients[chainId] = client
53
54
  }