@alephium/web3 2.0.8 → 3.0.0-test.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (493) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +11 -1
  3. package/dist/{src → _cjs}/address/address.js +60 -77
  4. package/dist/_cjs/address/address.js.map +1 -0
  5. package/dist/{src → _cjs}/address/index.js +1 -17
  6. package/dist/_cjs/address/index.js.map +1 -0
  7. package/dist/_cjs/api/api-alephium.d.ts +1152 -0
  8. package/dist/{src → _cjs}/api/api-alephium.js +5 -756
  9. package/dist/_cjs/api/api-alephium.js.map +1 -0
  10. package/dist/_cjs/api/api-explorer.d.ts +586 -0
  11. package/dist/{src → _cjs}/api/api-explorer.js +14 -454
  12. package/dist/_cjs/api/api-explorer.js.map +1 -0
  13. package/dist/{src → _cjs}/api/explorer-provider.js +1 -18
  14. package/dist/_cjs/api/explorer-provider.js.map +1 -0
  15. package/dist/{src → _cjs}/api/index.js +18 -24
  16. package/dist/_cjs/api/index.js.map +1 -0
  17. package/dist/{src → _cjs}/api/node-provider.d.ts +1 -1
  18. package/dist/{src → _cjs}/api/node-provider.js +4 -26
  19. package/dist/_cjs/api/node-provider.js.map +1 -0
  20. package/dist/{src → _cjs}/api/types.js +25 -43
  21. package/dist/_cjs/api/types.js.map +1 -0
  22. package/dist/{src → _cjs}/api/utils.d.ts +1 -1
  23. package/dist/{src → _cjs}/api/utils.js +9 -21
  24. package/dist/_cjs/api/utils.js.map +1 -0
  25. package/dist/{src → _cjs}/block/block.js +20 -26
  26. package/dist/_cjs/block/block.js.map +1 -0
  27. package/dist/_cjs/block/index.d.ts +2 -0
  28. package/dist/_cjs/block/index.js +6 -0
  29. package/dist/_cjs/block/index.js.map +1 -0
  30. package/dist/{src → _cjs}/codec/array-codec.js +1 -17
  31. package/dist/_cjs/codec/array-codec.js.map +1 -0
  32. package/dist/{src → _cjs}/codec/asset-output-codec.js +1 -17
  33. package/dist/_cjs/codec/asset-output-codec.js.map +1 -0
  34. package/dist/{src → _cjs}/codec/bigint-codec.js +2 -33
  35. package/dist/_cjs/codec/bigint-codec.js.map +1 -0
  36. package/dist/{src → _cjs}/codec/bytestring-codec.d.ts +1 -1
  37. package/dist/{src → _cjs}/codec/bytestring-codec.js +1 -17
  38. package/dist/_cjs/codec/bytestring-codec.js.map +1 -0
  39. package/dist/{src → _cjs}/codec/checksum-codec.js +1 -17
  40. package/dist/_cjs/codec/checksum-codec.js.map +1 -0
  41. package/dist/{src → _cjs}/codec/codec.js +3 -19
  42. package/dist/_cjs/codec/codec.js.map +1 -0
  43. package/dist/{src → _cjs}/codec/compact-int-codec.js +2 -18
  44. package/dist/_cjs/codec/compact-int-codec.js.map +1 -0
  45. package/dist/{src → _cjs}/codec/contract-codec.js +1 -17
  46. package/dist/_cjs/codec/contract-codec.js.map +1 -0
  47. package/dist/{src → _cjs}/codec/contract-output-codec.js +1 -17
  48. package/dist/_cjs/codec/contract-output-codec.js.map +1 -0
  49. package/dist/_cjs/codec/contract-output-ref-codec.js +12 -0
  50. package/dist/_cjs/codec/contract-output-ref-codec.js.map +1 -0
  51. package/dist/_cjs/codec/either-codec.js +8 -0
  52. package/dist/_cjs/codec/either-codec.js.map +1 -0
  53. package/dist/{src → _cjs}/codec/hash.d.ts +1 -1
  54. package/dist/_cjs/codec/hash.js +20 -0
  55. package/dist/_cjs/codec/hash.js.map +1 -0
  56. package/dist/{src → _cjs}/codec/index.js +18 -24
  57. package/dist/_cjs/codec/index.js.map +1 -0
  58. package/dist/{src → _cjs}/codec/input-codec.js +1 -0
  59. package/dist/_cjs/codec/input-codec.js.map +1 -0
  60. package/dist/{src → _cjs}/codec/instr-codec.js +4 -21
  61. package/dist/_cjs/codec/instr-codec.js.map +1 -0
  62. package/dist/_cjs/codec/int-as-4bytes-codec.js +16 -0
  63. package/dist/_cjs/codec/int-as-4bytes-codec.js.map +1 -0
  64. package/dist/{src → _cjs}/codec/lockup-script-codec.d.ts +1 -1
  65. package/dist/{src → _cjs}/codec/lockup-script-codec.js +1 -17
  66. package/dist/_cjs/codec/lockup-script-codec.js.map +1 -0
  67. package/dist/{src → _cjs}/codec/method-codec.js +1 -17
  68. package/dist/_cjs/codec/method-codec.js.map +1 -0
  69. package/dist/_cjs/codec/option-codec.js +19 -0
  70. package/dist/_cjs/codec/option-codec.js.map +1 -0
  71. package/dist/_cjs/codec/output-codec.js +10 -0
  72. package/dist/_cjs/codec/output-codec.js.map +1 -0
  73. package/dist/_cjs/codec/public-key-like-codec.js +14 -0
  74. package/dist/_cjs/codec/public-key-like-codec.js.map +1 -0
  75. package/dist/{src → _cjs}/codec/reader.js +1 -17
  76. package/dist/_cjs/codec/reader.js.map +1 -0
  77. package/dist/_cjs/codec/script-codec.js +18 -0
  78. package/dist/_cjs/codec/script-codec.js.map +1 -0
  79. package/dist/{src → _cjs}/codec/signature-codec.d.ts +1 -1
  80. package/dist/_cjs/codec/signature-codec.js +8 -0
  81. package/dist/_cjs/codec/signature-codec.js.map +1 -0
  82. package/dist/{src → _cjs}/codec/timestamp-codec.js +1 -17
  83. package/dist/_cjs/codec/timestamp-codec.js.map +1 -0
  84. package/dist/_cjs/codec/token-codec.js +12 -0
  85. package/dist/_cjs/codec/token-codec.js.map +1 -0
  86. package/dist/{src → _cjs}/codec/transaction-codec.js +1 -17
  87. package/dist/_cjs/codec/transaction-codec.js.map +1 -0
  88. package/dist/{src → _cjs}/codec/unlock-script-codec.d.ts +1 -1
  89. package/dist/{src → _cjs}/codec/unlock-script-codec.js +1 -17
  90. package/dist/_cjs/codec/unlock-script-codec.js.map +1 -0
  91. package/dist/{src → _cjs}/codec/unsigned-tx-codec.js +1 -0
  92. package/dist/_cjs/codec/unsigned-tx-codec.js.map +1 -0
  93. package/dist/{src → _cjs}/codec/val.js +1 -17
  94. package/dist/_cjs/codec/val.js.map +1 -0
  95. package/dist/{src → _cjs}/constants.d.ts +0 -3
  96. package/dist/{src → _cjs}/constants.js +1 -20
  97. package/dist/_cjs/constants.js.map +1 -0
  98. package/dist/{src → _cjs}/contract/contract.js +89 -80
  99. package/dist/_cjs/contract/contract.js.map +1 -0
  100. package/dist/{src → _cjs}/contract/dapp-tx-builder.js +3 -19
  101. package/dist/_cjs/contract/dapp-tx-builder.js.map +1 -0
  102. package/dist/_cjs/contract/deployment.js +3 -0
  103. package/dist/_cjs/contract/deployment.js.map +1 -0
  104. package/dist/{src → _cjs}/contract/events.js +20 -26
  105. package/dist/_cjs/contract/events.js.map +1 -0
  106. package/dist/{src → _cjs}/contract/index.js +1 -17
  107. package/dist/_cjs/contract/index.js.map +1 -0
  108. package/dist/{src → _cjs}/contract/ralph.js +35 -69
  109. package/dist/_cjs/contract/ralph.js.map +1 -0
  110. package/dist/{src → _cjs}/contract/script-simulator.d.ts +0 -12
  111. package/dist/{src → _cjs}/contract/script-simulator.js +23 -64
  112. package/dist/_cjs/contract/script-simulator.js.map +1 -0
  113. package/dist/_cjs/debug.js +29 -0
  114. package/dist/_cjs/debug.js.map +1 -0
  115. package/dist/{src → _cjs}/error.js +1 -17
  116. package/dist/_cjs/error.js.map +1 -0
  117. package/dist/{src → _cjs}/exchange/exchange.js +8 -26
  118. package/dist/_cjs/exchange/exchange.js.map +1 -0
  119. package/dist/_cjs/exchange/index.d.ts +2 -0
  120. package/dist/{src → _cjs}/exchange/index.js +1 -17
  121. package/dist/_cjs/exchange/index.js.map +1 -0
  122. package/dist/{src → _cjs}/global.js +7 -26
  123. package/dist/_cjs/global.js.map +1 -0
  124. package/dist/{src → _cjs}/index.js +18 -27
  125. package/dist/_cjs/index.js.map +1 -0
  126. package/dist/_cjs/package.json +1 -0
  127. package/dist/{src → _cjs}/signer/index.js +1 -17
  128. package/dist/_cjs/signer/index.js.map +1 -0
  129. package/dist/{src → _cjs}/signer/signer.js +16 -63
  130. package/dist/_cjs/signer/signer.js.map +1 -0
  131. package/dist/{src → _cjs}/signer/tx-builder.js +4 -21
  132. package/dist/_cjs/signer/tx-builder.js.map +1 -0
  133. package/dist/{src → _cjs}/signer/types.js +6 -22
  134. package/dist/_cjs/signer/types.js.map +1 -0
  135. package/dist/{src → _cjs}/token/index.js +1 -17
  136. package/dist/_cjs/token/index.js.map +1 -0
  137. package/dist/{src → _cjs}/token/nft.d.ts +0 -1
  138. package/dist/{src → _cjs}/token/nft.js +5 -24
  139. package/dist/_cjs/token/nft.js.map +1 -0
  140. package/dist/{src → _cjs}/transaction/index.js +1 -17
  141. package/dist/_cjs/transaction/index.js.map +1 -0
  142. package/dist/{src → _cjs}/transaction/sign-verify.js +20 -27
  143. package/dist/_cjs/transaction/sign-verify.js.map +1 -0
  144. package/dist/{src → _cjs}/transaction/status.js +20 -26
  145. package/dist/_cjs/transaction/status.js.map +1 -0
  146. package/dist/{src → _cjs}/transaction/utils.js +3 -20
  147. package/dist/_cjs/transaction/utils.js.map +1 -0
  148. package/dist/{src → _cjs}/utils/bs58.d.ts +0 -1
  149. package/dist/{src → _cjs}/utils/bs58.js +4 -21
  150. package/dist/_cjs/utils/bs58.js.map +1 -0
  151. package/dist/_cjs/utils/djb2.js +11 -0
  152. package/dist/_cjs/utils/djb2.js.map +1 -0
  153. package/dist/{src → _cjs}/utils/index.js +1 -17
  154. package/dist/_cjs/utils/index.js.map +1 -0
  155. package/dist/{src → _cjs}/utils/number.d.ts +0 -2
  156. package/dist/{src → _cjs}/utils/number.fixture.js +1 -17
  157. package/dist/_cjs/utils/number.fixture.js.map +1 -0
  158. package/dist/{src → _cjs}/utils/number.js +10 -44
  159. package/dist/_cjs/utils/number.js.map +1 -0
  160. package/dist/_cjs/utils/sign.js +89 -0
  161. package/dist/_cjs/utils/sign.js.map +1 -0
  162. package/dist/{src → _cjs}/utils/subscription.js +1 -17
  163. package/dist/_cjs/utils/subscription.js.map +1 -0
  164. package/dist/{src → _cjs}/utils/utils.d.ts +7 -6
  165. package/dist/{src → _cjs}/utils/utils.js +60 -57
  166. package/dist/_cjs/utils/utils.js.map +1 -0
  167. package/dist/{src → _cjs}/utils/webcrypto.d.ts +1 -3
  168. package/dist/_cjs/utils/webcrypto.js +18 -0
  169. package/dist/_cjs/utils/webcrypto.js.map +1 -0
  170. package/dist/_esm/address/address.d.ts +36 -0
  171. package/dist/_esm/address/address.js +309 -0
  172. package/dist/_esm/address/address.js.map +1 -0
  173. package/dist/_esm/address/index.d.ts +1 -0
  174. package/dist/_esm/address/index.js +2 -0
  175. package/dist/_esm/address/index.js.map +1 -0
  176. package/dist/_esm/api/api-alephium.d.ts +1152 -0
  177. package/dist/_esm/api/api-alephium.js +797 -0
  178. package/dist/_esm/api/api-alephium.js.map +1 -0
  179. package/dist/_esm/api/api-explorer.d.ts +586 -0
  180. package/dist/_esm/api/api-explorer.js +577 -0
  181. package/dist/_esm/api/api-explorer.js.map +1 -0
  182. package/dist/_esm/api/explorer-provider.d.ts +21 -0
  183. package/dist/_esm/api/explorer-provider.js +48 -0
  184. package/dist/_esm/api/explorer-provider.js.map +1 -0
  185. package/dist/_esm/api/index.d.ts +6 -0
  186. package/dist/_esm/api/index.js +7 -0
  187. package/dist/_esm/api/index.js.map +1 -0
  188. package/dist/_esm/api/node-provider.d.ts +46 -0
  189. package/dist/_esm/api/node-provider.js +178 -0
  190. package/dist/_esm/api/node-provider.js.map +1 -0
  191. package/dist/_esm/api/types.d.ts +71 -0
  192. package/dist/_esm/api/types.js +219 -0
  193. package/dist/_esm/api/types.js.map +1 -0
  194. package/dist/_esm/api/utils.d.ts +10 -0
  195. package/dist/_esm/api/utils.js +37 -0
  196. package/dist/_esm/api/utils.js.map +1 -0
  197. package/dist/_esm/block/block.d.ts +27 -0
  198. package/dist/_esm/block/block.js +128 -0
  199. package/dist/_esm/block/block.js.map +1 -0
  200. package/dist/_esm/block/index.d.ts +2 -0
  201. package/dist/_esm/block/index.js +2 -0
  202. package/dist/_esm/block/index.js.map +1 -0
  203. package/dist/_esm/codec/array-codec.d.ts +8 -0
  204. package/dist/_esm/codec/array-codec.js +25 -0
  205. package/dist/_esm/codec/array-codec.js.map +1 -0
  206. package/dist/_esm/codec/asset-output-codec.d.ts +21 -0
  207. package/dist/_esm/codec/asset-output-codec.js +74 -0
  208. package/dist/_esm/codec/asset-output-codec.js.map +1 -0
  209. package/dist/_esm/codec/bigint-codec.d.ts +5 -0
  210. package/dist/_esm/codec/bigint-codec.js +62 -0
  211. package/dist/_esm/codec/bigint-codec.js.map +1 -0
  212. package/dist/_esm/codec/bytestring-codec.d.ts +10 -0
  213. package/dist/_esm/codec/bytestring-codec.js +16 -0
  214. package/dist/_esm/codec/bytestring-codec.js.map +1 -0
  215. package/dist/_esm/codec/checksum-codec.d.ts +8 -0
  216. package/dist/_esm/codec/checksum-codec.js +27 -0
  217. package/dist/_esm/codec/checksum-codec.js.map +1 -0
  218. package/dist/_esm/codec/codec.d.ts +57 -0
  219. package/dist/_esm/codec/codec.js +114 -0
  220. package/dist/_esm/codec/codec.js.map +1 -0
  221. package/dist/_esm/codec/compact-int-codec.d.ts +68 -0
  222. package/dist/_esm/codec/compact-int-codec.js +287 -0
  223. package/dist/_esm/codec/compact-int-codec.js.map +1 -0
  224. package/dist/_esm/codec/contract-codec.d.ts +19 -0
  225. package/dist/_esm/codec/contract-codec.js +47 -0
  226. package/dist/_esm/codec/contract-codec.js.map +1 -0
  227. package/dist/_esm/codec/contract-output-codec.d.ts +14 -0
  228. package/dist/_esm/codec/contract-output-codec.js +40 -0
  229. package/dist/_esm/codec/contract-output-codec.js.map +1 -0
  230. package/dist/_esm/codec/contract-output-ref-codec.d.ts +8 -0
  231. package/dist/_esm/codec/contract-output-ref-codec.js +9 -0
  232. package/dist/_esm/codec/contract-output-ref-codec.js.map +1 -0
  233. package/dist/_esm/codec/either-codec.d.ts +9 -0
  234. package/dist/_esm/codec/either-codec.js +5 -0
  235. package/dist/_esm/codec/either-codec.js.map +1 -0
  236. package/dist/_esm/codec/hash.d.ts +3 -0
  237. package/dist/_esm/codec/hash.js +15 -0
  238. package/dist/_esm/codec/hash.js.map +1 -0
  239. package/dist/_esm/codec/index.d.ts +24 -0
  240. package/dist/_esm/codec/index.js +25 -0
  241. package/dist/_esm/codec/index.js.map +1 -0
  242. package/dist/_esm/codec/input-codec.d.ts +15 -0
  243. package/dist/_esm/codec/input-codec.js +33 -0
  244. package/dist/_esm/codec/input-codec.js.map +1 -0
  245. package/dist/_esm/codec/instr-codec.d.ts +857 -0
  246. package/dist/_esm/codec/instr-codec.js +1138 -0
  247. package/dist/_esm/codec/instr-codec.js.map +1 -0
  248. package/dist/_esm/codec/int-as-4bytes-codec.d.ts +7 -0
  249. package/dist/_esm/codec/int-as-4bytes-codec.js +12 -0
  250. package/dist/_esm/codec/int-as-4bytes-codec.js.map +1 -0
  251. package/dist/_esm/codec/lockup-script-codec.d.ts +42 -0
  252. package/dist/_esm/codec/lockup-script-codec.js +28 -0
  253. package/dist/_esm/codec/lockup-script-codec.js.map +1 -0
  254. package/dist/_esm/codec/method-codec.d.ts +20 -0
  255. package/dist/_esm/codec/method-codec.js +54 -0
  256. package/dist/_esm/codec/method-codec.js.map +1 -0
  257. package/dist/_esm/codec/option-codec.d.ts +9 -0
  258. package/dist/_esm/codec/option-codec.js +16 -0
  259. package/dist/_esm/codec/option-codec.js.map +1 -0
  260. package/dist/_esm/codec/output-codec.d.ts +7 -0
  261. package/dist/_esm/codec/output-codec.js +7 -0
  262. package/dist/_esm/codec/output-codec.js.map +1 -0
  263. package/dist/_esm/codec/public-key-like-codec.d.ts +17 -0
  264. package/dist/_esm/codec/public-key-like-codec.js +11 -0
  265. package/dist/_esm/codec/public-key-like-codec.js.map +1 -0
  266. package/dist/_esm/codec/reader.d.ts +10 -0
  267. package/dist/_esm/codec/reader.js +38 -0
  268. package/dist/_esm/codec/reader.js.map +1 -0
  269. package/dist/_esm/codec/script-codec.d.ts +12 -0
  270. package/dist/_esm/codec/script-codec.js +14 -0
  271. package/dist/_esm/codec/script-codec.js.map +1 -0
  272. package/dist/_esm/codec/signature-codec.d.ts +5 -0
  273. package/dist/_esm/codec/signature-codec.js +5 -0
  274. package/dist/_esm/codec/signature-codec.js.map +1 -0
  275. package/dist/_esm/codec/timestamp-codec.d.ts +8 -0
  276. package/dist/_esm/codec/timestamp-codec.js +19 -0
  277. package/dist/_esm/codec/timestamp-codec.js.map +1 -0
  278. package/dist/_esm/codec/token-codec.d.ts +8 -0
  279. package/dist/_esm/codec/token-codec.js +9 -0
  280. package/dist/_esm/codec/token-codec.js.map +1 -0
  281. package/dist/_esm/codec/transaction-codec.d.ts +21 -0
  282. package/dist/_esm/codec/transaction-codec.js +82 -0
  283. package/dist/_esm/codec/transaction-codec.js.map +1 -0
  284. package/dist/_esm/codec/unlock-script-codec.d.ts +44 -0
  285. package/dist/_esm/codec/unlock-script-codec.js +49 -0
  286. package/dist/_esm/codec/unlock-script-codec.js.map +1 -0
  287. package/dist/_esm/codec/unsigned-tx-codec.d.ts +23 -0
  288. package/dist/_esm/codec/unsigned-tx-codec.js +57 -0
  289. package/dist/_esm/codec/unsigned-tx-codec.js.map +1 -0
  290. package/dist/_esm/codec/val.d.ts +27 -0
  291. package/dist/_esm/codec/val.js +14 -0
  292. package/dist/_esm/codec/val.js.map +1 -0
  293. package/dist/_esm/constants.d.ts +14 -0
  294. package/dist/_esm/constants.js +15 -0
  295. package/dist/_esm/constants.js.map +1 -0
  296. package/dist/_esm/contract/contract.d.ts +328 -0
  297. package/dist/_esm/contract/contract.js +1449 -0
  298. package/dist/_esm/contract/contract.js.map +1 -0
  299. package/dist/_esm/contract/dapp-tx-builder.d.ts +26 -0
  300. package/dist/_esm/contract/dapp-tx-builder.js +166 -0
  301. package/dist/_esm/contract/dapp-tx-builder.js.map +1 -0
  302. package/dist/_esm/contract/deployment.d.ts +21 -0
  303. package/dist/_esm/contract/deployment.js +2 -0
  304. package/dist/_esm/contract/deployment.js.map +1 -0
  305. package/dist/_esm/contract/events.d.ts +17 -0
  306. package/dist/_esm/contract/events.js +59 -0
  307. package/dist/_esm/contract/events.js.map +1 -0
  308. package/dist/_esm/contract/index.d.ts +6 -0
  309. package/dist/_esm/contract/index.js +7 -0
  310. package/dist/_esm/contract/index.js.map +1 -0
  311. package/dist/_esm/contract/ralph.d.ts +73 -0
  312. package/dist/_esm/contract/ralph.js +372 -0
  313. package/dist/_esm/contract/ralph.js.map +1 -0
  314. package/dist/_esm/contract/script-simulator.d.ts +15 -0
  315. package/dist/_esm/contract/script-simulator.js +712 -0
  316. package/dist/_esm/contract/script-simulator.js.map +1 -0
  317. package/dist/_esm/debug.d.ts +6 -0
  318. package/dist/_esm/debug.js +21 -0
  319. package/dist/_esm/debug.js.map +1 -0
  320. package/dist/_esm/error.d.ts +4 -0
  321. package/dist/_esm/error.js +16 -0
  322. package/dist/_esm/error.js.map +1 -0
  323. package/dist/_esm/exchange/exchange.d.ts +21 -0
  324. package/dist/_esm/exchange/exchange.js +137 -0
  325. package/dist/_esm/exchange/exchange.js.map +1 -0
  326. package/dist/_esm/exchange/index.d.ts +2 -0
  327. package/dist/_esm/exchange/index.js +2 -0
  328. package/dist/_esm/exchange/index.js.map +1 -0
  329. package/dist/_esm/global.d.ts +10 -0
  330. package/dist/_esm/global.js +49 -0
  331. package/dist/_esm/global.js.map +1 -0
  332. package/dist/_esm/index.d.ts +15 -0
  333. package/dist/_esm/index.js +16 -0
  334. package/dist/_esm/index.js.map +1 -0
  335. package/dist/_esm/package.json +1 -0
  336. package/dist/_esm/signer/index.d.ts +3 -0
  337. package/dist/_esm/signer/index.js +4 -0
  338. package/dist/_esm/signer/index.js.map +1 -0
  339. package/dist/_esm/signer/signer.d.ts +63 -0
  340. package/dist/_esm/signer/signer.js +279 -0
  341. package/dist/_esm/signer/signer.js.map +1 -0
  342. package/dist/_esm/signer/tx-builder.d.ts +22 -0
  343. package/dist/_esm/signer/tx-builder.js +270 -0
  344. package/dist/_esm/signer/tx-builder.js.map +1 -0
  345. package/dist/_esm/signer/types.d.ts +167 -0
  346. package/dist/_esm/signer/types.js +27 -0
  347. package/dist/_esm/signer/types.js.map +1 -0
  348. package/dist/_esm/token/index.d.ts +1 -0
  349. package/dist/_esm/token/index.js +2 -0
  350. package/dist/_esm/token/index.js.map +1 -0
  351. package/dist/_esm/token/nft.d.ts +8 -0
  352. package/dist/_esm/token/nft.js +95 -0
  353. package/dist/_esm/token/nft.js.map +1 -0
  354. package/dist/_esm/transaction/index.d.ts +3 -0
  355. package/dist/_esm/transaction/index.js +4 -0
  356. package/dist/_esm/transaction/index.js.map +1 -0
  357. package/dist/_esm/transaction/sign-verify.d.ts +3 -0
  358. package/dist/_esm/transaction/sign-verify.js +8 -0
  359. package/dist/_esm/transaction/sign-verify.js.map +1 -0
  360. package/dist/_esm/transaction/status.d.ts +12 -0
  361. package/dist/_esm/transaction/status.js +33 -0
  362. package/dist/_esm/transaction/status.js.map +1 -0
  363. package/dist/_esm/transaction/utils.d.ts +4 -0
  364. package/dist/_esm/transaction/utils.js +35 -0
  365. package/dist/_esm/transaction/utils.js.map +1 -0
  366. package/dist/_esm/utils/bs58.d.ts +5 -0
  367. package/dist/_esm/utils/bs58.js +25 -0
  368. package/dist/_esm/utils/bs58.js.map +1 -0
  369. package/dist/_esm/utils/djb2.d.ts +1 -0
  370. package/dist/_esm/utils/djb2.js +8 -0
  371. package/dist/_esm/utils/djb2.js.map +1 -0
  372. package/dist/_esm/utils/index.d.ts +7 -0
  373. package/dist/_esm/utils/index.js +8 -0
  374. package/dist/_esm/utils/index.js.map +1 -0
  375. package/dist/_esm/utils/number.d.ts +17 -0
  376. package/dist/_esm/utils/number.fixture.d.ts +12 -0
  377. package/dist/_esm/utils/number.fixture.js +170 -0
  378. package/dist/_esm/utils/number.fixture.js.map +1 -0
  379. package/dist/_esm/utils/number.js +104 -0
  380. package/dist/_esm/utils/number.js.map +1 -0
  381. package/dist/_esm/utils/sign.d.ts +3 -0
  382. package/dist/_esm/utils/sign.js +52 -0
  383. package/dist/_esm/utils/sign.js.map +1 -0
  384. package/dist/_esm/utils/subscription.d.ts +22 -0
  385. package/dist/_esm/utils/subscription.js +31 -0
  386. package/dist/_esm/utils/subscription.js.map +1 -0
  387. package/dist/_esm/utils/utils.d.ts +40 -0
  388. package/dist/_esm/utils/utils.js +116 -0
  389. package/dist/_esm/utils/utils.js.map +1 -0
  390. package/dist/_esm/utils/webcrypto.d.ts +4 -0
  391. package/dist/_esm/utils/webcrypto.js +14 -0
  392. package/dist/_esm/utils/webcrypto.js.map +1 -0
  393. package/package.json +34 -40
  394. package/src/address/address.ts +12 -17
  395. package/src/api/api-alephium.ts +4 -5
  396. package/src/api/api-explorer.ts +4 -5
  397. package/src/api/types.ts +3 -2
  398. package/src/api/utils.ts +13 -1
  399. package/src/block/index.ts +2 -1
  400. package/src/codec/hash.ts +2 -2
  401. package/src/contract/contract.ts +54 -15
  402. package/src/exchange/index.ts +1 -3
  403. package/src/index.ts +0 -4
  404. package/src/signer/signer.ts +17 -11
  405. package/src/token/nft.ts +0 -1
  406. package/src/utils/sign.ts +19 -20
  407. package/src/utils/utils.ts +9 -20
  408. package/src/utils/webcrypto.ts +4 -10
  409. package/tsconfig.build.json +9 -0
  410. package/dist/alephium-web3.min.js +0 -3
  411. package/dist/alephium-web3.min.js.LICENSE.txt +0 -12
  412. package/dist/alephium-web3.min.js.map +0 -1
  413. package/dist/scripts/check-versions.d.ts +0 -1
  414. package/dist/scripts/check-versions.js +0 -39
  415. package/dist/scripts/header.d.ts +0 -0
  416. package/dist/scripts/header.js +0 -18
  417. package/dist/src/api/api-alephium.d.ts +0 -2433
  418. package/dist/src/api/api-explorer.d.ts +0 -1472
  419. package/dist/src/block/index.d.ts +0 -1
  420. package/dist/src/block/index.js +0 -22
  421. package/dist/src/codec/contract-output-ref-codec.js +0 -28
  422. package/dist/src/codec/either-codec.js +0 -25
  423. package/dist/src/codec/hash.js +0 -40
  424. package/dist/src/codec/int-as-4bytes-codec.js +0 -32
  425. package/dist/src/codec/option-codec.js +0 -36
  426. package/dist/src/codec/output-codec.js +0 -26
  427. package/dist/src/codec/public-key-like-codec.js +0 -30
  428. package/dist/src/codec/script-codec.js +0 -34
  429. package/dist/src/codec/signature-codec.js +0 -24
  430. package/dist/src/codec/token-codec.js +0 -28
  431. package/dist/src/contract/deployment.js +0 -19
  432. package/dist/src/debug.js +0 -46
  433. package/dist/src/exchange/index.d.ts +0 -1
  434. package/dist/src/utils/djb2.js +0 -27
  435. package/dist/src/utils/sign.js +0 -96
  436. package/dist/src/utils/webcrypto.js +0 -41
  437. package/webpack.config.js +0 -56
  438. /package/dist/{src → _cjs}/address/address.d.ts +0 -0
  439. /package/dist/{src → _cjs}/address/index.d.ts +0 -0
  440. /package/dist/{src → _cjs}/api/explorer-provider.d.ts +0 -0
  441. /package/dist/{src → _cjs}/api/index.d.ts +0 -0
  442. /package/dist/{src → _cjs}/api/types.d.ts +0 -0
  443. /package/dist/{src → _cjs}/block/block.d.ts +0 -0
  444. /package/dist/{src → _cjs}/codec/array-codec.d.ts +0 -0
  445. /package/dist/{src → _cjs}/codec/asset-output-codec.d.ts +0 -0
  446. /package/dist/{src → _cjs}/codec/bigint-codec.d.ts +0 -0
  447. /package/dist/{src → _cjs}/codec/checksum-codec.d.ts +0 -0
  448. /package/dist/{src → _cjs}/codec/codec.d.ts +0 -0
  449. /package/dist/{src → _cjs}/codec/compact-int-codec.d.ts +0 -0
  450. /package/dist/{src → _cjs}/codec/contract-codec.d.ts +0 -0
  451. /package/dist/{src → _cjs}/codec/contract-output-codec.d.ts +0 -0
  452. /package/dist/{src → _cjs}/codec/contract-output-ref-codec.d.ts +0 -0
  453. /package/dist/{src → _cjs}/codec/either-codec.d.ts +0 -0
  454. /package/dist/{src → _cjs}/codec/index.d.ts +0 -0
  455. /package/dist/{src → _cjs}/codec/input-codec.d.ts +0 -0
  456. /package/dist/{src → _cjs}/codec/instr-codec.d.ts +0 -0
  457. /package/dist/{src → _cjs}/codec/int-as-4bytes-codec.d.ts +0 -0
  458. /package/dist/{src → _cjs}/codec/method-codec.d.ts +0 -0
  459. /package/dist/{src → _cjs}/codec/option-codec.d.ts +0 -0
  460. /package/dist/{src → _cjs}/codec/output-codec.d.ts +0 -0
  461. /package/dist/{src → _cjs}/codec/public-key-like-codec.d.ts +0 -0
  462. /package/dist/{src → _cjs}/codec/reader.d.ts +0 -0
  463. /package/dist/{src → _cjs}/codec/script-codec.d.ts +0 -0
  464. /package/dist/{src → _cjs}/codec/timestamp-codec.d.ts +0 -0
  465. /package/dist/{src → _cjs}/codec/token-codec.d.ts +0 -0
  466. /package/dist/{src → _cjs}/codec/transaction-codec.d.ts +0 -0
  467. /package/dist/{src → _cjs}/codec/unsigned-tx-codec.d.ts +0 -0
  468. /package/dist/{src → _cjs}/codec/val.d.ts +0 -0
  469. /package/dist/{src → _cjs}/contract/contract.d.ts +0 -0
  470. /package/dist/{src → _cjs}/contract/dapp-tx-builder.d.ts +0 -0
  471. /package/dist/{src → _cjs}/contract/deployment.d.ts +0 -0
  472. /package/dist/{src → _cjs}/contract/events.d.ts +0 -0
  473. /package/dist/{src → _cjs}/contract/index.d.ts +0 -0
  474. /package/dist/{src → _cjs}/contract/ralph.d.ts +0 -0
  475. /package/dist/{src → _cjs}/debug.d.ts +0 -0
  476. /package/dist/{src → _cjs}/error.d.ts +0 -0
  477. /package/dist/{src → _cjs}/exchange/exchange.d.ts +0 -0
  478. /package/dist/{src → _cjs}/global.d.ts +0 -0
  479. /package/dist/{src → _cjs}/index.d.ts +0 -0
  480. /package/dist/{src → _cjs}/signer/index.d.ts +0 -0
  481. /package/dist/{src → _cjs}/signer/signer.d.ts +0 -0
  482. /package/dist/{src → _cjs}/signer/tx-builder.d.ts +0 -0
  483. /package/dist/{src → _cjs}/signer/types.d.ts +0 -0
  484. /package/dist/{src → _cjs}/token/index.d.ts +0 -0
  485. /package/dist/{src → _cjs}/transaction/index.d.ts +0 -0
  486. /package/dist/{src → _cjs}/transaction/sign-verify.d.ts +0 -0
  487. /package/dist/{src → _cjs}/transaction/status.d.ts +0 -0
  488. /package/dist/{src → _cjs}/transaction/utils.d.ts +0 -0
  489. /package/dist/{src → _cjs}/utils/djb2.d.ts +0 -0
  490. /package/dist/{src → _cjs}/utils/index.d.ts +0 -0
  491. /package/dist/{src → _cjs}/utils/number.fixture.d.ts +0 -0
  492. /package/dist/{src → _cjs}/utils/sign.d.ts +0 -0
  493. /package/dist/{src → _cjs}/utils/subscription.d.ts +0 -0
