mainnet-js 0.5.8 → 1.0.0-rc.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 (686) hide show
  1. package/dist/index.html +9 -1
  2. package/dist/mainnet-1.0.0-rc.1.js +2928 -0
  3. package/dist/module/chain.d.ts +1 -0
  4. package/dist/module/chain.d.ts.map +1 -0
  5. package/dist/module/cli.d.ts +1 -0
  6. package/dist/module/cli.d.ts.map +1 -0
  7. package/dist/module/cli.js +2 -2
  8. package/dist/module/cli.js.map +1 -1
  9. package/dist/module/constant.d.ts +1 -0
  10. package/dist/module/constant.d.ts.map +1 -0
  11. package/dist/module/db/ExchangeRateProvider.d.ts +2 -1
  12. package/dist/module/db/ExchangeRateProvider.d.ts.map +1 -0
  13. package/dist/module/db/IndexedDBProvider.d.ts +3 -2
  14. package/dist/module/db/IndexedDBProvider.d.ts.map +1 -0
  15. package/dist/module/db/SqlProvider.d.ts +7 -8
  16. package/dist/module/db/SqlProvider.d.ts.map +1 -0
  17. package/dist/module/db/SqlProvider.js +10 -8
  18. package/dist/module/db/SqlProvider.js.map +1 -1
  19. package/dist/module/db/StorageProvider.d.ts +2 -1
  20. package/dist/module/db/StorageProvider.d.ts.map +1 -0
  21. package/dist/module/db/getStorageProvider.d.ts +3 -0
  22. package/dist/module/db/getStorageProvider.d.ts.map +1 -0
  23. package/dist/module/db/getStorageProvider.js +19 -0
  24. package/dist/module/db/getStorageProvider.js.map +1 -0
  25. package/dist/module/db/index.d.ts +4 -3
  26. package/dist/module/db/index.d.ts.map +1 -0
  27. package/dist/module/db/index.js +2 -2
  28. package/dist/module/db/index.js.map +1 -1
  29. package/dist/module/db/interface.d.ts +1 -0
  30. package/dist/module/db/interface.d.ts.map +1 -0
  31. package/dist/module/db/util.d.ts +2 -3
  32. package/dist/module/db/util.d.ts.map +1 -0
  33. package/dist/module/db/util.js +0 -17
  34. package/dist/module/db/util.js.map +1 -1
  35. package/dist/module/enum.d.ts +1 -0
  36. package/dist/module/enum.d.ts.map +1 -0
  37. package/dist/module/history/electrumTransformer.d.ts +3 -2
  38. package/dist/module/history/electrumTransformer.d.ts.map +1 -0
  39. package/dist/module/history/electrumTransformer.js +16 -14
  40. package/dist/module/history/electrumTransformer.js.map +1 -1
  41. package/dist/module/history/interface.d.ts +2 -1
  42. package/dist/module/history/interface.d.ts.map +1 -0
  43. package/dist/module/index.d.ts +26 -21
  44. package/dist/module/index.d.ts.map +1 -0
  45. package/dist/module/index.js +25 -17
  46. package/dist/module/index.js.map +1 -1
  47. package/dist/module/interface.d.ts +14 -0
  48. package/dist/module/interface.d.ts.map +1 -0
  49. package/dist/module/interface.js +5 -0
  50. package/dist/module/interface.js.map +1 -1
  51. package/dist/module/message/index.d.ts +3 -2
  52. package/dist/module/message/index.d.ts.map +1 -0
  53. package/dist/module/message/index.js +2 -2
  54. package/dist/module/message/index.js.map +1 -1
  55. package/dist/module/message/interface.d.ts +1 -0
  56. package/dist/module/message/interface.d.ts.map +1 -0
  57. package/dist/module/message/signed.d.ts +2 -1
  58. package/dist/module/message/signed.d.ts.map +1 -0
  59. package/dist/module/message/signed.js +10 -4
  60. package/dist/module/message/signed.js.map +1 -1
  61. package/dist/module/mine/index.d.ts +2 -1
  62. package/dist/module/mine/index.d.ts.map +1 -0
  63. package/dist/module/mine/index.js +1 -1
  64. package/dist/module/mine/index.js.map +1 -1
  65. package/dist/module/mine/mine.d.ts +1 -0
  66. package/dist/module/mine/mine.d.ts.map +1 -0
  67. package/dist/module/mine/mine.js +3 -3
  68. package/dist/module/mine/mine.js.map +1 -1
  69. package/dist/module/network/Connection.d.ts +3 -2
  70. package/dist/module/network/Connection.d.ts.map +1 -0
  71. package/dist/module/network/Connection.js +3 -3
  72. package/dist/module/network/Connection.js.map +1 -1
  73. package/dist/module/network/ElectrumNetworkProvider.d.ts +8 -5
  74. package/dist/module/network/ElectrumNetworkProvider.d.ts.map +1 -0
  75. package/dist/module/network/ElectrumNetworkProvider.js +59 -13
  76. package/dist/module/network/ElectrumNetworkProvider.js.map +1 -1
  77. package/dist/module/network/NetworkProvider.d.ts +2 -1
  78. package/dist/module/network/NetworkProvider.d.ts.map +1 -0
  79. package/dist/module/network/configuration.d.ts +8 -10
  80. package/dist/module/network/configuration.d.ts.map +1 -0
  81. package/dist/module/network/configuration.js +29 -17
  82. package/dist/module/network/configuration.js.map +1 -1
  83. package/dist/module/network/constant.d.ts +1 -0
  84. package/dist/module/network/constant.d.ts.map +1 -0
  85. package/dist/module/network/constant.js +8 -4
  86. package/dist/module/network/constant.js.map +1 -1
  87. package/dist/module/network/default.d.ts +4 -3
  88. package/dist/module/network/default.d.ts.map +1 -0
  89. package/dist/module/network/default.js +7 -7
  90. package/dist/module/network/default.js.map +1 -1
  91. package/dist/module/network/getRelayFeeCache.d.ts +2 -1
  92. package/dist/module/network/getRelayFeeCache.d.ts.map +1 -0
  93. package/dist/module/network/getRelayFeeCache.js +2 -2
  94. package/dist/module/network/getRelayFeeCache.js.map +1 -1
  95. package/dist/module/network/index.d.ts +3 -2
  96. package/dist/module/network/index.d.ts.map +1 -0
  97. package/dist/module/network/index.js +2 -2
  98. package/dist/module/network/index.js.map +1 -1
  99. package/dist/module/network/interface.d.ts +1 -0
  100. package/dist/module/network/interface.d.ts.map +1 -0
  101. package/dist/module/network/util.d.ts +2 -1
  102. package/dist/module/network/util.d.ts.map +1 -0
  103. package/dist/module/qr/Qr.d.ts +2 -1
  104. package/dist/module/qr/Qr.d.ts.map +1 -0
  105. package/dist/module/qr/Qr.js +2 -2
  106. package/dist/module/qr/Qr.js.map +1 -1
  107. package/dist/module/qr/interface.d.ts +1 -0
  108. package/dist/module/qr/interface.d.ts.map +1 -0
  109. package/dist/module/rate/ExchangeRate.d.ts +1 -0
  110. package/dist/module/rate/ExchangeRate.d.ts.map +1 -0
  111. package/dist/module/rate/ExchangeRate.js +5 -5
  112. package/dist/module/rate/ExchangeRate.js.map +1 -1
  113. package/dist/module/slp/GsppProvider.d.ts +4 -3
  114. package/dist/module/slp/GsppProvider.d.ts.map +1 -0
  115. package/dist/module/slp/GsppProvider.js +7 -7
  116. package/dist/module/slp/GsppProvider.js.map +1 -1
  117. package/dist/module/slp/SlpDbProvider.d.ts +4 -3
  118. package/dist/module/slp/SlpDbProvider.d.ts.map +1 -0
  119. package/dist/module/slp/SlpDbProvider.js +8 -8
  120. package/dist/module/slp/SlpDbProvider.js.map +1 -1
  121. package/dist/module/slp/SlpDbTemplates.d.ts +1 -0
  122. package/dist/module/slp/SlpDbTemplates.d.ts.map +1 -0
  123. package/dist/module/slp/SlpLibAuth.d.ts +7 -14
  124. package/dist/module/slp/SlpLibAuth.d.ts.map +1 -0
  125. package/dist/module/slp/SlpLibAuth.js +48 -39
  126. package/dist/module/slp/SlpLibAuth.js.map +1 -1
  127. package/dist/module/slp/SlpProvider.d.ts +2 -1
  128. package/dist/module/slp/SlpProvider.d.ts.map +1 -0
  129. package/dist/module/slp/SlpProvider.js.map +1 -1
  130. package/dist/module/slp/index.d.ts +5 -4
  131. package/dist/module/slp/index.d.ts.map +1 -0
  132. package/dist/module/slp/index.js +3 -3
  133. package/dist/module/slp/index.js.map +1 -1
  134. package/dist/module/slp/interface.d.ts +2 -1
  135. package/dist/module/slp/interface.d.ts.map +1 -0
  136. package/dist/module/test/axios.d.ts +3 -0
  137. package/dist/module/test/axios.d.ts.map +1 -0
  138. package/dist/module/test/axios.js +35 -0
  139. package/dist/module/test/axios.js.map +1 -0
  140. package/dist/module/test/expect.d.ts +6 -1
  141. package/dist/module/test/expect.d.ts.map +1 -0
  142. package/dist/module/test/expect.js +22 -1
  143. package/dist/module/test/expect.js.map +1 -1
  144. package/dist/module/transaction/Wif.d.ts +19 -16
  145. package/dist/module/transaction/Wif.d.ts.map +1 -0
  146. package/dist/module/transaction/Wif.js +152 -55
  147. package/dist/module/transaction/Wif.js.map +1 -1
  148. package/dist/module/transaction/allocateFee.d.ts +5 -4
  149. package/dist/module/transaction/allocateFee.d.ts.map +1 -0
  150. package/dist/module/transaction/allocateFee.js +11 -8
  151. package/dist/module/transaction/allocateFee.js.map +1 -1
  152. package/dist/module/util/amountInSatoshi.d.ts +1 -0
  153. package/dist/module/util/amountInSatoshi.d.ts.map +1 -0
  154. package/dist/module/util/amountInSatoshi.js +4 -4
  155. package/dist/module/util/amountInSatoshi.js.map +1 -1
  156. package/dist/module/util/asSendRequestObject.d.ts +3 -2
  157. package/dist/module/util/asSendRequestObject.d.ts.map +1 -0
  158. package/dist/module/util/asSendRequestObject.js +6 -3
  159. package/dist/module/util/asSendRequestObject.js.map +1 -1
  160. package/dist/module/util/balanceObjectFromSatoshi.d.ts +1 -0
  161. package/dist/module/util/balanceObjectFromSatoshi.d.ts.map +1 -0
  162. package/dist/module/util/balanceObjectFromSatoshi.js +5 -5
  163. package/dist/module/util/balanceObjectFromSatoshi.js.map +1 -1
  164. package/dist/module/util/base64.d.ts +2 -1
  165. package/dist/module/util/base64.d.ts.map +1 -0
  166. package/dist/module/util/base64.js +5 -25
  167. package/dist/module/util/base64.js.map +1 -1
  168. package/dist/module/util/bchaddr.d.ts +1 -0
  169. package/dist/module/util/bchaddr.d.ts.map +1 -0
  170. package/dist/module/util/browserNotSupported.d.ts +1 -0
  171. package/dist/module/util/browserNotSupported.d.ts.map +1 -0
  172. package/dist/module/util/browserNotSupported.js +1 -1
  173. package/dist/module/util/browserNotSupported.js.map +1 -1
  174. package/dist/module/util/checkForEmptySeed.d.ts +1 -0
  175. package/dist/module/util/checkForEmptySeed.d.ts.map +1 -0
  176. package/dist/module/util/checkWifNetwork.d.ts +2 -1
  177. package/dist/module/util/checkWifNetwork.d.ts.map +1 -0
  178. package/dist/module/util/checkWifNetwork.js +1 -1
  179. package/dist/module/util/checkWifNetwork.js.map +1 -1
  180. package/dist/module/util/convert.d.ts +1 -0
  181. package/dist/module/util/convert.d.ts.map +1 -0
  182. package/dist/module/util/convert.js +2 -2
  183. package/dist/module/util/convert.js.map +1 -1
  184. package/dist/module/util/delay.d.ts +1 -0
  185. package/dist/module/util/delay.d.ts.map +1 -0
  186. package/dist/module/util/deriveCashaddr.d.ts +6 -1
  187. package/dist/module/util/deriveCashaddr.d.ts.map +1 -0
  188. package/dist/module/util/deriveCashaddr.js +85 -6
  189. package/dist/module/util/deriveCashaddr.js.map +1 -1
  190. package/dist/module/util/deriveLockscript.d.ts +1 -0
  191. package/dist/module/util/deriveLockscript.d.ts.map +1 -0
  192. package/dist/module/util/deriveNetwork.d.ts +1 -0
  193. package/dist/module/util/deriveNetwork.d.ts.map +1 -0
  194. package/dist/module/util/deriveNetwork.js +2 -2
  195. package/dist/module/util/deriveNetwork.js.map +1 -1
  196. package/dist/module/util/derivePublicKeyHash.d.ts +3 -1
  197. package/dist/module/util/derivePublicKeyHash.d.ts.map +1 -0
  198. package/dist/module/util/derivePublicKeyHash.js +1 -1
  199. package/dist/module/util/derivePublicKeyHash.js.map +1 -1
  200. package/dist/module/util/eventsource.d.ts +1 -0
  201. package/dist/module/util/eventsource.d.ts.map +1 -0
  202. package/dist/module/util/eventsource.js +3 -2
  203. package/dist/module/util/eventsource.js.map +1 -1
  204. package/dist/module/util/floor.d.ts +1 -0
  205. package/dist/module/util/floor.d.ts.map +1 -0
  206. package/dist/module/util/getAddrsByXpubKey.d.ts +8 -8
  207. package/dist/module/util/getAddrsByXpubKey.d.ts.map +1 -0
  208. package/dist/module/util/getAddrsByXpubKey.js +17 -21
  209. package/dist/module/util/getAddrsByXpubKey.js.map +1 -1
  210. package/dist/module/util/getRuntimePlatform.d.ts +1 -0
  211. package/dist/module/util/getRuntimePlatform.d.ts.map +1 -0
  212. package/dist/module/util/getUsdRate.d.ts +1 -0
  213. package/dist/module/util/getUsdRate.d.ts.map +1 -0
  214. package/dist/module/util/getUsdRate.js +1 -1
  215. package/dist/module/util/getUsdRate.js.map +1 -1
  216. package/dist/module/util/getXPubKey.d.ts +2 -1
  217. package/dist/module/util/getXPubKey.d.ts.map +1 -0
  218. package/dist/module/util/getXPubKey.js +6 -7
  219. package/dist/module/util/getXPubKey.js.map +1 -1
  220. package/dist/module/util/hash160.d.ts +2 -1
  221. package/dist/module/util/hash160.d.ts.map +1 -0
  222. package/dist/module/util/hash160.js +2 -4
  223. package/dist/module/util/hash160.js.map +1 -1
  224. package/dist/module/util/index.d.ts +21 -20
  225. package/dist/module/util/index.d.ts.map +1 -0
  226. package/dist/module/util/index.js +20 -20
  227. package/dist/module/util/index.js.map +1 -1
  228. package/dist/module/util/randomBytes.d.ts +3 -1
  229. package/dist/module/util/randomBytes.d.ts.map +1 -0
  230. package/dist/module/util/randomBytes.js +2 -3
  231. package/dist/module/util/randomBytes.js.map +1 -1
  232. package/dist/module/util/randomInt.d.ts +1 -0
  233. package/dist/module/util/randomInt.d.ts.map +1 -0
  234. package/dist/module/util/randomValues.d.ts +1 -0
  235. package/dist/module/util/randomValues.d.ts.map +1 -0
  236. package/dist/module/util/randomValues.js +7 -7
  237. package/dist/module/util/randomValues.js.map +1 -1
  238. package/dist/module/util/sanitizeAddress.d.ts +1 -0
  239. package/dist/module/util/sanitizeAddress.d.ts.map +1 -0
  240. package/dist/module/util/sanitizeAddress.js +1 -1
  241. package/dist/module/util/sanitizeAddress.js.map +1 -1
  242. package/dist/module/util/sanitizeUnit.d.ts +2 -1
  243. package/dist/module/util/sanitizeUnit.d.ts.map +1 -0
  244. package/dist/module/util/satoshiToAmount.d.ts +1 -0
  245. package/dist/module/util/satoshiToAmount.d.ts.map +1 -0
  246. package/dist/module/util/satoshiToAmount.js +4 -4
  247. package/dist/module/util/satoshiToAmount.js.map +1 -1
  248. package/dist/module/util/sumSendRequestAmounts.d.ts +3 -2
  249. package/dist/module/util/sumSendRequestAmounts.d.ts.map +1 -0
  250. package/dist/module/util/sumSendRequestAmounts.js +5 -2
  251. package/dist/module/util/sumSendRequestAmounts.js.map +1 -1
  252. package/dist/module/util/sumUtxoValue.d.ts +4 -2
  253. package/dist/module/util/sumUtxoValue.d.ts.map +1 -0
  254. package/dist/module/util/sumUtxoValue.js +17 -3
  255. package/dist/module/util/sumUtxoValue.js.map +1 -1
  256. package/dist/module/util/transaction.d.ts +2 -0
  257. package/dist/module/util/transaction.d.ts.map +1 -0
  258. package/dist/module/util/transaction.js +7 -0
  259. package/dist/module/util/transaction.js.map +1 -0
  260. package/dist/module/wallet/Base.d.ts +8 -7
  261. package/dist/module/wallet/Base.d.ts.map +1 -0
  262. package/dist/module/wallet/Base.js +7 -7
  263. package/dist/module/wallet/Base.js.map +1 -1
  264. package/dist/module/wallet/Bcmr.d.ts +88 -0
  265. package/dist/module/wallet/Bcmr.d.ts.map +1 -0
  266. package/dist/module/wallet/Bcmr.js +281 -0
  267. package/dist/module/wallet/Bcmr.js.map +1 -0
  268. package/dist/module/wallet/Slp.d.ts +6 -5
  269. package/dist/module/wallet/Slp.d.ts.map +1 -0
  270. package/dist/module/wallet/Slp.js +15 -15
  271. package/dist/module/wallet/Slp.js.map +1 -1
  272. package/dist/module/wallet/Util.d.ts +3 -2
  273. package/dist/module/wallet/Util.d.ts.map +1 -0
  274. package/dist/module/wallet/Util.js +9 -14
  275. package/dist/module/wallet/Util.js.map +1 -1
  276. package/dist/module/wallet/Wif.d.ts +124 -20
  277. package/dist/module/wallet/Wif.d.ts.map +1 -0
  278. package/dist/module/wallet/Wif.js +406 -74
  279. package/dist/module/wallet/Wif.js.map +1 -1
  280. package/dist/module/wallet/bcmr-v1.schema.d.ts +623 -0
  281. package/dist/module/wallet/bcmr-v1.schema.d.ts.map +1 -0
  282. package/dist/module/wallet/bcmr-v1.schema.js +2 -0
  283. package/dist/module/wallet/bcmr-v1.schema.js.map +1 -0
  284. package/dist/module/wallet/createWallet.d.ts +3 -2
  285. package/dist/module/wallet/createWallet.d.ts.map +1 -0
  286. package/dist/module/wallet/createWallet.js +3 -3
  287. package/dist/module/wallet/createWallet.js.map +1 -1
  288. package/dist/module/wallet/enum.d.ts +1 -0
  289. package/dist/module/wallet/enum.d.ts.map +1 -0
  290. package/dist/module/wallet/interface.d.ts +10 -6
  291. package/dist/module/wallet/interface.d.ts.map +1 -0
  292. package/dist/module/wallet/model.d.ts +81 -5
  293. package/dist/module/wallet/model.d.ts.map +1 -0
  294. package/dist/module/wallet/model.js +102 -17
  295. package/dist/module/wallet/model.js.map +1 -1
  296. package/dist/module/webhook/Webhook.d.ts +3 -2
  297. package/dist/module/webhook/Webhook.d.ts.map +1 -0
  298. package/dist/module/webhook/Webhook.js +4 -1
  299. package/dist/module/webhook/Webhook.js.map +1 -1
  300. package/dist/module/webhook/WebhookBch.d.ts +4 -3
  301. package/dist/module/webhook/WebhookBch.d.ts.map +1 -0
  302. package/dist/module/webhook/WebhookBch.js +4 -4
  303. package/dist/module/webhook/WebhookBch.js.map +1 -1
  304. package/dist/module/webhook/WebhookSlp.d.ts +5 -4
  305. package/dist/module/webhook/WebhookSlp.d.ts.map +1 -0
  306. package/dist/module/webhook/WebhookSlp.js +4 -4
  307. package/dist/module/webhook/WebhookSlp.js.map +1 -1
  308. package/dist/module/webhook/WebhookWorker.d.ts +3 -2
  309. package/dist/module/webhook/WebhookWorker.d.ts.map +1 -0
  310. package/dist/module/webhook/WebhookWorker.js +1 -1
  311. package/dist/module/webhook/WebhookWorker.js.map +1 -1
  312. package/dist/module/webhook/index.d.ts +6 -5
  313. package/dist/module/webhook/index.d.ts.map +1 -0
  314. package/dist/module/webhook/index.js +5 -5
  315. package/dist/module/webhook/index.js.map +1 -1
  316. package/dist/module/webhook/interface.d.ts +1 -0
  317. package/dist/module/webhook/interface.d.ts.map +1 -0
  318. package/dist/tsconfig.tsbuildinfo +1 -1
  319. package/package.json +9 -9
  320. package/polyfill/{bip39.browser.js → bip39.browser.cjs} +1 -0
  321. package/polyfill/{util.js → util.cjs} +0 -0
  322. package/src/Wallet.test.headless.js +6 -6
  323. package/src/Wallet.test.ts +69 -1
  324. package/src/cli.ts +3 -3
  325. package/src/db/ExchangeRateProvider.ts +1 -1
  326. package/src/db/IndexedDBProvider.test.ts +0 -1
  327. package/src/db/IndexedDBProvider.ts +2 -2
  328. package/src/db/SqlProvider.ts +14 -12
  329. package/src/db/StorageProvider.ts +1 -1
  330. package/src/db/getStorageProvider.ts +20 -0
  331. package/src/db/index.ts +3 -3
  332. package/src/db/util.ts +1 -20
  333. package/src/history/electrumTransformer.test.ts +1 -2
  334. package/src/history/electrumTransformer.ts +19 -18
  335. package/src/history/interface.ts +1 -1
  336. package/src/index.ts +29 -21
  337. package/src/interface.ts +15 -0
  338. package/src/message/index.ts +2 -2
  339. package/src/message/signed.test.ts +4 -4
  340. package/src/message/signed.ts +23 -6
  341. package/src/mine/index.ts +1 -1
  342. package/src/mine/mine.ts +3 -3
  343. package/src/network/Connection.ts +5 -5
  344. package/src/network/ElectrumNetworkProvider.ts +85 -20
  345. package/src/network/NetworkProvider.ts +1 -1
  346. package/src/network/configuration.test.ts +33 -8
  347. package/src/network/configuration.ts +33 -18
  348. package/src/network/constant.ts +9 -4
  349. package/src/network/default.ts +13 -10
  350. package/src/network/getRelayFeeCache.ts +3 -3
  351. package/src/network/index.ts +6 -2
  352. package/src/network/util.ts +1 -1
  353. package/src/qr/Qr.ts +3 -3
  354. package/src/rate/ExchangeRate.ts +14 -15
  355. package/src/slp/GsppProvider.test.ts +2 -2
  356. package/src/slp/GsppProvider.ts +11 -8
  357. package/src/slp/SlpDbProvider.test.ts +1 -1
  358. package/src/slp/SlpDbProvider.ts +12 -9
  359. package/src/slp/SlpLibAuth.test.ts +1 -1
  360. package/src/slp/SlpLibAuth.ts +52 -42
  361. package/src/slp/SlpProvider.ts +6 -1
  362. package/src/slp/index.ts +4 -4
  363. package/src/slp/interface.ts +1 -1
  364. package/src/test/axios.ts +47 -0
  365. package/src/test/expect.ts +27 -2
  366. package/src/transaction/Wif.ts +203 -77
  367. package/src/transaction/allocateFee.ts +32 -14
  368. package/src/util/amountInSatoshi.ts +4 -4
  369. package/src/util/asSendRequestObject.ts +42 -30
  370. package/src/util/balanceObjectFromSatoshi.ts +5 -5
  371. package/src/util/base64.ts +5 -24
  372. package/src/util/browserNotSupported.ts +1 -1
  373. package/src/util/checkWifNetwork.ts +1 -1
  374. package/src/util/convert.ts +2 -2
  375. package/src/util/deriveCashaddr.test.ts +43 -0
  376. package/src/util/deriveCashaddr.ts +123 -7
  377. package/src/util/deriveNetwork.ts +2 -2
  378. package/src/util/derivePublicKeyHash.test.ts +3 -0
  379. package/src/util/derivePublicKeyHash.ts +18 -5
  380. package/src/util/eventsource.ts +4 -2
  381. package/src/util/getAddrsByXpubKey.test.ts +5 -5
  382. package/src/util/getAddrsByXpubKey.ts +23 -28
  383. package/src/util/getUsdRate.ts +1 -1
  384. package/src/util/getXPubKey.ts +5 -7
  385. package/src/util/hash160.test.ts +2 -2
  386. package/src/util/hash160.ts +2 -4
  387. package/src/util/index.ts +26 -20
  388. package/src/util/randomBytes.ts +2 -3
  389. package/src/util/randomValues.ts +8 -8
  390. package/src/util/sanitizeAddress.ts +1 -1
  391. package/src/util/sanitizeUnit.ts +1 -1
  392. package/src/util/satoshiToAmount.ts +4 -4
  393. package/src/util/sumSendRequestAmounts.ts +10 -4
  394. package/src/util/sumUtxoValue.ts +19 -7
  395. package/src/util/transaction.ts +10 -0
  396. package/src/wallet/Base.ts +11 -11
  397. package/src/wallet/Bcmr.test.headless.js +353 -0
  398. package/src/wallet/Bcmr.test.ts +610 -0
  399. package/src/wallet/Bcmr.ts +390 -0
  400. package/src/wallet/Cashtokens.test.headless.js +467 -0
  401. package/src/wallet/Cashtokens.test.ts +475 -0
  402. package/src/wallet/Slp.test.headless.js +6 -8
  403. package/src/wallet/Slp.test.ts +2 -2
  404. package/src/wallet/Slp.ts +26 -22
  405. package/src/wallet/Util.ts +9 -20
  406. package/src/wallet/Wif.test.ts +20 -21
  407. package/src/wallet/Wif.ts +534 -99
  408. package/src/wallet/bcmr-v1.schema.ts +639 -0
  409. package/src/wallet/createWallet.test.ts +1 -0
  410. package/src/wallet/createWallet.ts +4 -4
  411. package/src/wallet/interface.ts +9 -6
  412. package/src/wallet/model.ts +190 -19
  413. package/src/webhook/Webhook.ts +7 -3
  414. package/src/webhook/WebhookBch.ts +7 -7
  415. package/src/webhook/WebhookSlp.test.ts +2 -2
  416. package/src/webhook/WebhookSlp.ts +6 -6
  417. package/src/webhook/WebhookWorker.ts +2 -2
  418. package/src/webhook/index.ts +5 -5
  419. package/tsconfig.browser.json +0 -3
  420. package/tsconfig.json +17 -5
  421. package/{webpack.config.js → webpack.config.cjs} +46 -14
  422. package/dist/main/chain.d.ts +0 -3
  423. package/dist/main/chain.js +0 -7
  424. package/dist/main/chain.js.map +0 -1
  425. package/dist/main/cli.d.ts +0 -1
  426. package/dist/main/cli.js +0 -35
  427. package/dist/main/cli.js.map +0 -1
  428. package/dist/main/constant.d.ts +0 -5
  429. package/dist/main/constant.js +0 -27
  430. package/dist/main/constant.js.map +0 -1
  431. package/dist/main/db/ExchangeRateProvider.d.ts +0 -11
  432. package/dist/main/db/ExchangeRateProvider.js +0 -47
  433. package/dist/main/db/ExchangeRateProvider.js.map +0 -1
  434. package/dist/main/db/IndexedDBProvider.d.ts +0 -15
  435. package/dist/main/db/IndexedDBProvider.js +0 -86
  436. package/dist/main/db/IndexedDBProvider.js.map +0 -1
  437. package/dist/main/db/SqlProvider.d.ts +0 -41
  438. package/dist/main/db/SqlProvider.js +0 -217
  439. package/dist/main/db/SqlProvider.js.map +0 -1
  440. package/dist/main/db/StorageProvider.d.ts +0 -52
  441. package/dist/main/db/StorageProvider.js +0 -3
  442. package/dist/main/db/StorageProvider.js.map +0 -1
  443. package/dist/main/db/index.d.ts +0 -3
  444. package/dist/main/db/index.js +0 -11
  445. package/dist/main/db/index.js.map +0 -1
  446. package/dist/main/db/interface.d.ts +0 -22
  447. package/dist/main/db/interface.js +0 -3
  448. package/dist/main/db/interface.js.map +0 -1
  449. package/dist/main/db/util.d.ts +0 -5
  450. package/dist/main/db/util.js +0 -53
  451. package/dist/main/db/util.js.map +0 -1
  452. package/dist/main/enum.d.ts +0 -33
  453. package/dist/main/enum.js +0 -39
  454. package/dist/main/enum.js.map +0 -1
  455. package/dist/main/history/electrumTransformer.d.ts +0 -4
  456. package/dist/main/history/electrumTransformer.js +0 -214
  457. package/dist/main/history/electrumTransformer.js.map +0 -1
  458. package/dist/main/history/interface.d.ts +0 -16
  459. package/dist/main/history/interface.js +0 -3
  460. package/dist/main/history/interface.js.map +0 -1
  461. package/dist/main/index.d.ts +0 -24
  462. package/dist/main/index.js +0 -62
  463. package/dist/main/index.js.map +0 -1
  464. package/dist/main/interface.d.ts +0 -31
  465. package/dist/main/interface.js +0 -12
  466. package/dist/main/interface.js.map +0 -1
  467. package/dist/main/message/index.d.ts +0 -2
  468. package/dist/main/message/index.js +0 -15
  469. package/dist/main/message/index.js.map +0 -1
  470. package/dist/main/message/interface.d.ts +0 -29
  471. package/dist/main/message/interface.js +0 -6
  472. package/dist/main/message/interface.js.map +0 -1
  473. package/dist/main/message/signed.d.ts +0 -33
  474. package/dist/main/message/signed.js +0 -141
  475. package/dist/main/message/signed.js.map +0 -1
  476. package/dist/main/mine/index.d.ts +0 -1
  477. package/dist/main/mine/index.js +0 -14
  478. package/dist/main/mine/index.js.map +0 -1
  479. package/dist/main/mine/mine.d.ts +0 -13
  480. package/dist/main/mine/mine.js +0 -37
  481. package/dist/main/mine/mine.js.map +0 -1
  482. package/dist/main/network/Connection.d.ts +0 -14
  483. package/dist/main/network/Connection.js +0 -71
  484. package/dist/main/network/Connection.js.map +0 -1
  485. package/dist/main/network/ElectrumNetworkProvider.d.ts +0 -49
  486. package/dist/main/network/ElectrumNetworkProvider.js +0 -338
  487. package/dist/main/network/ElectrumNetworkProvider.js.map +0 -1
  488. package/dist/main/network/NetworkProvider.d.ts +0 -107
  489. package/dist/main/network/NetworkProvider.js +0 -3
  490. package/dist/main/network/NetworkProvider.js.map +0 -1
  491. package/dist/main/network/configuration.d.ts +0 -12
  492. package/dist/main/network/configuration.js +0 -79
  493. package/dist/main/network/configuration.js.map +0 -1
  494. package/dist/main/network/constant.d.ts +0 -35
  495. package/dist/main/network/constant.js +0 -55
  496. package/dist/main/network/constant.js.map +0 -1
  497. package/dist/main/network/default.d.ts +0 -7
  498. package/dist/main/network/default.js +0 -107
  499. package/dist/main/network/default.js.map +0 -1
  500. package/dist/main/network/getRelayFeeCache.d.ts +0 -2
  501. package/dist/main/network/getRelayFeeCache.js +0 -27
  502. package/dist/main/network/getRelayFeeCache.js.map +0 -1
  503. package/dist/main/network/index.d.ts +0 -2
  504. package/dist/main/network/index.js +0 -10
  505. package/dist/main/network/index.js.map +0 -1
  506. package/dist/main/network/interface.d.ts +0 -60
  507. package/dist/main/network/interface.js +0 -3
  508. package/dist/main/network/interface.js.map +0 -1
  509. package/dist/main/network/util.d.ts +0 -2
  510. package/dist/main/network/util.js +0 -32
  511. package/dist/main/network/util.js.map +0 -1
  512. package/dist/main/qr/Qr.d.ts +0 -8
  513. package/dist/main/qr/Qr.js +0 -26
  514. package/dist/main/qr/Qr.js.map +0 -1
  515. package/dist/main/qr/interface.d.ts +0 -5
  516. package/dist/main/qr/interface.js +0 -3
  517. package/dist/main/qr/interface.js.map +0 -1
  518. package/dist/main/rate/ExchangeRate.d.ts +0 -19
  519. package/dist/main/rate/ExchangeRate.js +0 -147
  520. package/dist/main/rate/ExchangeRate.js.map +0 -1
  521. package/dist/main/slp/GsppProvider.d.ts +0 -54
  522. package/dist/main/slp/GsppProvider.js +0 -214
  523. package/dist/main/slp/GsppProvider.js.map +0 -1
  524. package/dist/main/slp/SlpDbProvider.d.ts +0 -51
  525. package/dist/main/slp/SlpDbProvider.js +0 -182
  526. package/dist/main/slp/SlpDbProvider.js.map +0 -1
  527. package/dist/main/slp/SlpDbTemplates.d.ts +0 -312
  528. package/dist/main/slp/SlpDbTemplates.js +0 -387
  529. package/dist/main/slp/SlpDbTemplates.js.map +0 -1
  530. package/dist/main/slp/SlpLibAuth.d.ts +0 -217
  531. package/dist/main/slp/SlpLibAuth.js +0 -452
  532. package/dist/main/slp/SlpLibAuth.js.map +0 -1
  533. package/dist/main/slp/SlpProvider.d.ts +0 -23
  534. package/dist/main/slp/SlpProvider.js +0 -39
  535. package/dist/main/slp/SlpProvider.js.map +0 -1
  536. package/dist/main/slp/index.d.ts +0 -5
  537. package/dist/main/slp/index.js +0 -24
  538. package/dist/main/slp/index.js.map +0 -1
  539. package/dist/main/slp/interface.d.ts +0 -113
  540. package/dist/main/slp/interface.js +0 -10
  541. package/dist/main/slp/interface.js.map +0 -1
  542. package/dist/main/test/expect.d.ts +0 -7
  543. package/dist/main/test/expect.js +0 -31
  544. package/dist/main/test/expect.js.map +0 -1
  545. package/dist/main/transaction/Wif.d.ts +0 -42
  546. package/dist/main/transaction/Wif.js +0 -214
  547. package/dist/main/transaction/Wif.js.map +0 -1
  548. package/dist/main/transaction/allocateFee.d.ts +0 -7
  549. package/dist/main/transaction/allocateFee.js +0 -118
  550. package/dist/main/transaction/allocateFee.js.map +0 -1
  551. package/dist/main/util/amountInSatoshi.d.ts +0 -9
  552. package/dist/main/util/amountInSatoshi.js +0 -38
  553. package/dist/main/util/amountInSatoshi.js.map +0 -1
  554. package/dist/main/util/asSendRequestObject.d.ts +0 -2
  555. package/dist/main/util/asSendRequestObject.js +0 -57
  556. package/dist/main/util/asSendRequestObject.js.map +0 -1
  557. package/dist/main/util/balanceObjectFromSatoshi.d.ts +0 -8
  558. package/dist/main/util/balanceObjectFromSatoshi.js +0 -62
  559. package/dist/main/util/balanceObjectFromSatoshi.js.map +0 -1
  560. package/dist/main/util/base64.d.ts +0 -2
  561. package/dist/main/util/base64.js +0 -36
  562. package/dist/main/util/base64.js.map +0 -1
  563. package/dist/main/util/bchaddr.d.ts +0 -1
  564. package/dist/main/util/bchaddr.js +0 -24
  565. package/dist/main/util/bchaddr.js.map +0 -1
  566. package/dist/main/util/browserNotSupported.d.ts +0 -1
  567. package/dist/main/util/browserNotSupported.js +0 -11
  568. package/dist/main/util/browserNotSupported.js.map +0 -1
  569. package/dist/main/util/checkForEmptySeed.d.ts +0 -2
  570. package/dist/main/util/checkForEmptySeed.js +0 -12
  571. package/dist/main/util/checkForEmptySeed.js.map +0 -1
  572. package/dist/main/util/checkWifNetwork.d.ts +0 -2
  573. package/dist/main/util/checkWifNetwork.js +0 -16
  574. package/dist/main/util/checkWifNetwork.js.map +0 -1
  575. package/dist/main/util/convert.d.ts +0 -15
  576. package/dist/main/util/convert.js +0 -24
  577. package/dist/main/util/convert.js.map +0 -1
  578. package/dist/main/util/delay.d.ts +0 -1
  579. package/dist/main/util/delay.js +0 -8
  580. package/dist/main/util/delay.js.map +0 -1
  581. package/dist/main/util/deriveCashaddr.d.ts +0 -2
  582. package/dist/main/util/deriveCashaddr.js +0 -13
  583. package/dist/main/util/deriveCashaddr.js.map +0 -1
  584. package/dist/main/util/deriveLockscript.d.ts +0 -8
  585. package/dist/main/util/deriveLockscript.js +0 -19
  586. package/dist/main/util/deriveLockscript.js.map +0 -1
  587. package/dist/main/util/deriveNetwork.d.ts +0 -1
  588. package/dist/main/util/deriveNetwork.js +0 -23
  589. package/dist/main/util/deriveNetwork.js.map +0 -1
  590. package/dist/main/util/derivePublicKeyHash.d.ts +0 -16
  591. package/dist/main/util/derivePublicKeyHash.js +0 -49
  592. package/dist/main/util/derivePublicKeyHash.js.map +0 -1
  593. package/dist/main/util/eventsource.d.ts +0 -2
  594. package/dist/main/util/eventsource.js +0 -12
  595. package/dist/main/util/eventsource.js.map +0 -1
  596. package/dist/main/util/floor.d.ts +0 -1
  597. package/dist/main/util/floor.js +0 -9
  598. package/dist/main/util/floor.js.map +0 -1
  599. package/dist/main/util/getAddrsByXpubKey.d.ts +0 -22
  600. package/dist/main/util/getAddrsByXpubKey.js +0 -79
  601. package/dist/main/util/getAddrsByXpubKey.js.map +0 -1
  602. package/dist/main/util/getRuntimePlatform.d.ts +0 -6
  603. package/dist/main/util/getRuntimePlatform.js +0 -34
  604. package/dist/main/util/getRuntimePlatform.js.map +0 -1
  605. package/dist/main/util/getUsdRate.d.ts +0 -1
  606. package/dist/main/util/getUsdRate.js +0 -9
  607. package/dist/main/util/getUsdRate.js.map +0 -1
  608. package/dist/main/util/getXPubKey.d.ts +0 -1
  609. package/dist/main/util/getXPubKey.js +0 -26
  610. package/dist/main/util/getXPubKey.js.map +0 -1
  611. package/dist/main/util/hash160.d.ts +0 -8
  612. package/dist/main/util/hash160.js +0 -18
  613. package/dist/main/util/hash160.js.map +0 -1
  614. package/dist/main/util/index.d.ts +0 -21
  615. package/dist/main/util/index.js +0 -72
  616. package/dist/main/util/index.js.map +0 -1
  617. package/dist/main/util/randomBytes.d.ts +0 -1
  618. package/dist/main/util/randomBytes.js +0 -18
  619. package/dist/main/util/randomBytes.js.map +0 -1
  620. package/dist/main/util/randomInt.d.ts +0 -1
  621. package/dist/main/util/randomInt.js +0 -9
  622. package/dist/main/util/randomInt.js.map +0 -1
  623. package/dist/main/util/randomValues.d.ts +0 -1
  624. package/dist/main/util/randomValues.js +0 -15
  625. package/dist/main/util/randomValues.js.map +0 -1
  626. package/dist/main/util/sanitizeAddress.d.ts +0 -1
  627. package/dist/main/util/sanitizeAddress.js +0 -15
  628. package/dist/main/util/sanitizeAddress.js.map +0 -1
  629. package/dist/main/util/sanitizeUnit.d.ts +0 -2
  630. package/dist/main/util/sanitizeUnit.js +0 -13
  631. package/dist/main/util/sanitizeUnit.js.map +0 -1
  632. package/dist/main/util/satoshiToAmount.d.ts +0 -9
  633. package/dist/main/util/satoshiToAmount.js +0 -41
  634. package/dist/main/util/satoshiToAmount.js.map +0 -1
  635. package/dist/main/util/sumSendRequestAmounts.d.ts +0 -2
  636. package/dist/main/util/sumSendRequestAmounts.js +0 -31
  637. package/dist/main/util/sumSendRequestAmounts.js.map +0 -1
  638. package/dist/main/util/sumUtxoValue.d.ts +0 -2
  639. package/dist/main/util/sumUtxoValue.js +0 -17
  640. package/dist/main/util/sumUtxoValue.js.map +0 -1
  641. package/dist/main/wallet/Base.d.ts +0 -202
  642. package/dist/main/wallet/Base.js +0 -438
  643. package/dist/main/wallet/Base.js.map +0 -1
  644. package/dist/main/wallet/Slp.d.ts +0 -430
  645. package/dist/main/wallet/Slp.js +0 -775
  646. package/dist/main/wallet/Slp.js.map +0 -1
  647. package/dist/main/wallet/Util.d.ts +0 -69
  648. package/dist/main/wallet/Util.js +0 -182
  649. package/dist/main/wallet/Util.js.map +0 -1
  650. package/dist/main/wallet/Wif.d.ts +0 -255
  651. package/dist/main/wallet/Wif.js +0 -1067
  652. package/dist/main/wallet/Wif.js.map +0 -1
  653. package/dist/main/wallet/createWallet.d.ts +0 -69
  654. package/dist/main/wallet/createWallet.js +0 -244
  655. package/dist/main/wallet/createWallet.js.map +0 -1
  656. package/dist/main/wallet/enum.d.ts +0 -16
  657. package/dist/main/wallet/enum.js +0 -22
  658. package/dist/main/wallet/enum.js.map +0 -1
  659. package/dist/main/wallet/interface.d.ts +0 -76
  660. package/dist/main/wallet/interface.js +0 -3
  661. package/dist/main/wallet/interface.js.map +0 -1
  662. package/dist/main/wallet/model.d.ts +0 -88
  663. package/dist/main/wallet/model.js +0 -129
  664. package/dist/main/wallet/model.js.map +0 -1
  665. package/dist/main/webhook/Webhook.d.ts +0 -40
  666. package/dist/main/webhook/Webhook.js +0 -82
  667. package/dist/main/webhook/Webhook.js.map +0 -1
  668. package/dist/main/webhook/WebhookBch.d.ts +0 -13
  669. package/dist/main/webhook/WebhookBch.js +0 -148
  670. package/dist/main/webhook/WebhookBch.js.map +0 -1
  671. package/dist/main/webhook/WebhookSlp.d.ts +0 -14
  672. package/dist/main/webhook/WebhookSlp.js +0 -107
  673. package/dist/main/webhook/WebhookSlp.js.map +0 -1
  674. package/dist/main/webhook/WebhookWorker.d.ts +0 -22
  675. package/dist/main/webhook/WebhookWorker.js +0 -100
  676. package/dist/main/webhook/WebhookWorker.js.map +0 -1
  677. package/dist/main/webhook/index.d.ts +0 -5
  678. package/dist/main/webhook/index.js +0 -23
  679. package/dist/main/webhook/index.js.map +0 -1
  680. package/dist/main/webhook/interface.d.ts +0 -8
  681. package/dist/main/webhook/interface.js +0 -3
  682. package/dist/main/webhook/interface.js.map +0 -1
  683. package/dist/mainnet-0.5.8.js +0 -2
  684. package/dist/mainnet-0.5.8.js.LICENSE.txt +0 -48
  685. package/dist/tsconfig.browser.tsbuildinfo +0 -1
  686. package/jest.config.js +0 -23
