@lifi/sdk 3.2.0-alpha.1 → 3.3.0-alpha.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 (345) hide show
  1. package/package.json +12 -4
  2. package/src/_cjs/core/EVM/EVMStepExecutor.js +3 -2
  3. package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -1
  4. package/src/_cjs/core/EVM/getAllowance.js +5 -5
  5. package/src/_cjs/core/EVM/getAllowance.js.map +1 -1
  6. package/src/_cjs/core/EVM/getEVMBalance.js +5 -5
  7. package/src/_cjs/core/EVM/getEVMBalance.js.map +1 -1
  8. package/src/_cjs/core/EVM/setAllowance.js +5 -5
  9. package/src/_cjs/core/EVM/setAllowance.js.map +1 -1
  10. package/src/_cjs/core/Solana/Solana.js +2 -2
  11. package/src/_cjs/core/Solana/Solana.js.map +1 -1
  12. package/src/_cjs/core/Solana/SolanaStepExecutor.js +7 -10
  13. package/src/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -1
  14. package/src/_cjs/core/Solana/getSNSAddress.js +2 -2
  15. package/src/_cjs/core/Solana/getSNSAddress.js.map +1 -1
  16. package/src/_cjs/core/Solana/{isAddress.js → isSVMAddress.js} +3 -3
  17. package/src/_cjs/core/Solana/isSVMAddress.js.map +1 -0
  18. package/src/_cjs/core/UTXO/UTXO.js +38 -0
  19. package/src/_cjs/core/UTXO/UTXO.js.map +1 -0
  20. package/src/_cjs/core/UTXO/UTXOStepExecutor.js +219 -0
  21. package/src/_cjs/core/UTXO/UTXOStepExecutor.js.map +1 -0
  22. package/src/_cjs/core/UTXO/blockchairApi.js +169 -0
  23. package/src/_cjs/core/UTXO/blockchairApi.js.map +1 -0
  24. package/src/_cjs/core/UTXO/blockchairApiTypes.js +26 -0
  25. package/src/_cjs/core/UTXO/blockchairApiTypes.js.map +1 -0
  26. package/src/_cjs/core/UTXO/getUTXOAPIPublicClient.js +48 -0
  27. package/src/_cjs/core/UTXO/getUTXOAPIPublicClient.js.map +1 -0
  28. package/src/_cjs/core/UTXO/getUTXOBalance.js +30 -0
  29. package/src/_cjs/core/UTXO/getUTXOBalance.js.map +1 -0
  30. package/src/_cjs/core/UTXO/getUTXOPublicClient.js +36 -0
  31. package/src/_cjs/core/UTXO/getUTXOPublicClient.js.map +1 -0
  32. package/src/_cjs/core/UTXO/isUTXOAddress.js +133 -0
  33. package/src/_cjs/core/UTXO/isUTXOAddress.js.map +1 -0
  34. package/src/_cjs/core/UTXO/parseUTXOErrors.js +30 -0
  35. package/src/_cjs/core/UTXO/parseUTXOErrors.js.map +1 -0
  36. package/src/_cjs/core/UTXO/requestClient.js +63 -0
  37. package/src/_cjs/core/UTXO/requestClient.js.map +1 -0
  38. package/src/_cjs/core/UTXO/types.js +8 -0
  39. package/src/_cjs/core/UTXO/types.js.map +1 -0
  40. package/src/_cjs/core/UTXO/utxo-stack/actions/getBalance.js +11 -0
  41. package/src/_cjs/core/UTXO/utxo-stack/actions/getBalance.js.map +1 -0
  42. package/src/_cjs/core/UTXO/utxo-stack/actions/getBlockCount.js +11 -0
  43. package/src/_cjs/core/UTXO/utxo-stack/actions/getBlockCount.js.map +1 -0
  44. package/src/_cjs/core/UTXO/utxo-stack/actions/getUTXOTransaction.js +15 -0
  45. package/src/_cjs/core/UTXO/utxo-stack/actions/getUTXOTransaction.js.map +1 -0
  46. package/src/_cjs/core/UTXO/utxo-stack/actions/sendUTXOTransaction.js +15 -0
  47. package/src/_cjs/core/UTXO/utxo-stack/actions/sendUTXOTransaction.js.map +1 -0
  48. package/src/_cjs/core/UTXO/utxo-stack/actions/signPsbt.js +11 -0
  49. package/src/_cjs/core/UTXO/utxo-stack/actions/signPsbt.js.map +1 -0
  50. package/src/_cjs/core/UTXO/utxo-stack/clients/types.js +3 -0
  51. package/src/_cjs/core/UTXO/utxo-stack/clients/types.js.map +1 -0
  52. package/src/_cjs/core/UTXO/utxo-stack/decorators/UTXOAPIActions.js +10 -0
  53. package/src/_cjs/core/UTXO/utxo-stack/decorators/UTXOAPIActions.js.map +1 -0
  54. package/src/_cjs/core/UTXO/utxo-stack/decorators/UTXOActions.js +14 -0
  55. package/src/_cjs/core/UTXO/utxo-stack/decorators/UTXOActions.js.map +1 -0
  56. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/ankr.js +21 -0
  57. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/ankr.js.map +1 -0
  58. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/blockchair.js +24 -0
  59. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/blockchair.js.map +1 -0
  60. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/blockcypher.js +21 -0
  61. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/blockcypher.js.map +1 -0
  62. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.js +77 -0
  63. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.js.map +1 -0
  64. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.js +22 -0
  65. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.js.map +1 -0
  66. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/mempool.js +17 -0
  67. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/mempool.js.map +1 -0
  68. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/types.js +3 -0
  69. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/types.js.map +1 -0
  70. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/utxo.js +56 -0
  71. package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/utxo.js.map +1 -0
  72. package/src/_cjs/core/UTXO/utxo-stack/types/transaction.js +3 -0
  73. package/src/_cjs/core/UTXO/utxo-stack/types/transaction.js.map +1 -0
  74. package/src/_cjs/core/checkBalance.js +3 -3
  75. package/src/_cjs/core/checkBalance.js.map +1 -1
  76. package/src/_cjs/core/utils.js +0 -6
  77. package/src/_cjs/core/utils.js.map +1 -1
  78. package/src/_cjs/core/waitForReceivingTransaction.js +4 -4
  79. package/src/_cjs/core/waitForReceivingTransaction.js.map +1 -1
  80. package/src/_cjs/createConfig.js +3 -1
  81. package/src/_cjs/createConfig.js.map +1 -1
  82. package/src/_cjs/index.js +10 -3
  83. package/src/_cjs/index.js.map +1 -1
  84. package/src/_cjs/request.js +3 -3
  85. package/src/_cjs/request.js.map +1 -1
  86. package/src/_cjs/services/api.js +15 -7
  87. package/src/_cjs/services/api.js.map +1 -1
  88. package/src/_cjs/services/balance.js +7 -3
  89. package/src/_cjs/services/balance.js.map +1 -1
  90. package/src/_cjs/utils/index.js +1 -1
  91. package/src/_cjs/utils/index.js.map +1 -1
  92. package/src/_cjs/utils/{utils.js → isZeroAddress.js} +2 -19
  93. package/src/_cjs/utils/isZeroAddress.js.map +1 -0
  94. package/src/_cjs/utils/sleep.js +9 -0
  95. package/src/_cjs/utils/sleep.js.map +1 -0
  96. package/src/_cjs/utils/waitForResult.js +16 -0
  97. package/src/_cjs/utils/waitForResult.js.map +1 -0
  98. package/src/_cjs/utils/withDedupe.js +37 -0
  99. package/src/_cjs/utils/withDedupe.js.map +1 -0
  100. package/src/_cjs/version.js +1 -1
  101. package/src/_esm/core/EVM/EVMStepExecutor.js +3 -2
  102. package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -1
  103. package/src/_esm/core/EVM/getAllowance.js +1 -1
  104. package/src/_esm/core/EVM/getAllowance.js.map +1 -1
  105. package/src/_esm/core/EVM/getEVMBalance.js +1 -1
  106. package/src/_esm/core/EVM/getEVMBalance.js.map +1 -1
  107. package/src/_esm/core/EVM/setAllowance.js +1 -1
  108. package/src/_esm/core/EVM/setAllowance.js.map +1 -1
  109. package/src/_esm/core/Solana/Solana.js +2 -2
  110. package/src/_esm/core/Solana/Solana.js.map +1 -1
  111. package/src/_esm/core/Solana/SolanaStepExecutor.js +6 -9
  112. package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -1
  113. package/src/_esm/core/Solana/getSNSAddress.js +2 -2
  114. package/src/_esm/core/Solana/getSNSAddress.js.map +1 -1
  115. package/src/_esm/core/Solana/{isAddress.js → isSVMAddress.js} +2 -2
  116. package/src/_esm/core/Solana/isSVMAddress.js.map +1 -0
  117. package/src/_esm/core/UTXO/UTXO.js +36 -0
  118. package/src/_esm/core/UTXO/UTXO.js.map +1 -0
  119. package/src/_esm/core/UTXO/UTXOStepExecutor.js +243 -0
  120. package/src/_esm/core/UTXO/UTXOStepExecutor.js.map +1 -0
  121. package/src/_esm/core/UTXO/blockchairApi.js +167 -0
  122. package/src/_esm/core/UTXO/blockchairApi.js.map +1 -0
  123. package/src/_esm/core/UTXO/blockchairApiTypes.js +23 -0
  124. package/src/_esm/core/UTXO/blockchairApiTypes.js.map +1 -0
  125. package/src/_esm/core/UTXO/getUTXOAPIPublicClient.js +50 -0
  126. package/src/_esm/core/UTXO/getUTXOAPIPublicClient.js.map +1 -0
  127. package/src/_esm/core/UTXO/getUTXOBalance.js +26 -0
  128. package/src/_esm/core/UTXO/getUTXOBalance.js.map +1 -0
  129. package/src/_esm/core/UTXO/getUTXOPublicClient.js +38 -0
  130. package/src/_esm/core/UTXO/getUTXOPublicClient.js.map +1 -0
  131. package/src/_esm/core/UTXO/isUTXOAddress.js +128 -0
  132. package/src/_esm/core/UTXO/isUTXOAddress.js.map +1 -0
  133. package/src/_esm/core/UTXO/parseUTXOErrors.js +26 -0
  134. package/src/_esm/core/UTXO/parseUTXOErrors.js.map +1 -0
  135. package/src/_esm/core/UTXO/requestClient.js +59 -0
  136. package/src/_esm/core/UTXO/requestClient.js.map +1 -0
  137. package/src/_esm/core/UTXO/types.js +6 -0
  138. package/src/_esm/core/UTXO/types.js.map +1 -0
  139. package/src/_esm/core/UTXO/utxo-stack/actions/getBalance.js +9 -0
  140. package/src/_esm/core/UTXO/utxo-stack/actions/getBalance.js.map +1 -0
  141. package/src/_esm/core/UTXO/utxo-stack/actions/getBlockCount.js +9 -0
  142. package/src/_esm/core/UTXO/utxo-stack/actions/getBlockCount.js.map +1 -0
  143. package/src/_esm/core/UTXO/utxo-stack/actions/getUTXOTransaction.js +13 -0
  144. package/src/_esm/core/UTXO/utxo-stack/actions/getUTXOTransaction.js.map +1 -0
  145. package/src/_esm/core/UTXO/utxo-stack/actions/sendUTXOTransaction.js +13 -0
  146. package/src/_esm/core/UTXO/utxo-stack/actions/sendUTXOTransaction.js.map +1 -0
  147. package/src/_esm/core/UTXO/utxo-stack/actions/signPsbt.js +9 -0
  148. package/src/_esm/core/UTXO/utxo-stack/actions/signPsbt.js.map +1 -0
  149. package/src/_esm/core/UTXO/utxo-stack/clients/types.js +2 -0
  150. package/src/_esm/core/UTXO/utxo-stack/clients/types.js.map +1 -0
  151. package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOAPIActions.js +7 -0
  152. package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOAPIActions.js.map +1 -0
  153. package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOActions.js +11 -0
  154. package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOActions.js.map +1 -0
  155. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/ankr.js +18 -0
  156. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/ankr.js.map +1 -0
  157. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/blockchair.js +21 -0
  158. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/blockchair.js.map +1 -0
  159. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/blockcypher.js +18 -0
  160. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/blockcypher.js.map +1 -0
  161. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.js +74 -0
  162. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.js.map +1 -0
  163. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.js +19 -0
  164. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.js.map +1 -0
  165. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/mempool.js +14 -0
  166. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/mempool.js.map +1 -0
  167. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/types.js +2 -0
  168. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/types.js.map +1 -0
  169. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/utxo.js +53 -0
  170. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/utxo.js.map +1 -0
  171. package/src/_esm/core/UTXO/utxo-stack/types/transaction.js +2 -0
  172. package/src/_esm/core/UTXO/utxo-stack/types/transaction.js.map +1 -0
  173. package/src/_esm/core/checkBalance.js +2 -2
  174. package/src/_esm/core/checkBalance.js.map +1 -1
  175. package/src/_esm/core/utils.js +0 -5
  176. package/src/_esm/core/utils.js.map +1 -1
  177. package/src/_esm/core/waitForReceivingTransaction.js +4 -4
  178. package/src/_esm/core/waitForReceivingTransaction.js.map +1 -1
  179. package/src/_esm/createConfig.js +3 -1
  180. package/src/_esm/createConfig.js.map +1 -1
  181. package/src/_esm/index.js +7 -3
  182. package/src/_esm/index.js.map +1 -1
  183. package/src/_esm/request.js +3 -3
  184. package/src/_esm/request.js.map +1 -1
  185. package/src/_esm/services/api.js +15 -7
  186. package/src/_esm/services/api.js.map +1 -1
  187. package/src/_esm/services/balance.js +9 -5
  188. package/src/_esm/services/balance.js.map +1 -1
  189. package/src/_esm/utils/index.js +1 -1
  190. package/src/_esm/utils/index.js.map +1 -1
  191. package/src/_esm/utils/isZeroAddress.js +17 -0
  192. package/src/_esm/utils/isZeroAddress.js.map +1 -0
  193. package/src/_esm/utils/sleep.js +6 -0
  194. package/src/_esm/utils/sleep.js.map +1 -0
  195. package/src/_esm/utils/waitForResult.js +18 -0
  196. package/src/_esm/utils/waitForResult.js.map +1 -0
  197. package/src/_esm/utils/withDedupe.js +40 -0
  198. package/src/_esm/utils/withDedupe.js.map +1 -0
  199. package/src/_esm/version.js +1 -1
  200. package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -1
  201. package/src/_types/core/EVM/types.d.ts +1 -1
  202. package/src/_types/core/EVM/types.d.ts.map +1 -1
  203. package/src/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -1
  204. package/src/_types/core/Solana/isSVMAddress.d.ts +2 -0
  205. package/src/_types/core/Solana/isSVMAddress.d.ts.map +1 -0
  206. package/src/_types/core/UTXO/UTXO.d.ts +3 -0
  207. package/src/_types/core/UTXO/UTXO.d.ts.map +1 -0
  208. package/src/_types/core/UTXO/UTXOStepExecutor.d.ts +13 -0
  209. package/src/_types/core/UTXO/UTXOStepExecutor.d.ts.map +1 -0
  210. package/src/_types/core/UTXO/blockchairApi.d.ts +37 -0
  211. package/src/_types/core/UTXO/blockchairApi.d.ts.map +1 -0
  212. package/src/_types/core/UTXO/blockchairApiTypes.d.ts +229 -0
  213. package/src/_types/core/UTXO/blockchairApiTypes.d.ts.map +1 -0
  214. package/src/_types/core/UTXO/getUTXOAPIPublicClient.d.ts +10 -0
  215. package/src/_types/core/UTXO/getUTXOAPIPublicClient.d.ts.map +1 -0
  216. package/src/_types/core/UTXO/getUTXOBalance.d.ts +3 -0
  217. package/src/_types/core/UTXO/getUTXOBalance.d.ts.map +1 -0
  218. package/src/_types/core/UTXO/getUTXOPublicClient.d.ts +10 -0
  219. package/src/_types/core/UTXO/getUTXOPublicClient.d.ts.map +1 -0
  220. package/src/_types/core/UTXO/isUTXOAddress.d.ts +21 -0
  221. package/src/_types/core/UTXO/isUTXOAddress.d.ts.map +1 -0
  222. package/src/_types/core/UTXO/parseUTXOErrors.d.ts +4 -0
  223. package/src/_types/core/UTXO/parseUTXOErrors.d.ts.map +1 -0
  224. package/src/_types/core/UTXO/requestClient.d.ts +22 -0
  225. package/src/_types/core/UTXO/requestClient.d.ts.map +1 -0
  226. package/src/_types/core/UTXO/types.d.ts +10 -0
  227. package/src/_types/core/UTXO/types.d.ts.map +1 -0
  228. package/src/_types/core/UTXO/utxo-stack/actions/getBalance.d.ts +9 -0
  229. package/src/_types/core/UTXO/utxo-stack/actions/getBalance.d.ts.map +1 -0
  230. package/src/_types/core/UTXO/utxo-stack/actions/getBlockCount.d.ts +5 -0
  231. package/src/_types/core/UTXO/utxo-stack/actions/getBlockCount.d.ts.map +1 -0
  232. package/src/_types/core/UTXO/utxo-stack/actions/getUTXOTransaction.d.ts +12 -0
  233. package/src/_types/core/UTXO/utxo-stack/actions/getUTXOTransaction.d.ts.map +1 -0
  234. package/src/_types/core/UTXO/utxo-stack/actions/sendUTXOTransaction.d.ts +11 -0
  235. package/src/_types/core/UTXO/utxo-stack/actions/sendUTXOTransaction.d.ts.map +1 -0
  236. package/src/_types/core/UTXO/utxo-stack/actions/signPsbt.d.ts +4 -0
  237. package/src/_types/core/UTXO/utxo-stack/actions/signPsbt.d.ts.map +1 -0
  238. package/src/_types/core/UTXO/utxo-stack/clients/types.d.ts +44 -0
  239. package/src/_types/core/UTXO/utxo-stack/clients/types.d.ts.map +1 -0
  240. package/src/_types/core/UTXO/utxo-stack/decorators/UTXOAPIActions.d.ts +7 -0
  241. package/src/_types/core/UTXO/utxo-stack/decorators/UTXOAPIActions.d.ts.map +1 -0
  242. package/src/_types/core/UTXO/utxo-stack/decorators/UTXOActions.d.ts +11 -0
  243. package/src/_types/core/UTXO/utxo-stack/decorators/UTXOActions.d.ts.map +1 -0
  244. package/src/_types/core/UTXO/utxo-stack/transports/utxo/ankr.d.ts +3 -0
  245. package/src/_types/core/UTXO/utxo-stack/transports/utxo/ankr.d.ts.map +1 -0
  246. package/src/_types/core/UTXO/utxo-stack/transports/utxo/blockchair.d.ts +3 -0
  247. package/src/_types/core/UTXO/utxo-stack/transports/utxo/blockchair.d.ts.map +1 -0
  248. package/src/_types/core/UTXO/utxo-stack/transports/utxo/blockcypher.d.ts +3 -0
  249. package/src/_types/core/UTXO/utxo-stack/transports/utxo/blockcypher.d.ts.map +1 -0
  250. package/src/_types/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.d.ts +25 -0
  251. package/src/_types/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.d.ts.map +1 -0
  252. package/src/_types/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.d.ts +3 -0
  253. package/src/_types/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.d.ts.map +1 -0
  254. package/src/_types/core/UTXO/utxo-stack/transports/utxo/mempool.d.ts +3 -0
  255. package/src/_types/core/UTXO/utxo-stack/transports/utxo/mempool.d.ts.map +1 -0
  256. package/src/_types/core/UTXO/utxo-stack/transports/utxo/types.d.ts +45 -0
  257. package/src/_types/core/UTXO/utxo-stack/transports/utxo/types.d.ts.map +1 -0
  258. package/src/_types/core/UTXO/utxo-stack/transports/utxo/utxo.d.ts +7 -0
  259. package/src/_types/core/UTXO/utxo-stack/transports/utxo/utxo.d.ts.map +1 -0
  260. package/src/_types/core/UTXO/utxo-stack/types/transaction.d.ts +42 -0
  261. package/src/_types/core/UTXO/utxo-stack/types/transaction.d.ts.map +1 -0
  262. package/src/_types/core/utils.d.ts +0 -1
  263. package/src/_types/core/utils.d.ts.map +1 -1
  264. package/src/_types/core/waitForReceivingTransaction.d.ts +1 -1
  265. package/src/_types/core/waitForReceivingTransaction.d.ts.map +1 -1
  266. package/src/_types/createConfig.d.ts.map +1 -1
  267. package/src/_types/index.d.ts +7 -3
  268. package/src/_types/index.d.ts.map +1 -1
  269. package/src/_types/request.d.ts.map +1 -1
  270. package/src/_types/services/api.d.ts +1 -1
  271. package/src/_types/services/api.d.ts.map +1 -1
  272. package/src/_types/services/balance.d.ts +3 -3
  273. package/src/_types/services/balance.d.ts.map +1 -1
  274. package/src/_types/utils/index.d.ts +1 -1
  275. package/src/_types/utils/index.d.ts.map +1 -1
  276. package/src/_types/utils/isZeroAddress.d.ts +3 -0
  277. package/src/_types/utils/isZeroAddress.d.ts.map +1 -0
  278. package/src/_types/utils/sleep.d.ts +2 -0
  279. package/src/_types/utils/sleep.d.ts.map +1 -0
  280. package/src/_types/utils/waitForResult.d.ts +8 -0
  281. package/src/_types/utils/waitForResult.d.ts.map +1 -0
  282. package/src/_types/utils/withDedupe.d.ts +20 -0
  283. package/src/_types/utils/withDedupe.d.ts.map +1 -0
  284. package/src/_types/version.d.ts +1 -1
  285. package/src/core/EVM/EVMStepExecutor.ts +3 -5
  286. package/src/core/EVM/getAllowance.ts +1 -1
  287. package/src/core/EVM/getEVMBalance.ts +1 -1
  288. package/src/core/EVM/setAllowance.ts +1 -1
  289. package/src/core/EVM/types.ts +1 -1
  290. package/src/core/Solana/Solana.ts +2 -2
  291. package/src/core/Solana/SolanaStepExecutor.ts +14 -17
  292. package/src/core/Solana/getSNSAddress.ts +2 -2
  293. package/src/core/Solana/{isAddress.ts → isSVMAddress.ts} +1 -1
  294. package/src/core/UTXO/UTXO.ts +43 -0
  295. package/src/core/UTXO/UTXOStepExecutor.ts +351 -0
  296. package/src/core/UTXO/blockchairApi.ts +273 -0
  297. package/src/core/UTXO/blockchairApiTypes.ts +253 -0
  298. package/src/core/UTXO/getUTXOAPIPublicClient.ts +71 -0
  299. package/src/core/UTXO/getUTXOBalance.ts +31 -0
  300. package/src/core/UTXO/getUTXOPublicClient.ts +60 -0
  301. package/src/core/UTXO/isUTXOAddress.ts +166 -0
  302. package/src/core/UTXO/parseUTXOErrors.ts +36 -0
  303. package/src/core/UTXO/requestClient.ts +84 -0
  304. package/src/core/UTXO/types.ts +15 -0
  305. package/src/core/UTXO/utxo-stack/actions/getBalance.ts +26 -0
  306. package/src/core/UTXO/utxo-stack/actions/getBlockCount.ts +20 -0
  307. package/src/core/UTXO/utxo-stack/actions/getUTXOTransaction.ts +30 -0
  308. package/src/core/UTXO/utxo-stack/actions/sendUTXOTransaction.ts +29 -0
  309. package/src/core/UTXO/utxo-stack/actions/signPsbt.ts +23 -0
  310. package/src/core/UTXO/utxo-stack/clients/types.ts +48 -0
  311. package/src/core/UTXO/utxo-stack/decorators/UTXOAPIActions.ts +21 -0
  312. package/src/core/UTXO/utxo-stack/decorators/UTXOActions.ts +37 -0
  313. package/src/core/UTXO/utxo-stack/transports/utxo/ankr.ts +30 -0
  314. package/src/core/UTXO/utxo-stack/transports/utxo/blockchair.ts +27 -0
  315. package/src/core/UTXO/utxo-stack/transports/utxo/blockcypher.ts +32 -0
  316. package/src/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.ts +122 -0
  317. package/src/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.ts +22 -0
  318. package/src/core/UTXO/utxo-stack/transports/utxo/mempool.ts +34 -0
  319. package/src/core/UTXO/utxo-stack/transports/utxo/types.ts +55 -0
  320. package/src/core/UTXO/utxo-stack/transports/utxo/utxo.ts +84 -0
  321. package/src/core/UTXO/utxo-stack/types/transaction.ts +43 -0
  322. package/src/core/checkBalance.ts +2 -2
  323. package/src/core/utils.ts +0 -6
  324. package/src/core/waitForReceivingTransaction.ts +5 -4
  325. package/src/createConfig.ts +3 -1
  326. package/src/index.ts +7 -3
  327. package/src/request.ts +3 -3
  328. package/src/services/api.ts +65 -44
  329. package/src/services/balance.ts +11 -6
  330. package/src/utils/index.ts +1 -1
  331. package/src/utils/isZeroAddress.ts +20 -0
  332. package/src/utils/sleep.ts +5 -0
  333. package/src/utils/waitForResult.ts +21 -0
  334. package/src/utils/withDedupe.ts +46 -0
  335. package/src/version.ts +1 -1
  336. package/src/_cjs/core/Solana/isAddress.js.map +0 -1
  337. package/src/_cjs/utils/utils.js.map +0 -1
  338. package/src/_esm/core/Solana/isAddress.js.map +0 -1
  339. package/src/_esm/utils/utils.js +0 -38
  340. package/src/_esm/utils/utils.js.map +0 -1
  341. package/src/_types/core/Solana/isAddress.d.ts +0 -2
  342. package/src/_types/core/Solana/isAddress.d.ts.map +0 -1
  343. package/src/_types/utils/utils.d.ts +0 -11
  344. package/src/_types/utils/utils.d.ts.map +0 -1
  345. package/src/utils/utils.ts +0 -48
