@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,166 @@
1
+ import { sha256 } from '@noble/hashes/sha256'
2
+ import { bech32, bech32m } from 'bech32'
3
+ import bs58 from 'bs58'
4
+
5
+ export enum UTXONetwork {
6
+ Mainnet = 'mainnet',
7
+ Testnet = 'testnet',
8
+ Regtest = 'regtest',
9
+ }
10
+
11
+ export enum UTXOAddressType {
12
+ p2pkh = 'p2pkh',
13
+ p2sh = 'p2sh',
14
+ p2wpkh = 'p2wpkh',
15
+ p2wsh = 'p2wsh',
16
+ p2tr = 'p2tr',
17
+ }
18
+
19
+ export type UTXOAddress = {
20
+ bech32: boolean
21
+ network: UTXONetwork
22
+ address: string
23
+ type: UTXOAddressType
24
+ }
25
+
26
+ const addressTypes: {
27
+ [key: number]: { type: UTXOAddressType; network: UTXONetwork }
28
+ } = {
29
+ 0x00: {
30
+ type: UTXOAddressType.p2pkh,
31
+ network: UTXONetwork.Mainnet,
32
+ },
33
+ 0x6f: {
34
+ type: UTXOAddressType.p2pkh,
35
+ network: UTXONetwork.Testnet,
36
+ },
37
+ 0x05: {
38
+ type: UTXOAddressType.p2sh,
39
+ network: UTXONetwork.Mainnet,
40
+ },
41
+ 0xc4: {
42
+ type: UTXOAddressType.p2sh,
43
+ network: UTXONetwork.Testnet,
44
+ },
45
+ }
46
+
47
+ const parseBech32 = (address: string): UTXOAddress => {
48
+ let decoded
49
+
50
+ try {
51
+ if (
52
+ address.startsWith('bc1p') ||
53
+ address.startsWith('tb1p') ||
54
+ address.startsWith('bcrt1p')
55
+ ) {
56
+ decoded = bech32m.decode(address)
57
+ } else {
58
+ decoded = bech32.decode(address)
59
+ }
60
+ } catch (error) {
61
+ throw new Error('Invalid address')
62
+ }
63
+
64
+ const mapPrefixToNetwork: { [key: string]: UTXONetwork } = {
65
+ bc: UTXONetwork.Mainnet,
66
+ tb: UTXONetwork.Testnet,
67
+ bcrt: UTXONetwork.Regtest,
68
+ }
69
+
70
+ const network: UTXONetwork = mapPrefixToNetwork[decoded.prefix]
71
+
72
+ if (network === undefined) {
73
+ throw new Error('Invalid address')
74
+ }
75
+
76
+ const witnessVersion = decoded.words[0]
77
+
78
+ if (witnessVersion < 0 || witnessVersion > 16) {
79
+ throw new Error('Invalid address')
80
+ }
81
+ const data = bech32.fromWords(decoded.words.slice(1))
82
+
83
+ let type
84
+
85
+ if (data.length === 20) {
86
+ type = UTXOAddressType.p2wpkh
87
+ } else if (witnessVersion === 1) {
88
+ type = UTXOAddressType.p2tr
89
+ } else {
90
+ type = UTXOAddressType.p2wsh
91
+ }
92
+
93
+ return {
94
+ bech32: true,
95
+ network,
96
+ address,
97
+ type,
98
+ }
99
+ }
100
+
101
+ export const getUTXOAddress = (address: string): UTXOAddress => {
102
+ let decoded: Uint8Array
103
+ const prefix = address.substring(0, 2).toLowerCase()
104
+
105
+ if (prefix === 'bc' || prefix === 'tb') {
106
+ return parseBech32(address)
107
+ }
108
+
109
+ try {
110
+ decoded = bs58.decode(address)
111
+ } catch (error) {
112
+ throw new Error('Invalid address')
113
+ }
114
+
115
+ const { length } = decoded
116
+
117
+ if (length !== 25) {
118
+ throw new Error('Invalid address')
119
+ }
120
+
121
+ const version = decoded[0]
122
+
123
+ const checksum = decoded.slice(length - 4, length)
124
+ const body = decoded.slice(0, length - 4)
125
+
126
+ const expectedChecksum = sha256(sha256(body)).slice(0, 4)
127
+
128
+ if (
129
+ checksum.some(
130
+ (value: number, index: number) => value !== expectedChecksum[index]
131
+ )
132
+ ) {
133
+ throw new Error('Invalid address')
134
+ }
135
+
136
+ const validVersions = Object.keys(addressTypes).map(Number)
137
+
138
+ if (!validVersions.includes(version)) {
139
+ throw new Error('Invalid address')
140
+ }
141
+
142
+ const addressType = addressTypes[version]
143
+
144
+ return {
145
+ ...addressType,
146
+ address,
147
+ bech32: false,
148
+ }
149
+ }
150
+
151
+ export const isUTXOAddress = (
152
+ address: string,
153
+ network?: UTXONetwork
154
+ ): boolean => {
155
+ try {
156
+ const utxoAddress = getUTXOAddress(address)
157
+
158
+ if (network) {
159
+ return network === utxoAddress.network
160
+ }
161
+
162
+ return true
163
+ } catch (error) {
164
+ return false
165
+ }
166
+ }
@@ -0,0 +1,36 @@
1
+ import type { LiFiStep, Process } from '@lifi/types'
2
+ import { BaseError } from '../../errors/baseError.js'
3
+ import { ErrorMessage, LiFiErrorCode } from '../../errors/constants.js'
4
+ import { TransactionError, UnknownError } from '../../errors/errors.js'
5
+ import { SDKError } from '../../errors/SDKError.js'
6
+
7
+ export const parseUTXOErrors = async (
8
+ e: Error,
9
+ step?: LiFiStep,
10
+ process?: Process
11
+ ): Promise<SDKError> => {
12
+ if (e instanceof SDKError) {
13
+ e.step = e.step ?? step
14
+ e.process = e.process ?? process
15
+ return e
16
+ }
17
+
18
+ const baseError = handleSpecificErrors(e)
19
+
20
+ return new SDKError(baseError, step, process)
21
+ }
22
+
23
+ const handleSpecificErrors = (e: any) => {
24
+ if (e.code === 4001 || e.code === -32000) {
25
+ return new TransactionError(LiFiErrorCode.SignatureRejected, e.message, e)
26
+ }
27
+ if (e.code === -5 || e.code === -32700 || e.code === -32064) {
28
+ return new TransactionError(LiFiErrorCode.NotFound, e.message, e)
29
+ }
30
+
31
+ if (e instanceof BaseError) {
32
+ return e
33
+ }
34
+
35
+ return new UnknownError(e.message || ErrorMessage.UnknownError, e)
36
+ }
@@ -0,0 +1,84 @@
1
+ type Options = Parameters<typeof fetch>[1] & {
2
+ headers?: Record<string, string>
3
+ apiKey?: string
4
+ method?: 'GET' | 'POST'
5
+ onError?: (error: any) => any
6
+ responseHandler?: (response: any) => any
7
+ searchParams?: Record<string, string>
8
+ json?: unknown
9
+ }
10
+
11
+ let clientConfig: Options = {}
12
+
13
+ export const defaultRequestHeaders =
14
+ typeof window !== 'undefined'
15
+ ? ({} as Record<string, string>)
16
+ : {
17
+ referrer: 'https://sk.thorswap.net',
18
+ referer: 'https://sk.thorswap.net',
19
+ }
20
+
21
+ export function setRequestClientConfig({ apiKey, ...config }: Options) {
22
+ clientConfig = { ...config, apiKey }
23
+ }
24
+
25
+ async function fetchWithConfig(url: string, options: Options) {
26
+ const { apiKey, ...config } = clientConfig
27
+ const { searchParams, json, body } = options
28
+ const headers = {
29
+ ...defaultRequestHeaders,
30
+ ...config.headers,
31
+ ...options.headers,
32
+ } as Record<string, string>
33
+
34
+ const bodyToSend = json ? JSON.stringify(json) : body
35
+
36
+ const urlInstance = new URL(url)
37
+ if (searchParams) {
38
+ urlInstance.search = new URLSearchParams(searchParams).toString()
39
+ }
40
+
41
+ if (apiKey) {
42
+ headers['x-api-key'] = apiKey
43
+ }
44
+
45
+ try {
46
+ const response = await fetch(urlInstance.toString(), {
47
+ ...config,
48
+ ...options,
49
+ body: bodyToSend,
50
+ headers,
51
+ })
52
+ const body = await response.json()
53
+
54
+ if (options.responseHandler) {
55
+ return options.responseHandler(body)
56
+ }
57
+
58
+ return body
59
+ } catch (error) {
60
+ if (options.onError) {
61
+ return options.onError(error)
62
+ }
63
+
64
+ console.error(error)
65
+ }
66
+ }
67
+
68
+ export const RequestClient = {
69
+ get: async <T>(url: string, options?: Options): Promise<T> =>
70
+ fetchWithConfig(url, { ...options, method: 'GET' }),
71
+ post: async <T>(url: string, options?: Options): Promise<T> =>
72
+ fetchWithConfig(url, { ...options, method: 'POST' }),
73
+ extend: (options: Options) => {
74
+ const extendedConfig = { ...clientConfig, ...options }
75
+ return {
76
+ get: async <T>(url: string, options?: Options): Promise<T> =>
77
+ fetchWithConfig(url, { ...extendedConfig, ...options, method: 'GET' }),
78
+ post: async <T>(url: string, options?: Options): Promise<T> =>
79
+ fetchWithConfig(url, { ...extendedConfig, ...options, method: 'POST' }),
80
+ extend: (newOptions: Options) =>
81
+ RequestClient.extend({ ...extendedConfig, ...newOptions }),
82
+ }
83
+ },
84
+ }
@@ -0,0 +1,15 @@
1
+ import { ChainType } from '@lifi/types'
2
+ import type { Client } from 'viem'
3
+ import { type SDKProvider } from '../types.js'
4
+
5
+ export interface UTXOProviderOptions {
6
+ getWalletClient?: () => Promise<Client>
7
+ }
8
+
9
+ export interface UTXOProvider extends SDKProvider {
10
+ setOptions(options: UTXOProviderOptions): void
11
+ }
12
+
13
+ export function isUTXO(provider: SDKProvider): provider is UTXOProvider {
14
+ return provider.type === ChainType.UTXO
15
+ }
@@ -0,0 +1,26 @@
1
+ import { type Account, type Chain, type Client, type Transport } from 'viem'
2
+ import type { UTXOAPISchema } from '../transports/utxo/types.js'
3
+
4
+ export type GetBalanceParameters = {
5
+ /** The address of the account. */
6
+ address: string
7
+ }
8
+
9
+ export type GetBalanceReturnType = bigint
10
+
11
+ export async function getBalance<
12
+ C extends Chain | undefined,
13
+ A extends Account | undefined = Account | undefined,
14
+ >(
15
+ client: Client<Transport, C, A, UTXOAPISchema>,
16
+ params: GetBalanceParameters
17
+ ): Promise<GetBalanceReturnType> {
18
+ const data = await client.request(
19
+ {
20
+ method: 'getBalance',
21
+ params,
22
+ },
23
+ { dedupe: true }
24
+ )
25
+ return data
26
+ }
@@ -0,0 +1,20 @@
1
+ import { type Account, type Chain, type Client, type Transport } from 'viem'
2
+ import type { UTXOSchema } from '../transports/utxo/types.js'
3
+
4
+ export type GetBlockCountReturnType = number
5
+
6
+ export async function getBlockCount<
7
+ C extends Chain | undefined,
8
+ A extends Account | undefined = Account | undefined,
9
+ >(
10
+ client: Client<Transport, C, A, UTXOSchema>
11
+ ): Promise<GetBlockCountReturnType> {
12
+ const data = await client.request(
13
+ {
14
+ method: 'getblockcount',
15
+ params: [],
16
+ },
17
+ { dedupe: true }
18
+ )
19
+ return data
20
+ }
@@ -0,0 +1,30 @@
1
+ import { type Account, type Chain, type Client, type Transport } from 'viem'
2
+ import type { UTXOSchema } from '../transports/utxo/types.js'
3
+ import type { UTXOTransaction } from '../types/transaction.js'
4
+
5
+ export type GetUTXOTransactionParameters = {
6
+ /** The Id of the transaction */
7
+ txId: string
8
+ /** The block in which to look for the transaction */
9
+ blockhash?: string
10
+ }
11
+
12
+ export type GetUTXOTransactionReturnType = UTXOTransaction
13
+
14
+ export async function getUTXOTransaction<
15
+ C extends Chain | undefined,
16
+ A extends Account | undefined = Account | undefined,
17
+ >(
18
+ client: Client<Transport, C, A, UTXOSchema>,
19
+ { txId, blockhash }: GetUTXOTransactionParameters
20
+ ): Promise<GetUTXOTransactionReturnType> {
21
+ const params: [string, boolean, string?] = [txId, true]
22
+ if (blockhash) {
23
+ params.push(blockhash)
24
+ }
25
+ const data = await client.request({
26
+ method: 'getrawtransaction',
27
+ params: params,
28
+ })
29
+ return data
30
+ }
@@ -0,0 +1,29 @@
1
+ import { type Account, type Chain, type Client, type Transport } from 'viem'
2
+ import type { UTXOSchema } from '../transports/utxo/types.js'
3
+
4
+ export type SendUTXOTransactionParameters = {
5
+ /** The hex string of the raw transaction */
6
+ hex: string
7
+ /** Rejects transactions whose fee rate is higher than the specified value, expressed in BTC/kB. Set to 0 to accept any fee rate. Default = 0.10 */
8
+ maxFeeRate?: number
9
+ }
10
+
11
+ export type SendUTXOTransactionReturnType = string
12
+
13
+ export async function sendUTXOTransaction<
14
+ C extends Chain | undefined,
15
+ A extends Account | undefined = Account | undefined,
16
+ >(
17
+ client: Client<Transport, C, A, UTXOSchema>,
18
+ { hex, maxFeeRate }: SendUTXOTransactionParameters
19
+ ): Promise<SendUTXOTransactionReturnType> {
20
+ const params: [string, number?] = [hex]
21
+ if (maxFeeRate) {
22
+ params.push(maxFeeRate)
23
+ }
24
+ const data = await client.request({
25
+ method: 'sendrawtransaction',
26
+ params: params,
27
+ })
28
+ return data
29
+ }
@@ -0,0 +1,23 @@
1
+ import { type Account, type Chain, type Client, type Transport } from 'viem'
2
+ import type {
3
+ SignPsbtParameters,
4
+ SignPsbtReturnType,
5
+ UTXOWalletSchema,
6
+ } from '../clients/types.js'
7
+
8
+ export async function signPsbt<
9
+ C extends Chain | undefined,
10
+ A extends Account | undefined = Account | undefined,
11
+ >(
12
+ client: Client<Transport, C, A, UTXOWalletSchema>,
13
+ params: SignPsbtParameters
14
+ ): Promise<SignPsbtReturnType> {
15
+ const data = await client.request(
16
+ {
17
+ method: 'signPsbt',
18
+ params: params,
19
+ },
20
+ { dedupe: true }
21
+ )
22
+ return data
23
+ }
@@ -0,0 +1,48 @@
1
+ import type { EIP1193RequestFn } from 'viem'
2
+
3
+ export type UTXOWalletSchema = readonly [
4
+ {
5
+ Method: 'signPsbt'
6
+ Parameters: SignPsbtParameters
7
+ ReturnType: SignPsbtReturnType
8
+ },
9
+ ]
10
+
11
+ export type SignPsbtParameters = {
12
+ /** The PSBT encoded as a hexadecimal string */
13
+ psbt: string
14
+ /**
15
+ * Array of objects specifying details about the inputs to be signed
16
+ */
17
+ inputsToSign: {
18
+ /**
19
+ * The SigHash type to use for signing (e.g., SIGHASH_ALL).
20
+ * If not specified, a default value is used.
21
+ */
22
+ sigHash?: number
23
+ /** The Bitcoin address associated with the input that will be signed */
24
+ address: string
25
+ /** An array of indexes in the PSBT corresponding to the inputs that need to be signed */
26
+ signingIndexes: number[]
27
+ }[]
28
+ /**
29
+ * Whether to finalize the PSBT after signing.
30
+ * If `true`, the PSBT will be completed and ready for broadcasting.
31
+ * If `false` or omitted, the PSBT remains partially signed.
32
+ * Some wallets does not support it.
33
+ */
34
+ finalize?: boolean
35
+ }
36
+
37
+ export type SignPsbtReturnType = string
38
+
39
+ export type UTXOWalletProvider = {
40
+ request: EIP1193RequestFn<UTXOWalletSchema>
41
+ }
42
+
43
+ export type BtcAccount = {
44
+ address: string
45
+ addressType: 'p2tr' | 'p2wpkh' | 'p2wsh' | 'p2sh' | 'p2pkh'
46
+ publicKey: string
47
+ purpose: 'payment' | 'ordinals'
48
+ }
@@ -0,0 +1,21 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import type { Account, Chain, Client, Transport } from 'viem'
3
+ import {
4
+ getBalance,
5
+ type GetBalanceParameters,
6
+ type GetBalanceReturnType,
7
+ } from '../actions/getBalance.js'
8
+
9
+ export type UTXOAPIActions = {
10
+ getBalance: (args: GetBalanceParameters) => Promise<GetBalanceReturnType>
11
+ }
12
+
13
+ export function UTXOAPIActions<
14
+ transport extends Transport = Transport,
15
+ chain extends Chain | undefined = Chain | undefined,
16
+ account extends Account | undefined = Account | undefined,
17
+ >(client: Client<transport, chain, account>): UTXOAPIActions {
18
+ return {
19
+ getBalance: (args) => getBalance(client, args),
20
+ }
21
+ }
@@ -0,0 +1,37 @@
1
+ import type { Account, Chain, Client, Transport } from 'viem'
2
+ import {
3
+ getBlockCount,
4
+ type GetBlockCountReturnType,
5
+ } from '../actions/getBlockCount.js'
6
+ import {
7
+ getUTXOTransaction,
8
+ type GetUTXOTransactionParameters,
9
+ type GetUTXOTransactionReturnType,
10
+ } from '../actions/getUTXOTransaction.js'
11
+ import {
12
+ sendUTXOTransaction,
13
+ type SendUTXOTransactionParameters,
14
+ type SendUTXOTransactionReturnType,
15
+ } from '../actions/sendUTXOTransaction.js'
16
+
17
+ export type UTXOActions = {
18
+ getBlockCount: () => Promise<GetBlockCountReturnType>
19
+ sendUTXOTransaction: (
20
+ args: SendUTXOTransactionParameters
21
+ ) => Promise<SendUTXOTransactionReturnType>
22
+ getUTXOTransaction: (
23
+ args: GetUTXOTransactionParameters
24
+ ) => Promise<GetUTXOTransactionReturnType>
25
+ }
26
+
27
+ export function UTXOActions<
28
+ transport extends Transport = Transport,
29
+ chain extends Chain | undefined = Chain | undefined,
30
+ account extends Account | undefined = Account | undefined,
31
+ >(client: Client<transport, chain, account>): UTXOActions {
32
+ return {
33
+ getBlockCount: () => getBlockCount(client),
34
+ sendUTXOTransaction: (args) => sendUTXOTransaction(client, args),
35
+ getUTXOTransaction: (args) => getUTXOTransaction(client, args),
36
+ }
37
+ }
@@ -0,0 +1,30 @@
1
+ import type { RpcMethods } from './types.js'
2
+
3
+ type AnkrBalanceResponse = {
4
+ address: string
5
+ balance: string
6
+ totalReceived: string
7
+ totalSent: string
8
+ unconfirmedBalance: string
9
+ unconfirmedTxs: number
10
+ txs: number
11
+ error: string
12
+ }
13
+
14
+ export const ankrMethods: RpcMethods = {
15
+ getBalance: async (client, baseUrl, { address }) => {
16
+ const apiUrl = `${baseUrl}/address/${address}?details=basic`
17
+ const response = (await client.request({
18
+ url: apiUrl,
19
+ fetchOptions: { method: 'GET' },
20
+ })) as unknown as AnkrBalanceResponse
21
+ if (response.error) {
22
+ return {
23
+ error: { code: -1, message: response.error },
24
+ }
25
+ }
26
+ return {
27
+ result: BigInt(response.balance),
28
+ }
29
+ },
30
+ }
@@ -0,0 +1,27 @@
1
+ import type { RpcMethods } from './types.js'
2
+
3
+ type BlockchairBalanceResponse = {
4
+ data: Record<string, any>
5
+ context: { code: number; error: string }
6
+ }
7
+
8
+ export const blockchairMethods: RpcMethods = {
9
+ getBalance: async (client, baseUrl, { address }) => {
10
+ const apiUrl = `${baseUrl}/addresses/balances/?addresses=${address}`
11
+ const response = (await client.request({
12
+ url: apiUrl,
13
+ fetchOptions: { method: 'GET' },
14
+ })) as unknown as BlockchairBalanceResponse
15
+ if (response.context?.code !== 200) {
16
+ return {
17
+ error: {
18
+ code: response.context?.code,
19
+ message: response.context?.error,
20
+ },
21
+ }
22
+ }
23
+ return {
24
+ result: BigInt(response.data[address]),
25
+ }
26
+ },
27
+ }
@@ -0,0 +1,32 @@
1
+ import type { RpcMethods } from './types.js'
2
+
3
+ type BlockcypherBalanceResponse = {
4
+ address: string
5
+ total_received: number
6
+ total_sent: number
7
+ balance: number
8
+ unconfirmed_balance: number
9
+ final_balance: number
10
+ n_tx: number
11
+ unconfirmed_n_tx: number
12
+ final_n_tx: number
13
+ error?: string
14
+ }
15
+
16
+ export const blockcypherMethods: RpcMethods = {
17
+ getBalance: async (client, baseUrl, { address }) => {
18
+ const apiUrl = `${baseUrl}/addrs/${address}`
19
+ const response = (await client.request({
20
+ url: apiUrl,
21
+ fetchOptions: { method: 'GET' },
22
+ })) as unknown as BlockcypherBalanceResponse
23
+ if (response.error) {
24
+ return {
25
+ error: { code: -1, message: response.error },
26
+ }
27
+ }
28
+ return {
29
+ result: BigInt(response.balance),
30
+ }
31
+ },
32
+ }