@@ -1,4 +1,4 @@
1
- import { WalletI } from "./interface";
1
+ import { WalletI } from "./interface.js";
2
2
 
3
3
  export default interface StorageProvider {
4
4
  /**
@@ -0,0 +1,20 @@
1
+ import { getRuntimePlatform } from "../util/getRuntimePlatform.js";
2
+ import IndexedDBProvider from "./IndexedDBProvider.js";
3
+ import SqlProvider from "./SqlProvider.js";
4
+ import StorageProvider from "./StorageProvider.js";
5
+ import { indexedDbIsAvailable } from "./util.js";
6
+
7
+ export function getStorageProvider(
8
+ dbName: string
9
+ ): StorageProvider | undefined {
10
+ if (getRuntimePlatform() !== "node" && indexedDbIsAvailable()) {
11
+ return new IndexedDBProvider(dbName);
12
+ } else {
13
+ if ("DATABASE_URL" in process.env) {
14
+ return new SqlProvider(dbName);
15
+ } else {
16
+ console.warn("DATABASE_URL was not configured, storage unavailable");
17
+ return;
18
+ }
19
+ }
20
+ }
package/src/db/index.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { default as IndexedDBProvider } from "./IndexedDBProvider";
2
- export { default as SqlProvider } from "./SqlProvider";
3
- export { default as StorageProvider } from "./StorageProvider";
1
+ export { default as IndexedDBProvider } from "./IndexedDBProvider.js";
2
+ export { default as SqlProvider } from "./SqlProvider.js";
3
+ export { default as StorageProvider } from "./StorageProvider.js";
package/src/db/util.ts CHANGED
@@ -1,23 +1,4 @@
1
- import { StorageProvider } from ".";
2
- import { getRuntimePlatform } from "../util/index";
3
- import { default as IndexedDBProvider } from "./IndexedDBProvider";
4
- import { default as SqlProvider } from "./SqlProvider";
5
- import { sslConfigI } from "./interface";
6
-
7
- export function getStorageProvider(
8
- dbName: string
9
- ): StorageProvider | undefined {
10
- if (getRuntimePlatform() !== "node" && indexedDbIsAvailable()) {
11
- return new IndexedDBProvider(dbName);
12
- } else {
13
- if ("DATABASE_URL" in process.env) {
14
- return new SqlProvider(dbName);
15
- } else {
16
- console.warn("DATABASE_URL was not configured, storage unavailable");
17
- return;
18
- }
19
- }
20
- }
1
+ import { sslConfigI } from "./interface.js";
21
2
 
22
3
  export function indexedDbIsAvailable() {
23
4
  return "indexedDB" in globalThis;
@@ -126,7 +126,6 @@ test("Should get a history with multi-party sends", async () => {
126
126
  expect(bobHistory.transactions[1].from).toBe(bob.getDepositAddress());
127
127
 
128
128
  expect(bobHistory.transactions[2].value).toBe(31000);
129
- expect(bobHistory.transactions[2].balance).toBe(31000);
130
129
  expect(bobHistory.transactions[2].fee).toBe(0);
131
130
  expect(bobHistory.transactions[2].from).toBe(alice.getDepositAddress());
132
131
  }
@@ -185,7 +184,7 @@ test("Should cut results with a longer history to given count", async () => {
185
184
  0,
186
185
  2
187
186
  );
188
- expect(bobHistory.transactions.length).toBe(2);
187
+ expect(bobHistory.transactions.length).toBe(4);
189
188
 
190
189
  expect(bobHistory.transactions[0].value).toBe(-2100);
191
190
  expect(bobHistory.transactions[0].to).toBe(alice.getDepositAddress());
@@ -3,18 +3,17 @@ import {
3
3
  cashAddressToLockingBytecode,
4
4
  decodeTransaction,
5
5
  hexToBin,
6
- binToBigIntUint64LE,
7
6
  Transaction,
8
7
  lockingBytecodeToCashAddress,
9
8
  Output,
10
9
  } from "@bitauth/libauth";
11
- import { UnitEnum } from "../enum";
12
- import NetworkProvider from "../network/NetworkProvider";
13
- import { derivePrefix } from "../util/derivePublicKeyHash";
14
- import { convert } from "../util/convert";
15
- import { bchParam } from "../chain";
16
- import { floor } from "../util/floor";
17
- import { TransactionHistoryI, TransactionHistoryItemI } from "./interface";
10
+ import { UnitEnum } from "../enum.js";
11
+ import NetworkProvider from "../network/NetworkProvider.js";
12
+ import { derivePrefix } from "../util/derivePublicKeyHash.js";
13
+ import { convert } from "../util/convert.js";
14
+ import { bchParam } from "../chain.js";
15
+ import { floor } from "../util/floor.js";
16
+ import { TransactionHistoryI, TransactionHistoryItemI } from "./interface.js";
18
17
 
19
18
  export async function getAddressHistory(
20
19
  cashaddr: string,
@@ -27,6 +26,11 @@ export async function getAddressHistory(
27
26
  // Get an array of raw transactions as hex
28
27
  let txnHashes = await provider.getHistory(cashaddr);
29
28
 
29
+ // Assume transaction hashes will be served in chronological order
30
+ // Slice count in from the end and count to the provided inputs
31
+ let len = txnHashes.length;
32
+ txnHashes = txnHashes.slice(len - start - count, len - start);
33
+
30
34
  // get the current balance in satoshis
31
35
  let currentBalance = await provider.getBalance(cashaddr);
32
36
 
@@ -47,7 +51,7 @@ export async function getAddressHistory(
47
51
  // flatten the array of responses
48
52
  let preprocessedTxns = Array.prototype.concat.apply([], items);
49
53
 
50
- // Revere cronological order.
54
+ // Reverse chronological order (again), so list appear as newest first.
51
55
  preprocessedTxns = preprocessedTxns.reverse();
52
56
 
53
57
  // Get the factor to apply the requested unit of measure
@@ -57,9 +61,6 @@ export async function getAddressHistory(
57
61
  // Apply the unit factor and
58
62
  let txns = applyBalance(preprocessedTxns, currentBalance, unit, factor);
59
63
 
60
- // Slice the start and count to the provided inputs
61
- txns = txns.slice(start, start + count);
62
-
63
64
  return {
64
65
  transactions: txns,
65
66
  };
@@ -144,7 +145,7 @@ async function getMatchingInputs(
144
145
  blockheight: height,
145
146
  txn: `${hash}`,
146
147
  txId: `${hash}:i:${idx}`,
147
- value: -Number(binToBigIntUint64LE(output.satoshis)),
148
+ value: -Number(output.valueSatoshis),
148
149
  fee: 0,
149
150
  });
150
151
  }
@@ -163,7 +164,7 @@ async function getMatchingInputs(
163
164
  blockheight: height,
164
165
  txn: `${hash}`,
165
166
  txId: `${hash}:i:${idx}`,
166
- value: -Number(binToBigIntUint64LE(output.satoshis)),
167
+ value: -Number(output.valueSatoshis),
167
168
  fee: fee,
168
169
  });
169
170
  txIds.push(`${hash}:i:${idx}`);
@@ -201,7 +202,7 @@ async function getMatchingInputs(
201
202
  blockheight: height,
202
203
  txn: `${hash}`,
203
204
  txId: `${hash}:o:${transaction.outputs.indexOf(output)}`,
204
- value: Number(binToBigIntUint64LE(output.satoshis)),
205
+ value: Number(output.valueSatoshis),
205
206
  });
206
207
  }
207
208
  } else {
@@ -218,7 +219,7 @@ async function getMatchingInputs(
218
219
  blockheight: height,
219
220
  txn: `${hash}`,
220
221
  txId: `${hash}:o:${transaction.outputs.indexOf(output)}`,
221
- value: Number(binToBigIntUint64LE(output.satoshis)),
222
+ value: Number(output.valueSatoshis),
222
223
  // incoming transactions pay no fee.
223
224
  fee: 0,
224
225
  });
@@ -254,12 +255,12 @@ function getFee(
254
255
  let inValues = 0;
255
256
  for (let outpoint of inputUtxos) {
256
257
  if (binToHex(outpoint.lockingBytecode)) {
257
- inValues += Number(binToBigIntUint64LE(outpoint.satoshis));
258
+ inValues += Number(outpoint.valueSatoshis);
258
259
  }
259
260
  }
260
261
 
261
262
  const outValues = utxos
262
- .map((utxo) => Number(binToBigIntUint64LE(utxo.satoshis)))
263
+ .map((utxo) => Number(utxo.valueSatoshis))
263
264
  .reduce((a: number, b: number) => a + b, 0);
264
265
 
265
266
  let fee = 0;
@@ -1,4 +1,4 @@
1
- import { UnitEnum } from "../enum";
1
+ import { UnitEnum } from "../enum.js";
2
2
 
3
3
  export interface TransactionHistoryItemI {
4
4
  to: string;
package/src/index.ts CHANGED
@@ -1,43 +1,51 @@
1
- export * from "./db/index";
2
- export * from "./mine/index";
3
- export * from "./slp/index";
4
- export * from "./test/expect";
5
- export * from "./webhook/index";
1
+ export * from "./db/index.js";
2
+ export * from "./mine/index.js";
3
+ export * from "./slp/index.js";
4
+ export * from "./test/expect.js";
5
+ export * from "./test/axios.js";
6
+ export * from "./webhook/index.js";
7
+ export * from "./wallet/Bcmr.js";
6
8
 
7
- export * from "./network/index";
8
- export { SignedMessage } from "./message/signed";
9
+ export * from "./network/index.js";
10
+ export { SignedMessage } from "./message/signed.js";
9
11
 
10
- export { BaseWallet } from "./wallet/Base";
11
- export * from "./wallet/Wif";
12
- export * from "./wallet/createWallet";
12
+ export { BaseWallet } from "./wallet/Base.js";
13
+ export * from "./wallet/Wif.js";
14
+ export * from "./wallet/createWallet.js";
15
+
16
+ // provider
17
+ export { DefaultProvider } from "./network/configuration.js";
13
18
 
14
19
  // Enum
15
- export { NetworkType, UnitEnum } from "./enum";
16
- export { WalletTypeEnum } from "./wallet/enum";
20
+ export { NetworkType, UnitEnum } from "./enum.js";
21
+ export { WalletTypeEnum } from "./wallet/enum.js";
17
22
 
18
23
  // models
19
- export { SendRequest, UtxoItem } from "./wallet/model";
24
+ export * from "./wallet/model.js";
20
25
 
21
26
  // utils
22
- import * as Mainnet from "./util/index";
27
+ import * as Mainnet from "./util/index.js";
23
28
  export { Mainnet };
29
+ export * from "./util/index.js";
30
+
31
+ // qr
32
+ export * from "./qr/Qr.js";
24
33
 
25
34
  // constants
26
- import * as CONST from "./constant";
35
+ import * as CONST from "./constant.js";
27
36
  export { CONST };
28
37
 
29
38
  // interfaces
30
- export { UtxoI } from "./interface";
31
- export { Network } from "./interface";
32
- export { ImageI } from "./qr/interface";
39
+ export * from "./interface.js";
40
+ export { ImageI } from "./qr/interface.js";
33
41
  export {
34
42
  SignedMessageResponseI,
35
43
  VerifyMessageResponseI,
36
- } from "./message/interface";
37
- export { WalletRequestI, WalletResponseI } from "./wallet/interface";
44
+ } from "./message/interface.js";
45
+ export { WalletRequestI, WalletResponseI } from "./wallet/interface.js";
38
46
 
39
47
  // TODO move this up to util (Mainnet) ?
40
- export * from "./util/bchaddr";
48
+ export * from "./util/bchaddr.js";
41
49
 
42
50
  export function cube(x: number) {
43
51
  return x * x * x;
package/src/interface.ts CHANGED
@@ -21,6 +21,7 @@ export interface UtxoI {
21
21
  satoshis: number;
22
22
  height?: number;
23
23
  coinbase?: boolean;
24
+ token?: TokenI;
24
25
  }
25
26
 
26
27
  export interface ElectrumBalanceI {
@@ -38,3 +39,17 @@ export interface HeaderI {
38
39
  height: number;
39
40
  hex: string;
40
41
  }
42
+
43
+ export interface TokenI {
44
+ amount: number;
45
+ tokenId: string;
46
+ capability?: NFTCapability;
47
+ commitment?: string;
48
+ }
49
+
50
+ export const NFTCapability = {
51
+ none: literal("none"),
52
+ mutable: literal("mutable"),
53
+ minting: literal("minting"),
54
+ };
55
+ export type NFTCapability = typeof NFTCapability[keyof typeof NFTCapability];
@@ -1,2 +1,2 @@
1
- export * from "./interface";
2
- export * from "./signed";
1
+ export * from "./interface.js";
2
+ export * from "./signed.js";
@@ -1,11 +1,11 @@
1
- import { SignedMessage, hash_message } from "./signed";
2
- import { Wallet, RegTestWallet, TestNetWallet } from "../wallet/Wif";
1
+ import { SignedMessage, hash_message } from "./signed.js";
2
+ import { Wallet, RegTestWallet, TestNetWallet } from "../wallet/Wif.js";
3
3
  import { binToBase64, binToHex } from "@bitauth/libauth";
4
4
 
5
- const fs = require("fs").promises;
5
+ import fs from "fs";
6
6
 
7
7
  async function loadLargeMessage() {
8
- const data = await fs.readFile("./jest/data/bitcoin.tex", "utf-8");
8
+ const data = await fs.promises.readFile("./jest/data/bitcoin.tex", "utf-8");
9
9
  return data;
10
10
  }
11
11
 
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  base64ToBin,
3
3
  binToBase64,
4
+ CashAddressType,
4
5
  encodeCashAddress,
5
6
  hexToBin,
6
7
  instantiateSecp256k1,
@@ -9,13 +10,13 @@ import {
9
10
  utf8ToBin,
10
11
  } from "@bitauth/libauth";
11
12
 
12
- import { derivePrefix } from "../util/derivePublicKeyHash";
13
- import { hash160 } from "../util/hash160";
13
+ import { derivePrefix } from "../util/derivePublicKeyHash.js";
14
+ import { hash160 } from "../util/hash160.js";
14
15
  import {
15
16
  SignedMessageI,
16
17
  SignedMessageResponseI,
17
18
  VerifyMessageResponseI,
18
- } from "./interface";
19
+ } from "./interface.js";
19
20
 
20
21
  /**
21
22
  * message_magic - Add "Magic", per standard bitcoin message signing.
@@ -70,8 +71,17 @@ export class SignedMessage implements SignedMessageI {
70
71
  privateKey,
71
72
  messageHash
72
73
  );
73
- let sigDer = secp256k1.signMessageHashDER(privateKey, messageHash);
74
- let sigSchnorr = secp256k1.signMessageHashSchnorr(privateKey, messageHash);
74
+ if (typeof rs === "string") {
75
+ throw new Error(rs);
76
+ }
77
+ let sigDer = secp256k1.signMessageHashDER(
78
+ privateKey,
79
+ messageHash
80
+ ) as Uint8Array;
81
+ let sigSchnorr = secp256k1.signMessageHashSchnorr(
82
+ privateKey,
83
+ messageHash
84
+ ) as Uint8Array;
75
85
  let electronEncoding = new Uint8Array([
76
86
  ...[31 + rs.recoveryId],
77
87
  ...rs.signature,
@@ -127,6 +137,9 @@ export class SignedMessage implements SignedMessageI {
127
137
  recoveryId as RecoveryId,
128
138
  messageHash
129
139
  );
140
+ if (typeof recoveredPk === "string") {
141
+ throw new Error(recoveredPk);
142
+ }
130
143
 
131
144
  pkh = await hash160(recoveredPk);
132
145
  signatureType = "recoverable";
@@ -138,7 +151,11 @@ export class SignedMessage implements SignedMessageI {
138
151
  if (cashaddr) {
139
152
  // Validate that the signature actually matches the provided cashaddr
140
153
  let prefix = derivePrefix(cashaddr);
141
- let resultingCashaddr = encodeCashAddress(prefix, 0, pkh);
154
+ let resultingCashaddr = encodeCashAddress(
155
+ prefix,
156
+ CashAddressType.p2pkh,
157
+ pkh
158
+ );
142
159
  if (resultingCashaddr === cashaddr) {
143
160
  pkhMatch = true;
144
161
  }
package/src/mine/index.ts CHANGED
@@ -1 +1 @@
1
- export * from "./mine";
1
+ export * from "./mine.js";
package/src/mine/mine.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { browserNotSupported } from "../util/browserNotSupported";
1
+ import { browserNotSupported } from "../util/browserNotSupported.js";
2
+ import { spawnSync } from "child_process";
2
3
  /**
3
4
  * Mine blocks to a regtest address
4
5
  *
@@ -31,8 +32,7 @@ export async function mine({
31
32
  blocks,
32
33
  cashaddr,
33
34
  ];
34
- const spawnSync = eval('require("child_process")').spawnSync;
35
- const cli = await spawnSync(`docker`, generateArgs);
35
+ const cli = spawnSync(`docker`, generateArgs as any);
36
36
  if (cli.stderr.length > 0) {
37
37
  return console.log("Mine Error: " + cli.stderr.toString());
38
38
  }
@@ -1,13 +1,13 @@
1
- import { default as NetworkProvider } from "./NetworkProvider";
1
+ import { default as NetworkProvider } from "./NetworkProvider.js";
2
2
  import {
3
3
  getNetworkProvider,
4
4
  setGlobalProvider,
5
5
  getGlobalProvider,
6
6
  removeGlobalProvider,
7
- } from "./default";
8
- import { Network } from "../interface";
9
- import { networkTickerMap } from "./constant";
10
- import { prefixFromNetworkMap } from "../enum";
7
+ } from "./default.js";
8
+ import { Network } from "../interface.js";
9
+ import { networkTickerMap } from "./constant.js";
10
+ import { prefixFromNetworkMap } from "../enum.js";
11
11
  import { CashAddressNetworkPrefix } from "@bitauth/libauth";
12
12
 
13
13
  async function initProvider(network: Network) {
@@ -4,17 +4,22 @@ import {
4
4
  RequestResponse,
5
5
  ConnectionStatus,
6
6
  } from "electrum-cash";
7
- import { default as NetworkProvider } from "./NetworkProvider";
8
- import { HeaderI, TxI, UtxoI, ElectrumBalanceI } from "../interface";
9
- import { Network } from "../interface";
10
- import { delay } from "../util/delay";
11
- import { BlockHeader, ElectrumRawTransaction, ElectrumUtxo } from "./interface";
7
+ import { default as NetworkProvider } from "./NetworkProvider.js";
8
+ import { HeaderI, TxI, UtxoI, ElectrumBalanceI, TokenI } from "../interface.js";
9
+ import { Network } from "../interface.js";
10
+ import { delay } from "../util/delay.js";
11
+ import { ElectrumRawTransaction, ElectrumUtxo } from "./interface.js";
12
12
 
13
13
  import { Mutex } from "async-mutex";
14
- import { Util } from "../wallet/Util";
15
- import { CancelWatchFn } from "../wallet/interface";
16
- import { resolve } from "path";
17
- import { rejects } from "assert";
14
+ import { Util } from "../wallet/Util.js";
15
+ import { CancelWatchFn } from "../wallet/interface.js";
16
+ import { getTransactionHash } from "../util/transaction.js";
17
+ import {
18
+ binToHex,
19
+ decodeTransactionBCH,
20
+ hexToBin,
21
+ TransactionBCH,
22
+ } from "@bitauth/libauth";
18
23
 
19
24
  export default class ElectrumNetworkProvider implements NetworkProvider {
20
25
  public electrum: ElectrumCluster | ElectrumClient;
@@ -49,7 +54,9 @@ export default class ElectrumNetworkProvider implements NetworkProvider {
49
54
  await this.connectCluster();
50
55
  } catch (e) {
51
56
  console.warn(
52
- `Unable to connect to one or more electrum-cash hosts: ${e}`
57
+ `Unable to connect to one or more electrum-cash hosts: ${JSON.stringify(
58
+ e
59
+ )}`
53
60
  );
54
61
  }
55
62
  resolve(await this.readyCluster());
@@ -69,18 +76,64 @@ export default class ElectrumNetworkProvider implements NetworkProvider {
69
76
  clearTimeout(timeoutHandle);
70
77
  }
71
78
 
79
+ static utxoTxCache = {};
72
80
  async getUtxos(cashaddr: string): Promise<UtxoI[]> {
73
81
  const result = (await this.performRequest(
74
82
  "blockchain.address.listunspent",
75
83
  cashaddr
76
84
  )) as ElectrumUtxo[];
85
+ if (this.network === Network.MAINNET) {
86
+ return result.map((utxo) => ({
87
+ txid: utxo.tx_hash,
88
+ vout: utxo.tx_pos,
89
+ satoshis: utxo.value,
90
+ height: utxo.height,
91
+ }));
92
+ }
93
+
94
+ // a workaround until Fulcrum returns token info
95
+ const uniqueTransactionHashes = result.filter(
96
+ (value, index, array) => array.indexOf(value) === index
97
+ );
98
+ const transactionMap: { [hash: string]: TransactionBCH } = {};
99
+ for (let { tx_hash } of uniqueTransactionHashes) {
100
+ const key = `${this.network}-${tx_hash};`;
101
+
102
+ // check cache
103
+ if (ElectrumNetworkProvider.utxoTxCache[key]) {
104
+ transactionMap[tx_hash] = ElectrumNetworkProvider.utxoTxCache[key];
105
+ continue;
106
+ }
107
+ // download and decode tx from Fulcrum
108
+ const decoded = decodeTransactionBCH(
109
+ hexToBin(await this.getRawTransaction(tx_hash, false))
110
+ );
111
+ if (typeof decoded === "string") {
112
+ throw new Error(decoded);
113
+ }
114
+ transactionMap[tx_hash] = decoded;
115
+ ElectrumNetworkProvider.utxoTxCache[key] = decoded;
116
+ }
77
117
 
78
- const utxos = result.map((utxo) => ({
79
- txid: utxo.tx_hash,
80
- vout: utxo.tx_pos,
81
- satoshis: utxo.value,
82
- height: utxo.height,
83
- }));
118
+ const utxos = result.map((utxo) => {
119
+ const output = transactionMap[utxo.tx_hash].outputs[utxo.tx_pos];
120
+ return {
121
+ txid: utxo.tx_hash,
122
+ vout: utxo.tx_pos,
123
+ satoshis: utxo.value,
124
+ height: utxo.height,
125
+ token:
126
+ output.token &&
127
+ ({
128
+ amount: Number(output.token.amount),
129
+ tokenId: binToHex(output.token.category),
130
+ capability: output.token.nft?.capability,
131
+ commitment:
132
+ output.token.nft?.commitment &&
133
+ binToHex(output.token.nft?.commitment),
134
+ } as TokenI),
135
+ } as UtxoI;
136
+ });
84
137
 
85
138
  return utxos;
86
139
  }
@@ -107,16 +160,26 @@ export default class ElectrumNetworkProvider implements NetworkProvider {
107
160
  return this.blockHeight;
108
161
  }
109
162
 
163
+ static rawTransactionCache = {};
110
164
  async getRawTransaction(
111
165
  txHash: string,
112
166
  verbose: boolean = false
113
167
  ): Promise<string> {
168
+ const key = `${this.network}-${txHash}-${verbose}`;
169
+ if (ElectrumNetworkProvider.rawTransactionCache[key]) {
170
+ return ElectrumNetworkProvider.rawTransactionCache[key];
171
+ }
172
+
114
173
  try {
115
- return (await this.performRequest(
174
+ const result = await this.performRequest(
116
175
  "blockchain.transaction.get",
117
176
  txHash,
118
177
  verbose
119
- )) as string;
178
+ );
179
+
180
+ ElectrumNetworkProvider.rawTransactionCache[key] = result;
181
+
182
+ return result as any;
120
183
  } catch (error: any) {
121
184
  if (
122
185
  (error.message as string).indexOf(
@@ -145,7 +208,7 @@ export default class ElectrumNetworkProvider implements NetworkProvider {
145
208
  awaitPropagation: boolean = true
146
209
  ): Promise<string> {
147
210
  return new Promise(async (resolve, reject) => {
148
- let txHash = await Util.getTransactionHash(txHex);
211
+ let txHash = await getTransactionHash(txHex);
149
212
  if (!awaitPropagation) {
150
213
  this.performRequest("blockchain.transaction.broadcast", txHex);
151
214
  resolve(txHash);
@@ -491,7 +554,9 @@ export default class ElectrumNetworkProvider implements NetworkProvider {
491
554
  return await (this.electrum as ElectrumClient).connect();
492
555
  } catch (e) {
493
556
  console.warn(
494
- `Warning: Failed to connect to client on ${this.network}.`
557
+ `Warning: Failed to connect to client on ${this.network} at ${
558
+ (this.electrum as ElectrumClient).connection.host
559
+ }.`
495
560
  );
496
561
  return;
497
562
  }
@@ -1,4 +1,4 @@
1
- import { TxI, UtxoI, Network, HeaderI } from "../interface";
1
+ import { TxI, UtxoI, Network, HeaderI } from "../interface.js";
2
2
 
3
3
  export default interface NetworkProvider {
4
4
  /**
@@ -1,11 +1,33 @@
1
+ import { Network } from "../interface";
1
2
  import * as config from "./configuration";
2
3
  import * as primary from "./constant";
3
4
 
4
5
  test("Should get electrum settings from defaults", async () => {
5
- let s = config.getDefaultServers();
6
- expect(s.mainnet).toBe(primary.mainnetServers);
7
- expect(s.testnet).toBe(primary.testnetServers);
8
- expect(s.regtest).toBe(primary.regtestServers);
6
+ expect(config.getDefaultServers(Network.MAINNET)).toBe(
7
+ primary.mainnetServers
8
+ );
9
+ expect(config.getDefaultServers(Network.TESTNET)).toBe(
10
+ primary.testnetServers
11
+ );
12
+ expect(config.getDefaultServers(Network.REGTEST)).toBe(
13
+ primary.regtestServers
14
+ );
15
+ });
16
+
17
+ test("Should get electrum settings from DefaultProvider", async () => {
18
+ config.DefaultProvider.servers.mainnet = ["wss://example.com:777"];
19
+
20
+ expect(config.getDefaultServers(Network.MAINNET)).toStrictEqual([
21
+ "wss://example.com:777",
22
+ ]);
23
+ expect(config.getDefaultServers(Network.TESTNET)).toBe(
24
+ primary.testnetServers
25
+ );
26
+ expect(config.getDefaultServers(Network.REGTEST)).toBe(
27
+ primary.regtestServers
28
+ );
29
+
30
+ config.DefaultProvider.servers.mainnet = [];
9
31
  });
10
32
 
11
33
  test("Should get electrum settings from env", async () => {
@@ -13,13 +35,16 @@ test("Should get electrum settings from env", async () => {
13
35
  process.env.ELECTRUM_TESTNET =
14
36
  "https://test.example.com:1234,https://test.example.dk:1234";
15
37
  process.env.ELECTRUM_REGTEST = "ws://reg.example.com:1234";
16
- let s = config.getDefaultServers();
17
- expect(s.mainnet).toStrictEqual(["https://example.com:1234"]);
18
- expect(s.testnet).toStrictEqual([
38
+ expect(config.getDefaultServers(Network.MAINNET)).toStrictEqual([
39
+ "https://example.com:1234",
40
+ ]);
41
+ expect(config.getDefaultServers(Network.TESTNET)).toStrictEqual([
19
42
  "https://test.example.com:1234",
20
43
  "https://test.example.dk:1234",
21
44
  ]);
22
- expect(s.regtest).toStrictEqual(["ws://reg.example.com:1234"]);
45
+ expect(config.getDefaultServers(Network.REGTEST)).toStrictEqual([
46
+ "ws://reg.example.com:1234",
47
+ ]);
23
48
  });
24
49
 
25
50
  test("Should get electrum cluster confidence from defaults", async () => {