@lifi/sdk 3.2.0 → 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 (344) hide show
  1. package/package.json +10 -2
  2. package/src/_cjs/core/EVM/EVMStepExecutor.js +2 -1
  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 +8 -4
  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/_cjs/version.js.map +1 -1
  102. package/src/_esm/core/EVM/EVMStepExecutor.js +2 -1
  103. package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -1
  104. package/src/_esm/core/EVM/getAllowance.js +1 -1
  105. package/src/_esm/core/EVM/getAllowance.js.map +1 -1
  106. package/src/_esm/core/EVM/getEVMBalance.js +1 -1
  107. package/src/_esm/core/EVM/getEVMBalance.js.map +1 -1
  108. package/src/_esm/core/EVM/setAllowance.js +1 -1
  109. package/src/_esm/core/EVM/setAllowance.js.map +1 -1
  110. package/src/_esm/core/Solana/Solana.js +2 -2
  111. package/src/_esm/core/Solana/Solana.js.map +1 -1
  112. package/src/_esm/core/Solana/SolanaStepExecutor.js +6 -9
  113. package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -1
  114. package/src/_esm/core/Solana/getSNSAddress.js +2 -2
  115. package/src/_esm/core/Solana/getSNSAddress.js.map +1 -1
  116. package/src/_esm/core/Solana/{isAddress.js → isSVMAddress.js} +2 -2
  117. package/src/_esm/core/Solana/isSVMAddress.js.map +1 -0
  118. package/src/_esm/core/UTXO/UTXO.js +36 -0
  119. package/src/_esm/core/UTXO/UTXO.js.map +1 -0
  120. package/src/_esm/core/UTXO/UTXOStepExecutor.js +243 -0
  121. package/src/_esm/core/UTXO/UTXOStepExecutor.js.map +1 -0
  122. package/src/_esm/core/UTXO/blockchairApi.js +167 -0
  123. package/src/_esm/core/UTXO/blockchairApi.js.map +1 -0
  124. package/src/_esm/core/UTXO/blockchairApiTypes.js +23 -0
  125. package/src/_esm/core/UTXO/blockchairApiTypes.js.map +1 -0
  126. package/src/_esm/core/UTXO/getUTXOAPIPublicClient.js +50 -0
  127. package/src/_esm/core/UTXO/getUTXOAPIPublicClient.js.map +1 -0
  128. package/src/_esm/core/UTXO/getUTXOBalance.js +26 -0
  129. package/src/_esm/core/UTXO/getUTXOBalance.js.map +1 -0
  130. package/src/_esm/core/UTXO/getUTXOPublicClient.js +38 -0
  131. package/src/_esm/core/UTXO/getUTXOPublicClient.js.map +1 -0
  132. package/src/_esm/core/UTXO/isUTXOAddress.js +128 -0
  133. package/src/_esm/core/UTXO/isUTXOAddress.js.map +1 -0
  134. package/src/_esm/core/UTXO/parseUTXOErrors.js +26 -0
  135. package/src/_esm/core/UTXO/parseUTXOErrors.js.map +1 -0
  136. package/src/_esm/core/UTXO/requestClient.js +59 -0
  137. package/src/_esm/core/UTXO/requestClient.js.map +1 -0
  138. package/src/_esm/core/UTXO/types.js +6 -0
  139. package/src/_esm/core/UTXO/types.js.map +1 -0
  140. package/src/_esm/core/UTXO/utxo-stack/actions/getBalance.js +9 -0
  141. package/src/_esm/core/UTXO/utxo-stack/actions/getBalance.js.map +1 -0
  142. package/src/_esm/core/UTXO/utxo-stack/actions/getBlockCount.js +9 -0
  143. package/src/_esm/core/UTXO/utxo-stack/actions/getBlockCount.js.map +1 -0
  144. package/src/_esm/core/UTXO/utxo-stack/actions/getUTXOTransaction.js +13 -0
  145. package/src/_esm/core/UTXO/utxo-stack/actions/getUTXOTransaction.js.map +1 -0
  146. package/src/_esm/core/UTXO/utxo-stack/actions/sendUTXOTransaction.js +13 -0
  147. package/src/_esm/core/UTXO/utxo-stack/actions/sendUTXOTransaction.js.map +1 -0
  148. package/src/_esm/core/UTXO/utxo-stack/actions/signPsbt.js +9 -0
  149. package/src/_esm/core/UTXO/utxo-stack/actions/signPsbt.js.map +1 -0
  150. package/src/_esm/core/UTXO/utxo-stack/clients/types.js +2 -0
  151. package/src/_esm/core/UTXO/utxo-stack/clients/types.js.map +1 -0
  152. package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOAPIActions.js +7 -0
  153. package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOAPIActions.js.map +1 -0
  154. package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOActions.js +11 -0
  155. package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOActions.js.map +1 -0
  156. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/ankr.js +18 -0
  157. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/ankr.js.map +1 -0
  158. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/blockchair.js +21 -0
  159. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/blockchair.js.map +1 -0
  160. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/blockcypher.js +18 -0
  161. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/blockcypher.js.map +1 -0
  162. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.js +74 -0
  163. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.js.map +1 -0
  164. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.js +19 -0
  165. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.js.map +1 -0
  166. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/mempool.js +14 -0
  167. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/mempool.js.map +1 -0
  168. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/types.js +2 -0
  169. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/types.js.map +1 -0
  170. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/utxo.js +53 -0
  171. package/src/_esm/core/UTXO/utxo-stack/transports/utxo/utxo.js.map +1 -0
  172. package/src/_esm/core/UTXO/utxo-stack/types/transaction.js +2 -0
  173. package/src/_esm/core/UTXO/utxo-stack/types/transaction.js.map +1 -0
  174. package/src/_esm/core/checkBalance.js +2 -2
  175. package/src/_esm/core/checkBalance.js.map +1 -1
  176. package/src/_esm/core/utils.js +0 -5
  177. package/src/_esm/core/utils.js.map +1 -1
  178. package/src/_esm/core/waitForReceivingTransaction.js +4 -4
  179. package/src/_esm/core/waitForReceivingTransaction.js.map +1 -1
  180. package/src/_esm/createConfig.js +3 -1
  181. package/src/_esm/createConfig.js.map +1 -1
  182. package/src/_esm/index.js +7 -3
  183. package/src/_esm/index.js.map +1 -1
  184. package/src/_esm/request.js +3 -3
  185. package/src/_esm/request.js.map +1 -1
  186. package/src/_esm/services/api.js +8 -4
  187. package/src/_esm/services/api.js.map +1 -1
  188. package/src/_esm/services/balance.js +9 -5
  189. package/src/_esm/services/balance.js.map +1 -1
  190. package/src/_esm/utils/index.js +1 -1
  191. package/src/_esm/utils/index.js.map +1 -1
  192. package/src/_esm/utils/isZeroAddress.js +17 -0
  193. package/src/_esm/utils/isZeroAddress.js.map +1 -0
  194. package/src/_esm/utils/sleep.js +6 -0
  195. package/src/_esm/utils/sleep.js.map +1 -0
  196. package/src/_esm/utils/waitForResult.js +18 -0
  197. package/src/_esm/utils/waitForResult.js.map +1 -0
  198. package/src/_esm/utils/withDedupe.js +40 -0
  199. package/src/_esm/utils/withDedupe.js.map +1 -0
  200. package/src/_esm/version.js +1 -1
  201. package/src/_esm/version.js.map +1 -1
  202. package/src/_types/core/EVM/EVMStepExecutor.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.map +1 -1
  271. package/src/_types/services/balance.d.ts +3 -3
  272. package/src/_types/services/balance.d.ts.map +1 -1
  273. package/src/_types/utils/index.d.ts +1 -1
  274. package/src/_types/utils/index.d.ts.map +1 -1
  275. package/src/_types/utils/isZeroAddress.d.ts +3 -0
  276. package/src/_types/utils/isZeroAddress.d.ts.map +1 -0
  277. package/src/_types/utils/sleep.d.ts +2 -0
  278. package/src/_types/utils/sleep.d.ts.map +1 -0
  279. package/src/_types/utils/waitForResult.d.ts +8 -0
  280. package/src/_types/utils/waitForResult.d.ts.map +1 -0
  281. package/src/_types/utils/withDedupe.d.ts +20 -0
  282. package/src/_types/utils/withDedupe.d.ts.map +1 -0
  283. package/src/_types/version.d.ts +1 -1
  284. package/src/_types/version.d.ts.map +1 -1
  285. package/src/core/EVM/EVMStepExecutor.ts +2 -4
  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/Solana/Solana.ts +2 -2
  290. package/src/core/Solana/SolanaStepExecutor.ts +14 -17
  291. package/src/core/Solana/getSNSAddress.ts +2 -2
  292. package/src/core/Solana/{isAddress.ts → isSVMAddress.ts} +1 -1
  293. package/src/core/UTXO/UTXO.ts +43 -0
  294. package/src/core/UTXO/UTXOStepExecutor.ts +351 -0
  295. package/src/core/UTXO/blockchairApi.ts +273 -0
  296. package/src/core/UTXO/blockchairApiTypes.ts +253 -0
  297. package/src/core/UTXO/getUTXOAPIPublicClient.ts +71 -0
  298. package/src/core/UTXO/getUTXOBalance.ts +31 -0
  299. package/src/core/UTXO/getUTXOPublicClient.ts +60 -0
  300. package/src/core/UTXO/isUTXOAddress.ts +166 -0
  301. package/src/core/UTXO/parseUTXOErrors.ts +36 -0
  302. package/src/core/UTXO/requestClient.ts +84 -0
  303. package/src/core/UTXO/types.ts +15 -0
  304. package/src/core/UTXO/utxo-stack/actions/getBalance.ts +26 -0
  305. package/src/core/UTXO/utxo-stack/actions/getBlockCount.ts +20 -0
  306. package/src/core/UTXO/utxo-stack/actions/getUTXOTransaction.ts +30 -0
  307. package/src/core/UTXO/utxo-stack/actions/sendUTXOTransaction.ts +29 -0
  308. package/src/core/UTXO/utxo-stack/actions/signPsbt.ts +23 -0
  309. package/src/core/UTXO/utxo-stack/clients/types.ts +48 -0
  310. package/src/core/UTXO/utxo-stack/decorators/UTXOAPIActions.ts +21 -0
  311. package/src/core/UTXO/utxo-stack/decorators/UTXOActions.ts +37 -0
  312. package/src/core/UTXO/utxo-stack/transports/utxo/ankr.ts +30 -0
  313. package/src/core/UTXO/utxo-stack/transports/utxo/blockchair.ts +27 -0
  314. package/src/core/UTXO/utxo-stack/transports/utxo/blockcypher.ts +32 -0
  315. package/src/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.ts +122 -0
  316. package/src/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.ts +22 -0
  317. package/src/core/UTXO/utxo-stack/transports/utxo/mempool.ts +34 -0
  318. package/src/core/UTXO/utxo-stack/transports/utxo/types.ts +55 -0
  319. package/src/core/UTXO/utxo-stack/transports/utxo/utxo.ts +84 -0
  320. package/src/core/UTXO/utxo-stack/types/transaction.ts +43 -0
  321. package/src/core/checkBalance.ts +2 -2
  322. package/src/core/utils.ts +0 -6
  323. package/src/core/waitForReceivingTransaction.ts +5 -4
  324. package/src/createConfig.ts +3 -1
  325. package/src/index.ts +7 -3
  326. package/src/request.ts +3 -3
  327. package/src/services/api.ts +26 -16
  328. package/src/services/balance.ts +11 -6
  329. package/src/utils/index.ts +1 -1
  330. package/src/utils/isZeroAddress.ts +20 -0
  331. package/src/utils/sleep.ts +5 -0
  332. package/src/utils/waitForResult.ts +21 -0
  333. package/src/utils/withDedupe.ts +46 -0
  334. package/src/version.ts +1 -1
  335. package/src/_cjs/core/Solana/isAddress.js.map +0 -1
  336. package/src/_cjs/utils/utils.js.map +0 -1
  337. package/src/_esm/core/Solana/isAddress.js.map +0 -1
  338. package/src/_esm/utils/utils.js +0 -38
  339. package/src/_esm/utils/utils.js.map +0 -1
  340. package/src/_types/core/Solana/isAddress.d.ts +0 -2
  341. package/src/_types/core/Solana/isAddress.d.ts.map +0 -1
  342. package/src/_types/utils/utils.d.ts +0 -11
  343. package/src/_types/utils/utils.d.ts.map +0 -1
  344. package/src/utils/utils.ts +0 -48
