@bigmi/core 0.3.1 → 0.4.0-beta.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 (270) hide show
  1. package/dist/cjs/actions/getTransactionFee.d.ts +10 -0
  2. package/dist/cjs/actions/getTransactionFee.js +11 -0
  3. package/dist/cjs/actions/getTransactionFee.js.map +1 -0
  4. package/dist/cjs/errors/transport.d.ts +23 -0
  5. package/dist/cjs/errors/transport.js +21 -1
  6. package/dist/cjs/errors/transport.js.map +1 -1
  7. package/dist/cjs/index.d.ts +8 -6
  8. package/dist/cjs/index.js +15 -10
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/test/utils.d.ts +1 -1
  11. package/dist/cjs/test/utils.js +2 -1
  12. package/dist/cjs/test/utils.js.map +1 -1
  13. package/dist/cjs/transports/__mocks__/getTransactionFee.d.ts +3 -0
  14. package/dist/cjs/transports/__mocks__/getTransactionFee.js +7 -0
  15. package/dist/cjs/transports/__mocks__/getTransactionFee.js.map +1 -0
  16. package/dist/cjs/transports/ankr/__mocks__/getTransactionFee/invalid.json +3 -0
  17. package/dist/cjs/transports/ankr/__mocks__/getTransactionFee/valid.json +51 -0
  18. package/dist/cjs/transports/ankr/ankr.types.d.ts +4 -0
  19. package/dist/cjs/transports/ankr/getTransactionFee.d.ts +2 -0
  20. package/dist/cjs/transports/ankr/getTransactionFee.js +18 -0
  21. package/dist/cjs/transports/ankr/getTransactionFee.js.map +1 -0
  22. package/dist/cjs/transports/ankr/getTransactions.d.ts +0 -3
  23. package/dist/cjs/transports/ankr/getTransactions.js +3 -27
  24. package/dist/cjs/transports/ankr/getTransactions.js.map +1 -1
  25. package/dist/cjs/transports/ankr/methods.js +2 -0
  26. package/dist/cjs/transports/ankr/methods.js.map +1 -1
  27. package/dist/cjs/transports/ankr/utils.d.ts +3 -0
  28. package/dist/cjs/transports/ankr/utils.js +29 -0
  29. package/dist/cjs/transports/ankr/utils.js.map +1 -0
  30. package/dist/cjs/transports/blockchair/__mocks__/getTransactionFee/invalid.json +7 -0
  31. package/dist/cjs/transports/blockchair/__mocks__/getTransactionFee/valid.json +37 -0
  32. package/dist/cjs/transports/blockchair/__mocks__/getUTXOs/rateLimited.json +28 -0
  33. package/dist/cjs/transports/blockchair/blockchair.types.d.ts +61 -0
  34. package/dist/cjs/transports/blockchair/getTransactionFee.d.ts +2 -0
  35. package/dist/cjs/transports/blockchair/getTransactionFee.js +28 -0
  36. package/dist/cjs/transports/blockchair/getTransactionFee.js.map +1 -0
  37. package/dist/cjs/transports/blockchair/methods.js +2 -0
  38. package/dist/cjs/transports/blockchair/methods.js.map +1 -1
  39. package/dist/cjs/transports/blockcypher/__mocks__/getTransactionFee/invalid.json +3 -0
  40. package/dist/cjs/transports/blockcypher/__mocks__/getTransactionFee/valid.json +22 -0
  41. package/dist/cjs/transports/blockcypher/__mocks__/getUTXOs/rateLimited.json +3 -0
  42. package/dist/cjs/transports/blockcypher/blockcypher.types.d.ts +41 -0
  43. package/dist/cjs/transports/blockcypher/getTransactionFee.d.ts +2 -0
  44. package/dist/cjs/transports/blockcypher/getTransactionFee.js +23 -0
  45. package/dist/cjs/transports/blockcypher/getTransactionFee.js.map +1 -0
  46. package/dist/cjs/transports/blockcypher/methods.js +2 -0
  47. package/dist/cjs/transports/blockcypher/methods.js.map +1 -1
  48. package/dist/cjs/transports/fallback.js +16 -3
  49. package/dist/cjs/transports/fallback.js.map +1 -1
  50. package/dist/cjs/transports/mempool/__mocks__/getTransactionFee/invalid.json +1 -0
  51. package/dist/cjs/transports/mempool/__mocks__/getTransactionFee/valid.json +58 -0
  52. package/dist/cjs/transports/mempool/getTransactionFee.d.ts +2 -0
  53. package/dist/cjs/transports/mempool/getTransactionFee.js +15 -0
  54. package/dist/cjs/transports/mempool/getTransactionFee.js.map +1 -0
  55. package/dist/cjs/transports/mempool/getTransactions.js +2 -26
  56. package/dist/cjs/transports/mempool/getTransactions.js.map +1 -1
  57. package/dist/cjs/transports/mempool/methods.js +2 -0
  58. package/dist/cjs/transports/mempool/methods.js.map +1 -1
  59. package/dist/cjs/transports/mempool/utils.d.ts +3 -0
  60. package/dist/cjs/transports/mempool/utils.js +30 -0
  61. package/dist/cjs/transports/mempool/utils.js.map +1 -0
  62. package/dist/cjs/transports/types.d.ts +7 -0
  63. package/dist/cjs/transports/types.js +1 -0
  64. package/dist/cjs/transports/types.js.map +1 -1
  65. package/dist/cjs/types/account.d.ts +3 -3
  66. package/dist/cjs/types/address.d.ts +20 -0
  67. package/dist/cjs/types/address.js +15 -0
  68. package/dist/cjs/types/address.js.map +1 -1
  69. package/dist/cjs/utils/converter.d.ts +1 -0
  70. package/dist/cjs/utils/converter.js +4 -0
  71. package/dist/cjs/utils/converter.js.map +1 -1
  72. package/dist/cjs/utils/getAddressInfo.d.ts +2 -0
  73. package/dist/cjs/utils/{getUTXOAddress.js → getAddressInfo.js} +36 -32
  74. package/dist/cjs/utils/getAddressInfo.js.map +1 -0
  75. package/dist/cjs/utils/isAddress.d.ts +2 -0
  76. package/dist/cjs/utils/isAddress.js +18 -0
  77. package/dist/cjs/utils/isAddress.js.map +1 -0
  78. package/dist/cjs/version.d.ts +1 -1
  79. package/dist/cjs/version.js +1 -1
  80. package/dist/cjs/version.js.map +1 -1
  81. package/dist/esm/actions/getTransactionFee.d.ts +10 -0
  82. package/dist/esm/actions/getTransactionFee.js +8 -0
  83. package/dist/esm/actions/getTransactionFee.js.map +1 -0
  84. package/dist/esm/errors/transport.d.ts +23 -0
  85. package/dist/esm/errors/transport.js +19 -0
  86. package/dist/esm/errors/transport.js.map +1 -1
  87. package/dist/esm/index.d.ts +8 -6
  88. package/dist/esm/index.js +6 -4
  89. package/dist/esm/index.js.map +1 -1
  90. package/dist/esm/test/utils.d.ts +1 -1
  91. package/dist/esm/test/utils.js +2 -1
  92. package/dist/esm/test/utils.js.map +1 -1
  93. package/dist/esm/transports/__mocks__/getTransactionFee.d.ts +3 -0
  94. package/dist/esm/transports/__mocks__/getTransactionFee.js +4 -0
  95. package/dist/esm/transports/__mocks__/getTransactionFee.js.map +1 -0
  96. package/dist/esm/transports/ankr/__mocks__/getTransactionFee/invalid.json +3 -0
  97. package/dist/esm/transports/ankr/__mocks__/getTransactionFee/valid.json +51 -0
  98. package/dist/esm/transports/ankr/ankr.types.d.ts +4 -0
  99. package/dist/esm/transports/ankr/getTransactionFee.d.ts +2 -0
  100. package/dist/esm/transports/ankr/getTransactionFee.js +14 -0
  101. package/dist/esm/transports/ankr/getTransactionFee.js.map +1 -0
  102. package/dist/esm/transports/ankr/getTransactions.d.ts +0 -3
  103. package/dist/esm/transports/ankr/getTransactions.js +1 -24
  104. package/dist/esm/transports/ankr/getTransactions.js.map +1 -1
  105. package/dist/esm/transports/ankr/methods.js +2 -0
  106. package/dist/esm/transports/ankr/methods.js.map +1 -1
  107. package/dist/esm/transports/ankr/utils.d.ts +3 -0
  108. package/dist/esm/transports/ankr/utils.js +25 -0
  109. package/dist/esm/transports/ankr/utils.js.map +1 -0
  110. package/dist/esm/transports/blockchair/__mocks__/getTransactionFee/invalid.json +7 -0
  111. package/dist/esm/transports/blockchair/__mocks__/getTransactionFee/valid.json +37 -0
  112. package/dist/esm/transports/blockchair/__mocks__/getUTXOs/rateLimited.json +28 -0
  113. package/dist/esm/transports/blockchair/blockchair.types.d.ts +61 -0
  114. package/dist/esm/transports/blockchair/getTransactionFee.d.ts +2 -0
  115. package/dist/esm/transports/blockchair/getTransactionFee.js +24 -0
  116. package/dist/esm/transports/blockchair/getTransactionFee.js.map +1 -0
  117. package/dist/esm/transports/blockchair/methods.js +2 -0
  118. package/dist/esm/transports/blockchair/methods.js.map +1 -1
  119. package/dist/esm/transports/blockcypher/__mocks__/getTransactionFee/invalid.json +3 -0
  120. package/dist/esm/transports/blockcypher/__mocks__/getTransactionFee/valid.json +22 -0
  121. package/dist/esm/transports/blockcypher/__mocks__/getUTXOs/rateLimited.json +3 -0
  122. package/dist/esm/transports/blockcypher/blockcypher.types.d.ts +41 -0
  123. package/dist/esm/transports/blockcypher/getTransactionFee.d.ts +2 -0
  124. package/dist/esm/transports/blockcypher/getTransactionFee.js +19 -0
  125. package/dist/esm/transports/blockcypher/getTransactionFee.js.map +1 -0
  126. package/dist/esm/transports/blockcypher/methods.js +2 -0
  127. package/dist/esm/transports/blockcypher/methods.js.map +1 -1
  128. package/dist/esm/transports/fallback.js +19 -5
  129. package/dist/esm/transports/fallback.js.map +1 -1
  130. package/dist/esm/transports/mempool/__mocks__/getTransactionFee/invalid.json +1 -0
  131. package/dist/esm/transports/mempool/__mocks__/getTransactionFee/valid.json +58 -0
  132. package/dist/esm/transports/mempool/getTransactionFee.d.ts +2 -0
  133. package/dist/esm/transports/mempool/getTransactionFee.js +11 -0
  134. package/dist/esm/transports/mempool/getTransactionFee.js.map +1 -0
  135. package/dist/esm/transports/mempool/getTransactions.js +1 -25
  136. package/dist/esm/transports/mempool/getTransactions.js.map +1 -1
  137. package/dist/esm/transports/mempool/methods.js +2 -0
  138. package/dist/esm/transports/mempool/methods.js.map +1 -1
  139. package/dist/esm/transports/mempool/utils.d.ts +3 -0
  140. package/dist/esm/transports/mempool/utils.js +26 -0
  141. package/dist/esm/transports/mempool/utils.js.map +1 -0
  142. package/dist/esm/transports/types.d.ts +7 -0
  143. package/dist/esm/transports/types.js +1 -0
  144. package/dist/esm/transports/types.js.map +1 -1
  145. package/dist/esm/types/account.d.ts +3 -3
  146. package/dist/esm/types/address.d.ts +20 -0
  147. package/dist/esm/types/address.js +14 -1
  148. package/dist/esm/types/address.js.map +1 -1
  149. package/dist/esm/utils/converter.d.ts +1 -0
  150. package/dist/esm/utils/converter.js +3 -0
  151. package/dist/esm/utils/converter.js.map +1 -1
  152. package/dist/esm/utils/getAddressInfo.d.ts +2 -0
  153. package/dist/esm/utils/{getUTXOAddress.js → getAddressInfo.js} +34 -30
  154. package/dist/esm/utils/getAddressInfo.js.map +1 -0
  155. package/dist/esm/utils/isAddress.d.ts +2 -0
  156. package/dist/esm/utils/isAddress.js +14 -0
  157. package/dist/esm/utils/isAddress.js.map +1 -0
  158. package/dist/esm/version.d.ts +1 -1
  159. package/dist/esm/version.js +1 -1
  160. package/dist/esm/version.js.map +1 -1
  161. package/dist/types/actions/getTransactionFee.d.ts +11 -0
  162. package/dist/types/actions/getTransactionFee.d.ts.map +1 -0
  163. package/dist/types/errors/transport.d.ts +23 -0
  164. package/dist/types/errors/transport.d.ts.map +1 -1
  165. package/dist/types/index.d.ts +8 -6
  166. package/dist/types/index.d.ts.map +1 -1
  167. package/dist/types/test/utils.d.ts +1 -1
  168. package/dist/types/test/utils.d.ts.map +1 -1
  169. package/dist/types/transports/__mocks__/getTransactionFee.d.ts +4 -0
  170. package/dist/types/transports/__mocks__/getTransactionFee.d.ts.map +1 -0
  171. package/dist/types/transports/ankr/ankr.types.d.ts +4 -0
  172. package/dist/types/transports/ankr/ankr.types.d.ts.map +1 -1
  173. package/dist/types/transports/ankr/getTransactionFee.d.ts +3 -0
  174. package/dist/types/transports/ankr/getTransactionFee.d.ts.map +1 -0
  175. package/dist/types/transports/ankr/getTransactions.d.ts +0 -3
  176. package/dist/types/transports/ankr/getTransactions.d.ts.map +1 -1
  177. package/dist/types/transports/ankr/methods.d.ts.map +1 -1
  178. package/dist/types/transports/ankr/utils.d.ts +4 -0
  179. package/dist/types/transports/ankr/utils.d.ts.map +1 -0
  180. package/dist/types/transports/blockchair/blockchair.types.d.ts +61 -0
  181. package/dist/types/transports/blockchair/blockchair.types.d.ts.map +1 -1
  182. package/dist/types/transports/blockchair/getTransactionFee.d.ts +3 -0
  183. package/dist/types/transports/blockchair/getTransactionFee.d.ts.map +1 -0
  184. package/dist/types/transports/blockchair/methods.d.ts.map +1 -1
  185. package/dist/types/transports/blockcypher/blockcypher.types.d.ts +41 -0
  186. package/dist/types/transports/blockcypher/blockcypher.types.d.ts.map +1 -1
  187. package/dist/types/transports/blockcypher/getTransactionFee.d.ts +3 -0
  188. package/dist/types/transports/blockcypher/getTransactionFee.d.ts.map +1 -0
  189. package/dist/types/transports/blockcypher/methods.d.ts.map +1 -1
  190. package/dist/types/transports/fallback.d.ts.map +1 -1
  191. package/dist/types/transports/mempool/getTransactionFee.d.ts +3 -0
  192. package/dist/types/transports/mempool/getTransactionFee.d.ts.map +1 -0
  193. package/dist/types/transports/mempool/getTransactions.d.ts.map +1 -1
  194. package/dist/types/transports/mempool/methods.d.ts.map +1 -1
  195. package/dist/types/transports/mempool/utils.d.ts +4 -0
  196. package/dist/types/transports/mempool/utils.d.ts.map +1 -0
  197. package/dist/types/transports/types.d.ts +7 -0
  198. package/dist/types/transports/types.d.ts.map +1 -1
  199. package/dist/types/types/account.d.ts +3 -3
  200. package/dist/types/types/account.d.ts.map +1 -1
  201. package/dist/types/types/address.d.ts +20 -0
  202. package/dist/types/types/address.d.ts.map +1 -1
  203. package/dist/types/utils/converter.d.ts +1 -0
  204. package/dist/types/utils/converter.d.ts.map +1 -1
  205. package/dist/types/utils/getAddressInfo.d.ts +3 -0
  206. package/dist/types/utils/getAddressInfo.d.ts.map +1 -0
  207. package/dist/types/utils/isAddress.d.ts +3 -0
  208. package/dist/types/utils/isAddress.d.ts.map +1 -0
  209. package/dist/types/version.d.ts +1 -1
  210. package/dist/types/version.d.ts.map +1 -1
  211. package/package.json +1 -1
  212. package/package.json.tmp +3 -3
  213. package/src/actions/getTransactionFee.ts +26 -0
  214. package/src/errors/transport.ts +54 -0
  215. package/src/index.ts +25 -9
  216. package/src/test/utils.ts +5 -1
  217. package/src/transports/__mocks__/getTransactionFee.ts +4 -0
  218. package/src/transports/ankr/__mocks__/getTransactionFee/invalid.json +3 -0
  219. package/src/transports/ankr/__mocks__/getTransactionFee/valid.json +51 -0
  220. package/src/transports/ankr/ankr.spec.ts +45 -1
  221. package/src/transports/ankr/ankr.types.ts +5 -0
  222. package/src/transports/ankr/getTransactionFee.ts +21 -0
  223. package/src/transports/ankr/getTransactions.ts +1 -30
  224. package/src/transports/ankr/methods.ts +2 -0
  225. package/src/transports/ankr/utils.ts +29 -0
  226. package/src/transports/blockchair/__mocks__/getTransactionFee/invalid.json +7 -0
  227. package/src/transports/blockchair/__mocks__/getTransactionFee/valid.json +37 -0
  228. package/src/transports/blockchair/__mocks__/getUTXOs/rateLimited.json +28 -0
  229. package/src/transports/blockchair/blockchair.spec.ts +49 -0
  230. package/src/transports/blockchair/blockchair.types.ts +67 -0
  231. package/src/transports/blockchair/getTransactionFee.ts +32 -0
  232. package/src/transports/blockchair/methods.ts +2 -0
  233. package/src/transports/blockcypher/__mocks__/getTransactionFee/invalid.json +3 -0
  234. package/src/transports/blockcypher/__mocks__/getTransactionFee/valid.json +22 -0
  235. package/src/transports/blockcypher/__mocks__/getUTXOs/rateLimited.json +3 -0
  236. package/src/transports/blockcypher/blockcyper.spec.ts +43 -4
  237. package/src/transports/blockcypher/blockcypher.types.ts +45 -0
  238. package/src/transports/blockcypher/getTransactionFee.ts +28 -0
  239. package/src/transports/blockcypher/methods.ts +2 -0
  240. package/src/transports/fallback.spec.ts +103 -0
  241. package/src/transports/fallback.ts +29 -5
  242. package/src/transports/mempool/__mocks__/getTransactionFee/invalid.json +1 -0
  243. package/src/transports/mempool/__mocks__/getTransactionFee/valid.json +58 -0
  244. package/src/transports/mempool/getTransactionFee.ts +19 -0
  245. package/src/transports/mempool/getTransactions.ts +1 -30
  246. package/src/transports/mempool/mempool.spec.ts +41 -0
  247. package/src/transports/mempool/methods.ts +2 -0
  248. package/src/transports/mempool/utils.ts +30 -0
  249. package/src/transports/types.ts +8 -0
  250. package/src/types/account.ts +3 -3
  251. package/src/types/address.ts +24 -0
  252. package/src/utils/converter.ts +6 -0
  253. package/src/utils/{getUTXOAddress.ts → getAddressInfo.ts} +46 -41
  254. package/src/utils/isAddress.ts +16 -0
  255. package/src/version.ts +1 -1
  256. package/dist/cjs/utils/getUTXOAddress.d.ts +0 -20
  257. package/dist/cjs/utils/getUTXOAddress.js.map +0 -1
  258. package/dist/cjs/utils/isUTXOAddress.d.ts +0 -2
  259. package/dist/cjs/utils/isUTXOAddress.js +0 -18
  260. package/dist/cjs/utils/isUTXOAddress.js.map +0 -1
  261. package/dist/esm/utils/getUTXOAddress.d.ts +0 -20
  262. package/dist/esm/utils/getUTXOAddress.js.map +0 -1
  263. package/dist/esm/utils/isUTXOAddress.d.ts +0 -2
  264. package/dist/esm/utils/isUTXOAddress.js +0 -14
  265. package/dist/esm/utils/isUTXOAddress.js.map +0 -1
  266. package/dist/types/utils/getUTXOAddress.d.ts +0 -21
  267. package/dist/types/utils/getUTXOAddress.d.ts.map +0 -1
  268. package/dist/types/utils/isUTXOAddress.d.ts +0 -3
  269. package/dist/types/utils/isUTXOAddress.d.ts.map +0 -1
  270. package/src/utils/isUTXOAddress.ts +0 -19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTransactionFee.d.ts","sourceRoot":"","sources":["../../../../src/transports/mempool/getTransactionFee.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAGnD,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,mBAAmB,CAenE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getTransactions.d.ts","sourceRoot":"","sources":["../../../../src/transports/mempool/getTransactions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAmCnD,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,iBAAiB,CAmC/D,CAAA"}
