@bigmi/core 0.3.1 → 0.4.0-beta.1

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 (279) 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/clients/decorators/public.d.ts +2 -0
  5. package/dist/cjs/clients/decorators/public.js +2 -0
  6. package/dist/cjs/clients/decorators/public.js.map +1 -1
  7. package/dist/cjs/errors/transport.d.ts +23 -0
  8. package/dist/cjs/errors/transport.js +21 -1
  9. package/dist/cjs/errors/transport.js.map +1 -1
  10. package/dist/cjs/index.d.ts +8 -6
  11. package/dist/cjs/index.js +15 -10
  12. package/dist/cjs/index.js.map +1 -1
  13. package/dist/cjs/test/utils.d.ts +1 -1
  14. package/dist/cjs/test/utils.js +2 -1
  15. package/dist/cjs/test/utils.js.map +1 -1
  16. package/dist/cjs/transports/__mocks__/getTransactionFee.d.ts +3 -0
  17. package/dist/cjs/transports/__mocks__/getTransactionFee.js +7 -0
  18. package/dist/cjs/transports/__mocks__/getTransactionFee.js.map +1 -0
  19. package/dist/cjs/transports/ankr/__mocks__/getTransactionFee/invalid.json +3 -0
  20. package/dist/cjs/transports/ankr/__mocks__/getTransactionFee/valid.json +51 -0
  21. package/dist/cjs/transports/ankr/ankr.types.d.ts +4 -0
  22. package/dist/cjs/transports/ankr/getTransactionFee.d.ts +2 -0
  23. package/dist/cjs/transports/ankr/getTransactionFee.js +18 -0
  24. package/dist/cjs/transports/ankr/getTransactionFee.js.map +1 -0
  25. package/dist/cjs/transports/ankr/getTransactions.d.ts +0 -3
  26. package/dist/cjs/transports/ankr/getTransactions.js +3 -27
  27. package/dist/cjs/transports/ankr/getTransactions.js.map +1 -1
  28. package/dist/cjs/transports/ankr/methods.js +2 -0
  29. package/dist/cjs/transports/ankr/methods.js.map +1 -1
  30. package/dist/cjs/transports/ankr/utils.d.ts +3 -0
  31. package/dist/cjs/transports/ankr/utils.js +29 -0
  32. package/dist/cjs/transports/ankr/utils.js.map +1 -0
  33. package/dist/cjs/transports/blockchair/__mocks__/getTransactionFee/invalid.json +7 -0
  34. package/dist/cjs/transports/blockchair/__mocks__/getTransactionFee/valid.json +37 -0
  35. package/dist/cjs/transports/blockchair/__mocks__/getUTXOs/rateLimited.json +28 -0
  36. package/dist/cjs/transports/blockchair/blockchair.types.d.ts +61 -0
  37. package/dist/cjs/transports/blockchair/getTransactionFee.d.ts +2 -0
  38. package/dist/cjs/transports/blockchair/getTransactionFee.js +28 -0
  39. package/dist/cjs/transports/blockchair/getTransactionFee.js.map +1 -0
  40. package/dist/cjs/transports/blockchair/methods.js +2 -0
  41. package/dist/cjs/transports/blockchair/methods.js.map +1 -1
  42. package/dist/cjs/transports/blockcypher/__mocks__/getTransactionFee/invalid.json +3 -0
  43. package/dist/cjs/transports/blockcypher/__mocks__/getTransactionFee/valid.json +22 -0
  44. package/dist/cjs/transports/blockcypher/__mocks__/getUTXOs/rateLimited.json +3 -0
  45. package/dist/cjs/transports/blockcypher/blockcypher.types.d.ts +41 -0
  46. package/dist/cjs/transports/blockcypher/getTransactionFee.d.ts +2 -0
  47. package/dist/cjs/transports/blockcypher/getTransactionFee.js +23 -0
  48. package/dist/cjs/transports/blockcypher/getTransactionFee.js.map +1 -0
  49. package/dist/cjs/transports/blockcypher/methods.js +2 -0
  50. package/dist/cjs/transports/blockcypher/methods.js.map +1 -1
  51. package/dist/cjs/transports/fallback.js +16 -3
  52. package/dist/cjs/transports/fallback.js.map +1 -1
  53. package/dist/cjs/transports/mempool/__mocks__/getTransactionFee/invalid.json +1 -0
  54. package/dist/cjs/transports/mempool/__mocks__/getTransactionFee/valid.json +58 -0
  55. package/dist/cjs/transports/mempool/getTransactionFee.d.ts +2 -0
  56. package/dist/cjs/transports/mempool/getTransactionFee.js +15 -0
  57. package/dist/cjs/transports/mempool/getTransactionFee.js.map +1 -0
  58. package/dist/cjs/transports/mempool/getTransactions.js +2 -26
  59. package/dist/cjs/transports/mempool/getTransactions.js.map +1 -1
  60. package/dist/cjs/transports/mempool/methods.js +2 -0
  61. package/dist/cjs/transports/mempool/methods.js.map +1 -1
  62. package/dist/cjs/transports/mempool/utils.d.ts +3 -0
  63. package/dist/cjs/transports/mempool/utils.js +30 -0
  64. package/dist/cjs/transports/mempool/utils.js.map +1 -0
  65. package/dist/cjs/transports/types.d.ts +7 -0
  66. package/dist/cjs/transports/types.js +1 -0
  67. package/dist/cjs/transports/types.js.map +1 -1
  68. package/dist/cjs/types/account.d.ts +3 -3
  69. package/dist/cjs/types/address.d.ts +20 -0
  70. package/dist/cjs/types/address.js +15 -0
  71. package/dist/cjs/types/address.js.map +1 -1
  72. package/dist/cjs/utils/converter.d.ts +1 -0
  73. package/dist/cjs/utils/converter.js +4 -0
  74. package/dist/cjs/utils/converter.js.map +1 -1
  75. package/dist/cjs/utils/getAddressInfo.d.ts +2 -0
  76. package/dist/cjs/utils/{getUTXOAddress.js → getAddressInfo.js} +36 -32
  77. package/dist/cjs/utils/getAddressInfo.js.map +1 -0
  78. package/dist/cjs/utils/isAddress.d.ts +2 -0
  79. package/dist/cjs/utils/isAddress.js +18 -0
  80. package/dist/cjs/utils/isAddress.js.map +1 -0
  81. package/dist/cjs/version.d.ts +1 -1
  82. package/dist/cjs/version.js +1 -1
  83. package/dist/cjs/version.js.map +1 -1
  84. package/dist/esm/actions/getTransactionFee.d.ts +10 -0
  85. package/dist/esm/actions/getTransactionFee.js +8 -0
  86. package/dist/esm/actions/getTransactionFee.js.map +1 -0
  87. package/dist/esm/clients/decorators/public.d.ts +2 -0
  88. package/dist/esm/clients/decorators/public.js +2 -0
  89. package/dist/esm/clients/decorators/public.js.map +1 -1
  90. package/dist/esm/errors/transport.d.ts +23 -0
  91. package/dist/esm/errors/transport.js +19 -0
  92. package/dist/esm/errors/transport.js.map +1 -1
  93. package/dist/esm/index.d.ts +8 -6
  94. package/dist/esm/index.js +6 -4
  95. package/dist/esm/index.js.map +1 -1
  96. package/dist/esm/test/utils.d.ts +1 -1
  97. package/dist/esm/test/utils.js +2 -1
  98. package/dist/esm/test/utils.js.map +1 -1
  99. package/dist/esm/transports/__mocks__/getTransactionFee.d.ts +3 -0
  100. package/dist/esm/transports/__mocks__/getTransactionFee.js +4 -0
  101. package/dist/esm/transports/__mocks__/getTransactionFee.js.map +1 -0
  102. package/dist/esm/transports/ankr/__mocks__/getTransactionFee/invalid.json +3 -0
  103. package/dist/esm/transports/ankr/__mocks__/getTransactionFee/valid.json +51 -0
  104. package/dist/esm/transports/ankr/ankr.types.d.ts +4 -0
  105. package/dist/esm/transports/ankr/getTransactionFee.d.ts +2 -0
  106. package/dist/esm/transports/ankr/getTransactionFee.js +14 -0
  107. package/dist/esm/transports/ankr/getTransactionFee.js.map +1 -0
  108. package/dist/esm/transports/ankr/getTransactions.d.ts +0 -3
  109. package/dist/esm/transports/ankr/getTransactions.js +1 -24
  110. package/dist/esm/transports/ankr/getTransactions.js.map +1 -1
  111. package/dist/esm/transports/ankr/methods.js +2 -0
  112. package/dist/esm/transports/ankr/methods.js.map +1 -1
  113. package/dist/esm/transports/ankr/utils.d.ts +3 -0
  114. package/dist/esm/transports/ankr/utils.js +25 -0
  115. package/dist/esm/transports/ankr/utils.js.map +1 -0
  116. package/dist/esm/transports/blockchair/__mocks__/getTransactionFee/invalid.json +7 -0
  117. package/dist/esm/transports/blockchair/__mocks__/getTransactionFee/valid.json +37 -0
  118. package/dist/esm/transports/blockchair/__mocks__/getUTXOs/rateLimited.json +28 -0
  119. package/dist/esm/transports/blockchair/blockchair.types.d.ts +61 -0
  120. package/dist/esm/transports/blockchair/getTransactionFee.d.ts +2 -0
  121. package/dist/esm/transports/blockchair/getTransactionFee.js +24 -0
  122. package/dist/esm/transports/blockchair/getTransactionFee.js.map +1 -0
  123. package/dist/esm/transports/blockchair/methods.js +2 -0
  124. package/dist/esm/transports/blockchair/methods.js.map +1 -1
  125. package/dist/esm/transports/blockcypher/__mocks__/getTransactionFee/invalid.json +3 -0
  126. package/dist/esm/transports/blockcypher/__mocks__/getTransactionFee/valid.json +22 -0
  127. package/dist/esm/transports/blockcypher/__mocks__/getUTXOs/rateLimited.json +3 -0
  128. package/dist/esm/transports/blockcypher/blockcypher.types.d.ts +41 -0
  129. package/dist/esm/transports/blockcypher/getTransactionFee.d.ts +2 -0
  130. package/dist/esm/transports/blockcypher/getTransactionFee.js +19 -0
  131. package/dist/esm/transports/blockcypher/getTransactionFee.js.map +1 -0
  132. package/dist/esm/transports/blockcypher/methods.js +2 -0
  133. package/dist/esm/transports/blockcypher/methods.js.map +1 -1
  134. package/dist/esm/transports/fallback.js +19 -5
  135. package/dist/esm/transports/fallback.js.map +1 -1
  136. package/dist/esm/transports/mempool/__mocks__/getTransactionFee/invalid.json +1 -0
  137. package/dist/esm/transports/mempool/__mocks__/getTransactionFee/valid.json +58 -0
  138. package/dist/esm/transports/mempool/getTransactionFee.d.ts +2 -0
  139. package/dist/esm/transports/mempool/getTransactionFee.js +11 -0
  140. package/dist/esm/transports/mempool/getTransactionFee.js.map +1 -0
  141. package/dist/esm/transports/mempool/getTransactions.js +1 -25
  142. package/dist/esm/transports/mempool/getTransactions.js.map +1 -1
  143. package/dist/esm/transports/mempool/methods.js +2 -0
  144. package/dist/esm/transports/mempool/methods.js.map +1 -1
  145. package/dist/esm/transports/mempool/utils.d.ts +3 -0
  146. package/dist/esm/transports/mempool/utils.js +26 -0
  147. package/dist/esm/transports/mempool/utils.js.map +1 -0
  148. package/dist/esm/transports/types.d.ts +7 -0
  149. package/dist/esm/transports/types.js +1 -0
  150. package/dist/esm/transports/types.js.map +1 -1
  151. package/dist/esm/types/account.d.ts +3 -3
  152. package/dist/esm/types/address.d.ts +20 -0
  153. package/dist/esm/types/address.js +14 -1
  154. package/dist/esm/types/address.js.map +1 -1
  155. package/dist/esm/utils/converter.d.ts +1 -0
  156. package/dist/esm/utils/converter.js +3 -0
  157. package/dist/esm/utils/converter.js.map +1 -1
  158. package/dist/esm/utils/getAddressInfo.d.ts +2 -0
  159. package/dist/esm/utils/{getUTXOAddress.js → getAddressInfo.js} +34 -30
  160. package/dist/esm/utils/getAddressInfo.js.map +1 -0
  161. package/dist/esm/utils/isAddress.d.ts +2 -0
  162. package/dist/esm/utils/isAddress.js +14 -0
  163. package/dist/esm/utils/isAddress.js.map +1 -0
  164. package/dist/esm/version.d.ts +1 -1
  165. package/dist/esm/version.js +1 -1
  166. package/dist/esm/version.js.map +1 -1
  167. package/dist/types/actions/getTransactionFee.d.ts +11 -0
  168. package/dist/types/actions/getTransactionFee.d.ts.map +1 -0
  169. package/dist/types/clients/decorators/public.d.ts +2 -0
  170. package/dist/types/clients/decorators/public.d.ts.map +1 -1
  171. package/dist/types/errors/transport.d.ts +23 -0
  172. package/dist/types/errors/transport.d.ts.map +1 -1
  173. package/dist/types/index.d.ts +8 -6
  174. package/dist/types/index.d.ts.map +1 -1
  175. package/dist/types/test/utils.d.ts +1 -1
  176. package/dist/types/test/utils.d.ts.map +1 -1
  177. package/dist/types/transports/__mocks__/getTransactionFee.d.ts +4 -0
  178. package/dist/types/transports/__mocks__/getTransactionFee.d.ts.map +1 -0
  179. package/dist/types/transports/ankr/ankr.types.d.ts +4 -0
  180. package/dist/types/transports/ankr/ankr.types.d.ts.map +1 -1
  181. package/dist/types/transports/ankr/getTransactionFee.d.ts +3 -0
  182. package/dist/types/transports/ankr/getTransactionFee.d.ts.map +1 -0
  183. package/dist/types/transports/ankr/getTransactions.d.ts +0 -3
  184. package/dist/types/transports/ankr/getTransactions.d.ts.map +1 -1
  185. package/dist/types/transports/ankr/methods.d.ts.map +1 -1
  186. package/dist/types/transports/ankr/utils.d.ts +4 -0
  187. package/dist/types/transports/ankr/utils.d.ts.map +1 -0
  188. package/dist/types/transports/blockchair/blockchair.types.d.ts +61 -0
  189. package/dist/types/transports/blockchair/blockchair.types.d.ts.map +1 -1
  190. package/dist/types/transports/blockchair/getTransactionFee.d.ts +3 -0
  191. package/dist/types/transports/blockchair/getTransactionFee.d.ts.map +1 -0
  192. package/dist/types/transports/blockchair/methods.d.ts.map +1 -1
  193. package/dist/types/transports/blockcypher/blockcypher.types.d.ts +41 -0
  194. package/dist/types/transports/blockcypher/blockcypher.types.d.ts.map +1 -1
  195. package/dist/types/transports/blockcypher/getTransactionFee.d.ts +3 -0
  196. package/dist/types/transports/blockcypher/getTransactionFee.d.ts.map +1 -0
  197. package/dist/types/transports/blockcypher/methods.d.ts.map +1 -1
  198. package/dist/types/transports/fallback.d.ts.map +1 -1
  199. package/dist/types/transports/mempool/getTransactionFee.d.ts +3 -0
  200. package/dist/types/transports/mempool/getTransactionFee.d.ts.map +1 -0
  201. package/dist/types/transports/mempool/getTransactions.d.ts.map +1 -1
  202. package/dist/types/transports/mempool/methods.d.ts.map +1 -1
  203. package/dist/types/transports/mempool/utils.d.ts +4 -0
  204. package/dist/types/transports/mempool/utils.d.ts.map +1 -0
  205. package/dist/types/transports/types.d.ts +7 -0
  206. package/dist/types/transports/types.d.ts.map +1 -1
  207. package/dist/types/types/account.d.ts +3 -3
  208. package/dist/types/types/account.d.ts.map +1 -1
  209. package/dist/types/types/address.d.ts +20 -0
  210. package/dist/types/types/address.d.ts.map +1 -1
  211. package/dist/types/utils/converter.d.ts +1 -0
  212. package/dist/types/utils/converter.d.ts.map +1 -1
  213. package/dist/types/utils/getAddressInfo.d.ts +3 -0
  214. package/dist/types/utils/getAddressInfo.d.ts.map +1 -0
  215. package/dist/types/utils/isAddress.d.ts +3 -0
  216. package/dist/types/utils/isAddress.d.ts.map +1 -0
  217. package/dist/types/version.d.ts +1 -1
  218. package/dist/types/version.d.ts.map +1 -1
  219. package/package.json +1 -1
  220. package/package.json.tmp +3 -3
  221. package/src/actions/getTransactionFee.ts +26 -0
  222. package/src/clients/decorators/public.ts +9 -0
  223. package/src/errors/transport.ts +54 -0
  224. package/src/index.ts +25 -9
  225. package/src/test/utils.ts +5 -1
  226. package/src/transports/__mocks__/getTransactionFee.ts +4 -0
  227. package/src/transports/ankr/__mocks__/getTransactionFee/invalid.json +3 -0
  228. package/src/transports/ankr/__mocks__/getTransactionFee/valid.json +51 -0
  229. package/src/transports/ankr/ankr.spec.ts +45 -1
  230. package/src/transports/ankr/ankr.types.ts +5 -0
  231. package/src/transports/ankr/getTransactionFee.ts +21 -0
  232. package/src/transports/ankr/getTransactions.ts +1 -30
  233. package/src/transports/ankr/methods.ts +2 -0
  234. package/src/transports/ankr/utils.ts +29 -0
  235. package/src/transports/blockchair/__mocks__/getTransactionFee/invalid.json +7 -0
  236. package/src/transports/blockchair/__mocks__/getTransactionFee/valid.json +37 -0
  237. package/src/transports/blockchair/__mocks__/getUTXOs/rateLimited.json +28 -0
  238. package/src/transports/blockchair/blockchair.spec.ts +49 -0
  239. package/src/transports/blockchair/blockchair.types.ts +67 -0
  240. package/src/transports/blockchair/getTransactionFee.ts +32 -0
  241. package/src/transports/blockchair/methods.ts +2 -0
  242. package/src/transports/blockcypher/__mocks__/getTransactionFee/invalid.json +3 -0
  243. package/src/transports/blockcypher/__mocks__/getTransactionFee/valid.json +22 -0
  244. package/src/transports/blockcypher/__mocks__/getUTXOs/rateLimited.json +3 -0
  245. package/src/transports/blockcypher/blockcyper.spec.ts +43 -4
  246. package/src/transports/blockcypher/blockcypher.types.ts +45 -0
  247. package/src/transports/blockcypher/getTransactionFee.ts +28 -0
  248. package/src/transports/blockcypher/methods.ts +2 -0
  249. package/src/transports/fallback.spec.ts +103 -0
  250. package/src/transports/fallback.ts +29 -5
  251. package/src/transports/mempool/__mocks__/getTransactionFee/invalid.json +1 -0
  252. package/src/transports/mempool/__mocks__/getTransactionFee/valid.json +58 -0
  253. package/src/transports/mempool/getTransactionFee.ts +19 -0
  254. package/src/transports/mempool/getTransactions.ts +1 -30
  255. package/src/transports/mempool/mempool.spec.ts +41 -0
  256. package/src/transports/mempool/methods.ts +2 -0
  257. package/src/transports/mempool/utils.ts +30 -0
  258. package/src/transports/types.ts +8 -0
  259. package/src/types/account.ts +3 -3
  260. package/src/types/address.ts +24 -0
  261. package/src/utils/converter.ts +6 -0
  262. package/src/utils/{getUTXOAddress.ts → getAddressInfo.ts} +46 -41
  263. package/src/utils/isAddress.ts +16 -0
  264. package/src/version.ts +1 -1
  265. package/dist/cjs/utils/getUTXOAddress.d.ts +0 -20
  266. package/dist/cjs/utils/getUTXOAddress.js.map +0 -1
  267. package/dist/cjs/utils/isUTXOAddress.d.ts +0 -2
  268. package/dist/cjs/utils/isUTXOAddress.js +0 -18
  269. package/dist/cjs/utils/isUTXOAddress.js.map +0 -1
  270. package/dist/esm/utils/getUTXOAddress.d.ts +0 -20
  271. package/dist/esm/utils/getUTXOAddress.js.map +0 -1
  272. package/dist/esm/utils/isUTXOAddress.d.ts +0 -2
  273. package/dist/esm/utils/isUTXOAddress.js +0 -14
  274. package/dist/esm/utils/isUTXOAddress.js.map +0 -1
  275. package/dist/types/utils/getUTXOAddress.d.ts +0 -21
  276. package/dist/types/utils/getUTXOAddress.d.ts.map +0 -1
  277. package/dist/types/utils/isUTXOAddress.d.ts +0 -3
  278. package/dist/types/utils/isUTXOAddress.d.ts.map +0 -1
  279. package/src/utils/isUTXOAddress.ts +0 -19