@@ -1,7 +1,7 @@
1
1
  import type { Client, Hash, SendTransactionParameters } from 'viem'
2
2
  import { encodeFunctionData } from 'viem'
3
3
  import { sendTransaction } from 'viem/actions'
4
- import { isNativeTokenAddress } from '../../utils/utils.js'
4
+ import { isNativeTokenAddress } from '../../utils/isZeroAddress.js'
5
5
  import type { ExecutionOptions, TransactionParameters } from '../types.js'
6
6
  import { approveAbi } from './abi.js'
7
7
  import { getAllowance } from './getAllowance.js'
@@ -63,7 +63,7 @@ export interface MultisigTransaction {
63
63
  }
64
64
 
65
65
  export interface MultisigConfig {
66
- isMultisigClient: boolean
66
+ isMultisigWalletClient: boolean
67
67
  getMultisigTransactionDetails: (
68
68
  txHash: Hash,
69
69
  fromChainId: number,
@@ -3,7 +3,7 @@ import type { StepExecutorOptions } from '../types.js'
3
3
  import { SolanaStepExecutor } from './SolanaStepExecutor.js'
4
4
  import { getSNSAddress } from './getSNSAddress.js'
5
5
  import { getSolanaBalance } from './getSolanaBalance.js'
6
- import { isAddress } from './isAddress.js'
6
+ import { isSVMAddress } from './isSVMAddress.js'
7
7
  import type { SolanaProvider, SolanaProviderOptions } from './types.js'
8
8
 
9
9
  export function Solana(options?: SolanaProviderOptions): SolanaProvider {
@@ -12,7 +12,7 @@ export function Solana(options?: SolanaProviderOptions): SolanaProvider {
12
12
  get type() {
13
13
  return ChainType.SVM
14
14
  },
15
- isAddress,
15
+ isAddress: isSVMAddress,
16
16
  resolveAddress: getSNSAddress,
17
17
  getBalance: getSolanaBalance,
18
18
  async getStepExecutor(
@@ -6,12 +6,14 @@ import {
6
6
  type SignatureResult,
7
7
  } from '@solana/web3.js'
8
8
  import bs58 from 'bs58'
9
+ import { withTimeout } from 'viem'
9
10
  import { config } from '../../config.js'
10
11
  import { LiFiErrorCode } from '../../errors/constants.js'
11
12
  import { TransactionError } from '../../errors/errors.js'
12
13
  import { getStepTransaction } from '../../services/api.js'
13
14
  import { base64ToUint8Array } from '../../utils/base64ToUint8Array.js'
14
15
  import { getTransactionFailedMessage } from '../../utils/index.js'
16
+ import { sleep } from '../../utils/sleep.js'
15
17
  import { BaseStepExecutor } from '../BaseStepExecutor.js'
16
18
  import { checkBalance } from '../checkBalance.js'
17
19
  import { getSubstatusMessage } from '../processMessages.js'
@@ -21,7 +23,6 @@ import type {
21
23
  StepExecutorOptions,
22
24
  TransactionParameters,
23
25
  } from '../types.js'
24
- import { sleep } from '../utils.js'
25
26
  import { waitForReceivingTransaction } from '../waitForReceivingTransaction.js'
26
27
  import { getSolanaConnection } from './connection.js'
27
28
  import { parseSolanaErrors } from './parseSolanaErrors.js'
@@ -144,23 +145,19 @@ export class SolanaStepExecutor extends BaseStepExecutor {
144
145
 
145
146
  this.checkWalletAdapter(step)
146
147
 
147
- const signedTxPromise =
148
- this.walletAdapter.signTransaction(versionedTransaction)
149
-
150
148
  // We give users 2 minutes to sign the transaction or it should be considered expired
151
- const signedTx = await Promise.race([
152
- signedTxPromise,
153
- // https://solana.com/docs/advanced/confirmation#transaction-expiration
154
- // Use 2 minutes to account for fluctuations
155
- sleep(120_000),
156
- ])
157
-
158
- if (!signedTx) {
159
- throw new TransactionError(
160
- LiFiErrorCode.TransactionExpired,
161
- 'Transaction has expired: blockhash is no longer recent enough.'
162
- )
163
- }
149
+ const signedTx = await withTimeout<VersionedTransaction>(
150
+ () => this.walletAdapter.signTransaction(versionedTransaction),
151
+ {
152
+ // https://solana.com/docs/advanced/confirmation#transaction-expiration
153
+ // Use 2 minutes to account for fluctuations
154
+ timeout: 120_000,
155
+ errorInstance: new TransactionError(
156
+ LiFiErrorCode.TransactionExpired,
157
+ 'Transaction has expired: blockhash is no longer recent enough.'
158
+ ),
159
+ }
160
+ )
164
161
 
165
162
  process = this.statusManager.updateProcess(
166
163
  step,
@@ -1,4 +1,4 @@
1
- import { isAddress } from './isAddress.js'
1
+ import { isSVMAddress } from './isSVMAddress.js'
2
2
 
3
3
  interface SNSResult {
4
4
  s: 'ok' | 'error'
@@ -21,7 +21,7 @@ export const getSNSAddress = async (name: string) => {
21
21
 
22
22
  const data: SNSResult = await response.json()
23
23
 
24
- if (!isAddress(data.result)) {
24
+ if (!isSVMAddress(data.result)) {
25
25
  return
26
26
  }
27
27
 
@@ -1,6 +1,6 @@
1
1
  import { PublicKey } from '@solana/web3.js'
2
2
 
3
- export function isAddress(address: string): boolean {
3
+ export function isSVMAddress(address: string): boolean {
4
4
  try {
5
5
  new PublicKey(address)
6
6
  return true
@@ -0,0 +1,43 @@
1
+ import { ChainType } from '@lifi/types'
2
+ import type { StepExecutorOptions } from '../types.js'
3
+ import { UTXOStepExecutor } from './UTXOStepExecutor.js'
4
+ import { getUTXOBalance } from './getUTXOBalance.js'
5
+ import { isUTXOAddress } from './isUTXOAddress.js'
6
+ import type { UTXOProvider, UTXOProviderOptions } from './types.js'
7
+
8
+ export function UTXO(options?: UTXOProviderOptions): UTXOProvider {
9
+ const _options: UTXOProviderOptions = options ?? {}
10
+ return {
11
+ get type() {
12
+ return ChainType.UTXO
13
+ },
14
+ isAddress: isUTXOAddress,
15
+ async resolveAddress(name) {
16
+ // Not supported on UTXO yet
17
+ return name
18
+ },
19
+ getBalance: getUTXOBalance,
20
+ async getStepExecutor(
21
+ options: StepExecutorOptions
22
+ ): Promise<UTXOStepExecutor> {
23
+ if (!_options.getWalletClient) {
24
+ throw new Error(`Client is not provided.`)
25
+ }
26
+
27
+ const walletClient = await _options.getWalletClient()
28
+
29
+ const executor = new UTXOStepExecutor({
30
+ client: walletClient,
31
+ routeId: options.routeId,
32
+ executionOptions: {
33
+ ...options.executionOptions,
34
+ },
35
+ })
36
+
37
+ return executor
38
+ },
39
+ setOptions(options: UTXOProviderOptions) {
40
+ Object.assign(_options, options)
41
+ },
42
+ }
43
+ }
@@ -0,0 +1,351 @@
1
+ import {
2
+ ChainId,
3
+ type ExtendedTransactionInfo,
4
+ type FullStatusData,
5
+ } from '@lifi/types'
6
+ import { address, networks, Psbt } from 'bitcoinjs-lib'
7
+ import { withRetry, withTimeout, type Client } from 'viem'
8
+ import { config } from '../../config.js'
9
+ import { LiFiErrorCode } from '../../errors/constants.js'
10
+ import { TransactionError } from '../../errors/errors.js'
11
+ import { getStepTransaction } from '../../services/api.js'
12
+ import {
13
+ getTransactionFailedMessage,
14
+ waitForResult,
15
+ } from '../../utils/index.js'
16
+ import { BaseStepExecutor } from '../BaseStepExecutor.js'
17
+ import { checkBalance } from '../checkBalance.js'
18
+ import { getSubstatusMessage } from '../processMessages.js'
19
+ import { stepComparison } from '../stepComparison.js'
20
+ import type {
21
+ LiFiStepExtended,
22
+ StepExecutorOptions,
23
+ TransactionParameters,
24
+ } from '../types.js'
25
+ import { waitForReceivingTransaction } from '../waitForReceivingTransaction.js'
26
+ import { getUTXOPublicClient } from './getUTXOPublicClient.js'
27
+ import { parseUTXOErrors } from './parseUTXOErrors.js'
28
+ import { signPsbt } from './utxo-stack/actions/signPsbt.js'
29
+
30
+ export interface UTXOStepExecutorOptions extends StepExecutorOptions {
31
+ client: Client
32
+ }
33
+
34
+ export class UTXOStepExecutor extends BaseStepExecutor {
35
+ private client: Client
36
+
37
+ constructor(options: UTXOStepExecutorOptions) {
38
+ super(options)
39
+ this.client = options.client
40
+ }
41
+
42
+ checkClient = (step: LiFiStepExtended) => {
43
+ // TODO: check chain and possibly implement chain switch?
44
+ // Prevent execution of the quote by wallet different from the one which requested the quote
45
+ if (this.client.account?.address !== step.action.fromAddress) {
46
+ throw new TransactionError(
47
+ LiFiErrorCode.WalletChangedDuringExecution,
48
+ 'The wallet address that requested the quote does not match the wallet address attempting to sign the transaction.'
49
+ )
50
+ }
51
+ }
52
+
53
+ executeStep = async (step: LiFiStepExtended): Promise<LiFiStepExtended> => {
54
+ step.execution = this.statusManager.initExecutionObject(step)
55
+
56
+ const fromChain = await config.getChainById(step.action.fromChainId)
57
+ const toChain = await config.getChainById(step.action.toChainId)
58
+
59
+ const isBridgeExecution = fromChain.id !== toChain.id
60
+ const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'
61
+
62
+ // STEP 2: Get transaction
63
+ let process = this.statusManager.findOrCreateProcess(
64
+ step,
65
+ currentProcessType
66
+ )
67
+
68
+ const publicClient = await getUTXOPublicClient(ChainId.BTC)
69
+
70
+ if (process.status !== 'DONE') {
71
+ try {
72
+ let txHash: string
73
+ if (process.txHash) {
74
+ // Make sure that the chain is still correct
75
+ this.checkClient(step)
76
+
77
+ // Wait for exiting transaction
78
+ txHash = process.txHash
79
+ } else {
80
+ process = this.statusManager.updateProcess(
81
+ step,
82
+ process.type,
83
+ 'STARTED'
84
+ )
85
+
86
+ // Check balance
87
+ await checkBalance(this.client.account!.address, step)
88
+
89
+ // Create new transaction
90
+ if (!step.transactionRequest) {
91
+ const { execution, ...stepBase } = step
92
+ const updatedStep = await getStepTransaction(stepBase)
93
+ const comparedStep = await stepComparison(
94
+ this.statusManager,
95
+ step,
96
+ updatedStep,
97
+ this.allowUserInteraction,
98
+ this.executionOptions
99
+ )
100
+ step = {
101
+ ...comparedStep,
102
+ execution: step.execution,
103
+ }
104
+ }
105
+
106
+ if (!step.transactionRequest?.data) {
107
+ throw new TransactionError(
108
+ LiFiErrorCode.TransactionUnprepared,
109
+ 'Unable to prepare transaction.'
110
+ )
111
+ }
112
+
113
+ process = this.statusManager.updateProcess(
114
+ step,
115
+ process.type,
116
+ 'ACTION_REQUIRED'
117
+ )
118
+
119
+ if (!this.allowUserInteraction) {
120
+ return step
121
+ }
122
+
123
+ let transactionRequest: TransactionParameters = {
124
+ data: step.transactionRequest.data,
125
+ }
126
+
127
+ if (this.executionOptions?.updateTransactionRequestHook) {
128
+ const customizedTransactionRequest: TransactionParameters =
129
+ await this.executionOptions.updateTransactionRequestHook({
130
+ requestType: 'transaction',
131
+ ...transactionRequest,
132
+ })
133
+
134
+ transactionRequest = {
135
+ ...transactionRequest,
136
+ ...customizedTransactionRequest,
137
+ }
138
+ }
139
+
140
+ if (!transactionRequest.data) {
141
+ throw new TransactionError(
142
+ LiFiErrorCode.TransactionUnprepared,
143
+ 'Unable to prepare transaction.'
144
+ )
145
+ }
146
+
147
+ this.checkClient(step)
148
+
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()
167
+
168
+ const psbt = Psbt.fromHex(psbtHex, { network: networks.bitcoin })
169
+
170
+ const inputsToSign = Array.from(
171
+ psbt.data.inputs
172
+ .reduce((map, input, index) => {
173
+ const accountAddress = input.witnessUtxo
174
+ ? address.fromOutputScript(
175
+ input.witnessUtxo.script,
176
+ networks.bitcoin
177
+ )
178
+ : (this.client.account?.address as string)
179
+ if (map.has(accountAddress)) {
180
+ map.get(accountAddress).signingIndexes.push(index)
181
+ } else {
182
+ map.set(accountAddress, {
183
+ address: accountAddress,
184
+ sigHash: 1, // Default to Transaction.SIGHASH_ALL - 1
185
+ signingIndexes: [index],
186
+ })
187
+ }
188
+ return map
189
+ }, new Map())
190
+ .values()
191
+ )
192
+
193
+ // Modify the input sequence number to enable RBF
194
+ psbt.txInputs.forEach((_, index) => {
195
+ // Set sequence number to less than 0xfffffffe, e.g., 0xfffffffd
196
+ psbt.setInputSequence(index, 0xfffffffd)
197
+ })
198
+
199
+ psbtHex = psbt.toHex()
200
+
201
+ // We give users 10 minutes to sign the transaction or it should be considered expired
202
+ const signedPsbtHex = await withTimeout(
203
+ () =>
204
+ signPsbt(this.client, {
205
+ psbt: psbtHex,
206
+ inputsToSign: inputsToSign,
207
+ finalize: false,
208
+ }),
209
+ {
210
+ timeout: 600_000,
211
+ errorInstance: new TransactionError(
212
+ LiFiErrorCode.TransactionExpired,
213
+ 'Transaction has expired.'
214
+ ),
215
+ }
216
+ )
217
+
218
+ const signedPsbt = Psbt.fromHex(signedPsbtHex).finalizeAllInputs()
219
+
220
+ const transactionHex = signedPsbt.extractTransaction().toHex()
221
+
222
+ txHash = await publicClient.sendUTXOTransaction({
223
+ hex: transactionHex,
224
+ })
225
+
226
+ process = this.statusManager.updateProcess(
227
+ step,
228
+ process.type,
229
+ 'PENDING',
230
+ {
231
+ txHash: txHash,
232
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
233
+ }
234
+ )
235
+ }
236
+
237
+ // TODO: improve logic to detect RBF transactions
238
+ await waitForResult(
239
+ () =>
240
+ withRetry(
241
+ async () => {
242
+ const tx = await publicClient.getUTXOTransaction({
243
+ txId: txHash,
244
+ })
245
+ // If there are no confirmations, it means the transaction is still in the mempool
246
+ if (!tx.confirmations) {
247
+ return
248
+ }
249
+ return tx
250
+ },
251
+ {
252
+ retryCount: 10,
253
+ delay: 1000,
254
+ }
255
+ ),
256
+ 10_000
257
+ )
258
+
259
+ if (isBridgeExecution) {
260
+ process = this.statusManager.updateProcess(step, process.type, 'DONE')
261
+ }
262
+ } catch (e: any) {
263
+ const error = await parseUTXOErrors(e, step, process)
264
+ process = this.statusManager.updateProcess(
265
+ step,
266
+ process.type,
267
+ 'FAILED',
268
+ {
269
+ error: {
270
+ message: error.cause.message,
271
+ code: error.code,
272
+ },
273
+ }
274
+ )
275
+ this.statusManager.updateExecution(step, 'FAILED')
276
+ throw error
277
+ }
278
+ }
279
+
280
+ // STEP 5: Wait for the receiving chain
281
+ const processTxHash = process.txHash
282
+ if (isBridgeExecution) {
283
+ process = this.statusManager.findOrCreateProcess(
284
+ step,
285
+ 'RECEIVING_CHAIN',
286
+ 'PENDING'
287
+ )
288
+ }
289
+ let statusResponse: FullStatusData
290
+ try {
291
+ if (!processTxHash) {
292
+ throw new Error('Transaction hash is undefined.')
293
+ }
294
+ statusResponse = (await waitForReceivingTransaction(
295
+ processTxHash,
296
+ this.statusManager,
297
+ process.type,
298
+ step,
299
+ 10_000
300
+ )) as FullStatusData
301
+
302
+ const statusReceiving =
303
+ statusResponse.receiving as ExtendedTransactionInfo
304
+
305
+ process = this.statusManager.updateProcess(step, process.type, 'DONE', {
306
+ substatus: statusResponse.substatus,
307
+ substatusMessage:
308
+ statusResponse.substatusMessage ||
309
+ getSubstatusMessage(statusResponse.status, statusResponse.substatus),
310
+ txHash: statusReceiving?.txHash,
311
+ txLink: `${toChain.metamask.blockExplorerUrls[0]}tx/${statusReceiving?.txHash}`,
312
+ })
313
+
314
+ this.statusManager.updateExecution(step, 'DONE', {
315
+ fromAmount: statusResponse.sending.amount,
316
+ toAmount: statusReceiving?.amount,
317
+ toToken: statusReceiving?.token,
318
+ gasCosts: [
319
+ {
320
+ amount: statusResponse.sending.gasAmount,
321
+ amountUSD: statusResponse.sending.gasAmountUSD,
322
+ token: statusResponse.sending.gasToken,
323
+ estimate: statusResponse.sending.gasUsed,
324
+ limit: statusResponse.sending.gasUsed,
325
+ price: statusResponse.sending.gasPrice,
326
+ type: 'SEND',
327
+ },
328
+ ],
329
+ })
330
+ } catch (e: unknown) {
331
+ const htmlMessage = await getTransactionFailedMessage(
332
+ step,
333
+ process.txLink
334
+ )
335
+
336
+ process = this.statusManager.updateProcess(step, process.type, 'FAILED', {
337
+ error: {
338
+ code: LiFiErrorCode.TransactionFailed,
339
+ message: 'Failed while waiting for receiving chain.',
340
+ htmlMessage,
341
+ },
342
+ })
343
+ this.statusManager.updateExecution(step, 'FAILED')
344
+ console.warn(e)
345
+ throw e
346
+ }
347
+
348
+ // DONE
349
+ return step
350
+ }
351
+ }