1
+ {"version":3,"file":"getTransactions.d.ts","sourceRoot":"","sources":["../../../../src/transports/mempool/getTransactions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAOnD,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,iBAAiB,CAmC/D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"methods.d.ts","sourceRoot":"","sources":["../../../../src/transports/mempool/methods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAI7C,eAAO,MAAM,cAAc,EAAE,UAG5B,CAAA"}
1
+ {"version":3,"file":"methods.d.ts","sourceRoot":"","sources":["../../../../src/transports/mempool/methods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAK7C,eAAO,MAAM,cAAc,EAAE,UAI5B,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { UTXOTransaction } from '../../types/transaction.js';
2
+ import type { MempoolTransaction } from './mempool.types.js';
3
+ export declare const mempoolTransactionTransformer: (txn: MempoolTransaction) => Partial<UTXOTransaction>;
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/transports/mempool/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE5D,eAAO,MAAM,6BAA6B,GACxC,KAAK,kBAAkB,KACtB,OAAO,CAAC,eAAe,CAwBxB,CAAA"}
@@ -25,6 +25,13 @@ export type UTXOAPISchema = [
25
25
  hasMore?: boolean;
26
26
  };
27
27
  },
28
+ {
29
+ Method: 'getTransactionFee';
30
+ Parameters: {
31
+ txId: string;
32
+ };
33
+ ReturnType: bigint;
34
+ },
28
35
  {
29
36
  Method: 'getUTXOs';
30
37
  Parameters: {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/transports/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,eAAO,MAAM,oBAAoB,EAAE,UAAU,EAI5C,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B;QACE,MAAM,EAAE,YAAY,CAAA;QACpB,UAAU,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;QAC/B,UAAU,EAAE,MAAM,CAAA;KACnB;IACD;QACE,MAAM,EAAE,iBAAiB,CAAA;QACzB,UAAU,EAAE;YACV,OAAO,EAAE,MAAM,CAAA;YACf,MAAM,CAAC,EAAE,MAAM,CAAA;YACf,KAAK,CAAC,EAAE,MAAM,CAAA;YACd,SAAS,CAAC,EAAE,MAAM,CAAA;YAClB,SAAS,CAAC,EAAE,MAAM,CAAA;SACnB,CAAA;QACD,UAAU,EAAE;YACV,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAA;YAC7C,KAAK,EAAE,MAAM,CAAA;YACb,OAAO,CAAC,EAAE,OAAO,CAAA;SAClB,CAAA;KACF;IACD;QACE,MAAM,EAAE,UAAU,CAAA;QAClB,UAAU,EAAE;YACV,OAAO,EAAE,MAAM,CAAA;YACf,QAAQ,CAAC,EAAE,MAAM,CAAA;SAClB,CAAA;QACD,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;KACxB;CACF,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB;QACE,MAAM,EAAE,eAAe,CAAA;QACvB,UAAU,EAAE,EAAE,CAAA;QACd,UAAU,EAAE,MAAM,CAAA;KACnB;IACD;QACE,MAAM,EAAE,cAAc,CAAA;QACtB,UAAU,EAAE,CAAC,MAAM,CAAC,CAAA;QACpB,UAAU,EAAE,MAAM,CAAA;KACnB;IACD;QACE,MAAM,EAAE,UAAU,CAAA;QAClB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC5B,UAAU,EAAE,MAAM,CAAA;KACnB;IACD;QACE,MAAM,EAAE,eAAe,CAAA;QACvB,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;QACrD,UAAU,EAAE,UAAU,CAAA;KACvB;IACD;QACE,MAAM,EAAE,oBAAoB,CAAA;QAC5B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;QAC7B,UAAU,EAAE,MAAM,CAAA;KACnB;IACD;QACE,MAAM,EAAE,mBAAmB,CAAA;QAC3B,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;QACtC,UAAU,EAAE,eAAe,CAAA;KAC5B;IACD,GAAG,aAAa;CACjB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAA;AAErD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,YAAY,EAAE;QACZ;;;WAGG;QACH,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,wEAAwE;QACxE,OAAO,EAAE,MAAM,CAAA;QACf,yFAAyF;QACzF,cAAc,EAAE,MAAM,EAAE,CAAA;KACzB,EAAE,CAAA;IACH;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAEvC,MAAM,MAAM,gBAAgB,GAAG,SAAS;IACtC;QACE,MAAM,EAAE,UAAU,CAAA;QAClB,UAAU,EAAE,kBAAkB,CAAA;QAC9B,UAAU,EAAE,kBAAkB,CAAA;KAC/B;CACF,CAAA;AAED,MAAM,MAAM,aAAa,CAAC,MAAM,IAAI;IAClC,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AACD,MAAM,MAAM,WAAW,CAAC,KAAK,IAAI;IAC/B,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,MAAM,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG,IAC7C,aAAa,CAAC,MAAM,CAAC,GACrB,WAAW,CAAC,KAAK,CAAC,CAAA;AAEtB,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI,CAChE,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5C,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;IAAE,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC,YAAY,CAAC,KAC7D,OAAO,CACV,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;IAAE,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CACtE,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;KACtB,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC;CAC5C,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/transports/types.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import type { Address } from './address.js';
1
+ import type { Address, AddressPurpose, AddressType } from './address.js';
2
2
  export interface Account {
3
3
  address: Address;
4
- addressType: 'p2tr' | 'p2wpkh' | 'p2wsh' | 'p2sh' | 'p2pkh';
4
+ addressType: AddressType;
5
5
  publicKey: string;
6
- purpose: 'payment' | 'ordinals';
6
+ purpose: AddressPurpose;
7
7
  }
8
8
  //# sourceMappingURL=account.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/types/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3C,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;IAC3D,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,SAAS,GAAG,UAAU,CAAA;CAChC"}
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/types/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAExE,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,cAAc,CAAA;CACxB"}
@@ -1,2 +1,22 @@
1
1
  export type Address = string;
2
+ export type AddressPurpose = 'payment' | 'ordinals' | 'stacks';
3
+ export declare enum Network {
4
+ Mainnet = "mainnet",
5
+ Testnet = "testnet",
6
+ Regtest = "regtest"
7
+ }
8
+ export declare enum AddressType {
9
+ p2pkh = "p2pkh",
10
+ p2sh = "p2sh",
11
+ p2wpkh = "p2wpkh",
12
+ p2wsh = "p2wsh",
13
+ p2tr = "p2tr"
14
+ }
15
+ export type AddressInfo = {
16
+ bech32: boolean;
17
+ network: Network;
18
+ address: Address;
19
+ type: AddressType;
20
+ purpose: AddressPurpose;
21
+ };
2
22
  //# sourceMappingURL=address.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../../src/types/address.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA"}
1
+ {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../../src/types/address.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAE5B,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAA;AAE9D,oBAAY,OAAO;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,oBAAY,WAAW;IACrB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,WAAW,CAAA;IACjB,OAAO,EAAE,cAAc,CAAA;CACxB,CAAA"}
@@ -2,4 +2,5 @@ export declare function hexToBase64(hex: string): string;
2
2
  export declare function base64ToHex(base64: string): string;
3
3
  export declare function base64urlEncode(str: string): string;
4
4
  export declare function stringToHex(value: string): string;
5
+ export declare function hexToUnit8Array(value: string): Uint8Array;
5
6
  //# sourceMappingURL=converter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../../src/utils/converter.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQlD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMjD"}
1
+ {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../../src/utils/converter.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQlD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAIzD"}
@@ -0,0 +1,3 @@
1
+ import { type Address, type AddressInfo } from '../types/address.js';
2
+ export declare const getAddressInfo: (address: Address) => AddressInfo;
3
+ //# sourceMappingURL=getAddressInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAddressInfo.d.ts","sourceRoot":"","sources":["../../../src/utils/getAddressInfo.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,WAAW,EAIjB,MAAM,qBAAqB,CAAA;AA+E5B,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,KAAG,WAiDjD,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Network } from '../types/address.js';
2
+ export declare const isAddress: (address: string, network?: Network) => boolean;
3
+ //# sourceMappingURL=isAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isAddress.d.ts","sourceRoot":"","sources":["../../../src/utils/isAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAG3D,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,EAAE,UAAU,OAAO,KAAG,OAY9D,CAAA"}
@@ -1,3 +1,3 @@
1
1
  export declare const name = "@bigmi/core";
2
- export declare const version = "0.3.1";
2
+ export declare const version = "0.4.0-beta.0";
3
3
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,gBAAgB,CAAA;AACjC,eAAO,MAAM,OAAO,UAAU,CAAA"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,gBAAgB,CAAA;AACjC,eAAO,MAAM,OAAO,iBAAiB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigmi/core",
3
- "version": "0.3.1",
3
+ "version": "0.4.0-beta.0",
4
4
  "description": "TypeScript library for Bitcoin apps.",
5
5
  "type": "module",
6
6
  "main": "./dist/esm/index.js",
package/package.json.tmp CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigmi/core",
3
- "version": "0.3.1",
3
+ "version": "0.4.0-beta.0",
4
4
  "description": "TypeScript library for Bitcoin apps.",
5
5
  "type": "module",
6
6
  "main": "./src/index.ts",
@@ -53,11 +53,11 @@
53
53
  "zustand": "^5.0.5"
54
54
  },
55
55
  "devDependencies": {
56
- "@vitest/coverage-v8": "^3.1.4",
56
+ "@vitest/coverage-v8": "^3.2.4",
57
57
  "cpy-cli": "^5.0.0",
58
58
  "madge": "^8.0.0",
59
59
  "typescript": "^5.7.3",
60
- "vitest": "^3.1.4"
60
+ "vitest": "^3.2.4"
61
61
  },
62
62
  "peerDependencies": {
63
63
  "bs58": "^6.0.0"
@@ -0,0 +1,26 @@
1
+ import type { UTXOSchema } from '../transports/types.js'
2
+ import type { Account } from '../types/account.js'
3
+ import type { Chain } from '../types/chain.js'
4
+ import type { Client } from '../types/client.js'
5
+ import type { Transport } from '../types/transport.js'
6
+
7
+ export type GetTransactionFeeParameters = {
8
+ txId: string
9
+ }
10
+
11
+ export type GetTransactionFeeReturnType = bigint
12
+
13
+ export async function getTransactionFee<
14
+ C extends Chain | undefined,
15
+ A extends Account | undefined = Account | undefined,
16
+ >(
17
+ client: Client<Transport, C, A, UTXOSchema>,
18
+ { txId }: GetTransactionFeeParameters
19
+ ): Promise<GetTransactionFeeReturnType> {
20
+ const data = await client.request({
21
+ method: 'getTransactionFee',
22
+ params: { txId },
23
+ })
24
+
25
+ return data
26
+ }
@@ -25,3 +25,57 @@ export class TransportMethodNotSupportedError extends BaseError {
25
25
  })
26
26
  }
27
27
  }
28
+
29
+ export type AllTransportsFailedErrorType = AllTransportsFailedError & {
30
+ name: 'AllTransportsFailedError'
31
+ }
32
+ export class AllTransportsFailedError extends BaseError {
33
+ constructor({
34
+ method,
35
+ params,
36
+ errors,
37
+ totalAttempts,
38
+ }: {
39
+ method: string
40
+ params: unknown
41
+ errors: Array<{
42
+ transport: string
43
+ error: Error
44
+ attempt: number
45
+ }>
46
+ totalAttempts: number
47
+ }) {
48
+ const errorMessages = errors
49
+ .map(
50
+ ({ transport, error, attempt }) =>
51
+ `${attempt}. ${transport}: ${error.message}`
52
+ )
53
+ .join('\n')
54
+
55
+ super(
56
+ `All ${totalAttempts} transports failed for method "${method}": \n${errorMessages}`,
57
+ {
58
+ name: 'AllTransportsFailedError',
59
+ metaMessages: [
60
+ `Method: ${method}`,
61
+ `Total attempts: ${totalAttempts}`,
62
+ `Failed transports: ${errors.map((e) => e.transport).join(', ')}`,
63
+ ],
64
+ }
65
+ )
66
+
67
+ this.method = method
68
+ this.params = params
69
+ this.errors = errors
70
+ this.totalAttempts = totalAttempts
71
+ }
72
+
73
+ method: string
74
+ params: unknown
75
+ errors: Array<{
76
+ transport: string
77
+ error: Error
78
+ attempt: number
79
+ }>
80
+ totalAttempts: number
81
+ }
package/src/index.ts CHANGED
@@ -12,6 +12,11 @@ export type {
12
12
  GetBlockStatsParameters,
13
13
  GetBlockStatsReturnType,
14
14
  } from './actions/getBlockStats.js'
15
+ export { getTransactionFee } from './actions/getTransactionFee.js'
16
+ export type {
17
+ GetTransactionFeeParameters,
18
+ GetTransactionFeeReturnType,
19
+ } from './actions/getTransactionFee.js'
15
20
  export { getUTXOTransaction } from './actions/getUTXOTransaction.js'
16
21
  export type {
17
22
  GetUTXOTransactionParameters,
@@ -91,7 +96,13 @@ export { mempool } from './transports/mempool/mempool.js'
91
96
 
92
97
  // Exporting types
93
98
  export type { Account } from './types/account.js'
94
- export type { Address } from './types/address.js'
99
+ export {
100
+ type Address,
101
+ type AddressInfo,
102
+ type AddressPurpose,
103
+ AddressType,
104
+ Network,
105
+ } from './types/address.js'
95
106
  export type { BlockTag } from './types/block.js'
96
107
  export type { BlockStats, BlockStatsKeys } from './types/blockStats.js'
97
108
  export type {
@@ -131,13 +142,9 @@ export type {
131
142
 
132
143
  // Exporting utils
133
144
  export { cancelTransaction } from './utils/cancelTransaction.js'
134
- export {
135
- UTXOAddressType,
136
- UTXONetwork,
137
- getUTXOAddress,
138
- } from './utils/getUTXOAddress.js'
139
- export type { UTXOAddress } from './utils/getUTXOAddress.js'
140
- export { isUTXOAddress } from './utils/isUTXOAddress.js'
145
+
146
+ export { getAddressInfo } from './utils/getAddressInfo.js'
147
+ export { isAddress as isUTXOAddress } from './utils/isAddress.js'
141
148
  export { modifyFee } from './utils/modifyFee.js'
142
149
  export { cleanupCache, listenersCache, observe } from './utils/observe.js'
143
150
  export { poll } from './utils/poll.js'
@@ -146,6 +153,7 @@ export {
146
153
  hexToBase64,
147
154
  base64urlEncode,
148
155
  stringToHex,
156
+ hexToUnit8Array,
149
157
  } from './utils/converter.js'
150
158
  export { withRetry } from './utils/withRetry.js'
151
159
  export { parseAccount } from './utils/parseAccount.js'
@@ -196,7 +204,15 @@ export {
196
204
  InsufficientUTXOBalanceError,
197
205
  type InsufficientUTXOBalanceErrorType,
198
206
  } from './errors/utxo.js'
199
- export { UrlRequiredError } from './errors/transport.js'
207
+ export {
208
+ UrlRequiredError,
209
+ AllTransportsFailedError,
210
+ } from './errors/transport.js'
211
+ export type {
212
+ UrlRequiredErrorType,
213
+ AllTransportsFailedErrorType,
214
+ TransportMethodNotSupportedErrorType,
215
+ } from './errors/transport.js'
200
216
  export type { ErrorType } from './errors/utils.js'
201
217
 
202
218
  export {
package/src/test/utils.ts CHANGED
@@ -1,8 +1,12 @@
1
- export const createMockResponse = <T>(data: T): Response =>
1
+ export const createMockResponse = <T>(
2
+ data: T,
3
+ options?: Partial<Response>
4
+ ): Response =>
2
5
  ({
3
6
  ok: true,
4
7
  json: () => Promise.resolve(data),
5
8
  headers: new Headers({
6
9
  'Content-type': 'application/json',
7
10
  }),
11
+ ...options,
8
12
  }) as Response
@@ -0,0 +1,4 @@
1
+ export const VALID_TX_ID =
2
+ '4b6ee974f1dd179071d027562e1fd1c83965efa4a171ec84f00b6c638e36fa4e'
3
+ export const TX_FEE = 4374
4
+ export const INVALID_TX_ID = '0x00000000000000000000000000000000000000'
@@ -0,0 +1,3 @@
1
+ {
2
+ "error": "Internal server error"
3
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "txid": "f5742112a67781b7a4edf0f8a4947f2de7ace7d0d1676ad210a864090dfbb0b5",
3
+ "hash": "a6cb5bb2b04e707e908877768698704532a39e7c722bdaf738e41d8322da5499",
4
+ "version": 2,
5
+ "size": 222,
6
+ "vsize": 141,
7
+ "weight": 561,
8
+ "locktime": 901525,
9
+ "vin": [
10
+ {
11
+ "txid": "8cfe185ae02d74903d7adb6143dcc5c752486511c3e64bfef4d97a1f7eaf7b70",
12
+ "vout": 0,
13
+ "scriptSig": { "asm": "", "hex": "" },
14
+ "txinwitness": [
15
+ "3044022060621e82e159b1745fc9bfd9f559bef82292e1d231c76df654618c575f9bda2c02203d0cf3369bb0665bba0f53ed03d0adc6e6eff66914b81a39ebff6c629b618cc901",
16
+ "0253255ff7355f4dbcc6abf7b69c193db6465cbf69490b0427e3c510289421f78c"
17
+ ],
18
+ "sequence": 4294967293
19
+ }
20
+ ],
21
+ "vout": [
22
+ {
23
+ "value": 0.02916852,
24
+ "n": 0,
25
+ "scriptPubKey": {
26
+ "asm": "0 299ee6ccdbf83eaae4e7b40a378af3e0db286670",
27
+ "desc": "addr(bc1q9x0wdnxmlql24e88ks9r0zhnurdjsens486axv)#k5n52ns5",
28
+ "hex": "0014299ee6ccdbf83eaae4e7b40a378af3e0db286670",
29
+ "address": "bc1q9x0wdnxmlql24e88ks9r0zhnurdjsens486axv",
30
+ "type": "witness_v0_keyhash"
31
+ }
32
+ },
33
+ {
34
+ "value": 0.02939571,
35
+ "n": 1,
36
+ "scriptPubKey": {
37
+ "asm": "0 a49003a69b99395bedd4eae792ece26568f41fe5",
38
+ "desc": "addr(bc1q5jgq8f5mnyu4hmw5atne9m8zv450g8l9uhf3me)#jr0v2n0x",
39
+ "hex": "0014a49003a69b99395bedd4eae792ece26568f41fe5",
40
+ "address": "bc1q5jgq8f5mnyu4hmw5atne9m8zv450g8l9uhf3me",
41
+ "type": "witness_v0_keyhash"
42
+ }
43
+ }
44
+ ],
45
+ "hex": "02000000000101707baf7e1f7ad9f4fe4be6c311654852c7c5dc4361db7a3d90742de05a18fe8c0000000000fdffffff02f4812c0000000000160014299ee6ccdbf83eaae4e7b40a378af3e0db286670b3da2c0000000000160014a49003a69b99395bedd4eae792ece26568f41fe502473044022060621e82e159b1745fc9bfd9f559bef82292e1d231c76df654618c575f9bda2c02203d0cf3369bb0665bba0f53ed03d0adc6e6eff66914b81a39ebff6c629b618cc901210253255ff7355f4dbcc6abf7b69c193db6465cbf69490b0427e3c510289421f78c95c10d00",
46
+ "blockhash": "00000000000000000000424244f4cc05ce659d674d0980cdad000dd72cbe0d8d",
47
+ "confirmations": 2,
48
+ "time": 1750086075,
49
+ "blocktime": 1750086075,
50
+ "fees": 300
51
+ }
@@ -1,22 +1,32 @@
1
1
  import { beforeEach, describe, expect, it, vi } from 'vitest'
2
2
  import { getBalance } from '../../actions/getBalance'
3
+ import { getTransactionFee } from '../../actions/getTransactionFee'
3
4
  import { getTransactions } from '../../actions/getTransactions'
4
5
  import { bitcoin } from '../../chains/bitcoin'
5
6
  import { createClient, rpcSchema } from '../../factories/createClient'
6
7
  import { createMockResponse } from '../../test/utils'
8
+ import {
9
+ INVALID_TX_ID,
10
+ TX_FEE,
11
+ VALID_TX_ID,
12
+ } from '../__mocks__/getTransactionFee'
7
13
  import type { UTXOSchema } from '../types'
8
- import { utxo } from '../utxo'
9
14
  import getBalanceResponse from './__mocks__/getBalance/valid.json'
15
+ import getInValidTransactionFeeResponse from './__mocks__/getTransactionFee/invalid.json'
16
+ import getValidTransactionFeeResponse from './__mocks__/getTransactionFee/valid.json'
10
17
  import getTransactionsValidResponse from './__mocks__/getTransactions/valid.json'
11
18
  import { ankr } from './ankr'
12
19
  import type {
13
20
  AnkrAddressWithTxnsResponse,
14
21
  AnkrBalanceResponse,
22
+ AnkrTxnResponse,
15
23
  } from './ankr.types'
16
24
 
17
25
  const ANKR_KEY = import.meta.env.VITE_TEST_ANKR_KEY
18
26
  const address = import.meta.env.VITE_TEST_ADDRESS
19
27
 
28
+ const USE_MOCK = true
29
+
20
30
  const publicClient = createClient({
21
31
  chain: bitcoin,
22
32
  rpcSchema: rpcSchema<UTXOSchema>(),
@@ -38,6 +48,40 @@ describe('Ankr Transport', () => {
38
48
  })
39
49
  })
40
50
 
51
+ describe('getTransactionFee action', async () => {
52
+ it('should get transaction fee', async () => {
53
+ if (USE_MOCK) {
54
+ getValidTransactionFeeResponse.txid = VALID_TX_ID
55
+ getValidTransactionFeeResponse.fees = TX_FEE
56
+
57
+ vi.spyOn(global, 'fetch').mockResolvedValue(
58
+ createMockResponse(
59
+ getValidTransactionFeeResponse as unknown as AnkrTxnResponse
60
+ )
61
+ )
62
+ }
63
+
64
+ const result = await getTransactionFee(publicClient, {
65
+ txId: VALID_TX_ID,
66
+ })
67
+ expect(result).toBeDefined()
68
+ expect(result).toBe(BigInt(TX_FEE))
69
+ })
70
+
71
+ it('should throw error when txid is invalid', async () => {
72
+ if (USE_MOCK) {
73
+ vi.spyOn(global, 'fetch').mockResolvedValue(
74
+ createMockResponse(
75
+ getInValidTransactionFeeResponse as unknown as AnkrTxnResponse
76
+ )
77
+ )
78
+ }
79
+ await expect(
80
+ getTransactionFee(publicClient, { txId: INVALID_TX_ID })
81
+ ).rejects.toThrowError()
82
+ })
83
+ })
84
+
41
85
  describe('getTransactions action', async () => {
42
86
  it('should get transactions', async () => {
43
87
  vi.spyOn(global, 'fetch').mockResolvedValue(
@@ -67,6 +67,7 @@ export type AnkrTransaction = {
67
67
  valueIn: string
68
68
  fees: string
69
69
  hex: string
70
+ weight: number
70
71
  coinSpecificData?: {
71
72
  hash: string
72
73
  hex: string
@@ -80,3 +81,7 @@ export type AnkrTransaction = {
80
81
  export type AnkrAddressWithTxnsResponse = {
81
82
  transactions: AnkrTransaction[]
82
83
  } & AnkrBalanceResponse
84
+
85
+ export type AnkrTxnResponse = {
86
+ error?: string
87
+ } & AnkrTransaction
@@ -0,0 +1,21 @@
1
+ import type { RpcMethodHandler } from '../types.js'
2
+ import type { AnkrTxnResponse } from './ankr.types.js'
3
+
4
+ export const getTransactionFee: RpcMethodHandler<'getTransactionFee'> = async (
5
+ client,
6
+ { baseUrl },
7
+ { txId }
8
+ ) => {
9
+ const apiUrl = `${baseUrl}/tx/${txId}`
10
+ const response = (await client.request({
11
+ url: apiUrl,
12
+ fetchOptions: { method: 'GET' },
13
+ })) as unknown as AnkrTxnResponse
14
+ if (response.error) {
15
+ return { error: response.error }
16
+ }
17
+
18
+ return {
19
+ result: BigInt(response.fees),
20
+ }
21
+ }
@@ -1,36 +1,7 @@
1
1
  import { urlWithParams } from '../../utils/url.js'
2
2
  import type { RpcMethodHandler } from '../types.js'
3
3
  import type { AnkrAddressWithTxnsResponse } from './ankr.types.js'
4
-
5
- import type { UTXOTransaction } from '../../types/transaction.js'
6
- import type { AnkrTransaction } from './ankr.types.js'
7
-
8
- export const ankrTransactionTransformer = (
9
- txn: AnkrTransaction
10
- ): Partial<UTXOTransaction> => ({
11
- blockhash: txn?.blockHash,
12
- blocktime: txn.blockTime,
13
- confirmations: txn.confirmations,
14
- hex: txn.hex,
15
- locktime: txn?.coinSpecificData?.locktime,
16
- hash: txn.coinSpecificData?.hash,
17
- size: txn.size,
18
- txid: txn.txid,
19
- version: txn.version,
20
- vin: txn.vin.map((vin) => ({
21
- scriptSig: vin.scriptSig,
22
- sequence: vin.sequence,
23
- txid: vin.txid,
24
- vout: vin.vout,
25
- txinwitness: vin.addresses,
26
- })),
27
- vsize: txn.vsize,
28
- vout: txn.vout.map((vout) => ({
29
- n: vout.n,
30
- scriptPubKey: vout.scriptPubKey,
31
- value: vout.value,
32
- })),
33
- })
4
+ import { ankrTransactionTransformer } from './utils.js'
34
5
 
35
6
  export const getTransactions: RpcMethodHandler<'getTransactions'> = async (
36
7
  client,
@@ -1,8 +1,10 @@
1
1
  import type { RpcMethods } from '../types.js'
2
2
  import { getBalance } from './getBalance.js'
3
+ import { getTransactionFee } from './getTransactionFee.js'
3
4
  import { getTransactions } from './getTransactions.js'
4
5
 
5
6
  export const ankrMethods: RpcMethods = {
6
7
  getBalance,
7
8
  getTransactions,
9
+ getTransactionFee,
8
10
  }
@@ -0,0 +1,29 @@
1
+ import type { UTXOTransaction } from '../../types/transaction.js'
2
+ import type { AnkrTransaction } from './ankr.types.js'
3
+
4
+ export const ankrTransactionTransformer = (
5
+ txn: AnkrTransaction
6
+ ): Partial<UTXOTransaction> => ({
7
+ blockhash: txn?.blockHash,
8
+ blocktime: txn.blockTime,
9
+ confirmations: txn.confirmations,
10
+ hex: txn.hex,
11
+ locktime: txn?.coinSpecificData?.locktime,
12
+ hash: txn.coinSpecificData?.hash,
13
+ size: txn.size,
14
+ txid: txn.txid,
15
+ version: txn.version,
16
+ vin: txn.vin.map((vin) => ({
17
+ scriptSig: vin.scriptSig,
18
+ sequence: vin.sequence,
19
+ txid: vin.txid,
20
+ vout: vin.vout,
21
+ txinwitness: vin.addresses,
22
+ })),
23
+ vsize: txn.vsize,
24
+ vout: txn.vout.map((vout) => ({
25
+ n: vout.n,
26
+ scriptPubKey: vout.scriptPubKey,
27
+ value: vout.value,
28
+ })),
29
+ })
@@ -0,0 +1,7 @@
1
+ {
2
+ "data": {},
3
+ "context": {
4
+ "code": 404,
5
+ "error": "Transaction not found"
6
+ }
7
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "data": {
3
+ "8f210660cd99c5e6dc77b6cb09d4d522d3fbc5fd97ad3e65403d49aa7aa5dc23": {
4
+ "transaction": {
5
+ "block_id": 896390,
6
+ "id": 123456,
7
+ "hash": "8f210660cd99c5e6dc77b6cb09d4d522d3fbc5fd97ad3e65403d49aa7aa5dc23",
8
+ "date": "2024-03-15",
9
+ "time": "12:00:00",
10
+ "size": 450,
11
+ "weight": 1149,
12
+ "version": 1,
13
+ "lock_time": 0,
14
+ "is_coinbase": false,
15
+ "has_witness": true,
16
+ "input_count": 2,
17
+ "output_count": 3,
18
+ "input_total": 10269002928,
19
+ "input_total_usd": 102690.02928,
20
+ "output_total": 10269001908,
21
+ "output_total_usd": 102690.01908,
22
+ "fee": 1020,
23
+ "fee_usd": 1.02,
24
+ "fee_per_kb": 2266,
25
+ "fee_per_kb_usd": 2.266,
26
+ "fee_per_kwu": 887,
27
+ "fee_per_kwu_usd": 0.887,
28
+ "cdd_total": 0,
29
+ "is_rbf": false
30
+ }
31
+ }
32
+ },
33
+ "context": {
34
+ "code": 200,
35
+ "error": null
36
+ }
37
+ }