@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
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UTXOStepExecutor = void 0;
4
+ const types_1 = require("@lifi/types");
5
+ const bitcoinjs_lib_1 = require("bitcoinjs-lib");
6
+ const viem_1 = require("viem");
7
+ const config_js_1 = require("../../config.js");
8
+ const constants_js_1 = require("../../errors/constants.js");
9
+ const errors_js_1 = require("../../errors/errors.js");
10
+ const api_js_1 = require("../../services/api.js");
11
+ const index_js_1 = require("../../utils/index.js");
12
+ const BaseStepExecutor_js_1 = require("../BaseStepExecutor.js");
13
+ const checkBalance_js_1 = require("../checkBalance.js");
14
+ const processMessages_js_1 = require("../processMessages.js");
15
+ const stepComparison_js_1 = require("../stepComparison.js");
16
+ const waitForReceivingTransaction_js_1 = require("../waitForReceivingTransaction.js");
17
+ const getUTXOPublicClient_js_1 = require("./getUTXOPublicClient.js");
18
+ const parseUTXOErrors_js_1 = require("./parseUTXOErrors.js");
19
+ const signPsbt_js_1 = require("./utxo-stack/actions/signPsbt.js");
20
+ class UTXOStepExecutor extends BaseStepExecutor_js_1.BaseStepExecutor {
21
+ constructor(options) {
22
+ super(options);
23
+ Object.defineProperty(this, "client", {
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true,
27
+ value: void 0
28
+ });
29
+ Object.defineProperty(this, "checkClient", {
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true,
33
+ value: (step) => {
34
+ if (this.client.account?.address !== step.action.fromAddress) {
35
+ throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.WalletChangedDuringExecution, 'The wallet address that requested the quote does not match the wallet address attempting to sign the transaction.');
36
+ }
37
+ }
38
+ });
39
+ Object.defineProperty(this, "executeStep", {
40
+ enumerable: true,
41
+ configurable: true,
42
+ writable: true,
43
+ value: async (step) => {
44
+ step.execution = this.statusManager.initExecutionObject(step);
45
+ const fromChain = await config_js_1.config.getChainById(step.action.fromChainId);
46
+ const toChain = await config_js_1.config.getChainById(step.action.toChainId);
47
+ const isBridgeExecution = fromChain.id !== toChain.id;
48
+ const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP';
49
+ let process = this.statusManager.findOrCreateProcess(step, currentProcessType);
50
+ const publicClient = await (0, getUTXOPublicClient_js_1.getUTXOPublicClient)(types_1.ChainId.BTC);
51
+ if (process.status !== 'DONE') {
52
+ try {
53
+ let txHash;
54
+ if (process.txHash) {
55
+ this.checkClient(step);
56
+ txHash = process.txHash;
57
+ }
58
+ else {
59
+ process = this.statusManager.updateProcess(step, process.type, 'STARTED');
60
+ await (0, checkBalance_js_1.checkBalance)(this.client.account.address, step);
61
+ if (!step.transactionRequest) {
62
+ const { execution, ...stepBase } = step;
63
+ const updatedStep = await (0, api_js_1.getStepTransaction)(stepBase);
64
+ const comparedStep = await (0, stepComparison_js_1.stepComparison)(this.statusManager, step, updatedStep, this.allowUserInteraction, this.executionOptions);
65
+ step = {
66
+ ...comparedStep,
67
+ execution: step.execution,
68
+ };
69
+ }
70
+ if (!step.transactionRequest?.data) {
71
+ throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction.');
72
+ }
73
+ process = this.statusManager.updateProcess(step, process.type, 'ACTION_REQUIRED');
74
+ if (!this.allowUserInteraction) {
75
+ return step;
76
+ }
77
+ let transactionRequest = {
78
+ data: step.transactionRequest.data,
79
+ };
80
+ if (this.executionOptions?.updateTransactionRequestHook) {
81
+ const customizedTransactionRequest = await this.executionOptions.updateTransactionRequestHook({
82
+ requestType: 'transaction',
83
+ ...transactionRequest,
84
+ });
85
+ transactionRequest = {
86
+ ...transactionRequest,
87
+ ...customizedTransactionRequest,
88
+ };
89
+ }
90
+ if (!transactionRequest.data) {
91
+ throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction.');
92
+ }
93
+ this.checkClient(step);
94
+ let psbtHex = transactionRequest.data;
95
+ const psbt = bitcoinjs_lib_1.Psbt.fromHex(psbtHex, { network: bitcoinjs_lib_1.networks.bitcoin });
96
+ const inputsToSign = Array.from(psbt.data.inputs
97
+ .reduce((map, input, index) => {
98
+ const accountAddress = input.witnessUtxo
99
+ ? bitcoinjs_lib_1.address.fromOutputScript(input.witnessUtxo.script, bitcoinjs_lib_1.networks.bitcoin)
100
+ : this.client.account?.address;
101
+ if (map.has(accountAddress)) {
102
+ map.get(accountAddress).signingIndexes.push(index);
103
+ }
104
+ else {
105
+ map.set(accountAddress, {
106
+ address: accountAddress,
107
+ sigHash: 1,
108
+ signingIndexes: [index],
109
+ });
110
+ }
111
+ return map;
112
+ }, new Map())
113
+ .values());
114
+ psbt.txInputs.forEach((_, index) => {
115
+ psbt.setInputSequence(index, 0xfffffffd);
116
+ });
117
+ psbtHex = psbt.toHex();
118
+ const signedPsbtHex = await (0, viem_1.withTimeout)(() => (0, signPsbt_js_1.signPsbt)(this.client, {
119
+ psbt: psbtHex,
120
+ inputsToSign: inputsToSign,
121
+ finalize: false,
122
+ }), {
123
+ timeout: 600_000,
124
+ errorInstance: new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionExpired, 'Transaction has expired.'),
125
+ });
126
+ const signedPsbt = bitcoinjs_lib_1.Psbt.fromHex(signedPsbtHex).finalizeAllInputs();
127
+ const transactionHex = signedPsbt.extractTransaction().toHex();
128
+ txHash = await publicClient.sendUTXOTransaction({
129
+ hex: transactionHex,
130
+ });
131
+ process = this.statusManager.updateProcess(step, process.type, 'PENDING', {
132
+ txHash: txHash,
133
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
134
+ });
135
+ }
136
+ await (0, index_js_1.waitForResult)(() => (0, viem_1.withRetry)(async () => {
137
+ const tx = await publicClient.getUTXOTransaction({
138
+ txId: txHash,
139
+ });
140
+ if (!tx.confirmations) {
141
+ return;
142
+ }
143
+ return tx;
144
+ }, {
145
+ retryCount: 10,
146
+ delay: 1000,
147
+ }), 10_000);
148
+ if (isBridgeExecution) {
149
+ process = this.statusManager.updateProcess(step, process.type, 'DONE');
150
+ }
151
+ }
152
+ catch (e) {
153
+ const error = await (0, parseUTXOErrors_js_1.parseUTXOErrors)(e, step, process);
154
+ process = this.statusManager.updateProcess(step, process.type, 'FAILED', {
155
+ error: {
156
+ message: error.cause.message,
157
+ code: error.code,
158
+ },
159
+ });
160
+ this.statusManager.updateExecution(step, 'FAILED');
161
+ throw error;
162
+ }
163
+ }
164
+ const processTxHash = process.txHash;
165
+ if (isBridgeExecution) {
166
+ process = this.statusManager.findOrCreateProcess(step, 'RECEIVING_CHAIN', 'PENDING');
167
+ }
168
+ let statusResponse;
169
+ try {
170
+ if (!processTxHash) {
171
+ throw new Error('Transaction hash is undefined.');
172
+ }
173
+ statusResponse = (await (0, waitForReceivingTransaction_js_1.waitForReceivingTransaction)(processTxHash, this.statusManager, process.type, step, 10_000));
174
+ const statusReceiving = statusResponse.receiving;
175
+ process = this.statusManager.updateProcess(step, process.type, 'DONE', {
176
+ substatus: statusResponse.substatus,
177
+ substatusMessage: statusResponse.substatusMessage ||
178
+ (0, processMessages_js_1.getSubstatusMessage)(statusResponse.status, statusResponse.substatus),
179
+ txHash: statusReceiving?.txHash,
180
+ txLink: `${toChain.metamask.blockExplorerUrls[0]}tx/${statusReceiving?.txHash}`,
181
+ });
182
+ this.statusManager.updateExecution(step, 'DONE', {
183
+ fromAmount: statusResponse.sending.amount,
184
+ toAmount: statusReceiving?.amount,
185
+ toToken: statusReceiving?.token,
186
+ gasCosts: [
187
+ {
188
+ amount: statusResponse.sending.gasAmount,
189
+ amountUSD: statusResponse.sending.gasAmountUSD,
190
+ token: statusResponse.sending.gasToken,
191
+ estimate: statusResponse.sending.gasUsed,
192
+ limit: statusResponse.sending.gasUsed,
193
+ price: statusResponse.sending.gasPrice,
194
+ type: 'SEND',
195
+ },
196
+ ],
197
+ });
198
+ }
199
+ catch (e) {
200
+ const htmlMessage = await (0, index_js_1.getTransactionFailedMessage)(step, process.txLink);
201
+ process = this.statusManager.updateProcess(step, process.type, 'FAILED', {
202
+ error: {
203
+ code: constants_js_1.LiFiErrorCode.TransactionFailed,
204
+ message: 'Failed while waiting for receiving chain.',
205
+ htmlMessage,
206
+ },
207
+ });
208
+ this.statusManager.updateExecution(step, 'FAILED');
209
+ console.warn(e);
210
+ throw e;
211
+ }
212
+ return step;
213
+ }
214
+ });
215
+ this.client = options.client;
216
+ }
217
+ }
218
+ exports.UTXOStepExecutor = UTXOStepExecutor;
219
+ //# sourceMappingURL=UTXOStepExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UTXOStepExecutor.js","sourceRoot":"","sources":["../../../core/UTXO/UTXOStepExecutor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.blockchairApi = void 0;
4
+ const blockchairApiTypes_js_1 = require("./blockchairApiTypes.js");
5
+ const requestClient_js_1 = require("./requestClient.js");
6
+ const baseUrl = (chain) => `https://api.blockchair.com/${mapChainToBlockchairChain(chain)}`;
7
+ const getDefaultTxFeeByChain = (chain) => {
8
+ switch (chain) {
9
+ case blockchairApiTypes_js_1.Chain.Bitcoin:
10
+ return 5;
11
+ case blockchairApiTypes_js_1.Chain.Dogecoin:
12
+ return 10000;
13
+ case blockchairApiTypes_js_1.Chain.Litecoin:
14
+ return 1;
15
+ default:
16
+ return 2;
17
+ }
18
+ };
19
+ const mapChainToBlockchairChain = (chain) => {
20
+ switch (chain) {
21
+ case blockchairApiTypes_js_1.Chain.BitcoinCash:
22
+ return 'bitcoin-cash';
23
+ case blockchairApiTypes_js_1.Chain.Litecoin:
24
+ return 'litecoin';
25
+ case blockchairApiTypes_js_1.Chain.Dash:
26
+ return 'dash';
27
+ case blockchairApiTypes_js_1.Chain.Dogecoin:
28
+ return 'dogecoin';
29
+ case blockchairApiTypes_js_1.Chain.Polkadot:
30
+ return 'polkadot';
31
+ default:
32
+ return 'bitcoin';
33
+ }
34
+ };
35
+ const getSuggestedTxFee = async (chain) => {
36
+ try {
37
+ const { feePerKb } = await requestClient_js_1.RequestClient.get(`https://app.bitgo.com/api/v2/${chain.toLowerCase()}/tx/fee`);
38
+ const suggestedFee = feePerKb / 1000;
39
+ return Math.max(suggestedFee, getDefaultTxFeeByChain(chain));
40
+ }
41
+ catch (_error) {
42
+ return getDefaultTxFeeByChain(chain);
43
+ }
44
+ };
45
+ const blockchairRequest = async (url, apiKey) => {
46
+ try {
47
+ const response = await requestClient_js_1.RequestClient.get(url);
48
+ if (!response || response.context.code !== 200) {
49
+ throw new Error(`failed to query ${url}`);
50
+ }
51
+ return response.data;
52
+ }
53
+ catch (error) {
54
+ if (!apiKey) {
55
+ throw error;
56
+ }
57
+ const response = await requestClient_js_1.RequestClient.get(`${url}${apiKey ? `&key=${apiKey}` : ''}`);
58
+ if (!response || response.context.code !== 200) {
59
+ throw new Error(`failed to query ${url}`);
60
+ }
61
+ return response.data;
62
+ }
63
+ };
64
+ const baseAddressData = {
65
+ utxo: [],
66
+ address: { balance: 0, transaction_count: 0 },
67
+ };
68
+ const getAddressData = async ({ address, chain, apiKey, }) => {
69
+ if (!address) {
70
+ throw new Error('address is required');
71
+ }
72
+ try {
73
+ const response = await blockchairRequest(`${baseUrl(chain)}/dashboards/address/${address}?transaction_details=true`, apiKey);
74
+ return response[address];
75
+ }
76
+ catch (_error) {
77
+ return baseAddressData;
78
+ }
79
+ };
80
+ const getUnconfirmedBalance = async ({ address, chain, apiKey, }) => {
81
+ const response = await getAddressData({ address, chain, apiKey });
82
+ return response?.address.balance;
83
+ };
84
+ const getConfirmedBalance = async ({ chain, address, apiKey, }) => {
85
+ if (!address) {
86
+ throw new Error('address is required');
87
+ }
88
+ try {
89
+ const response = await blockchairRequest(`${baseUrl(chain)}/addresses/balances?addresses=${address}`, apiKey);
90
+ return response[address] || 0;
91
+ }
92
+ catch (_error) {
93
+ return 0;
94
+ }
95
+ };
96
+ const getRawTx = async ({ chain, apiKey, txHash, }) => {
97
+ if (!txHash) {
98
+ throw new Error('txHash is required');
99
+ }
100
+ try {
101
+ const rawTxResponse = await blockchairRequest(`${baseUrl(chain)}/raw/transaction/${txHash}`, apiKey);
102
+ return rawTxResponse?.[txHash]?.raw_transaction;
103
+ }
104
+ catch (error) {
105
+ console.error(error);
106
+ return '';
107
+ }
108
+ };
109
+ const getUnspentTxs = async ({ chain, address, apiKey, offset = 0, }) => {
110
+ if (!address) {
111
+ throw new Error('address is required');
112
+ }
113
+ try {
114
+ const response = await blockchairRequest(`${baseUrl(chain)}/outputs?q=is_spent(false),recipient(${address})&limit=100&offset=${offset}`, apiKey);
115
+ const txs = response
116
+ .filter(({ is_spent }) => !is_spent)
117
+ .map(({ script_hex, block_id, transaction_hash, index, value, spending_signature_hex, }) => ({
118
+ hash: transaction_hash,
119
+ index,
120
+ value,
121
+ txHex: spending_signature_hex,
122
+ script_hex,
123
+ is_confirmed: block_id !== -1,
124
+ }));
125
+ if (response.length !== 100) {
126
+ return txs;
127
+ }
128
+ const nextBatch = await getUnspentTxs({
129
+ address,
130
+ chain,
131
+ apiKey,
132
+ offset: response?.[99]?.transaction_id,
133
+ });
134
+ return txs.concat(nextBatch);
135
+ }
136
+ catch (error) {
137
+ console.error(error);
138
+ return [];
139
+ }
140
+ };
141
+ const scanUTXOs = async ({ address, chain, apiKey, fetchTxHex = true, }) => {
142
+ const utxos = await getUnspentTxs({ chain, address, apiKey });
143
+ const results = [];
144
+ for (const { hash, index, script_hex, value } of utxos) {
145
+ let txHex;
146
+ if (fetchTxHex) {
147
+ txHex = await getRawTx({ txHash: hash, chain, apiKey });
148
+ }
149
+ results.push({
150
+ address,
151
+ hash,
152
+ index,
153
+ txHex,
154
+ value,
155
+ witnessUtxo: { value, script: Buffer.from(script_hex, 'hex') },
156
+ });
157
+ }
158
+ return results;
159
+ };
160
+ const blockchairApi = ({ apiKey, chain, }) => ({
161
+ getConfirmedBalance: (address) => getConfirmedBalance({ chain, address, apiKey }),
162
+ getRawTx: (txHash) => getRawTx({ txHash, chain, apiKey }),
163
+ getSuggestedTxFee: () => getSuggestedTxFee(chain),
164
+ getBalance: (address) => getUnconfirmedBalance({ address, chain, apiKey }),
165
+ getAddressData: (address) => getAddressData({ address, chain, apiKey }),
166
+ scanUTXOs: (params) => scanUTXOs({ ...params, chain, apiKey }),
167
+ });
168
+ exports.blockchairApi = blockchairApi;
169
+ //# sourceMappingURL=blockchairApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockchairApi.js","sourceRoot":"","sources":["../../../core/UTXO/blockchairApi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Chain = void 0;
4
+ var Chain;
5
+ (function (Chain) {
6
+ Chain["Arbitrum"] = "ARB";
7
+ Chain["Avalanche"] = "AVAX";
8
+ Chain["BinanceSmartChain"] = "BSC";
9
+ Chain["Bitcoin"] = "BTC";
10
+ Chain["BitcoinCash"] = "BCH";
11
+ Chain["Cosmos"] = "GAIA";
12
+ Chain["Dash"] = "DASH";
13
+ Chain["Dogecoin"] = "DOGE";
14
+ Chain["Ethereum"] = "ETH";
15
+ Chain["Kujira"] = "KUJI";
16
+ Chain["Litecoin"] = "LTC";
17
+ Chain["Maya"] = "MAYA";
18
+ Chain["Optimism"] = "OP";
19
+ Chain["Polkadot"] = "DOT";
20
+ Chain["Chainflip"] = "FLIP";
21
+ Chain["Polygon"] = "MATIC";
22
+ Chain["Radix"] = "XRD";
23
+ Chain["THORChain"] = "THOR";
24
+ Chain["Solana"] = "SOL";
25
+ })(Chain || (exports.Chain = Chain = {}));
26
+ //# sourceMappingURL=blockchairApiTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockchairApiTypes.js","sourceRoot":"","sources":["../../../core/UTXO/blockchairApiTypes.ts"],"names":[],"mappings":";;;AAAA,IAAY,KAoBX;AApBD,WAAY,KAAK;IACf,yBAAgB,CAAA;IAChB,2BAAkB,CAAA;IAClB,kCAAyB,CAAA;IACzB,wBAAe,CAAA;IACf,4BAAmB,CAAA;IACnB,wBAAe,CAAA;IACf,sBAAa,CAAA;IACb,0BAAiB,CAAA;IACjB,yBAAgB,CAAA;IAChB,wBAAe,CAAA;IACf,yBAAgB,CAAA;IAChB,sBAAa,CAAA;IACb,wBAAe,CAAA;IACf,yBAAgB,CAAA;IAChB,2BAAkB,CAAA;IAClB,0BAAiB,CAAA;IACjB,sBAAa,CAAA;IACb,2BAAkB,CAAA;IAClB,uBAAc,CAAA;AAChB,CAAC,EApBW,KAAK,qBAAL,KAAK,QAoBhB"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getUTXOAPIPublicClient = void 0;
4
+ const viem_1 = require("viem");
5
+ const config_js_1 = require("../../config.js");
6
+ const UTXOAPIActions_js_1 = require("./utxo-stack/decorators/UTXOAPIActions.js");
7
+ const utxo_js_1 = require("./utxo-stack/transports/utxo/utxo.js");
8
+ const publicAPIClients = {};
9
+ const getUTXOAPIPublicClient = async (chainId) => {
10
+ if (!publicAPIClients[chainId]) {
11
+ const _chain = await config_js_1.config.getChainById(chainId);
12
+ const chain = {
13
+ ..._chain,
14
+ ..._chain.metamask,
15
+ name: _chain.metamask.chainName,
16
+ rpcUrls: {
17
+ default: { http: _chain.metamask.rpcUrls },
18
+ public: { http: _chain.metamask.rpcUrls },
19
+ },
20
+ };
21
+ const client = (0, viem_1.createClient)({
22
+ chain,
23
+ rpcSchema: (0, viem_1.rpcSchema)(),
24
+ transport: (0, viem_1.fallback)([
25
+ (0, utxo_js_1.utxo)('https://api.blockchair.com', {
26
+ key: 'blockchair',
27
+ includeChainToURL: true,
28
+ }),
29
+ (0, utxo_js_1.utxo)('https://rpc.ankr.com/http/btc_blockbook/api/v2', {
30
+ key: 'ankr',
31
+ }),
32
+ (0, utxo_js_1.utxo)('https://api.blockcypher.com/v1/btc/main', {
33
+ key: 'blockcypher',
34
+ }),
35
+ (0, utxo_js_1.utxo)('https://mempool.space/api', {
36
+ key: 'mempool',
37
+ }),
38
+ ]),
39
+ }).extend(UTXOAPIActions_js_1.UTXOAPIActions);
40
+ publicAPIClients[chainId] = client;
41
+ }
42
+ if (!publicAPIClients[chainId]) {
43
+ throw new Error(`Unable to configure provider for chain ${chainId}`);
44
+ }
45
+ return publicAPIClients[chainId];
46
+ };
47
+ exports.getUTXOAPIPublicClient = getUTXOAPIPublicClient;
48
+ //# sourceMappingURL=getUTXOAPIPublicClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUTXOAPIPublicClient.js","sourceRoot":"","sources":["../../../core/UTXO/getUTXOAPIPublicClient.ts"],"names":[],"mappings":";;;AAAA,+BAQa;AACb,+CAAwC;AACxC,iFAA0E;AAE1E,kEAA2D;AAG3D,MAAM,gBAAgB,GASlB,EAAE,CAAA;AAOC,MAAM,sBAAsB,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;IAC9D,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,kBAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QACjD,MAAM,KAAK,GAAU;YACnB,GAAG,MAAM;YACT,GAAG,MAAM,CAAC,QAAQ;YAClB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS;YAC/B,OAAO,EAAE;gBACP,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;gBAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;aAC1C;SACF,CAAA;QACD,MAAM,MAAM,GAAG,IAAA,mBAAY,EAAC;YAC1B,KAAK;YACL,SAAS,EAAE,IAAA,gBAAS,GAAiB;YACrC,SAAS,EAAE,IAAA,eAAQ,EAAC;gBAClB,IAAA,cAAI,EAAC,4BAA4B,EAAE;oBACjC,GAAG,EAAE,YAAY;oBACjB,iBAAiB,EAAE,IAAI;iBACxB,CAAC;gBACF,IAAA,cAAI,EAAC,gDAAgD,EAAE;oBACrD,GAAG,EAAE,MAAM;iBACZ,CAAC;gBACF,IAAA,cAAI,EAAC,yCAAyC,EAAE;oBAC9C,GAAG,EAAE,aAAa;iBACnB,CAAC;gBACF,IAAA,cAAI,EAAC,2BAA2B,EAAE;oBAChC,GAAG,EAAE,SAAS;iBACf,CAAC;aACH,CAAC;SACH,CAAC,CAAC,MAAM,CAAC,kCAAc,CAAC,CAAA;QACzB,gBAAgB,CAAC,OAAO,CAAC,GAAG,MAAM,CAAA;IACpC,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAA;AAClC,CAAC,CAAA;AAvCY,QAAA,sBAAsB,0BAuClC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getUTXOBalance = void 0;
4
+ const types_1 = require("@lifi/types");
5
+ const getUTXOAPIPublicClient_js_1 = require("./getUTXOAPIPublicClient.js");
6
+ const getUTXOPublicClient_js_1 = require("./getUTXOPublicClient.js");
7
+ const getUTXOBalance = async (walletAddress, tokens) => {
8
+ if (tokens.length === 0) {
9
+ return [];
10
+ }
11
+ const { chainId } = tokens[0];
12
+ tokens.forEach((token) => {
13
+ if (token.chainId !== chainId) {
14
+ console.warn(`Requested tokens have to be on the same chain.`);
15
+ }
16
+ });
17
+ const apiClient = await (0, getUTXOAPIPublicClient_js_1.getUTXOAPIPublicClient)(types_1.ChainId.BTC);
18
+ const client = await (0, getUTXOPublicClient_js_1.getUTXOPublicClient)(types_1.ChainId.BTC);
19
+ const [balance, blockCount] = await Promise.all([
20
+ apiClient.getBalance({ address: walletAddress }),
21
+ client.getBlockCount(),
22
+ ]);
23
+ return tokens.map((token) => ({
24
+ ...token,
25
+ amount: balance,
26
+ blockNumber: BigInt(blockCount),
27
+ }));
28
+ };
29
+ exports.getUTXOBalance = getUTXOBalance;
30
+ //# sourceMappingURL=getUTXOBalance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUTXOBalance.js","sourceRoot":"","sources":["../../../core/UTXO/getUTXOBalance.ts"],"names":[],"mappings":";;;AAAA,uCAAmE;AACnE,2EAAoE;AACpE,qEAA8D;AAEvD,MAAM,cAAc,GAAG,KAAK,EACjC,aAAqB,EACrB,MAAe,EACS,EAAE;IAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;QAChE,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,MAAM,IAAA,kDAAsB,EAAC,eAAO,CAAC,GAAG,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,MAAM,IAAA,4CAAmB,EAAC,eAAO,CAAC,GAAG,CAAC,CAAA;IACrD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9C,SAAS,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAChD,MAAM,CAAC,aAAa,EAAE;KACvB,CAAC,CAAA;IAEF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,GAAG,KAAK;QACR,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;KAChC,CAAC,CAAC,CAAA;AACL,CAAC,CAAA;AA1BY,QAAA,cAAc,kBA0B1B"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getUTXOPublicClient = void 0;
4
+ const viem_1 = require("viem");
5
+ const config_js_1 = require("../../config.js");
6
+ const rpc_js_1 = require("../rpc.js");
7
+ const UTXOActions_js_1 = require("./utxo-stack/decorators/UTXOActions.js");
8
+ const publicClients = {};
9
+ const getUTXOPublicClient = async (chainId) => {
10
+ if (!publicClients[chainId]) {
11
+ const urls = await (0, rpc_js_1.getRpcUrls)(chainId);
12
+ const fallbackTransports = urls.map((url) => (0, viem_1.http)(url));
13
+ const _chain = await config_js_1.config.getChainById(chainId);
14
+ const chain = {
15
+ ..._chain,
16
+ ..._chain.metamask,
17
+ name: _chain.metamask.chainName,
18
+ rpcUrls: {
19
+ default: { http: _chain.metamask.rpcUrls },
20
+ public: { http: _chain.metamask.rpcUrls },
21
+ },
22
+ };
23
+ const client = (0, viem_1.createClient)({
24
+ chain,
25
+ rpcSchema: (0, viem_1.rpcSchema)(),
26
+ transport: (0, viem_1.fallback)(fallbackTransports),
27
+ }).extend(UTXOActions_js_1.UTXOActions);
28
+ publicClients[chainId] = client;
29
+ }
30
+ if (!publicClients[chainId]) {
31
+ throw new Error(`Unable to configure provider for chain ${chainId}`);
32
+ }
33
+ return publicClients[chainId];
34
+ };
35
+ exports.getUTXOPublicClient = getUTXOPublicClient;
36
+ //# sourceMappingURL=getUTXOPublicClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUTXOPublicClient.js","sourceRoot":"","sources":["../../../core/UTXO/getUTXOPublicClient.ts"],"names":[],"mappings":";;;AAAA,+BASa;AACb,+CAAwC;AACxC,sCAAsC;AACtC,2EAAoE;AAIpE,MAAM,aAAa,GASf,EAAE,CAAA;AAOC,MAAM,mBAAmB,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;IAC3D,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAA;QACtC,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,WAAI,EAAC,GAAG,CAAC,CAAC,CAAA;QACvD,MAAM,MAAM,GAAG,MAAM,kBAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QACjD,MAAM,KAAK,GAAU;YACnB,GAAG,MAAM;YACT,GAAG,MAAM,CAAC,QAAQ;YAClB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS;YAC/B,OAAO,EAAE;gBACP,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;gBAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;aAC1C;SACF,CAAA;QACD,MAAM,MAAM,GAAG,IAAA,mBAAY,EAAC;YAC1B,KAAK;YACL,SAAS,EAAE,IAAA,gBAAS,GAAc;YAClC,SAAS,EAAE,IAAA,eAAQ,EAAC,kBAAkB,CAAC;SACxC,CAAC,CAAC,MAAM,CAAC,4BAAW,CAAC,CAAA;QACtB,aAAa,CAAC,OAAO,CAAC,GAAG,MAAM,CAAA;IACjC,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,OAAO,aAAa,CAAC,OAAO,CAAC,CAAA;AAC/B,CAAC,CAAA;AA3BY,QAAA,mBAAmB,uBA2B/B"}