@@ -1,5 +1,8 @@
1
1
  import { RpcErrorCode } from '../errors/rpc.js'
2
- import { TransportMethodNotSupportedError } from '../errors/transport.js'
2
+ import {
3
+ AllTransportsFailedError,
4
+ TransportMethodNotSupportedError,
5
+ } from '../errors/transport.js'
3
6
  import type { ErrorType } from '../errors/utils.js'
4
7
  import { InsufficientUTXOBalanceError } from '../errors/utxo.js'
5
8
  import { createTransport } from '../factories/createTransport.js'
@@ -154,6 +157,12 @@ export function fallback<const transports extends readonly Transport[]>(
154
157
  throw new TransportMethodNotSupportedError({ method })
155
158
  }
156
159
 
160
+ const collectedErrors: Array<{
161
+ transport: string
162
+ error: Error
163
+ attempt: number
164
+ }> = []
165
+
157
166
  const fetch = async (i = 0): Promise<any> => {
158
167
  const transport = supportedTransports[i]
159
168
  try {
@@ -184,9 +193,20 @@ export function fallback<const transports extends readonly Transport[]>(
184
193
  throw err
185
194
  }
186
195
 
187
- // If we've reached the end of the fallbacks, throw the error.
196
+ collectedErrors.push({
197
+ transport: transport.config.name,
198
+ error: err as Error,
199
+ attempt: i + 1,
200
+ })
201
+
202
+ // If we've reached the end of the fallbacks, throw all collected errors.
188
203
  if (i === supportedTransports.length - 1) {
189
- throw err
204
+ throw new AllTransportsFailedError({
205
+ method,
206
+ params,
207
+ errors: collectedErrors,
208
+ totalAttempts: i + 1,
209
+ })
190
210
  }
191
211
 
192
212
  // Otherwise, try the next fallback.
@@ -227,16 +247,20 @@ export function fallback<const transports extends readonly Transport[]>(
227
247
  }
228
248
 
229
249
  export function shouldThrow(error: Error) {
250
+ if (error instanceof InsufficientUTXOBalanceError) {
251
+ return true
252
+ }
253
+
230
254
  if ('code' in error && typeof error.code === 'number') {
231
255
  if (
232
256
  error.code === RpcErrorCode.INTERNAL_ERROR ||
233
257
  error.code === RpcErrorCode.USER_REJECTION ||
234
- error.code === 5000 || // CAIP UserRejectedRequestError
235
- error instanceof InsufficientUTXOBalanceError
258
+ error.code === 5000 // CAIP UserRejectedRequestError
236
259
  ) {
237
260
  return true
238
261
  }
239
262
  }
263
+
240
264
  return false
241
265
  }
242
266
 
@@ -0,0 +1 @@
1
+ "Invalid hex string"
@@ -0,0 +1,58 @@
1
+ {
2
+ "txid": "4b6ee974f1dd179071d027562e1fd1c83965efa4a171ec84f00b6c638e36fa4e",
3
+ "version": 2,
4
+ "locktime": 0,
5
+ "vin": [
6
+ {
7
+ "txid": "e77cbe6d061f43672968834bce324a1984797f5cfbb463697df238bd385917be",
8
+ "vout": 0,
9
+ "prevout": {
10
+ "scriptpubkey": "00140b2cfb49a87dbb35f0a2f1c02f2016a441aac7bc",
11
+ "scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 0b2cfb49a87dbb35f0a2f1c02f2016a441aac7bc",
12
+ "scriptpubkey_type": "v0_p2wpkh",
13
+ "scriptpubkey_address": "bc1qpvk0kjdg0kantu9z78qz7gqk53q643auz33yaw",
14
+ "value": 47580
15
+ },
16
+ "scriptsig": "",
17
+ "scriptsig_asm": "",
18
+ "witness": [
19
+ "3045022100f7f01395cd1522fa63977f658bc72410a59e576b35cbf2a606dad1ed98e9c01402201d7994777edf3967ea2cf90e9f95eb9b9b5e6635aa934defb0094f7b313609e301",
20
+ "025873f7163097c81372cb414f25e79204a422fbcf43495a18d8043466fd4e7c99"
21
+ ],
22
+ "is_coinbase": false,
23
+ "sequence": 4294967293
24
+ }
25
+ ],
26
+ "vout": [
27
+ {
28
+ "scriptpubkey": "001496d086eea328c1648231a3bca6f395f44fa95dae",
29
+ "scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 96d086eea328c1648231a3bca6f395f44fa95dae",
30
+ "scriptpubkey_type": "v0_p2wpkh",
31
+ "scriptpubkey_address": "bc1qjmggdm4r9rqkfq335w72duu47386jhdw6wye0m",
32
+ "value": 10000
33
+ },
34
+ {
35
+ "scriptpubkey": "6a473d3a613a3078424435354332463330364339374664316433453741303233663763343833346132463437323833343a3a6c6966692f2d5f3a302f32307c30783134323835626439",
36
+ "scriptpubkey_asm": "OP_RETURN OP_PUSHBYTES_71 3d3a613a3078424435354332463330364339374664316433453741303233663763343833346132463437323833343a3a6c6966692f2d5f3a302f32307c30783134323835626439",
37
+ "scriptpubkey_type": "op_return",
38
+ "value": 0
39
+ },
40
+ {
41
+ "scriptpubkey": "00140b2cfb49a87dbb35f0a2f1c02f2016a441aac7bc",
42
+ "scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 0b2cfb49a87dbb35f0a2f1c02f2016a441aac7bc",
43
+ "scriptpubkey_type": "v0_p2wpkh",
44
+ "scriptpubkey_address": "bc1qpvk0kjdg0kantu9z78qz7gqk53q643auz33yaw",
45
+ "value": 33206
46
+ }
47
+ ],
48
+ "size": 305,
49
+ "weight": 890,
50
+ "sigops": 1,
51
+ "fee": 4374,
52
+ "status": {
53
+ "confirmed": true,
54
+ "block_height": 897002,
55
+ "block_hash": "00000000000000000000aa525233832b8fcf408b8de79677c994b3a014686134",
56
+ "block_time": 1747423060
57
+ }
58
+ }
@@ -0,0 +1,19 @@
1
+ import type { RpcMethodHandler } from '../types.js'
2
+ import type { MempoolTransaction } from './mempool.types.js'
3
+
4
+ export const getTransactionFee: RpcMethodHandler<'getTransactionFee'> = async (
5
+ client,
6
+ { baseUrl },
7
+ { txId }
8
+ ) => {
9
+ const apiUrl = `${baseUrl}/tx/${txId}`
10
+
11
+ const response = (await client.request({
12
+ url: apiUrl,
13
+ fetchOptions: { method: 'GET' },
14
+ })) as unknown as MempoolTransaction
15
+
16
+ return {
17
+ result: BigInt(response.fee),
18
+ }
19
+ }
@@ -1,39 +1,10 @@
1
- import type { UTXOTransaction } from '../../types/transaction.js'
2
1
  import { urlWithParams } from '../../utils/url.js'
3
2
  import type { RpcMethodHandler } from '../types.js'
4
3
  import type {
5
4
  MempoolBalanceResponse,
6
- MempoolTransaction,
7
5
  MempoolUTXOTransactionsResponse,
8
6
  } from './mempool.types.js'
9
-
10
- const mempoolTransactionTransformer = (
11
- txn: MempoolTransaction
12
- ): Partial<UTXOTransaction> => ({
13
- hash: txn.txid,
14
- txid: txn.txid,
15
- vout: txn.vout.map((vout, index) => ({
16
- n: index,
17
- scriptPubKey: {
18
- address: vout.scriptpubkey_address,
19
- asm: vout.scriptpubkey_asm,
20
- type: vout.scriptpubkey_type,
21
- desc: vout.scriptpubkey,
22
- hex: vout.scriptpubkey,
23
- },
24
- value: vout.value,
25
- })),
26
- vin: txn.vin.map((vin) => ({
27
- scriptSig: {
28
- asm: vin.scriptsig_asm,
29
- hex: vin.scriptsig,
30
- },
31
- sequence: vin.sequence,
32
- txinwitness: vin.witness,
33
- txid: vin.txid,
34
- vout: vin.vout,
35
- })),
36
- })
7
+ import { mempoolTransactionTransformer } from './utils.js'
37
8
 
38
9
  export const getTransactions: RpcMethodHandler<'getTransactions'> = async (
39
10
  client,
@@ -6,9 +6,17 @@ import { createClient, rpcSchema } from '../../factories/createClient'
6
6
  import { createMockResponse } from '../../test/utils'
7
7
  import type { UTXOSchema } from '../types'
8
8
 
9
+ import { getTransactionFee } from '../../actions/getTransactionFee'
9
10
  import { BaseError } from '../../errors/base'
11
+ import {
12
+ INVALID_TX_ID,
13
+ TX_FEE,
14
+ VALID_TX_ID,
15
+ } from '../__mocks__/getTransactionFee'
10
16
  import getBalanceInValidResponse from './__mocks__/getBalance/invalid.json'
11
17
  import getBalanceValidResponse from './__mocks__/getBalance/valid.json'
18
+ import getTransactionFeeInvalidResponse from './__mocks__/getTransactionFee/invalid.json'
19
+ import getTransactionFeeValidResponse from './__mocks__/getTransactionFee/valid.json'
12
20
  import getTransactionsValidResponse from './__mocks__/getTransactions/valid.json'
13
21
  import { mempool } from './mempool'
14
22
  import type {
@@ -19,6 +27,8 @@ import type {
19
27
 
20
28
  const address = import.meta.env.VITE_TEST_ADDRESS
21
29
 
30
+ const USE_MOCK = true
31
+
22
32
  const publicClient = createClient({
23
33
  chain: bitcoin,
24
34
  rpcSchema: rpcSchema<UTXOSchema>(),
@@ -83,4 +93,35 @@ describe('Mempool Transport', () => {
83
93
  expect(transactions[0]).toHaveProperty('vin')
84
94
  })
85
95
  })
96
+
97
+ describe('getTransactionFee action', async () => {
98
+ it('should get transaction fee', async () => {
99
+ if (USE_MOCK) {
100
+ getTransactionFeeValidResponse.txid = VALID_TX_ID
101
+ getTransactionFeeValidResponse.fee = TX_FEE
102
+
103
+ vi.spyOn(global, 'fetch').mockResolvedValue(
104
+ createMockResponse(getTransactionFeeValidResponse)
105
+ )
106
+ }
107
+
108
+ const result = await getTransactionFee(publicClient, {
109
+ txId: VALID_TX_ID,
110
+ })
111
+ expect(result).toBeDefined()
112
+ expect(result).toBe(BigInt(TX_FEE))
113
+ })
114
+
115
+ it('should throw an error for invalid transaction ID', async () => {
116
+ if (USE_MOCK) {
117
+ vi.spyOn(global, 'fetch').mockResolvedValue(
118
+ createMockResponse(getTransactionFeeInvalidResponse)
119
+ )
120
+ }
121
+
122
+ await expect(
123
+ getTransactionFee(publicClient, { txId: INVALID_TX_ID })
124
+ ).rejects.toThrow()
125
+ })
126
+ })
86
127
  })
@@ -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 mempoolMethods: RpcMethods = {
6
7
  getBalance,
7
8
  getTransactions,
9
+ getTransactionFee,
8
10
  }
@@ -0,0 +1,30 @@
1
+ import type { UTXOTransaction } from '../../types/transaction.js'
2
+ import type { MempoolTransaction } from './mempool.types.js'
3
+
4
+ export const mempoolTransactionTransformer = (
5
+ txn: MempoolTransaction
6
+ ): Partial<UTXOTransaction> => ({
7
+ hash: txn.txid,
8
+ txid: txn.txid,
9
+ vout: txn.vout.map((vout, index) => ({
10
+ n: index,
11
+ scriptPubKey: {
12
+ address: vout.scriptpubkey_address,
13
+ asm: vout.scriptpubkey_asm,
14
+ type: vout.scriptpubkey_type,
15
+ desc: vout.scriptpubkey,
16
+ hex: vout.scriptpubkey,
17
+ },
18
+ value: vout.value,
19
+ })),
20
+ vin: txn.vin.map((vin) => ({
21
+ scriptSig: {
22
+ asm: vin.scriptsig_asm,
23
+ hex: vin.scriptsig,
24
+ },
25
+ sequence: vin.sequence,
26
+ txinwitness: vin.witness,
27
+ txid: vin.txid,
28
+ vout: vin.vout,
29
+ })),
30
+ })
@@ -6,6 +6,7 @@ export const UTXOAPISchemaMethods: UTXOMethod[] = [
6
6
  'getBalance',
7
7
  'getTransactions',
8
8
  'getUTXOs',
9
+ 'getTransactionFee',
9
10
  ]
10
11
 
11
12
  export type UTXOAPISchema = [
@@ -29,6 +30,13 @@ export type UTXOAPISchema = [
29
30
  hasMore?: boolean
30
31
  }
31
32
  },
33
+ {
34
+ Method: 'getTransactionFee'
35
+ Parameters: {
36
+ txId: string
37
+ }
38
+ ReturnType: bigint
39
+ },
32
40
  {
33
41
  Method: 'getUTXOs'
34
42
  Parameters: {
@@ -1,8 +1,8 @@
1
- import type { Address } from './address.js'
1
+ import type { Address, AddressPurpose, AddressType } from './address.js'
2
2
 
3
3
  export interface Account {
4
4
  address: Address
5
- addressType: 'p2tr' | 'p2wpkh' | 'p2wsh' | 'p2sh' | 'p2pkh'
5
+ addressType: AddressType
6
6
  publicKey: string
7
- purpose: 'payment' | 'ordinals'
7
+ purpose: AddressPurpose
8
8
  }
@@ -1 +1,25 @@
1
1
  export type Address = string
2
+
3
+ export type AddressPurpose = 'payment' | 'ordinals' | 'stacks'
4
+
5
+ export enum Network {
6
+ Mainnet = 'mainnet',
7
+ Testnet = 'testnet',
8
+ Regtest = 'regtest',
9
+ }
10
+
11
+ export enum AddressType {
12
+ p2pkh = 'p2pkh',
13
+ p2sh = 'p2sh',
14
+ p2wpkh = 'p2wpkh',
15
+ p2wsh = 'p2wsh',
16
+ p2tr = 'p2tr',
17
+ }
18
+
19
+ export type AddressInfo = {
20
+ bech32: boolean
21
+ network: Network
22
+ address: Address
23
+ type: AddressType
24
+ purpose: AddressPurpose
25
+ }
@@ -32,3 +32,9 @@ export function stringToHex(value: string): string {
32
32
 
33
33
  return `0x${hex}`
34
34
  }
35
+
36
+ export function hexToUnit8Array(value: string): Uint8Array {
37
+ return new Uint8Array(
38
+ value.match(/.{1,2}/g)?.map((byte) => Number.parseInt(byte, 16)) || []
39
+ )
40
+ }
@@ -1,51 +1,37 @@
1
1
  import { sha256 } from '@noble/hashes/sha256'
2
2
  import { type Decoded, bech32, bech32m } from 'bech32'
3
3
  import bs58 from 'bs58'
4
- import type { Address } from '../types/address.ts'
5
4
 
6
- export enum UTXONetwork {
7
- Mainnet = 'mainnet',
8
- Testnet = 'testnet',
9
- Regtest = 'regtest',
10
- }
11
-
12
- export enum UTXOAddressType {
13
- p2pkh = 'p2pkh',
14
- p2sh = 'p2sh',
15
- p2wpkh = 'p2wpkh',
16
- p2wsh = 'p2wsh',
17
- p2tr = 'p2tr',
18
- }
19
-
20
- export type UTXOAddress = {
21
- bech32: boolean
22
- network: UTXONetwork
23
- address: Address
24
- type: UTXOAddressType
25
- }
5
+ import {
6
+ type Address,
7
+ type AddressInfo,
8
+ type AddressPurpose,
9
+ AddressType,
10
+ Network,
11
+ } from '../types/address.js'
26
12
 
27
13
  const addressTypes: {
28
- [key: number]: { type: UTXOAddressType; network: UTXONetwork }
14
+ [key: number]: { type: AddressType; network: Network }
29
15
  } = {
30
16
  0: {
31
- type: UTXOAddressType.p2pkh,
32
- network: UTXONetwork.Mainnet,
17
+ type: AddressType.p2pkh,
18
+ network: Network.Mainnet,
33
19
  },
34
20
  111: {
35
- type: UTXOAddressType.p2pkh,
36
- network: UTXONetwork.Testnet,
21
+ type: AddressType.p2pkh,
22
+ network: Network.Testnet,
37
23
  },
38
24
  5: {
39
- type: UTXOAddressType.p2sh,
40
- network: UTXONetwork.Mainnet,
25
+ type: AddressType.p2sh,
26
+ network: Network.Mainnet,
41
27
  },
42
28
  196: {
43
- type: UTXOAddressType.p2sh,
44
- network: UTXONetwork.Testnet,
29
+ type: AddressType.p2sh,
30
+ network: Network.Testnet,
45
31
  },
46
32
  }
47
33
 
48
- const parseBech32 = (address: Address): UTXOAddress => {
34
+ const parseBech32 = (address: Address): AddressInfo => {
49
35
  let decoded: Decoded
50
36
 
51
37
  try {
@@ -62,13 +48,13 @@ const parseBech32 = (address: Address): UTXOAddress => {
62
48
  throw new Error('Invalid address')
63
49
  }
64
50
 
65
- const mapPrefixToNetwork: { [key: string]: UTXONetwork } = {
66
- bc: UTXONetwork.Mainnet,
67
- tb: UTXONetwork.Testnet,
68
- bcrt: UTXONetwork.Regtest,
51
+ const mapPrefixToNetwork: { [key: string]: Network } = {
52
+ bc: Network.Mainnet,
53
+ tb: Network.Testnet,
54
+ bcrt: Network.Regtest,
69
55
  }
70
56
 
71
- const network: UTXONetwork = mapPrefixToNetwork[decoded.prefix]
57
+ const network: Network = mapPrefixToNetwork[decoded.prefix]
72
58
 
73
59
  if (network === undefined) {
74
60
  throw new Error('Invalid address')
@@ -81,24 +67,27 @@ const parseBech32 = (address: Address): UTXOAddress => {
81
67
  }
82
68
  const data = bech32.fromWords(decoded.words.slice(1))
83
69
 
84
- let type: UTXOAddressType
70
+ let type: AddressType
85
71
  if (data.length === 20) {
86
- type = UTXOAddressType.p2wpkh
72
+ type = AddressType.p2wpkh
87
73
  } else if (witnessVersion === 1) {
88
- type = UTXOAddressType.p2tr
74
+ type = AddressType.p2tr
89
75
  } else {
90
- type = UTXOAddressType.p2wsh
76
+ type = AddressType.p2wsh
91
77
  }
92
78
 
79
+ const purpose = getAddressPurpose(type)
80
+
93
81
  return {
94
82
  bech32: true,
95
83
  network,
96
84
  address,
97
85
  type,
86
+ purpose,
98
87
  }
99
88
  }
100
89
 
101
- export const getUTXOAddress = (address: Address): UTXOAddress => {
90
+ export const getAddressInfo = (address: Address): AddressInfo => {
102
91
  let decoded: Uint8Array
103
92
  const prefix = address.substring(0, 2).toLowerCase()
104
93
 
@@ -145,5 +134,21 @@ export const getUTXOAddress = (address: Address): UTXOAddress => {
145
134
  ...addressType,
146
135
  address,
147
136
  bech32: false,
137
+ purpose: getAddressPurpose(addressType.type),
138
+ }
139
+ }
140
+
141
+ const getAddressPurpose = (type: AddressType): AddressPurpose => {
142
+ switch (type) {
143
+ case AddressType.p2tr:
144
+ return 'ordinals'
145
+ case AddressType.p2wsh:
146
+ return 'stacks'
147
+ case AddressType.p2wpkh:
148
+ case AddressType.p2sh:
149
+ case AddressType.p2pkh:
150
+ return 'payment'
151
+ default:
152
+ throw new Error('Invalid address type')
148
153
  }
149
154
  }
@@ -0,0 +1,16 @@
1
+ import type { Address, Network } from '../types/address.js'
2
+ import { getAddressInfo } from './getAddressInfo.js'
3
+
4
+ export const isAddress = (address: string, network?: Network): boolean => {
5
+ try {
6
+ const addressInfo = getAddressInfo(address as Address)
7
+
8
+ if (network) {
9
+ return network === addressInfo.network
10
+ }
11
+
12
+ return true
13
+ } catch (_error) {
14
+ return false
15
+ }
16
+ }
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export const name = '@bigmi/core'
2
- export const version = '0.3.1'
2
+ export const version = '0.4.0-beta.1'
@@ -1,20 +0,0 @@
1
- import type { Address } from '../types/address.ts';
2
- export declare enum UTXONetwork {
3
- Mainnet = "mainnet",
4
- Testnet = "testnet",
5
- Regtest = "regtest"
6
- }
7
- export declare enum UTXOAddressType {
8
- p2pkh = "p2pkh",
9
- p2sh = "p2sh",
10
- p2wpkh = "p2wpkh",
11
- p2wsh = "p2wsh",
12
- p2tr = "p2tr"
13
- }
14
- export type UTXOAddress = {
15
- bech32: boolean;
16
- network: UTXONetwork;
17
- address: Address;
18
- type: UTXOAddressType;
19
- };
20
- export declare const getUTXOAddress: (address: Address) => UTXOAddress;
@@ -1 +0,0 @@
1
- {"version":3,"file":"getUTXOAddress.js","sourceRoot":"","sources":["../../../src/utils/getUTXOAddress.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { type UTXONetwork } from './getUTXOAddress.js';
2
- export declare const isUTXOAddress: (address: string, network?: UTXONetwork) => boolean;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isUTXOAddress = void 0;
4
- const getUTXOAddress_js_1 = require("./getUTXOAddress.js");
5
- const isUTXOAddress = (address, network) => {
6
- try {
7
- const utxoAddress = (0, getUTXOAddress_js_1.getUTXOAddress)(address);
8
- if (network) {
9
- return network === utxoAddress.network;
10
- }
11
- return true;
12
- }
13
- catch (_error) {
14
- return false;
15
- }
16
- };
17
- exports.isUTXOAddress = isUTXOAddress;
18
- //# sourceMappingURL=isUTXOAddress.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isUTXOAddress.js","sourceRoot":"","sources":["../../../src/utils/isUTXOAddress.ts"],"names":[],"mappings":";;;AACA,2DAAsE;AAE/D,MAAM,aAAa,GAAG,CAC3B,OAAe,EACf,OAAqB,EACZ,EAAE;IACX,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAA,kCAAc,EAAC,OAAkB,CAAC,CAAA;QAEtD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,KAAK,WAAW,CAAC,OAAO,CAAA;QACxC,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAfY,QAAA,aAAa,iBAezB"}
@@ -1,20 +0,0 @@
1
- import type { Address } from '../types/address.ts';
2
- export declare enum UTXONetwork {
3
- Mainnet = "mainnet",
4
- Testnet = "testnet",
5
- Regtest = "regtest"
6
- }
7
- export declare enum UTXOAddressType {
8
- p2pkh = "p2pkh",
9
- p2sh = "p2sh",
10
- p2wpkh = "p2wpkh",
11
- p2wsh = "p2wsh",
12
- p2tr = "p2tr"
13
- }
14
- export type UTXOAddress = {
15
- bech32: boolean;
16
- network: UTXONetwork;
17
- address: Address;
18
- type: UTXOAddressType;
19
- };
20
- export declare const getUTXOAddress: (address: Address) => UTXOAddress;
@@ -1 +0,0 @@
1
- {"version":3,"file":"getUTXOAddress.js","sourceRoot":"","sources":["../../../src/utils/getUTXOAddress.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { type UTXONetwork } from './getUTXOAddress.js';
2
- export declare const isUTXOAddress: (address: string, network?: UTXONetwork) => boolean;
@@ -1,14 +0,0 @@
1
- import { getUTXOAddress } from './getUTXOAddress.js';
2
- export const isUTXOAddress = (address, network) => {
3
- try {
4
- const utxoAddress = getUTXOAddress(address);
5
- if (network) {
6
- return network === utxoAddress.network;
7
- }
8
- return true;
9
- }
10
- catch (_error) {
11
- return false;
12
- }
13
- };
14
- //# sourceMappingURL=isUTXOAddress.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isUTXOAddress.js","sourceRoot":"","sources":["../../../src/utils/isUTXOAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEtE,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAAe,EACf,OAAqB,EACZ,EAAE;IACX,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,cAAc,CAAC,OAAkB,CAAC,CAAA;QAEtD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,KAAK,WAAW,CAAC,OAAO,CAAA;QACxC,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA"}
@@ -1,21 +0,0 @@
1
- import type { Address } from '../types/address.ts';
2
- export declare enum UTXONetwork {
3
- Mainnet = "mainnet",
4
- Testnet = "testnet",
5
- Regtest = "regtest"
6
- }
7
- export declare enum UTXOAddressType {
8
- p2pkh = "p2pkh",
9
- p2sh = "p2sh",
10
- p2wpkh = "p2wpkh",
11
- p2wsh = "p2wsh",
12
- p2tr = "p2tr"
13
- }
14
- export type UTXOAddress = {
15
- bech32: boolean;
16
- network: UTXONetwork;
17
- address: Address;
18
- type: UTXOAddressType;
19
- };
20
- export declare const getUTXOAddress: (address: Address) => UTXOAddress;
21
- //# sourceMappingURL=getUTXOAddress.d.ts.map