package/package.json CHANGED
@@ -1,31 +1,28 @@
1
1
  {
2
2
  "name": "@alephium/web3",
3
- "version": "2.0.8",
3
+ "version": "3.0.0-test.0",
4
4
  "description": "A JS/TS library to interact with the Alephium platform",
5
5
  "license": "GPL",
6
- "main": "dist/src/index.js",
7
- "browser": "dist/alephium-web3.min.js",
8
- "types": "dist/src/index.d.ts",
6
+ "type": "commonjs",
7
+ "sideEffects": false,
8
+ "main": "dist/_cjs/index.js",
9
+ "module": "dist/_esm/index.js",
10
+ "types": "dist/_cjs/index.d.ts",
9
11
  "exports": {
10
- "node": {
11
- "types": "./dist/src/index.d.ts",
12
- "default": "./dist/src/index.js"
13
- },
14
- "default": {
15
- "types": "./dist/src/index.d.ts",
16
- "default": "./dist/alephium-web3.min.js"
17
- }
18
- },
19
- "typesVersions": {
20
- "*": {
21
- "test": [
22
- "dist/src/test/"
23
- ]
12
+ ".": {
13
+ "import": {
14
+ "types": "./dist/_esm/index.d.ts",
15
+ "default": "./dist/_esm/index.js"
16
+ },
17
+ "require": {
18
+ "types": "./dist/_cjs/index.d.ts",
19
+ "default": "./dist/_cjs/index.js"
20
+ }
24
21
  }
25
22
  },
26
23
  "repository": {
27
24
  "type": "git",
28
- "url": "git@github.com:alephium/alephium-web3.git"
25
+ "url": "git+https://github.com/alephium/alephium-web3.git"
29
26
  },
30
27
  "homepage": "https://github.com/alephium/alephium-web3",
31
28
  "bugs": {
@@ -36,38 +33,31 @@
36
33
  "alephium_version": "4.2.5",
37
34
  "explorer_backend_version": "3.3.2"
38
35
  },
39
- "type": "commonjs",
40
36
  "dependencies": {
37
+ "@noble/curves": "1.6.0",
38
+ "@noble/hashes": "1.6.1",
41
39
  "@noble/secp256k1": "1.7.1",
42
40
  "base-x": "4.0.0",
43
41
  "bignumber.js": "^9.1.1",
44
- "blakejs": "1.2.1",
45
- "bn.js": "5.2.1",
46
- "cross-fetch": "^3.1.5",
47
- "crypto-browserify": "^3.12.0",
48
- "elliptic": "6.6.1",
49
- "eventemitter3": "^4.0.7",
50
- "path-browserify": "^1.0.1",
51
- "stream-browserify": "^3.0.0"
42
+ "eventemitter3": "^4.0.7"
52
43
  },
53
44
  "devDependencies": {
45
+ "@arethetypeswrong/cli": "^0.18.2",
54
46
  "@babel/eslint-parser": "^7.21.3",
55
- "@types/elliptic": "^6.4.18",
47
+ "@size-limit/esbuild": "^11.0.0",
48
+ "@size-limit/file": "^11.0.0",
56
49
  "@types/find-up": "^2.1.1",
57
50
  "@types/fs-extra": "^9.0.13",
58
51
  "@types/jest": "^27.5.2",
59
52
  "@types/mock-fs": "^4.13.1",
60
- "@types/node": "^16.18.23",
53
+ "@types/node": "^20.0.0",
61
54
  "@types/rewire": "^2.5.28",
62
55
  "@typescript-eslint/eslint-plugin": "^5.57.0",
63
56
  "@typescript-eslint/parser": "^5.57.0",
64
- "clean-webpack-plugin": "4.0.0",
65
57
  "eslint": "^8.37.0",
66
58
  "eslint-config-prettier": "^8.8.0",
67
- "eslint-plugin-header": "^3.1.1",
68
59
  "eslint-plugin-prettier": "^4.2.1",
69
60
  "eslint-plugin-security": "1.6.0",
70
- "html-webpack-plugin": "5.5.0",
71
61
  "jest": "^28.1.3",
72
62
  "jest-localstorage-mock": "^2.4.26",
73
63
  "jest-websocket-mock": "^2.4.0",
@@ -75,27 +65,31 @@
75
65
  "mock-socket": "^9.2.1",
76
66
  "prettier": "^2.8.7",
77
67
  "process": "^0.11.10",
68
+ "publint": "^0.3.18",
78
69
  "rewire": "^6.0.0",
79
70
  "shelljs": "^0.8.5",
71
+ "size-limit": "^11.0.0",
80
72
  "swagger-typescript-api": "12.0.3",
81
- "terser-webpack-plugin": "^5.3.7",
82
73
  "ts-jest": "^28.0.8",
83
74
  "ts-node": "^10.9.1",
84
75
  "tslib": "^2.5.0",
85
- "typescript": "^4.9.5",
86
- "webpack": "^5.94.0",
87
- "webpack-cli": "^4.10.0"
76
+ "typescript": "^5.9.3"
88
77
  },
89
78
  "engines": {
90
- "node": ">=14.0.0",
79
+ "node": ">=20.0.0",
91
80
  "npm": ">=7.0.0"
92
81
  },
93
82
  "scripts": {
94
- "build": "rm -rf dist/* && npx tsc --build . && webpack",
83
+ "clean": "rm -rf node_modules dist",
84
+ "build": "rm -rf dist && pnpm build:cjs && pnpm build:esm",
85
+ "build:cjs": "tsc --project tsconfig.build.json --module commonjs --moduleResolution node --outDir dist/_cjs --declaration --verbatimModuleSyntax false && printf '{\"type\":\"commonjs\"}' > dist/_cjs/package.json",
86
+ "build:esm": "tsc --project tsconfig.build.json --outDir dist/_esm --declaration && printf '{\"type\":\"module\",\"sideEffects\":false}' > dist/_esm/package.json",
87
+ "check": "publint && attw --pack --ignore-rules internal-resolution-error",
95
88
  "test": "jest -i --config ./jest-config.json",
96
89
  "update-schemas": "npm run update-schema:alephium && npm run update-schema:explorer",
97
90
  "update-schema:alephium": "npx swagger-typescript-api --disable-throw-on-error -t ./configs -o ./src/api -n api-alephium.ts -p https://raw.githubusercontent.com/alephium/alephium/v${npm_package_config_alephium_version}/api/src/main/resources/openapi.json",
98
91
  "update-schema:explorer": "npx swagger-typescript-api --disable-throw-on-error -t ./configs -o ./src/api -n api-explorer.ts -p https://raw.githubusercontent.com/alephium/explorer-backend/v${npm_package_config_explorer_backend_version}/app/src/main/resources/explorer-backend-openapi.json",
99
- "check-versions": "node scripts/check-versions.js ${npm_package_config_alephium_version} ${npm_package_config_explorer_backend_version}"
92
+ "check-versions": "node scripts/check-versions.js ${npm_package_config_alephium_version} ${npm_package_config_explorer_backend_version}",
93
+ "size": "npx size-limit"
100
94
  }
101
95
  }
@@ -16,10 +16,11 @@ You should have received a copy of the GNU Lesser General Public License
16
16
  along with the library. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
- import { ec as EC, eddsa as EdDSA } from 'elliptic'
20
- import BN from 'bn.js'
19
+ import * as secp from '@noble/secp256k1'
20
+ import { p256 } from '@noble/curves/p256'
21
+ import { ed25519 } from '@noble/curves/ed25519'
21
22
  import { TOTAL_NUMBER_OF_GROUPS } from '../constants'
22
- import blake from 'blakejs'
23
+ import { blake2b } from '@noble/hashes/blake2b'
23
24
  import bs58, { base58ToBytes } from '../utils/bs58'
24
25
  import { binToHex, concatBytes, hexToBinUnsafe, isHexString, xorByte } from '../utils'
25
26
  import { KeyType } from '../signer'
@@ -31,9 +32,6 @@ import { TraceableError } from '../error'
31
32
  import { byteCodec } from '../codec/codec'
32
33
  import { PublicKeyLike, safePublicKeyLikeCodec } from '../codec/public-key-like-codec'
33
34
 
34
- const secp256k1 = new EC('secp256k1')
35
- const secp256r1 = new EC('p256')
36
- const ed25519 = new EdDSA('ed25519')
37
35
  const PublicKeyHashSize = 32
38
36
 
39
37
  export enum AddressType {
@@ -220,14 +218,14 @@ export function publicKeyFromPrivateKey(privateKey: string, _keyType?: KeyType):
220
218
  switch (keyType) {
221
219
  case 'default':
222
220
  case 'gl-secp256k1':
223
- return secp256k1.keyFromPrivate(privateKey).getPublic(true, 'hex')
221
+ return binToHex(secp.getPublicKey(privateKey, true))
224
222
  case 'gl-secp256r1':
225
223
  case 'gl-webauthn':
226
- return secp256r1.keyFromPrivate(privateKey).getPublic(true, 'hex')
224
+ return binToHex(p256.getPublicKey(hexToBinUnsafe(privateKey), true))
227
225
  case 'gl-ed25519':
228
- return ed25519.keyFromSecret(privateKey).getPublic('hex')
226
+ return binToHex(ed25519.getPublicKey(hexToBinUnsafe(privateKey)))
229
227
  case 'bip340-schnorr':
230
- return secp256k1.g.mul(new BN(privateKey, 16)).encode('hex', true).slice(2)
228
+ return secp.Point.fromPrivateKey(privateKey).toHex(true).slice(2)
231
229
  }
232
230
  }
233
231
 
@@ -254,7 +252,7 @@ export function addressFromPublicKey(publicKey: string, _keyType?: KeyType): str
254
252
 
255
253
  switch (keyType) {
256
254
  case 'default': {
257
- const hash = blake.blake2b(hexToBinUnsafe(publicKey), undefined, 32)
255
+ const hash = blake2b(hexToBinUnsafe(publicKey), { dkLen: 32 })
258
256
  const bytes = new Uint8Array([AddressType.P2PKH, ...hash])
259
257
  return bs58.encode(bytes)
260
258
  }
@@ -268,7 +266,7 @@ export function addressFromPublicKey(publicKey: string, _keyType?: KeyType): str
268
266
  }
269
267
 
270
268
  export function addressFromScript(script: Uint8Array): string {
271
- const scriptHash = blake.blake2b(script, undefined, 32)
269
+ const scriptHash = blake2b(script, { dkLen: 32 })
272
270
  return bs58.encode(new Uint8Array([AddressType.P2SH, ...scriptHash]))
273
271
  }
274
272
 
@@ -286,7 +284,7 @@ export function addressFromTokenId(tokenId: string): string {
286
284
  export function contractIdFromTx(txId: string, outputIndex: number): string {
287
285
  const txIdBin = hexToBinUnsafe(txId)
288
286
  const data = new Uint8Array([...txIdBin, outputIndex])
289
- const hash = blake.blake2b(data, undefined, 32)
287
+ const hash = blake2b(data, { dkLen: 32 })
290
288
  return binToHex(hash)
291
289
  }
292
290
 
@@ -301,10 +299,7 @@ export function subContractId(parentContractId: string, pathInHex: string, group
301
299
  throw new Error(`Invalid path: ${pathInHex}, expected hex string`)
302
300
  }
303
301
  const data = concatBytes([hexToBinUnsafe(parentContractId), hexToBinUnsafe(pathInHex)])
304
- const bytes = new Uint8Array([
305
- ...blake.blake2b(blake.blake2b(data, undefined, 32), undefined, 32).slice(0, -1),
306
- group
307
- ])
302
+ const bytes = new Uint8Array([...blake2b(blake2b(data, { dkLen: 32 }), { dkLen: 32 }).slice(0, -1), group])
308
303
  return binToHex(bytes)
309
304
  }
310
305
 
@@ -1566,8 +1566,7 @@ export interface WalletUnlock {
1566
1566
  mnemonicPassphrase?: string
1567
1567
  }
1568
1568
 
1569
- import 'cross-fetch/polyfill'
1570
- import { convertHttpResponse } from './utils'
1569
+ import { convertHttpResponse, stringify } from './utils'
1571
1570
 
1572
1571
  export type QueryParamsType = Record<string | number, any>
1573
1572
  export type ResponseFormat = keyof Omit<Body, 'body' | 'bodyUsed'>
@@ -1665,8 +1664,8 @@ export class HttpClient<SecurityDataType = unknown> {
1665
1664
 
1666
1665
  private contentFormatters: Record<ContentType, (input: any) => any> = {
1667
1666
  [ContentType.Json]: (input: any) =>
1668
- input !== null && (typeof input === 'object' || typeof input === 'string') ? JSON.stringify(input) : input,
1669
- [ContentType.Text]: (input: any) => (input !== null && typeof input !== 'string' ? JSON.stringify(input) : input),
1667
+ input !== null && (typeof input === 'object' || typeof input === 'string') ? stringify(input) : input,
1668
+ [ContentType.Text]: (input: any) => (input !== null && typeof input !== 'string' ? stringify(input) : input),
1670
1669
  [ContentType.FormData]: (input: any) =>
1671
1670
  Object.keys(input || {}).reduce((formData, key) => {
1672
1671
  const property = input[key]
@@ -1675,7 +1674,7 @@ export class HttpClient<SecurityDataType = unknown> {
1675
1674
  property instanceof Blob
1676
1675
  ? property
1677
1676
  : typeof property === 'object' && property !== null
1678
- ? JSON.stringify(property)
1677
+ ? stringify(property)
1679
1678
  : `${property}`
1680
1679
  )
1681
1680
  return formData
@@ -637,8 +637,7 @@ export enum Currencies {
637
637
  Cny = 'cny'
638
638
  }
639
639
 
640
- import 'cross-fetch/polyfill'
641
- import { convertHttpResponse } from './utils'
640
+ import { convertHttpResponse, stringify } from './utils'
642
641
 
643
642
  export type QueryParamsType = Record<string | number, any>
644
643
  export type ResponseFormat = keyof Omit<Body, 'body' | 'bodyUsed'>
@@ -736,8 +735,8 @@ export class HttpClient<SecurityDataType = unknown> {
736
735
 
737
736
  private contentFormatters: Record<ContentType, (input: any) => any> = {
738
737
  [ContentType.Json]: (input: any) =>
739
- input !== null && (typeof input === 'object' || typeof input === 'string') ? JSON.stringify(input) : input,
740
- [ContentType.Text]: (input: any) => (input !== null && typeof input !== 'string' ? JSON.stringify(input) : input),
738
+ input !== null && (typeof input === 'object' || typeof input === 'string') ? stringify(input) : input,
739
+ [ContentType.Text]: (input: any) => (input !== null && typeof input !== 'string' ? stringify(input) : input),
741
740
  [ContentType.FormData]: (input: any) =>
742
741
  Object.keys(input || {}).reduce((formData, key) => {
743
742
  const property = input[key]
@@ -746,7 +745,7 @@ export class HttpClient<SecurityDataType = unknown> {
746
745
  property instanceof Blob
747
746
  ? property
748
747
  : typeof property === 'object' && property !== null
749
- ? JSON.stringify(property)
748
+ ? stringify(property)
750
749
  : `${property}`
751
750
  )
752
751
  return formData
package/src/api/types.ts CHANGED
@@ -22,6 +22,7 @@ import { isDebugModeEnabled } from '../debug'
22
22
  import { TraceableError } from '../error'
23
23
  import { assertType, base58ToBytes, binToHex, bs58, Eq, isBase58, isHexString } from '../utils'
24
24
  import * as node from './api-alephium'
25
+ import { stringify } from './utils'
25
26
 
26
27
  export type Number256 = bigint | string
27
28
  export type Val = Number256 | boolean | string | Val[] | ValObject | Map<Val, Val>
@@ -209,12 +210,12 @@ async function call(args: ApiRequestArguments, handler: ApiRequestHandler): Prom
209
210
  const debugModeEnabled = isDebugModeEnabled()
210
211
  const { path, method, params } = args
211
212
  if (debugModeEnabled) {
212
- console.log(`[REQUEST] ${path} ${method} ${JSON.stringify(params)}`)
213
+ console.log(`[REQUEST] ${path} ${method} ${stringify(params)}`)
213
214
  }
214
215
  try {
215
216
  const response = await handler(args)
216
217
  if (debugModeEnabled) {
217
- console.log(`[RESPONSE] ${path} ${method} ${JSON.stringify(response)}`)
218
+ console.log(`[RESPONSE] ${path} ${method} ${stringify(response)}`)
218
219
  }
219
220
  return response
220
221
  } catch (error) {
package/src/api/utils.ts CHANGED
@@ -16,7 +16,6 @@ You should have received a copy of the GNU Lesser General Public License
16
16
  along with the library. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
- import 'cross-fetch/polyfill'
20
19
  import * as node from '../api/api-alephium'
21
20
 
22
21
  export function convertHttpResponse<T>(response: { status: number; data: T; error?: { detail: string } }): T {
@@ -51,3 +50,16 @@ export function isBalanceEqual(b0: node.Balance, b1: node.Balance): boolean {
51
50
  isTokenBalanceEqual(b0.lockedTokenBalances, b1.lockedTokenBalances)
52
51
  )
53
52
  }
53
+
54
+ // Drop-in replacement for JSON.stringify that handles BigInt values
55
+ // by converting them to strings. This avoids the need for a global
56
+ // BigInt.prototype.toJSON monkey-patch, enabling "sideEffects": false.
57
+ export const stringify: typeof JSON.stringify = (value: any, replacer?: any, space?: any) =>
58
+ JSON.stringify(
59
+ value,
60
+ (key: string, value_: any) => {
61
+ const value = typeof value_ === 'bigint' ? value_.toString() : value_
62
+ return typeof replacer === 'function' ? replacer(key, value) : value
63
+ },
64
+ space
65
+ )
@@ -16,4 +16,5 @@ You should have received a copy of the GNU Lesser General Public License
16
16
  along with the library. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
- export { ReorgCallback, BlockSubscribeOptions, BlockSubscription } from './block'
19
+ export type { ReorgCallback, BlockSubscribeOptions } from './block'
20
+ export { BlockSubscription } from './block'
package/src/codec/hash.ts CHANGED
@@ -15,10 +15,10 @@ GNU Lesser General Public License for more details.
15
15
  You should have received a copy of the GNU Lesser General Public License
16
16
  along with the library. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
- import blake from 'blakejs'
18
+ import { blake2b } from '@noble/hashes/blake2b'
19
19
 
20
20
  export function blakeHash(raw: Uint8Array) {
21
- return blake.blake2b(raw, undefined, 32)
21
+ return blake2b(raw, { dkLen: 32 })
22
22
  }
23
23
 
24
24
  export function djbIntHash(bytes: Uint8Array): number {
@@ -16,7 +16,6 @@ You should have received a copy of the GNU Lesser General Public License
16
16
  along with the library. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
- import { promises as fsPromises } from 'fs'
20
19
  import {
21
20
  fromApiNumber256,
22
21
  toApiNumber256,
@@ -34,7 +33,8 @@ import {
34
33
  decodeArrayType,
35
34
  fromApiPrimitiveVal,
36
35
  tryGetCallResult,
37
- decodeTupleType
36
+ decodeTupleType,
37
+ stringify
38
38
  } from '../api'
39
39
  import {
40
40
  SignDeployContractTxParams,
@@ -59,11 +59,19 @@ import {
59
59
  isHexString,
60
60
  hexToString
61
61
  } from '../utils'
62
- import { contractIdFromAddress, groupOfAddress, addressFromContractId, subContractId } from '../address'
62
+ import {
63
+ contractIdFromAddress,
64
+ groupOfAddress,
65
+ addressFromContractId,
66
+ subContractId,
67
+ isGrouplessAddress,
68
+ isValidAddress,
69
+ addressWithoutExplicitGroupIndex
70
+ } from '../address'
63
71
  import { getCurrentNodeProvider } from '../global'
64
72
  import { EventSubscribeOptions, EventSubscription, subscribeToEvents } from './events'
65
73
  import { MINIMAL_CONTRACT_DEPOSIT, ONE_ALPH, TOTAL_NUMBER_OF_GROUPS } from '../constants'
66
- import * as blake from 'blakejs'
74
+ import { blake2b } from '@noble/hashes/blake2b'
67
75
  import { isContractDebugMessageEnabled } from '../debug'
68
76
  import {
69
77
  contract,
@@ -271,7 +279,7 @@ export class Contract extends Artifact {
271
279
  fieldLength: decodedDebugContract.fieldLength,
272
280
  methods: methods
273
281
  })
274
- const codeHashForTesting = blake.blake2b(bytecodeForTesting, undefined, 32)
282
+ const codeHashForTesting = blake2b(bytecodeForTesting, { dkLen: 32 })
275
283
  this.bytecodeForTesting = binToHex(bytecodeForTesting)
276
284
  this.codeHashForTesting = binToHex(codeHashForTesting)
277
285
  return this.bytecodeForTesting
@@ -370,7 +378,8 @@ export class Contract extends Artifact {
370
378
  codeHashDebug: string,
371
379
  structs: Struct[] = []
372
380
  ): Promise<Contract> {
373
- const content = await fsPromises.readFile(path)
381
+ const fs = await import('fs')
382
+ const content = await fs.promises.readFile(path)
374
383
  const artifact = JSON.parse(content.toString())
375
384
  return Contract.fromJson(artifact, bytecodeDebugPatch, codeHashDebug, structs)
376
385
  }
@@ -393,7 +402,7 @@ export class Contract extends Artifact {
393
402
  if (this.stdInterfaceId !== undefined) {
394
403
  object.stdInterfaceId = this.stdInterfaceId
395
404
  }
396
- return JSON.stringify(object, null, 2)
405
+ return stringify(object, null, 2)
397
406
  }
398
407
 
399
408
  getInitialFieldsWithDefaultValues(): Fields {
@@ -771,7 +780,8 @@ export class Script extends Artifact {
771
780
  }
772
781
 
773
782
  static async fromArtifactFile(path: string, bytecodeDebugPatch: string, structs: Struct[] = []): Promise<Script> {
774
- const content = await fsPromises.readFile(path)
783
+ const fs = await import('fs')
784
+ const content = await fs.promises.readFile(path)
775
785
  const artifact = JSON.parse(content.toString())
776
786
  return this.fromJson(artifact, bytecodeDebugPatch, structs)
777
787
  }
@@ -784,7 +794,7 @@ export class Script extends Artifact {
784
794
  fieldsSig: this.fieldsSig,
785
795
  functions: this.functions
786
796
  }
787
- return JSON.stringify(object, null, 2)
797
+ return stringify(object, null, 2)
788
798
  }
789
799
 
790
800
  async txParamsForExecution<P extends Fields>(params: ExecuteScriptParams<P>): Promise<SignExecuteScriptTxParams> {
@@ -1079,7 +1089,7 @@ export interface DeployContractParams<P extends Fields = Fields> {
1079
1089
  }
1080
1090
  assertType<
1081
1091
  Eq<
1082
- Omit<DeployContractParams<undefined>, 'initialFields' | 'exposePrivateFunctions'>,
1092
+ Omit<DeployContractParams<Fields>, 'initialFields' | 'exposePrivateFunctions'>,
1083
1093
  Omit<SignDeployContractTxParams, 'signerAddress' | 'signerKeyType' | 'bytecode'>
1084
1094
  >
1085
1095
  >
@@ -1410,7 +1420,7 @@ function genCodeForType(type: string, structs: Struct[]): { bytecode: string; co
1410
1420
  methods: [loadImmFieldByIndex, loadMutFieldByIndex, storeMutFieldByIndex, destroy]
1411
1421
  }
1412
1422
  const bytecode = contract.contractCodec.encodeContract(c)
1413
- const codeHash = blake.blake2b(bytecode, undefined, 32)
1423
+ const codeHash = blake2b(bytecode, { dkLen: 32 })
1414
1424
  return { bytecode: binToHex(bytecode), codeHash: binToHex(codeHash) }
1415
1425
  }
1416
1426
 
@@ -1607,7 +1617,7 @@ export async function getDebugMessagesFromTx(txId: HexString, provider?: NodePro
1607
1617
  message: hexToString(e.fields[0].value as string)
1608
1618
  }
1609
1619
  } else {
1610
- throw new Error(`Invalid debug log: ${JSON.stringify(e.fields)}`)
1620
+ throw new Error(`Invalid debug log: ${stringify(e.fields)}`)
1611
1621
  }
1612
1622
  })
1613
1623
  } else {
@@ -1923,8 +1933,9 @@ export async function callMethod<I extends ContractInstance, F extends Fields, A
1923
1933
  ): Promise<CallContractResult<R>> {
1924
1934
  const methodIndex = contract.contract.getMethodIndex(methodName)
1925
1935
  const txId = params?.txId ?? randomTxId()
1936
+ const callArgs = getCallMethodArgs(params.args ?? {}, instance.groupIndex)
1926
1937
  const callParams = contract.contract.toApiCallContract(
1927
- { ...params, txId: txId, args: params.args === undefined ? {} : params.args },
1938
+ { ...params, txId: txId, args: callArgs },
1928
1939
  instance.groupIndex,
1929
1940
  instance.address,
1930
1941
  methodIndex
@@ -1935,6 +1946,33 @@ export async function callMethod<I extends ContractInstance, F extends Fields, A
1935
1946
  return callResult as CallContractResult<R>
1936
1947
  }
1937
1948
 
1949
+ function tryGetCallMethodAddressArg(maybeAddress: string, groupIndex: number): Val {
1950
+ if (!isValidAddress(maybeAddress)) return maybeAddress
1951
+ if (isGrouplessAddress(maybeAddress)) {
1952
+ const rawAddress = addressWithoutExplicitGroupIndex(maybeAddress)
1953
+ return `${rawAddress}:${groupIndex}`
1954
+ }
1955
+ return maybeAddress
1956
+ }
1957
+
1958
+ function getCallMethodArgsFromVal(val: Val, groupIndex: number): Val {
1959
+ if (typeof val === 'string') {
1960
+ return tryGetCallMethodAddressArg(val, groupIndex)
1961
+ }
1962
+ if (Array.isArray(val)) {
1963
+ return val.map((v) => getCallMethodArgsFromVal(v, groupIndex))
1964
+ }
1965
+ return val
1966
+ }
1967
+
1968
+ function getCallMethodArgs<A extends Arguments>(args: A, groupIndex: number): A {
1969
+ const newArgs: Arguments = {}
1970
+ for (const [key, value] of Object.entries(args)) {
1971
+ newArgs[`${key}`] = getCallMethodArgsFromVal(value, groupIndex)
1972
+ }
1973
+ return newArgs as A
1974
+ }
1975
+
1938
1976
  export async function signExecuteMethod<I extends ContractInstance, F extends Fields, A extends Arguments, R>(
1939
1977
  contract: ContractFactory<I, F>,
1940
1978
  instance: ContractInstance,
@@ -2199,8 +2237,9 @@ export async function multicallMethods<I extends ContractInstance, F extends Fie
2199
2237
  const [methodName, params] = entry
2200
2238
  const methodIndex = contract.contract.getMethodIndex(methodName)
2201
2239
  const txId = params?.txId ?? randomTxId()
2240
+ const callArgs = getCallMethodArgs(params.args ?? {}, instance.groupIndex)
2202
2241
  return contract.contract.toApiCallContract(
2203
- { ...params, txId: txId, args: params.args === undefined ? {} : params.args },
2242
+ { ...params, txId: txId, args: callArgs },
2204
2243
  instance.groupIndex,
2205
2244
  instance.address,
2206
2245
  methodIndex
@@ -2248,7 +2287,7 @@ export const getContractIdFromUnsignedTx = async (
2248
2287
  const result = await nodeProvider.transactions.postTransactionsDecodeUnsignedTx({ unsignedTx })
2249
2288
  const outputIndex = result.unsignedTx.fixedOutputs.length
2250
2289
  const hex = result.unsignedTx.txId + outputIndex.toString(16).padStart(8, '0')
2251
- const hashHex = binToHex(blake.blake2b(hexToBinUnsafe(hex), undefined, 32))
2290
+ const hashHex = binToHex(blake2b(hexToBinUnsafe(hex), { dkLen: 32 }))
2252
2291
  return hashHex.slice(0, 62) + result.fromGroup.toString(16).padStart(2, '0')
2253
2292
  }
2254
2293
 
@@ -21,8 +21,6 @@ export {
21
21
  getSenderAddress,
22
22
  isALPHTransferTx,
23
23
  getALPHDepositInfo,
24
- BaseDepositInfo,
25
- TokenDepositInfo,
26
- DepositInfo,
27
24
  getDepositInfo
28
25
  } from './exchange'
26
+ export type { BaseDepositInfo, TokenDepositInfo, DepositInfo } from './exchange'
package/src/index.ts CHANGED
@@ -16,10 +16,6 @@ You should have received a copy of the GNU Lesser General Public License
16
16
  along with the library. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
- BigInt.prototype['toJSON'] = function () {
20
- return this.toString()
21
- }
22
-
23
19
  export * from './api'
24
20
  export * from './contract'
25
21
  export * from './signer'
@@ -16,11 +16,18 @@ You should have received a copy of the GNU Lesser General Public License
16
16
  along with the library. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
- import { createHash } from 'crypto'
20
- import { ExplorerProvider, fromApiNumber256, fromApiTokens, NodeProvider, toApiNumber256, toApiTokens } from '../api'
19
+ import {
20
+ ExplorerProvider,
21
+ fromApiNumber256,
22
+ fromApiTokens,
23
+ NodeProvider,
24
+ stringify,
25
+ toApiNumber256,
26
+ toApiTokens
27
+ } from '../api'
21
28
  import { node } from '../api'
22
- import * as utils from '../utils'
23
- import blake from 'blakejs'
29
+ import { blake2b } from '@noble/hashes/blake2b'
30
+ import { sha256 } from '@noble/hashes/sha256'
24
31
  import {
25
32
  Account,
26
33
  Address,
@@ -48,6 +55,7 @@ import {
48
55
  } from './types'
49
56
  import { TransactionBuilder } from './tx-builder'
50
57
  import { addressFromPublicKey, groupOfAddress } from '../address'
58
+ import { binToHex, verifySignature } from '../utils'
51
59
 
52
60
  export abstract class SignerProvider {
53
61
  abstract get nodeProvider(): NodeProvider | undefined
@@ -64,7 +72,7 @@ export abstract class SignerProvider {
64
72
  const derivedAddress = addressFromPublicKey(account.publicKey, account.keyType)
65
73
  const derivedGroup = groupOfAddress(derivedAddress)
66
74
  if (derivedAddress !== account.address || (isGroupedAccount(account) && derivedGroup !== account.group)) {
67
- throw Error(`Invalid accounot data: ${JSON.stringify(account)}`)
75
+ throw Error(`Invalid accounot data: ${stringify(account)}`)
68
76
  }
69
77
  }
70
78
 
@@ -380,13 +388,11 @@ export function extendMessage(message: string): string {
380
388
  export function hashMessage(message: string, hasher: MessageHasher): string {
381
389
  switch (hasher) {
382
390
  case 'alephium':
383
- return utils.binToHex(blake.blake2b(extendMessage(message), undefined, 32))
391
+ return binToHex(blake2b(new TextEncoder().encode(extendMessage(message)), { dkLen: 32 }))
384
392
  case 'sha256':
385
- const sha256 = createHash('sha256')
386
- sha256.update(new TextEncoder().encode(message))
387
- return utils.binToHex(sha256.digest())
393
+ return binToHex(sha256(new TextEncoder().encode(message)))
388
394
  case 'blake2b':
389
- return utils.binToHex(blake.blake2b(message, undefined, 32))
395
+ return binToHex(blake2b(new TextEncoder().encode(message), { dkLen: 32 }))
390
396
  case 'identity':
391
397
  return message
392
398
  default:
@@ -402,7 +408,7 @@ export function verifySignedMessage(
402
408
  keyType?: KeyType
403
409
  ): boolean {
404
410
  const messageHash = hashMessage(message, messageHasher)
405
- return utils.verifySignature(messageHash, publicKey, signature, keyType)
411
+ return verifySignature(messageHash, publicKey, signature, keyType)
406
412
  }
407
413
 
408
414
  export function toApiDestination(data: Destination): node.Destination {
package/src/token/nft.ts CHANGED
@@ -19,7 +19,6 @@ along with the library. If not, see <http://www.gnu.org/licenses/>.
19
19
  // JSON Schema for the NFT metadata, which is pointed to by the value
20
20
  // returned from the `getTokenUri` method of the NFT contract
21
21
 
22
- import 'cross-fetch/polyfill'
23
22
  import { NFTCollectionUriMetaData, NFTTokenUriMetaData } from '../api'
24
23
  import { TraceableError } from '../error'
25
24