@@ -0,0 +1,167 @@
1
+ import { Chain } from './blockchairApiTypes.js';
2
+ import { RequestClient } from './requestClient.js';
3
+ const baseUrl = (chain) => `https://api.blockchair.com/${mapChainToBlockchairChain(chain)}`;
4
+ const getDefaultTxFeeByChain = (chain) => {
5
+ switch (chain) {
6
+ case Chain.Bitcoin:
7
+ return 5;
8
+ case Chain.Dogecoin:
9
+ return 10000;
10
+ case Chain.Litecoin:
11
+ return 1;
12
+ default:
13
+ return 2;
14
+ }
15
+ };
16
+ const mapChainToBlockchairChain = (chain) => {
17
+ switch (chain) {
18
+ case Chain.BitcoinCash:
19
+ return 'bitcoin-cash';
20
+ case Chain.Litecoin:
21
+ return 'litecoin';
22
+ case Chain.Dash:
23
+ return 'dash';
24
+ case Chain.Dogecoin:
25
+ return 'dogecoin';
26
+ case Chain.Polkadot:
27
+ return 'polkadot';
28
+ default:
29
+ return 'bitcoin';
30
+ }
31
+ };
32
+ const getSuggestedTxFee = async (chain) => {
33
+ try {
34
+ //Use Bitgo API for fee estimation
35
+ //Refer: https://app.bitgo.com/docs/#operation/v2.tx.getfeeestimate
36
+ const { feePerKb } = await RequestClient.get(`https://app.bitgo.com/api/v2/${chain.toLowerCase()}/tx/fee`);
37
+ const suggestedFee = feePerKb / 1000;
38
+ return Math.max(suggestedFee, getDefaultTxFeeByChain(chain));
39
+ }
40
+ catch (_error) {
41
+ return getDefaultTxFeeByChain(chain);
42
+ }
43
+ };
44
+ const blockchairRequest = async (url, apiKey) => {
45
+ try {
46
+ const response = await RequestClient.get(url);
47
+ if (!response || response.context.code !== 200) {
48
+ throw new Error(`failed to query ${url}`);
49
+ }
50
+ return response.data;
51
+ }
52
+ catch (error) {
53
+ if (!apiKey) {
54
+ throw error;
55
+ }
56
+ const response = await RequestClient.get(`${url}${apiKey ? `&key=${apiKey}` : ''}`);
57
+ if (!response || response.context.code !== 200) {
58
+ throw new Error(`failed to query ${url}`);
59
+ }
60
+ return response.data;
61
+ }
62
+ };
63
+ const baseAddressData = {
64
+ utxo: [],
65
+ address: { balance: 0, transaction_count: 0 },
66
+ };
67
+ const getAddressData = async ({ address, chain, apiKey, }) => {
68
+ if (!address) {
69
+ throw new Error('address is required');
70
+ }
71
+ try {
72
+ const response = await blockchairRequest(`${baseUrl(chain)}/dashboards/address/${address}?transaction_details=true`, apiKey);
73
+ return response[address];
74
+ }
75
+ catch (_error) {
76
+ return baseAddressData;
77
+ }
78
+ };
79
+ const getUnconfirmedBalance = async ({ address, chain, apiKey, }) => {
80
+ const response = await getAddressData({ address, chain, apiKey });
81
+ return response?.address.balance;
82
+ };
83
+ const getConfirmedBalance = async ({ chain, address, apiKey, }) => {
84
+ if (!address) {
85
+ throw new Error('address is required');
86
+ }
87
+ try {
88
+ const response = await blockchairRequest(`${baseUrl(chain)}/addresses/balances?addresses=${address}`, apiKey);
89
+ return response[address] || 0;
90
+ }
91
+ catch (_error) {
92
+ return 0;
93
+ }
94
+ };
95
+ const getRawTx = async ({ chain, apiKey, txHash, }) => {
96
+ if (!txHash) {
97
+ throw new Error('txHash is required');
98
+ }
99
+ try {
100
+ const rawTxResponse = await blockchairRequest(`${baseUrl(chain)}/raw/transaction/${txHash}`, apiKey);
101
+ return rawTxResponse?.[txHash]?.raw_transaction;
102
+ }
103
+ catch (error) {
104
+ console.error(error);
105
+ return '';
106
+ }
107
+ };
108
+ const getUnspentTxs = async ({ chain, address, apiKey, offset = 0, }) => {
109
+ if (!address) {
110
+ throw new Error('address is required');
111
+ }
112
+ try {
113
+ const response = await blockchairRequest(`${baseUrl(chain)}/outputs?q=is_spent(false),recipient(${address})&limit=100&offset=${offset}`, apiKey);
114
+ const txs = response
115
+ .filter(({ is_spent }) => !is_spent)
116
+ .map(({ script_hex, block_id, transaction_hash, index, value, spending_signature_hex, }) => ({
117
+ hash: transaction_hash,
118
+ index,
119
+ value,
120
+ txHex: spending_signature_hex,
121
+ script_hex,
122
+ is_confirmed: block_id !== -1,
123
+ }));
124
+ if (response.length !== 100) {
125
+ return txs;
126
+ }
127
+ const nextBatch = await getUnspentTxs({
128
+ address,
129
+ chain,
130
+ apiKey,
131
+ offset: response?.[99]?.transaction_id,
132
+ });
133
+ return txs.concat(nextBatch);
134
+ }
135
+ catch (error) {
136
+ console.error(error);
137
+ return [];
138
+ }
139
+ };
140
+ const scanUTXOs = async ({ address, chain, apiKey, fetchTxHex = true, }) => {
141
+ const utxos = await getUnspentTxs({ chain, address, apiKey });
142
+ const results = [];
143
+ for (const { hash, index, script_hex, value } of utxos) {
144
+ let txHex;
145
+ if (fetchTxHex) {
146
+ txHex = await getRawTx({ txHash: hash, chain, apiKey });
147
+ }
148
+ results.push({
149
+ address,
150
+ hash,
151
+ index,
152
+ txHex,
153
+ value,
154
+ witnessUtxo: { value, script: Buffer.from(script_hex, 'hex') },
155
+ });
156
+ }
157
+ return results;
158
+ };
159
+ export const blockchairApi = ({ apiKey, chain, }) => ({
160
+ getConfirmedBalance: (address) => getConfirmedBalance({ chain, address, apiKey }),
161
+ getRawTx: (txHash) => getRawTx({ txHash, chain, apiKey }),
162
+ getSuggestedTxFee: () => getSuggestedTxFee(chain),
163
+ getBalance: (address) => getUnconfirmedBalance({ address, chain, apiKey }),
164
+ getAddressData: (address) => getAddressData({ address, chain, apiKey }),
165
+ scanUTXOs: (params) => scanUTXOs({ ...params, chain, apiKey }),
166
+ });
167
+ //# 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,23 @@
1
+ export var Chain;
2
+ (function (Chain) {
3
+ Chain["Arbitrum"] = "ARB";
4
+ Chain["Avalanche"] = "AVAX";
5
+ Chain["BinanceSmartChain"] = "BSC";
6
+ Chain["Bitcoin"] = "BTC";
7
+ Chain["BitcoinCash"] = "BCH";
8
+ Chain["Cosmos"] = "GAIA";
9
+ Chain["Dash"] = "DASH";
10
+ Chain["Dogecoin"] = "DOGE";
11
+ Chain["Ethereum"] = "ETH";
12
+ Chain["Kujira"] = "KUJI";
13
+ Chain["Litecoin"] = "LTC";
14
+ Chain["Maya"] = "MAYA";
15
+ Chain["Optimism"] = "OP";
16
+ Chain["Polkadot"] = "DOT";
17
+ Chain["Chainflip"] = "FLIP";
18
+ Chain["Polygon"] = "MATIC";
19
+ Chain["Radix"] = "XRD";
20
+ Chain["THORChain"] = "THOR";
21
+ Chain["Solana"] = "SOL";
22
+ })(Chain || (Chain = {}));
23
+ //# sourceMappingURL=blockchairApiTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockchairApiTypes.js","sourceRoot":"","sources":["../../../core/UTXO/blockchairApiTypes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,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,KAAL,KAAK,QAoBhB"}
@@ -0,0 +1,50 @@
1
+ import { createClient, fallback, rpcSchema, } from 'viem';
2
+ import { config } from '../../config.js';
3
+ import { UTXOAPIActions } from './utxo-stack/decorators/UTXOAPIActions.js';
4
+ import { utxo } from './utxo-stack/transports/utxo/utxo.js';
5
+ // cached providers
6
+ const publicAPIClients = {};
7
+ /**
8
+ * Get an instance of a provider for a specific chain
9
+ * @param chainId - Id of the chain the provider is for
10
+ * @returns The public client for the given chain
11
+ */
12
+ export const getUTXOAPIPublicClient = async (chainId) => {
13
+ if (!publicAPIClients[chainId]) {
14
+ const _chain = await config.getChainById(chainId);
15
+ const chain = {
16
+ ..._chain,
17
+ ..._chain.metamask,
18
+ name: _chain.metamask.chainName,
19
+ rpcUrls: {
20
+ default: { http: _chain.metamask.rpcUrls },
21
+ public: { http: _chain.metamask.rpcUrls },
22
+ },
23
+ };
24
+ const client = createClient({
25
+ chain,
26
+ rpcSchema: rpcSchema(),
27
+ transport: fallback([
28
+ utxo('https://api.blockchair.com', {
29
+ key: 'blockchair',
30
+ includeChainToURL: true,
31
+ }),
32
+ utxo('https://rpc.ankr.com/http/btc_blockbook/api/v2', {
33
+ key: 'ankr',
34
+ }),
35
+ utxo('https://api.blockcypher.com/v1/btc/main', {
36
+ key: 'blockcypher',
37
+ }),
38
+ utxo('https://mempool.space/api', {
39
+ key: 'mempool',
40
+ }),
41
+ ]),
42
+ }).extend(UTXOAPIActions);
43
+ publicAPIClients[chainId] = client;
44
+ }
45
+ if (!publicAPIClients[chainId]) {
46
+ throw new Error(`Unable to configure provider for chain ${chainId}`);
47
+ }
48
+ return publicAPIClients[chainId];
49
+ };
50
+ //# sourceMappingURL=getUTXOAPIPublicClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUTXOAPIPublicClient.js","sourceRoot":"","sources":["../../../core/UTXO/getUTXOAPIPublicClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,SAAS,GAKV,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAA;AAE1E,OAAO,EAAE,IAAI,EAAE,MAAM,sCAAsC,CAAA;AAE3D,mBAAmB;AACnB,MAAM,gBAAgB,GASlB,EAAE,CAAA;AAEN;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;IAC9D,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,MAAM,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,YAAY,CAAC;YAC1B,KAAK;YACL,SAAS,EAAE,SAAS,EAAiB;YACrC,SAAS,EAAE,QAAQ,CAAC;gBAClB,IAAI,CAAC,4BAA4B,EAAE;oBACjC,GAAG,EAAE,YAAY;oBACjB,iBAAiB,EAAE,IAAI;iBACxB,CAAC;gBACF,IAAI,CAAC,gDAAgD,EAAE;oBACrD,GAAG,EAAE,MAAM;iBACZ,CAAC;gBACF,IAAI,CAAC,yCAAyC,EAAE;oBAC9C,GAAG,EAAE,aAAa;iBACnB,CAAC;gBACF,IAAI,CAAC,2BAA2B,EAAE;oBAChC,GAAG,EAAE,SAAS;iBACf,CAAC;aACH,CAAC;SACH,CAAC,CAAC,MAAM,CAAC,cAAc,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"}
@@ -0,0 +1,26 @@
1
+ import { ChainId } from '@lifi/types';
2
+ import { getUTXOAPIPublicClient } from './getUTXOAPIPublicClient.js';
3
+ import { getUTXOPublicClient } from './getUTXOPublicClient.js';
4
+ export const getUTXOBalance = async (walletAddress, tokens) => {
5
+ if (tokens.length === 0) {
6
+ return [];
7
+ }
8
+ const { chainId } = tokens[0];
9
+ tokens.forEach((token) => {
10
+ if (token.chainId !== chainId) {
11
+ console.warn(`Requested tokens have to be on the same chain.`);
12
+ }
13
+ });
14
+ const apiClient = await getUTXOAPIPublicClient(ChainId.BTC);
15
+ const client = await getUTXOPublicClient(ChainId.BTC);
16
+ const [balance, blockCount] = await Promise.all([
17
+ apiClient.getBalance({ address: walletAddress }),
18
+ client.getBlockCount(),
19
+ ]);
20
+ return tokens.map((token) => ({
21
+ ...token,
22
+ amount: balance,
23
+ blockNumber: BigInt(blockCount),
24
+ }));
25
+ };
26
+ //# sourceMappingURL=getUTXOBalance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUTXOBalance.js","sourceRoot":"","sources":["../../../core/UTXO/getUTXOBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAgC,MAAM,aAAa,CAAA;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,CAAC,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,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,OAAO,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"}
@@ -0,0 +1,38 @@
1
+ import { createClient, fallback, http, rpcSchema, } from 'viem';
2
+ import { config } from '../../config.js';
3
+ import { getRpcUrls } from '../rpc.js';
4
+ import { UTXOActions } from './utxo-stack/decorators/UTXOActions.js';
5
+ // cached providers
6
+ const publicClients = {};
7
+ /**
8
+ * Get an instance of a provider for a specific chain
9
+ * @param chainId - Id of the chain the provider is for
10
+ * @returns The public client for the given chain
11
+ */
12
+ export const getUTXOPublicClient = async (chainId) => {
13
+ if (!publicClients[chainId]) {
14
+ const urls = await getRpcUrls(chainId);
15
+ const fallbackTransports = urls.map((url) => http(url));
16
+ const _chain = await config.getChainById(chainId);
17
+ const chain = {
18
+ ..._chain,
19
+ ..._chain.metamask,
20
+ name: _chain.metamask.chainName,
21
+ rpcUrls: {
22
+ default: { http: _chain.metamask.rpcUrls },
23
+ public: { http: _chain.metamask.rpcUrls },
24
+ },
25
+ };
26
+ const client = createClient({
27
+ chain,
28
+ rpcSchema: rpcSchema(),
29
+ transport: fallback(fallbackTransports),
30
+ }).extend(UTXOActions);
31
+ publicClients[chainId] = client;
32
+ }
33
+ if (!publicClients[chainId]) {
34
+ throw new Error(`Unable to configure provider for chain ${chainId}`);
35
+ }
36
+ return publicClients[chainId];
37
+ };
38
+ //# sourceMappingURL=getUTXOPublicClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUTXOPublicClient.js","sourceRoot":"","sources":["../../../core/UTXO/getUTXOPublicClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,SAAS,GAKV,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AAGpE,mBAAmB;AACnB,MAAM,aAAa,GASf,EAAE,CAAA;AAEN;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;IAC3D,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAA;QACtC,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACvD,MAAM,MAAM,GAAG,MAAM,MAAM,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,YAAY,CAAC;YAC1B,KAAK;YACL,SAAS,EAAE,SAAS,EAAc;YAClC,SAAS,EAAE,QAAQ,CAAC,kBAAkB,CAAC;SACxC,CAAC,CAAC,MAAM,CAAC,WAAW,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"}
@@ -0,0 +1,128 @@
1
+ import { sha256 } from '@noble/hashes/sha256';
2
+ import { bech32, bech32m } from 'bech32';
3
+ import bs58 from 'bs58';
4
+ export var UTXONetwork;
5
+ (function (UTXONetwork) {
6
+ UTXONetwork["Mainnet"] = "mainnet";
7
+ UTXONetwork["Testnet"] = "testnet";
8
+ UTXONetwork["Regtest"] = "regtest";
9
+ })(UTXONetwork || (UTXONetwork = {}));
10
+ export var UTXOAddressType;
11
+ (function (UTXOAddressType) {
12
+ UTXOAddressType["p2pkh"] = "p2pkh";
13
+ UTXOAddressType["p2sh"] = "p2sh";
14
+ UTXOAddressType["p2wpkh"] = "p2wpkh";
15
+ UTXOAddressType["p2wsh"] = "p2wsh";
16
+ UTXOAddressType["p2tr"] = "p2tr";
17
+ })(UTXOAddressType || (UTXOAddressType = {}));
18
+ const addressTypes = {
19
+ 0x00: {
20
+ type: UTXOAddressType.p2pkh,
21
+ network: UTXONetwork.Mainnet,
22
+ },
23
+ 0x6f: {
24
+ type: UTXOAddressType.p2pkh,
25
+ network: UTXONetwork.Testnet,
26
+ },
27
+ 0x05: {
28
+ type: UTXOAddressType.p2sh,
29
+ network: UTXONetwork.Mainnet,
30
+ },
31
+ 0xc4: {
32
+ type: UTXOAddressType.p2sh,
33
+ network: UTXONetwork.Testnet,
34
+ },
35
+ };
36
+ const parseBech32 = (address) => {
37
+ let decoded;
38
+ try {
39
+ if (address.startsWith('bc1p') ||
40
+ address.startsWith('tb1p') ||
41
+ address.startsWith('bcrt1p')) {
42
+ decoded = bech32m.decode(address);
43
+ }
44
+ else {
45
+ decoded = bech32.decode(address);
46
+ }
47
+ }
48
+ catch (error) {
49
+ throw new Error('Invalid address');
50
+ }
51
+ const mapPrefixToNetwork = {
52
+ bc: UTXONetwork.Mainnet,
53
+ tb: UTXONetwork.Testnet,
54
+ bcrt: UTXONetwork.Regtest,
55
+ };
56
+ const network = mapPrefixToNetwork[decoded.prefix];
57
+ if (network === undefined) {
58
+ throw new Error('Invalid address');
59
+ }
60
+ const witnessVersion = decoded.words[0];
61
+ if (witnessVersion < 0 || witnessVersion > 16) {
62
+ throw new Error('Invalid address');
63
+ }
64
+ const data = bech32.fromWords(decoded.words.slice(1));
65
+ let type;
66
+ if (data.length === 20) {
67
+ type = UTXOAddressType.p2wpkh;
68
+ }
69
+ else if (witnessVersion === 1) {
70
+ type = UTXOAddressType.p2tr;
71
+ }
72
+ else {
73
+ type = UTXOAddressType.p2wsh;
74
+ }
75
+ return {
76
+ bech32: true,
77
+ network,
78
+ address,
79
+ type,
80
+ };
81
+ };
82
+ export const getUTXOAddress = (address) => {
83
+ let decoded;
84
+ const prefix = address.substring(0, 2).toLowerCase();
85
+ if (prefix === 'bc' || prefix === 'tb') {
86
+ return parseBech32(address);
87
+ }
88
+ try {
89
+ decoded = bs58.decode(address);
90
+ }
91
+ catch (error) {
92
+ throw new Error('Invalid address');
93
+ }
94
+ const { length } = decoded;
95
+ if (length !== 25) {
96
+ throw new Error('Invalid address');
97
+ }
98
+ const version = decoded[0];
99
+ const checksum = decoded.slice(length - 4, length);
100
+ const body = decoded.slice(0, length - 4);
101
+ const expectedChecksum = sha256(sha256(body)).slice(0, 4);
102
+ if (checksum.some((value, index) => value !== expectedChecksum[index])) {
103
+ throw new Error('Invalid address');
104
+ }
105
+ const validVersions = Object.keys(addressTypes).map(Number);
106
+ if (!validVersions.includes(version)) {
107
+ throw new Error('Invalid address');
108
+ }
109
+ const addressType = addressTypes[version];
110
+ return {
111
+ ...addressType,
112
+ address,
113
+ bech32: false,
114
+ };
115
+ };
116
+ export const isUTXOAddress = (address, network) => {
117
+ try {
118
+ const utxoAddress = getUTXOAddress(address);
119
+ if (network) {
120
+ return network === utxoAddress.network;
121
+ }
122
+ return true;
123
+ }
124
+ catch (error) {
125
+ return false;
126
+ }
127
+ };
128
+ //# sourceMappingURL=isUTXOAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isUTXOAddress.js","sourceRoot":"","sources":["../../../core/UTXO/isUTXOAddress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { BaseError } from '../../errors/baseError.js';
2
+ import { ErrorMessage, LiFiErrorCode } from '../../errors/constants.js';
3
+ import { TransactionError, UnknownError } from '../../errors/errors.js';
4
+ import { SDKError } from '../../errors/SDKError.js';
5
+ export const parseUTXOErrors = async (e, step, process) => {
6
+ if (e instanceof SDKError) {
7
+ e.step = e.step ?? step;
8
+ e.process = e.process ?? process;
9
+ return e;
10
+ }
11
+ const baseError = handleSpecificErrors(e);
12
+ return new SDKError(baseError, step, process);
13
+ };
14
+ const handleSpecificErrors = (e) => {
15
+ if (e.code === 4001 || e.code === -32000) {
16
+ return new TransactionError(LiFiErrorCode.SignatureRejected, e.message, e);
17
+ }
18
+ if (e.code === -5 || e.code === -32700 || e.code === -32064) {
19
+ return new TransactionError(LiFiErrorCode.NotFound, e.message, e);
20
+ }
21
+ if (e instanceof BaseError) {
22
+ return e;
23
+ }
24
+ return new UnknownError(e.message || ErrorMessage.UnknownError, e);
25
+ };
26
+ //# sourceMappingURL=parseUTXOErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseUTXOErrors.js","sourceRoot":"","sources":["../../../core/UTXO/parseUTXOErrors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,CAAQ,EACR,IAAe,EACf,OAAiB,EACE,EAAE;IACrB,IAAI,CAAC,YAAY,QAAQ,EAAE,CAAC;QAC1B,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAA;QACvB,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,OAAO,CAAA;QAChC,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAA;IAEzC,OAAO,IAAI,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,CAAC,CAAM,EAAE,EAAE;IACtC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACzC,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAC5E,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5D,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IACnE,CAAC;IAED,IAAI,CAAC,YAAY,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,OAAO,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;AACpE,CAAC,CAAA"}
@@ -0,0 +1,59 @@
1
+ let clientConfig = {};
2
+ export const defaultRequestHeaders = typeof window !== 'undefined'
3
+ ? {}
4
+ : {
5
+ referrer: 'https://sk.thorswap.net',
6
+ referer: 'https://sk.thorswap.net',
7
+ };
8
+ export function setRequestClientConfig({ apiKey, ...config }) {
9
+ clientConfig = { ...config, apiKey };
10
+ }
11
+ async function fetchWithConfig(url, options) {
12
+ const { apiKey, ...config } = clientConfig;
13
+ const { searchParams, json, body } = options;
14
+ const headers = {
15
+ ...defaultRequestHeaders,
16
+ ...config.headers,
17
+ ...options.headers,
18
+ };
19
+ const bodyToSend = json ? JSON.stringify(json) : body;
20
+ const urlInstance = new URL(url);
21
+ if (searchParams) {
22
+ urlInstance.search = new URLSearchParams(searchParams).toString();
23
+ }
24
+ if (apiKey) {
25
+ headers['x-api-key'] = apiKey;
26
+ }
27
+ try {
28
+ const response = await fetch(urlInstance.toString(), {
29
+ ...config,
30
+ ...options,
31
+ body: bodyToSend,
32
+ headers,
33
+ });
34
+ const body = await response.json();
35
+ if (options.responseHandler) {
36
+ return options.responseHandler(body);
37
+ }
38
+ return body;
39
+ }
40
+ catch (error) {
41
+ if (options.onError) {
42
+ return options.onError(error);
43
+ }
44
+ console.error(error);
45
+ }
46
+ }
47
+ export const RequestClient = {
48
+ get: async (url, options) => fetchWithConfig(url, { ...options, method: 'GET' }),
49
+ post: async (url, options) => fetchWithConfig(url, { ...options, method: 'POST' }),
50
+ extend: (options) => {
51
+ const extendedConfig = { ...clientConfig, ...options };
52
+ return {
53
+ get: async (url, options) => fetchWithConfig(url, { ...extendedConfig, ...options, method: 'GET' }),
54
+ post: async (url, options) => fetchWithConfig(url, { ...extendedConfig, ...options, method: 'POST' }),
55
+ extend: (newOptions) => RequestClient.extend({ ...extendedConfig, ...newOptions }),
56
+ };
57
+ },
58
+ };
59
+ //# sourceMappingURL=requestClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestClient.js","sourceRoot":"","sources":["../../../core/UTXO/requestClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { ChainType } from '@lifi/types';
2
+ import {} from '../types.js';
3
+ export function isUTXO(provider) {
4
+ return provider.type === ChainType.UTXO;
5
+ }
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../core/UTXO/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAoB,MAAM,aAAa,CAAA;AAU9C,MAAM,UAAU,MAAM,CAAC,QAAqB;IAC1C,OAAO,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAA;AACzC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import {} from 'viem';
2
+ export async function getBalance(client, params) {
3
+ const data = await client.request({
4
+ method: 'getBalance',
5
+ params,
6
+ }, { dedupe: true });
7
+ return data;
8
+ }
9
+ //# sourceMappingURL=getBalance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBalance.js","sourceRoot":"","sources":["../../../../../core/UTXO/utxo-stack/actions/getBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyD,MAAM,MAAM,CAAA;AAU5E,MAAM,CAAC,KAAK,UAAU,UAAU,CAI9B,MAA8C,EAC9C,MAA4B;IAE5B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAC/B;QACE,MAAM,EAAE,YAAY;QACpB,MAAM;KACP,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAA;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,9 @@
1
+ import {} from 'viem';
2
+ export async function getBlockCount(client) {
3
+ const data = await client.request({
4
+ method: 'getblockcount',
5
+ params: [],
6
+ }, { dedupe: true });
7
+ return data;
8
+ }
9
+ //# sourceMappingURL=getBlockCount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBlockCount.js","sourceRoot":"","sources":["../../../../../core/UTXO/utxo-stack/actions/getBlockCount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyD,MAAM,MAAM,CAAA;AAK5E,MAAM,CAAC,KAAK,UAAU,aAAa,CAIjC,MAA2C;IAE3C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAC/B;QACE,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE,EAAE;KACX,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAA;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,13 @@
1
+ import {} from 'viem';
2
+ export async function getUTXOTransaction(client, { txId, blockhash }) {
3
+ const params = [txId, true];
4
+ if (blockhash) {
5
+ params.push(blockhash);
6
+ }
7
+ const data = await client.request({
8
+ method: 'getrawtransaction',
9
+ params: params,
10
+ });
11
+ return data;
12
+ }
13
+ //# sourceMappingURL=getUTXOTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUTXOTransaction.js","sourceRoot":"","sources":["../../../../../core/UTXO/utxo-stack/actions/getUTXOTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyD,MAAM,MAAM,CAAA;AAa5E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAItC,MAA2C,EAC3C,EAAE,IAAI,EAAE,SAAS,EAAgC;IAEjD,MAAM,MAAM,GAA+B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACvD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACxB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAChC,MAAM,EAAE,mBAAmB;QAC3B,MAAM,EAAE,MAAM;KACf,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,13 @@
1
+ import {} from 'viem';
2
+ export async function sendUTXOTransaction(client, { hex, maxFeeRate }) {
3
+ const params = [hex];
4
+ if (maxFeeRate) {
5
+ params.push(maxFeeRate);
6
+ }
7
+ const data = await client.request({
8
+ method: 'sendrawtransaction',
9
+ params: params,
10
+ });
11
+ return data;
12
+ }
13
+ //# sourceMappingURL=sendUTXOTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendUTXOTransaction.js","sourceRoot":"","sources":["../../../../../core/UTXO/utxo-stack/actions/sendUTXOTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyD,MAAM,MAAM,CAAA;AAY5E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAIvC,MAA2C,EAC3C,EAAE,GAAG,EAAE,UAAU,EAAiC;IAElD,MAAM,MAAM,GAAsB,CAAC,GAAG,CAAC,CAAA;IACvC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACzB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAChC,MAAM,EAAE,oBAAoB;QAC5B,MAAM,EAAE,MAAM;KACf,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACb,CAAC"}