quantumcoin 7.0.15 → 8.0.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 (416) hide show
  1. package/README-SDK.md +79 -0
  2. package/README.md +48 -1
  3. package/generate-sdk.js +8 -6
  4. package/package.json +26 -6
  5. package/src/abi/interface.d.ts +133 -128
  6. package/src/abi/js-abi-coder.d.ts +8 -8
  7. package/src/constants.d.ts +61 -61
  8. package/src/contract/contract-factory.d.ts +28 -28
  9. package/src/contract/contract.d.ts +121 -113
  10. package/src/contract/index.d.ts +1 -0
  11. package/src/errors/index.d.ts +10 -2
  12. package/src/errors/index.js +1 -1
  13. package/src/generator/index.d.ts +109 -81
  14. package/src/index.d.ts +128 -123
  15. package/src/internal/event-emitter.d.ts +76 -0
  16. package/src/internal/event-emitter.js +144 -0
  17. package/src/internal/hex.d.ts +27 -4
  18. package/src/internal/hex.js +7 -3
  19. package/src/providers/extra-providers.d.ts +141 -139
  20. package/src/providers/extra-providers.js +15 -1
  21. package/src/providers/index.d.ts +18 -18
  22. package/src/providers/json-rpc-provider.d.ts +1 -0
  23. package/src/providers/provider.d.ts +233 -222
  24. package/src/providers/provider.js +1 -1
  25. package/src/utils/encoding.js +16 -4
  26. package/src/utils/fixednumber.d.ts +57 -57
  27. package/src/utils/hashing.d.ts +97 -76
  28. package/src/utils/hashing.js +95 -177
  29. package/src/utils/index.d.ts +2 -1
  30. package/src/utils/rlp.js +1 -1
  31. package/src/wallet/index.d.ts +1 -0
  32. package/src/wallet/wallet.d.ts +85 -29
  33. package/src/wallet/wallet.js +114 -4
  34. package/.github/workflows/publish-npmjs.yaml +0 -22
  35. package/.gitignore +0 -15
  36. package/examples/AllSolidityTypes.sol +0 -184
  37. package/examples/SimpleIERC20.sol +0 -74
  38. package/examples/events.js +0 -41
  39. package/examples/events.ts +0 -35
  40. package/examples/example-generated-sdk-js/README.md +0 -65
  41. package/examples/example-generated-sdk-js/examples/_test-wallet.js +0 -17
  42. package/examples/example-generated-sdk-js/examples/deploy.js +0 -41
  43. package/examples/example-generated-sdk-js/examples/events.js +0 -36
  44. package/examples/example-generated-sdk-js/examples/read-operations.js +0 -46
  45. package/examples/example-generated-sdk-js/examples/write-operations.js +0 -44
  46. package/examples/example-generated-sdk-js/index.d.ts +0 -1
  47. package/examples/example-generated-sdk-js/index.js +0 -15
  48. package/examples/example-generated-sdk-js/package-lock.json +0 -59
  49. package/examples/example-generated-sdk-js/package.json +0 -22
  50. package/examples/example-generated-sdk-js/src/SimpleERC20.d.ts +0 -19
  51. package/examples/example-generated-sdk-js/src/SimpleERC20.js +0 -353
  52. package/examples/example-generated-sdk-js/src/SimpleERC20__factory.d.ts +0 -10
  53. package/examples/example-generated-sdk-js/src/SimpleERC20__factory.js +0 -29
  54. package/examples/example-generated-sdk-js/src/index.d.ts +0 -4
  55. package/examples/example-generated-sdk-js/src/index.js +0 -5
  56. package/examples/example-generated-sdk-js/src/quantumcoin-shims.d.ts +0 -23
  57. package/examples/example-generated-sdk-js/src/types.d.ts +0 -3
  58. package/examples/example-generated-sdk-js/src/types.js +0 -3
  59. package/examples/example-generated-sdk-js/test/e2e/SimpleERC20.e2e.test.js +0 -78
  60. package/examples/example-generated-sdk-ts/README.md +0 -65
  61. package/examples/example-generated-sdk-ts/examples/_test-wallet.js +0 -17
  62. package/examples/example-generated-sdk-ts/examples/deploy.js +0 -41
  63. package/examples/example-generated-sdk-ts/examples/events.js +0 -36
  64. package/examples/example-generated-sdk-ts/examples/read-operations.js +0 -46
  65. package/examples/example-generated-sdk-ts/examples/write-operations.js +0 -44
  66. package/examples/example-generated-sdk-ts/index.d.ts +0 -1
  67. package/examples/example-generated-sdk-ts/index.js +0 -15
  68. package/examples/example-generated-sdk-ts/package-lock.json +0 -59
  69. package/examples/example-generated-sdk-ts/package.json +0 -23
  70. package/examples/example-generated-sdk-ts/src/SimpleERC20.ts +0 -334
  71. package/examples/example-generated-sdk-ts/src/SimpleERC20__factory.ts +0 -28
  72. package/examples/example-generated-sdk-ts/src/index.ts +0 -4
  73. package/examples/example-generated-sdk-ts/src/quantumcoin-shims.d.ts +0 -23
  74. package/examples/example-generated-sdk-ts/src/types.ts +0 -4
  75. package/examples/example-generated-sdk-ts/test/e2e/SimpleERC20.e2e.test.js +0 -78
  76. package/examples/example-generated-sdk-ts/tsconfig.json +0 -14
  77. package/examples/example-generator-sdk-js.js +0 -100
  78. package/examples/example-generator-sdk-js.ts +0 -77
  79. package/examples/example-generator-sdk-ts.js +0 -100
  80. package/examples/example-generator-sdk-ts.ts +0 -77
  81. package/examples/example.js +0 -67
  82. package/examples/example.ts +0 -56
  83. package/examples/node_modules/.bin/esbuild +0 -16
  84. package/examples/node_modules/.bin/esbuild.cmd +0 -17
  85. package/examples/node_modules/.bin/esbuild.ps1 +0 -28
  86. package/examples/node_modules/.bin/sdkgen +0 -16
  87. package/examples/node_modules/.bin/sdkgen.cmd +0 -17
  88. package/examples/node_modules/.bin/sdkgen.ps1 +0 -28
  89. package/examples/node_modules/.bin/tsx +0 -16
  90. package/examples/node_modules/.bin/tsx.cmd +0 -17
  91. package/examples/node_modules/.bin/tsx.ps1 +0 -28
  92. package/examples/node_modules/.package-lock.json +0 -144
  93. package/examples/node_modules/@esbuild/win32-x64/README.md +0 -3
  94. package/examples/node_modules/@esbuild/win32-x64/esbuild.exe +0 -0
  95. package/examples/node_modules/@esbuild/win32-x64/package.json +0 -20
  96. package/examples/node_modules/esbuild/LICENSE.md +0 -21
  97. package/examples/node_modules/esbuild/README.md +0 -3
  98. package/examples/node_modules/esbuild/bin/esbuild +0 -223
  99. package/examples/node_modules/esbuild/install.js +0 -289
  100. package/examples/node_modules/esbuild/lib/main.d.ts +0 -716
  101. package/examples/node_modules/esbuild/lib/main.js +0 -2532
  102. package/examples/node_modules/esbuild/package.json +0 -49
  103. package/examples/node_modules/get-tsconfig/LICENSE +0 -21
  104. package/examples/node_modules/get-tsconfig/README.md +0 -235
  105. package/examples/node_modules/get-tsconfig/dist/index.cjs +0 -7
  106. package/examples/node_modules/get-tsconfig/dist/index.d.cts +0 -2088
  107. package/examples/node_modules/get-tsconfig/dist/index.d.mts +0 -2088
  108. package/examples/node_modules/get-tsconfig/dist/index.mjs +0 -7
  109. package/examples/node_modules/get-tsconfig/package.json +0 -46
  110. package/examples/node_modules/quantum-coin-js-sdk/LICENSE +0 -21
  111. package/examples/node_modules/quantum-coin-js-sdk/LICENSE-wasm_exec.js.txt +0 -30
  112. package/examples/node_modules/quantum-coin-js-sdk/README.md +0 -1689
  113. package/examples/node_modules/quantum-coin-js-sdk/example/README.md +0 -14
  114. package/examples/node_modules/quantum-coin-js-sdk/example/conversion-example.js +0 -19
  115. package/examples/node_modules/quantum-coin-js-sdk/example/example-create-contract.js +0 -396
  116. package/examples/node_modules/quantum-coin-js-sdk/example/example-encode-decode-rlp.js +0 -225
  117. package/examples/node_modules/quantum-coin-js-sdk/example/example-event-pack-unpack.js +0 -391
  118. package/examples/node_modules/quantum-coin-js-sdk/example/example-misc.js +0 -100
  119. package/examples/node_modules/quantum-coin-js-sdk/example/example-rpc-send-signRawTransaction.js +0 -318
  120. package/examples/node_modules/quantum-coin-js-sdk/example/example-rpc-send.js +0 -115
  121. package/examples/node_modules/quantum-coin-js-sdk/example/example-send.js +0 -69
  122. package/examples/node_modules/quantum-coin-js-sdk/example/example-token-pack-unpack.js +0 -960
  123. package/examples/node_modules/quantum-coin-js-sdk/example/example-wallet-version4.js +0 -34
  124. package/examples/node_modules/quantum-coin-js-sdk/example/example-wallet.js +0 -43
  125. package/examples/node_modules/quantum-coin-js-sdk/example/example.js +0 -405
  126. package/examples/node_modules/quantum-coin-js-sdk/example/package-lock.json +0 -56
  127. package/examples/node_modules/quantum-coin-js-sdk/example/package.json +0 -15
  128. package/examples/node_modules/quantum-coin-js-sdk/index.d.ts +0 -1047
  129. package/examples/node_modules/quantum-coin-js-sdk/index.js +0 -3182
  130. package/examples/node_modules/quantum-coin-js-sdk/package.json +0 -34
  131. package/examples/node_modules/quantum-coin-js-sdk/tests/encrypted-32.json +0 -1
  132. package/examples/node_modules/quantum-coin-js-sdk/tests/encrypted-36.json +0 -1
  133. package/examples/node_modules/quantum-coin-js-sdk/tests/encrypted-48.json +0 -1
  134. package/examples/node_modules/quantum-coin-js-sdk/tests/generate-verify-vectors.js +0 -91
  135. package/examples/node_modules/quantum-coin-js-sdk/tests/get-gas-price.test.js +0 -59
  136. package/examples/node_modules/quantum-coin-js-sdk/tests/non-transactional.preinit.test.js +0 -41
  137. package/examples/node_modules/quantum-coin-js-sdk/tests/non-transactional.test.js +0 -1389
  138. package/examples/node_modules/quantum-coin-js-sdk/tests/sign-raw-keytype5-context-null.test.js +0 -107
  139. package/examples/node_modules/quantum-coin-js-sdk/tests/sign-raw-transaction.test.js +0 -196
  140. package/examples/node_modules/quantum-coin-js-sdk/tests/sign-verify.test.js +0 -311
  141. package/examples/node_modules/quantum-coin-js-sdk/tests/transactional.relay.test.js +0 -131
  142. package/examples/node_modules/quantum-coin-js-sdk/tests/transactional.rpc.test.js +0 -103
  143. package/examples/node_modules/quantum-coin-js-sdk/tests/verify-vectors.json +0 -95035
  144. package/examples/node_modules/quantum-coin-js-sdk/wasmBase64.d.ts +0 -9
  145. package/examples/node_modules/quantum-coin-js-sdk/wasmBase64.js +0 -16
  146. package/examples/node_modules/quantum-coin-js-sdk/wasm_exec.d.ts +0 -0
  147. package/examples/node_modules/quantum-coin-js-sdk/wasm_exec.js +0 -587
  148. package/examples/node_modules/resolve-pkg-maps/LICENSE +0 -21
  149. package/examples/node_modules/resolve-pkg-maps/README.md +0 -216
  150. package/examples/node_modules/resolve-pkg-maps/dist/index.cjs +0 -1
  151. package/examples/node_modules/resolve-pkg-maps/dist/index.d.cts +0 -11
  152. package/examples/node_modules/resolve-pkg-maps/dist/index.d.mts +0 -11
  153. package/examples/node_modules/resolve-pkg-maps/dist/index.mjs +0 -1
  154. package/examples/node_modules/resolve-pkg-maps/package.json +0 -42
  155. package/examples/node_modules/seed-words/.github/workflows/publish-npmjs.yaml +0 -22
  156. package/examples/node_modules/seed-words/BUILD.md +0 -7
  157. package/examples/node_modules/seed-words/LICENSE +0 -121
  158. package/examples/node_modules/seed-words/README.md +0 -67
  159. package/examples/node_modules/seed-words/dist/seedwords.d.ts +0 -39
  160. package/examples/node_modules/seed-words/package.json +0 -27
  161. package/examples/node_modules/seed-words/seedwords.js +0 -315
  162. package/examples/node_modules/seed-words/seedwords.txt +0 -65536
  163. package/examples/node_modules/seed-words/tsconfig.json +0 -21
  164. package/examples/node_modules/tsx/LICENSE +0 -21
  165. package/examples/node_modules/tsx/README.md +0 -32
  166. package/examples/node_modules/tsx/dist/cjs/api/index.cjs +0 -1
  167. package/examples/node_modules/tsx/dist/cjs/api/index.d.cts +0 -35
  168. package/examples/node_modules/tsx/dist/cjs/api/index.d.mts +0 -35
  169. package/examples/node_modules/tsx/dist/cjs/api/index.mjs +0 -1
  170. package/examples/node_modules/tsx/dist/cjs/index.cjs +0 -1
  171. package/examples/node_modules/tsx/dist/cjs/index.mjs +0 -1
  172. package/examples/node_modules/tsx/dist/cli.cjs +0 -54
  173. package/examples/node_modules/tsx/dist/cli.mjs +0 -55
  174. package/examples/node_modules/tsx/dist/client-BQVF1NaW.mjs +0 -1
  175. package/examples/node_modules/tsx/dist/client-D6NvIMSC.cjs +0 -1
  176. package/examples/node_modules/tsx/dist/esm/api/index.cjs +0 -1
  177. package/examples/node_modules/tsx/dist/esm/api/index.d.cts +0 -35
  178. package/examples/node_modules/tsx/dist/esm/api/index.d.mts +0 -35
  179. package/examples/node_modules/tsx/dist/esm/api/index.mjs +0 -1
  180. package/examples/node_modules/tsx/dist/esm/index.cjs +0 -2
  181. package/examples/node_modules/tsx/dist/esm/index.mjs +0 -2
  182. package/examples/node_modules/tsx/dist/get-pipe-path-BHW2eJdv.mjs +0 -1
  183. package/examples/node_modules/tsx/dist/get-pipe-path-BoR10qr8.cjs +0 -1
  184. package/examples/node_modules/tsx/dist/index-7AaEi15b.mjs +0 -14
  185. package/examples/node_modules/tsx/dist/index-BWFBUo6r.cjs +0 -1
  186. package/examples/node_modules/tsx/dist/index-gbaejti9.mjs +0 -1
  187. package/examples/node_modules/tsx/dist/index-gckBtVBf.cjs +0 -14
  188. package/examples/node_modules/tsx/dist/lexer-DQCqS3nf.mjs +0 -3
  189. package/examples/node_modules/tsx/dist/lexer-DgIbo0BU.cjs +0 -3
  190. package/examples/node_modules/tsx/dist/loader.cjs +0 -1
  191. package/examples/node_modules/tsx/dist/loader.mjs +0 -1
  192. package/examples/node_modules/tsx/dist/node-features-_8ZFwP_x.mjs +0 -1
  193. package/examples/node_modules/tsx/dist/node-features-roYmp9jK.cjs +0 -1
  194. package/examples/node_modules/tsx/dist/package-CeBgXWuR.mjs +0 -1
  195. package/examples/node_modules/tsx/dist/package-Dxt5kIHw.cjs +0 -1
  196. package/examples/node_modules/tsx/dist/patch-repl.cjs +0 -1
  197. package/examples/node_modules/tsx/dist/patch-repl.mjs +0 -1
  198. package/examples/node_modules/tsx/dist/preflight.cjs +0 -1
  199. package/examples/node_modules/tsx/dist/preflight.mjs +0 -1
  200. package/examples/node_modules/tsx/dist/register-2sWVXuRQ.cjs +0 -1
  201. package/examples/node_modules/tsx/dist/register-B7jrtLTO.mjs +0 -1
  202. package/examples/node_modules/tsx/dist/register-CFH5oNdT.mjs +0 -4
  203. package/examples/node_modules/tsx/dist/register-D46fvsV_.cjs +0 -4
  204. package/examples/node_modules/tsx/dist/repl.cjs +0 -3
  205. package/examples/node_modules/tsx/dist/repl.mjs +0 -3
  206. package/examples/node_modules/tsx/dist/require-D4F1Lv60.cjs +0 -1
  207. package/examples/node_modules/tsx/dist/require-DQxpCAr4.mjs +0 -1
  208. package/examples/node_modules/tsx/dist/suppress-warnings.cjs +0 -1
  209. package/examples/node_modules/tsx/dist/suppress-warnings.mjs +0 -1
  210. package/examples/node_modules/tsx/dist/temporary-directory-B83uKxJF.cjs +0 -1
  211. package/examples/node_modules/tsx/dist/temporary-directory-CwHp0_NW.mjs +0 -1
  212. package/examples/node_modules/tsx/dist/types-Cxp8y2TL.d.ts +0 -5
  213. package/examples/node_modules/tsx/package.json +0 -68
  214. package/examples/offline-signing.js +0 -77
  215. package/examples/offline-signing.ts +0 -65
  216. package/examples/package-lock.json +0 -596
  217. package/examples/package.json +0 -32
  218. package/examples/read-operations.js +0 -32
  219. package/examples/read-operations.ts +0 -31
  220. package/examples/sdk-generator-erc20.inline.json +0 -251
  221. package/examples/solidity-types.ts +0 -43
  222. package/examples/wallet-offline.js +0 -36
  223. package/examples/wallet-offline.ts +0 -26
  224. package/scripts/copy-declarations.js +0 -31
  225. package/scripts/run-all-one-by-one.js +0 -151
  226. package/test/e2e/all-solidity-types.dynamic.test.js +0 -207
  227. package/test/e2e/all-solidity-types.dynamic.test.ts +0 -191
  228. package/test/e2e/all-solidity-types.fixtures.js +0 -231
  229. package/test/e2e/all-solidity-types.generated-sdks.e2e.test.js +0 -387
  230. package/test/e2e/all-solidity-types.generated-sdks.e2e.test.ts +0 -350
  231. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/README.md +0 -83
  232. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/artifacts/AllSolidityTypes.abi.json +0 -12544
  233. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/artifacts/AllSolidityTypes.bin +0 -1
  234. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/_test-wallet.js +0 -17
  235. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/_test-wallet.ts +0 -10
  236. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/deploy.js +0 -41
  237. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/deploy.ts +0 -41
  238. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/events.js +0 -36
  239. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/events.ts +0 -36
  240. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/offline-signing.js +0 -82
  241. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/offline-signing.ts +0 -80
  242. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/read-operations.js +0 -46
  243. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/read-operations.ts +0 -44
  244. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/write-operations.js +0 -44
  245. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/write-operations.ts +0 -44
  246. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/index.d.ts +0 -1
  247. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/index.js +0 -21
  248. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/package-lock.json +0 -597
  249. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/package.json +0 -25
  250. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes.d.ts +0 -1280
  251. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes.js +0 -14021
  252. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes__factory.d.ts +0 -11
  253. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes__factory.js +0 -31
  254. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/index.d.ts +0 -4
  255. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/index.js +0 -5
  256. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/quantumcoin-shims.d.ts +0 -25
  257. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/types.d.ts +0 -3
  258. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/types.js +0 -3
  259. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/test/e2e/AllSolidityTypes.e2e.test.js +0 -77
  260. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/test/e2e/AllSolidityTypes.extra.test.js +0 -195
  261. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/README.md +0 -83
  262. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/artifacts/AllSolidityTypes.abi.json +0 -12544
  263. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/artifacts/AllSolidityTypes.bin +0 -1
  264. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/_test-wallet.js +0 -17
  265. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/_test-wallet.ts +0 -10
  266. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/deploy.js +0 -41
  267. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/deploy.ts +0 -41
  268. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/events.js +0 -36
  269. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/events.ts +0 -36
  270. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/offline-signing.js +0 -82
  271. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/offline-signing.ts +0 -80
  272. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/read-operations.js +0 -46
  273. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/read-operations.ts +0 -44
  274. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/write-operations.js +0 -44
  275. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/write-operations.ts +0 -44
  276. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/index.d.ts +0 -1
  277. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/index.js +0 -21
  278. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/package-lock.json +0 -597
  279. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/package.json +0 -26
  280. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/AllSolidityTypes.ts +0 -13940
  281. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/AllSolidityTypes__factory.ts +0 -31
  282. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/index.ts +0 -4
  283. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/quantumcoin-shims.d.ts +0 -25
  284. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/types.ts +0 -4
  285. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/test/e2e/AllSolidityTypes.e2e.test.js +0 -77
  286. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/test/e2e/AllSolidityTypes.extra.test.js +0 -195
  287. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/tsconfig.json +0 -18
  288. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/README.md +0 -74
  289. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/artifacts/SimpleERC20.abi.json +0 -245
  290. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/artifacts/SimpleERC20.bin +0 -1
  291. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/_test-wallet.js +0 -17
  292. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/_test-wallet.ts +0 -10
  293. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/deploy.js +0 -41
  294. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/deploy.ts +0 -41
  295. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/events.js +0 -36
  296. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/events.ts +0 -36
  297. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/offline-signing.js +0 -82
  298. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/offline-signing.ts +0 -80
  299. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/read-operations.js +0 -46
  300. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/read-operations.ts +0 -44
  301. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/write-operations.js +0 -44
  302. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/write-operations.ts +0 -44
  303. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/index.d.ts +0 -1
  304. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/index.js +0 -16
  305. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/package-lock.json +0 -597
  306. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/package.json +0 -25
  307. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20.d.ts +0 -24
  308. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20.js +0 -378
  309. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20__factory.d.ts +0 -10
  310. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20__factory.js +0 -31
  311. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/index.d.ts +0 -4
  312. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/index.js +0 -5
  313. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/quantumcoin-shims.d.ts +0 -25
  314. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/types.d.ts +0 -3
  315. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/types.js +0 -3
  316. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/test/e2e/SimpleERC20.e2e.test.js +0 -90
  317. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/README.md +0 -74
  318. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/artifacts/SimpleERC20.abi.json +0 -245
  319. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/artifacts/SimpleERC20.bin +0 -1
  320. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/_test-wallet.js +0 -17
  321. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/_test-wallet.ts +0 -10
  322. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/deploy.js +0 -41
  323. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/deploy.ts +0 -41
  324. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/events.js +0 -36
  325. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/events.ts +0 -36
  326. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/offline-signing.js +0 -82
  327. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/offline-signing.ts +0 -80
  328. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/read-operations.js +0 -46
  329. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/read-operations.ts +0 -44
  330. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/write-operations.js +0 -44
  331. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/write-operations.ts +0 -44
  332. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/index.d.ts +0 -1
  333. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/index.js +0 -16
  334. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/package-lock.json +0 -597
  335. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/package.json +0 -26
  336. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/SimpleERC20.ts +0 -361
  337. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/SimpleERC20__factory.ts +0 -30
  338. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/index.ts +0 -4
  339. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/quantumcoin-shims.d.ts +0 -25
  340. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/types.ts +0 -4
  341. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/test/e2e/SimpleERC20.e2e.test.js +0 -90
  342. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/tsconfig.json +0 -18
  343. package/test/e2e/generator-interface.e2e.test.js +0 -165
  344. package/test/e2e/generator-interface.e2e.test.ts +0 -160
  345. package/test/e2e/helpers.js +0 -59
  346. package/test/e2e/signing-context-and-fee.e2e.test.js +0 -141
  347. package/test/e2e/signing-context-and-fee.e2e.test.ts +0 -128
  348. package/test/e2e/simple-erc20.generated-sdks.e2e.test.js +0 -168
  349. package/test/e2e/simple-erc20.generated-sdks.e2e.test.ts +0 -141
  350. package/test/e2e/transactional.test.js +0 -245
  351. package/test/e2e/transactional.test.ts +0 -208
  352. package/test/e2e/typed-generator.e2e.test.js +0 -407
  353. package/test/e2e/typed-generator.e2e.test.ts +0 -337
  354. package/test/fixtures/ConstructorParam.sol +0 -23
  355. package/test/fixtures/MultiContracts.sol +0 -37
  356. package/test/fixtures/SimpleStorage.sol +0 -18
  357. package/test/fixtures/StakingContract.abi.json +0 -1
  358. package/test/integration/ipc-provider.test.js +0 -49
  359. package/test/integration/ipc-provider.test.ts +0 -44
  360. package/test/integration/provider.test.js +0 -88
  361. package/test/integration/provider.test.ts +0 -85
  362. package/test/integration/ws-provider.test.js +0 -41
  363. package/test/integration/ws-provider.test.ts +0 -38
  364. package/test/security/abi-decoder-bounds.test.js +0 -122
  365. package/test/security/contract-overrides.test.js +0 -112
  366. package/test/security/generator-injection.test.js +0 -195
  367. package/test/security/malformed-input.test.js +0 -330
  368. package/test/security/malformed-input.test.ts +0 -35
  369. package/test/security/rpc-numeric-bounds.test.js +0 -81
  370. package/test/security/rpc-trust.test.js +0 -202
  371. package/test/unit/_encrypted-output.txt +0 -6
  372. package/test/unit/_log-encrypted-jsons.js +0 -45
  373. package/test/unit/_write-keystore-fixture.js +0 -16
  374. package/test/unit/abi-interface.test.js +0 -110
  375. package/test/unit/abi-interface.test.ts +0 -109
  376. package/test/unit/address-wallet.test.js +0 -945
  377. package/test/unit/address-wallet.test.ts +0 -899
  378. package/test/unit/browser-provider.test.js +0 -85
  379. package/test/unit/browser-provider.test.ts +0 -79
  380. package/test/unit/contract.test.js +0 -85
  381. package/test/unit/contract.test.ts +0 -83
  382. package/test/unit/encoding-units-rlp.test.js +0 -127
  383. package/test/unit/encoding-units-rlp.test.ts +0 -91
  384. package/test/unit/errors.test.js +0 -77
  385. package/test/unit/errors.test.ts +0 -76
  386. package/test/unit/filter-by-blockhash.test.js +0 -55
  387. package/test/unit/filter-by-blockhash.test.ts +0 -54
  388. package/test/unit/fixednumber.test.js +0 -656
  389. package/test/unit/fixednumber.test.ts +0 -660
  390. package/test/unit/fixtures/encrypted-keystores-48-32-36.js +0 -9
  391. package/test/unit/generate-contract-cli.test.js +0 -42
  392. package/test/unit/generate-contract-cli.test.ts +0 -41
  393. package/test/unit/generate-sdk-artifacts-json.test.js +0 -113
  394. package/test/unit/generate-sdk-artifacts-json.test.ts +0 -110
  395. package/test/unit/generator.test.js +0 -149
  396. package/test/unit/generator.test.ts +0 -148
  397. package/test/unit/hashing.test.js +0 -64
  398. package/test/unit/hashing.test.ts +0 -63
  399. package/test/unit/init.test.js +0 -39
  400. package/test/unit/init.test.ts +0 -38
  401. package/test/unit/interface.test.js +0 -56
  402. package/test/unit/interface.test.ts +0 -54
  403. package/test/unit/internal-hex.test.js +0 -81
  404. package/test/unit/internal-hex.test.ts +0 -80
  405. package/test/unit/populate-transaction.test.js +0 -98
  406. package/test/unit/populate-transaction.test.ts +0 -64
  407. package/test/unit/providers.test.js +0 -305
  408. package/test/unit/providers.test.ts +0 -304
  409. package/test/unit/result.test.js +0 -80
  410. package/test/unit/result.test.ts +0 -79
  411. package/test/unit/solidity-types.test.js +0 -49
  412. package/test/unit/solidity-types.test.ts +0 -39
  413. package/test/unit/utils.test.js +0 -57
  414. package/test/unit/utils.test.ts +0 -56
  415. package/test/verbose-logger.js +0 -74
  416. package/tsconfig.build.json +0 -14
@@ -1,76 +1,97 @@
1
- /**
2
- * keccak256 hash of BytesLike.
3
- * @param {string|Uint8Array} data
4
- * @returns {string}
5
- */
6
- export function keccak256(data: string | Uint8Array): string;
7
- /**
8
- * sha256 hash of BytesLike.
9
- * @param {string|Uint8Array} data
10
- * @returns {string}
11
- */
12
- export function sha256(data: string | Uint8Array): string;
13
- /**
14
- * sha512 hash of BytesLike.
15
- * @param {string|Uint8Array} data
16
- * @returns {string}
17
- */
18
- export function sha512(data: string | Uint8Array): string;
19
- /**
20
- * ripemd160 hash of BytesLike.
21
- * @param {string|Uint8Array} data
22
- * @returns {string}
23
- */
24
- export function ripemd160(data: string | Uint8Array): string;
25
- /**
26
- * ethers-style id(text) => keccak256(utf8Bytes(text))
27
- * @param {string} text
28
- * @returns {string}
29
- */
30
- export function id(text: string): string;
31
- /**
32
- * Generate cryptographically strong random bytes.
33
- * @param {number} length
34
- * @returns {Uint8Array}
35
- */
36
- export function randomBytes(length: number): Uint8Array;
37
- /**
38
- * Compute HMAC over data.
39
- * @param {string} algorithm
40
- * @param {string|Uint8Array} key
41
- * @param {string|Uint8Array} data
42
- * @returns {string}
43
- */
44
- export function computeHmac(algorithm: string, key: string | Uint8Array, data: string | Uint8Array): string;
45
- /**
46
- * PBKDF2 (sync) helper returning hex string.
47
- * @param {string|Uint8Array} password
48
- * @param {string|Uint8Array} salt
49
- * @param {number} iterations
50
- * @param {number} keylen
51
- * @param {string=} algorithm
52
- * @returns {string}
53
- */
54
- export function pbkdf2(password: string | Uint8Array, salt: string | Uint8Array, iterations: number, keylen: number, algorithm?: string | undefined): string;
55
- /**
56
- * scrypt (async) helper returning hex string.
57
- * @param {string|Uint8Array} password
58
- * @param {string|Uint8Array} salt
59
- * @param {number} N
60
- * @param {number} r
61
- * @param {number} p
62
- * @param {number} dkLen
63
- * @returns {Promise<string>}
64
- */
65
- export function scrypt(password: string | Uint8Array, salt: string | Uint8Array, N: number, r: number, p: number, dkLen: number): Promise<string>;
66
- /**
67
- * scrypt (sync) helper returning hex string.
68
- * @param {string|Uint8Array} password
69
- * @param {string|Uint8Array} salt
70
- * @param {number} N
71
- * @param {number} r
72
- * @param {number} p
73
- * @param {number} dkLen
74
- * @returns {string}
75
- */
76
- export function scryptSync(password: string | Uint8Array, salt: string | Uint8Array, N: number, r: number, p: number, dkLen: number): string;
1
+ /**
2
+ * keccak256 hash of BytesLike.
3
+ * @param {string|Uint8Array} data
4
+ * @returns {string}
5
+ */
6
+ export function keccak256(data: string | Uint8Array): string;
7
+ /**
8
+ * sha256 hash of BytesLike.
9
+ * @param {string|Uint8Array} data
10
+ * @returns {string}
11
+ */
12
+ export function sha256(data: string | Uint8Array): string;
13
+ /**
14
+ * sha512 hash of BytesLike.
15
+ * @param {string|Uint8Array} data
16
+ * @returns {string}
17
+ */
18
+ export function sha512(data: string | Uint8Array): string;
19
+ /**
20
+ * ripemd160 hash of BytesLike.
21
+ * @param {string|Uint8Array} data
22
+ * @returns {string}
23
+ */
24
+ export function ripemd160(data: string | Uint8Array): string;
25
+ /**
26
+ * ethers-style id(text) => keccak256(utf8Bytes(text))
27
+ * @param {string} text
28
+ * @returns {string}
29
+ */
30
+ export function id(text: string): string;
31
+ /**
32
+ * Compute the EIP-191 "personal message" digest for a message.
33
+ *
34
+ * QuantumCoin uses the exact same prefix as Ethereum, so this is byte-for-byte
35
+ * compatible with `personal_sign` in `quantum-coin-go`:
36
+ *
37
+ * keccak256("\x19Ethereum Signed Message:\n" + message.length + message)
38
+ *
39
+ * The resulting 32-byte hash is the digest passed to `Wallet.signMessage` /
40
+ * `Wallet.signMessageSync` and re-derived by `verifyMessage`. The decimal length
41
+ * prefix counts message BYTES, not characters. A string message is UTF-8
42
+ * encoded; a Uint8Array (or 0x hex string coerced via `arrayify`) is treated as
43
+ * raw bytes.
44
+ *
45
+ * @param {string|Uint8Array} message The message to hash. Strings are UTF-8 encoded.
46
+ * @returns {string} 0x-prefixed, 32-byte keccak256 digest.
47
+ */
48
+ export function hashMessage(message: string | Uint8Array): string;
49
+ /**
50
+ * Generate cryptographically strong random bytes.
51
+ *
52
+ * Uses the platform Web Crypto API (`globalThis.crypto`), which is available in
53
+ * modern browsers and Node.js 20+.
54
+ * @param {number} length
55
+ * @returns {Uint8Array}
56
+ */
57
+ export function randomBytes(length: number): Uint8Array;
58
+ /**
59
+ * Compute HMAC over data.
60
+ * @param {string} algorithm "sha256" or "sha512"
61
+ * @param {string|Uint8Array} key
62
+ * @param {string|Uint8Array} data
63
+ * @returns {string}
64
+ */
65
+ export function computeHmac(algorithm: string, key: string | Uint8Array, data: string | Uint8Array): string;
66
+ /**
67
+ * PBKDF2 (sync) helper returning hex string.
68
+ * @param {string|Uint8Array} password
69
+ * @param {string|Uint8Array} salt
70
+ * @param {number} iterations
71
+ * @param {number} keylen
72
+ * @param {string=} algorithm "sha256" (default) or "sha512"
73
+ * @returns {string}
74
+ */
75
+ export function pbkdf2(password: string | Uint8Array, salt: string | Uint8Array, iterations: number, keylen: number, algorithm?: string | undefined): string;
76
+ /**
77
+ * scrypt (async) helper returning hex string.
78
+ * @param {string|Uint8Array} password
79
+ * @param {string|Uint8Array} salt
80
+ * @param {number} N
81
+ * @param {number} r
82
+ * @param {number} p
83
+ * @param {number} dkLen
84
+ * @returns {Promise<string>}
85
+ */
86
+ export function scrypt(password: string | Uint8Array, salt: string | Uint8Array, N: number, r: number, p: number, dkLen: number): Promise<string>;
87
+ /**
88
+ * scrypt (sync) helper returning hex string.
89
+ * @param {string|Uint8Array} password
90
+ * @param {string|Uint8Array} salt
91
+ * @param {number} N
92
+ * @param {number} r
93
+ * @param {number} p
94
+ * @param {number} dkLen
95
+ * @returns {string}
96
+ */
97
+ export function scryptSync(password: string | Uint8Array, salt: string | Uint8Array, N: number, r: number, p: number, dkLen: number): string;
@@ -1,145 +1,43 @@
1
1
  /**
2
2
  * @fileoverview Hash utilities (ethers.js v6 compatible names).
3
3
  *
4
- * Where possible, we use Node's built-in crypto module. For keccak256,
5
- * we prefer a native OpenSSL implementation if available, otherwise we
6
- * fall back to a small pure-JS Keccak-256 implementation.
4
+ * All cryptographic primitives are provided by `quantum-coin-js-sdk`, which
5
+ * runs in both Node.js and modern browsers (WebAssembly + Web Crypto). This
6
+ * keeps the SDK platform agnostic and free of Node's built-in `crypto` module.
7
+ *
8
+ * NOTE: The underlying primitives require the SDK to be initialized. Call
9
+ * `Initialize()` (see the `quantumcoin/config` module) before using these
10
+ * helpers, otherwise a `NOT_INITIALIZED` error is thrown.
7
11
  */
8
12
 
9
- const crypto = require("crypto");
13
+ const qcsdk = require("quantum-coin-js-sdk");
10
14
  const { arrayify, bytesToHex, utf8ToBytes } = require("../internal/hex");
15
+ const { makeError } = require("../errors");
11
16
 
12
- const _MASK64 = (1n << 64n) - 1n;
13
-
14
- function _rotl64(x, n) {
15
- const nn = BigInt(n);
16
- return ((x << nn) | (x >> (64n - nn))) & _MASK64;
17
- }
18
-
19
- function _readU64LE(bytes, off) {
20
- let x = 0n;
21
- for (let i = 0; i < 8; i++) {
22
- x |= BigInt(bytes[off + i]) << (8n * BigInt(i));
23
- }
24
- return x;
25
- }
26
-
27
- function _writeU64LE(out, off, x) {
28
- let v = x & _MASK64;
29
- for (let i = 0; i < 8; i++) {
30
- out[off + i] = Number((v >> (8n * BigInt(i))) & 0xffn);
31
- }
32
- }
33
-
34
- // Keccak-f[1600] round constants
35
- const _RC = [
36
- 0x0000000000000001n, 0x0000000000008082n, 0x800000000000808an, 0x8000000080008000n,
37
- 0x000000000000808bn, 0x0000000080000001n, 0x8000000080008081n, 0x8000000000008009n,
38
- 0x000000000000008an, 0x0000000000000088n, 0x0000000080008009n, 0x000000008000000an,
39
- 0x000000008000808bn, 0x800000000000008bn, 0x8000000000008089n, 0x8000000000008003n,
40
- 0x8000000000008002n, 0x8000000000000080n, 0x000000000000800an, 0x800000008000000an,
41
- 0x8000000080008081n, 0x8000000000008080n, 0x0000000080000001n, 0x8000000080008008n,
42
- ];
43
-
44
- // Rotation offsets (rho step)
45
- const _R = [
46
- // Indexed by lane index (x + 5*y) where x,y in [0..4]
47
- // (This is the standard Keccak rho offsets table, flattened in y-major order.)
48
- 0, 1, 62, 28, 27,
49
- 36, 44, 6, 55, 20,
50
- 3, 10, 43, 25, 39,
51
- 41, 45, 15, 21, 8,
52
- 18, 2, 61, 56, 14,
53
- ];
54
-
55
- // Pi step mapping: index -> newIndex
56
- const _PI = [
57
- 0, 10, 20, 5, 15,
58
- 16, 1, 11, 21, 6,
59
- 7, 17, 2, 12, 22,
60
- 23, 8, 18, 3, 13,
61
- 14, 24, 9, 19, 4,
62
- ];
63
-
64
- function _keccakF1600(state) {
65
- const b = new Array(25);
66
- const c = new Array(5);
67
- const d = new Array(5);
68
-
69
- for (let round = 0; round < 24; round++) {
70
- // Theta
71
- for (let x = 0; x < 5; x++) {
72
- c[x] = state[x] ^ state[x + 5] ^ state[x + 10] ^ state[x + 15] ^ state[x + 20];
73
- }
74
- for (let x = 0; x < 5; x++) {
75
- d[x] = c[(x + 4) % 5] ^ _rotl64(c[(x + 1) % 5], 1);
76
- }
77
- for (let i = 0; i < 25; i++) {
78
- state[i] = (state[i] ^ d[i % 5]) & _MASK64;
79
- }
80
-
81
- // Rho + Pi
82
- for (let i = 0; i < 25; i++) {
83
- b[_PI[i]] = _rotl64(state[i], _R[i]);
84
- }
85
-
86
- // Chi
87
- for (let y = 0; y < 5; y++) {
88
- const row = y * 5;
89
- for (let x = 0; x < 5; x++) {
90
- state[row + x] = (b[row + x] ^ ((~b[row + ((x + 1) % 5)]) & b[row + ((x + 2) % 5)])) & _MASK64;
91
- }
92
- }
93
-
94
- // Iota
95
- state[0] = (state[0] ^ _RC[round]) & _MASK64;
96
- }
97
- }
98
-
99
- function _keccak256Bytes(bytes) {
100
- // Keccak-256: rate=1088 bits => 136 bytes
101
- const rate = 136;
102
- const outLen = 32;
103
- const state = new Array(25).fill(0n);
104
-
105
- let offset = 0;
106
- while (offset + rate <= bytes.length) {
107
- for (let i = 0; i < rate / 8; i++) {
108
- state[i] = (state[i] ^ _readU64LE(bytes, offset + i * 8)) & _MASK64;
109
- }
110
- _keccakF1600(state);
111
- offset += rate;
112
- }
17
+ // quantum-coin-js-sdk returns -1000 from crypto helpers when the SDK has not
18
+ // been initialized yet, and null when the input is invalid.
19
+ const _NOT_INITIALIZED = -1000;
113
20
 
114
- // Final block + padding (keccak pad10*1 with domain 0x01)
115
- const block = new Uint8Array(rate);
116
- const remaining = bytes.length - offset;
117
- block.set(bytes.slice(offset), 0);
118
- block[remaining] = 0x01;
119
- block[rate - 1] |= 0x80;
120
-
121
- for (let i = 0; i < rate / 8; i++) {
122
- state[i] = (state[i] ^ _readU64LE(block, i * 8)) & _MASK64;
21
+ /**
22
+ * Convert a byte array returned by a quantum-coin-js-sdk crypto helper into a
23
+ * normalized hex string, throwing a clear error when the SDK is not
24
+ * initialized or the operation failed.
25
+ * @param {number[]|Uint8Array|number|null} result
26
+ * @param {string} operation
27
+ * @returns {string}
28
+ */
29
+ function _hexFromQcsdk(result, operation) {
30
+ if (result === _NOT_INITIALIZED) {
31
+ throw makeError(
32
+ "quantum-coin-js-sdk not initialized; call Initialize() first",
33
+ "NOT_INITIALIZED",
34
+ { operation },
35
+ );
123
36
  }
124
- _keccakF1600(state);
125
-
126
- const out = new Uint8Array(outLen);
127
- let outOff = 0;
128
- let lane = 0;
129
- while (outOff < outLen) {
130
- const tmp = new Uint8Array(8);
131
- _writeU64LE(tmp, 0, state[lane]);
132
- const take = Math.min(8, outLen - outOff);
133
- out.set(tmp.slice(0, take), outOff);
134
- outOff += take;
135
- lane++;
37
+ if (result == null || typeof result === "number") {
38
+ throw makeError(`${operation} failed`, "UNKNOWN_ERROR", { operation });
136
39
  }
137
- return out;
138
- }
139
-
140
- function _hash(alg, data) {
141
- const bytes = arrayify(data);
142
- return bytesToHex(crypto.createHash(alg).update(Buffer.from(bytes)).digest());
40
+ return bytesToHex(result instanceof Uint8Array ? result : Uint8Array.from(result));
143
41
  }
144
42
 
145
43
  /**
@@ -149,18 +47,7 @@ function _hash(alg, data) {
149
47
  */
150
48
  function keccak256(data) {
151
49
  const bytes = arrayify(data);
152
- const hashes = crypto.getHashes();
153
-
154
- // Prefer native keccak if available (varies by Node/OpenSSL build).
155
- if (hashes.includes("keccak256")) {
156
- return bytesToHex(crypto.createHash("keccak256").update(Buffer.from(bytes)).digest());
157
- }
158
- if (hashes.includes("keccak-256")) {
159
- return bytesToHex(crypto.createHash("keccak-256").update(Buffer.from(bytes)).digest());
160
- }
161
-
162
- // Fallback: pure JS Keccak-256
163
- return bytesToHex(_keccak256Bytes(bytes));
50
+ return _hexFromQcsdk(qcsdk.keccak256(bytes), "keccak256");
164
51
  }
165
52
 
166
53
  /**
@@ -169,7 +56,8 @@ function keccak256(data) {
169
56
  * @returns {string}
170
57
  */
171
58
  function sha256(data) {
172
- return _hash("sha256", data);
59
+ const bytes = arrayify(data);
60
+ return _hexFromQcsdk(qcsdk.sha256(bytes), "sha256");
173
61
  }
174
62
 
175
63
  /**
@@ -178,7 +66,8 @@ function sha256(data) {
178
66
  * @returns {string}
179
67
  */
180
68
  function sha512(data) {
181
- return _hash("sha512", data);
69
+ const bytes = arrayify(data);
70
+ return _hexFromQcsdk(qcsdk.sha512(bytes), "sha512");
182
71
  }
183
72
 
184
73
  /**
@@ -187,7 +76,8 @@ function sha512(data) {
187
76
  * @returns {string}
188
77
  */
189
78
  function ripemd160(data) {
190
- return _hash("ripemd160", data);
79
+ const bytes = arrayify(data);
80
+ return _hexFromQcsdk(qcsdk.ripemd160(bytes), "ripemd160");
191
81
  }
192
82
 
193
83
  /**
@@ -199,18 +89,62 @@ function id(text) {
199
89
  return keccak256(utf8ToBytes(text));
200
90
  }
201
91
 
92
+ /**
93
+ * Compute the EIP-191 "personal message" digest for a message.
94
+ *
95
+ * QuantumCoin uses the exact same prefix as Ethereum, so this is byte-for-byte
96
+ * compatible with `personal_sign` in `quantum-coin-go`:
97
+ *
98
+ * keccak256("\x19Ethereum Signed Message:\n" + message.length + message)
99
+ *
100
+ * The resulting 32-byte hash is the digest passed to `Wallet.signMessage` /
101
+ * `Wallet.signMessageSync` and re-derived by `verifyMessage`. The decimal length
102
+ * prefix counts message BYTES, not characters. A string message is UTF-8
103
+ * encoded; a Uint8Array (or 0x hex string coerced via `arrayify`) is treated as
104
+ * raw bytes.
105
+ *
106
+ * @param {string|Uint8Array} message The message to hash. Strings are UTF-8 encoded.
107
+ * @returns {string} 0x-prefixed, 32-byte keccak256 digest.
108
+ */
109
+ function hashMessage(message) {
110
+ const msgBytes = typeof message === "string" ? utf8ToBytes(message) : arrayify(message);
111
+ const prefix = utf8ToBytes(`\x19Ethereum Signed Message:\n${msgBytes.length}`);
112
+ const composed = new Uint8Array(prefix.length + msgBytes.length);
113
+ composed.set(prefix, 0);
114
+ composed.set(msgBytes, prefix.length);
115
+ return keccak256(composed);
116
+ }
117
+
202
118
  /**
203
119
  * Generate cryptographically strong random bytes.
120
+ *
121
+ * Uses the platform Web Crypto API (`globalThis.crypto`), which is available in
122
+ * modern browsers and Node.js 20+.
204
123
  * @param {number} length
205
124
  * @returns {Uint8Array}
206
125
  */
207
126
  function randomBytes(length) {
208
- return new Uint8Array(crypto.randomBytes(length));
127
+ const webcrypto = typeof globalThis !== "undefined" ? globalThis.crypto : undefined;
128
+ if (!webcrypto || typeof webcrypto.getRandomValues !== "function") {
129
+ throw makeError(
130
+ "secure random source (globalThis.crypto.getRandomValues) not available in this environment",
131
+ "UNKNOWN_ERROR",
132
+ { operation: "randomBytes" },
133
+ );
134
+ }
135
+ const out = new Uint8Array(length);
136
+ // getRandomValues rejects requests larger than 65536 bytes; fill in chunks.
137
+ const MAX_CHUNK = 65536;
138
+ for (let offset = 0; offset < length; offset += MAX_CHUNK) {
139
+ const chunk = out.subarray(offset, Math.min(offset + MAX_CHUNK, length));
140
+ webcrypto.getRandomValues(chunk);
141
+ }
142
+ return out;
209
143
  }
210
144
 
211
145
  /**
212
146
  * Compute HMAC over data.
213
- * @param {string} algorithm
147
+ * @param {string} algorithm "sha256" or "sha512"
214
148
  * @param {string|Uint8Array} key
215
149
  * @param {string|Uint8Array} data
216
150
  * @returns {string}
@@ -218,8 +152,7 @@ function randomBytes(length) {
218
152
  function computeHmac(algorithm, key, data) {
219
153
  const k = typeof key === "string" ? utf8ToBytes(key) : arrayify(key);
220
154
  const d = typeof data === "string" ? utf8ToBytes(data) : arrayify(data);
221
- const h = crypto.createHmac(algorithm, Buffer.from(k)).update(Buffer.from(d)).digest();
222
- return bytesToHex(new Uint8Array(h));
155
+ return _hexFromQcsdk(qcsdk.computeHmac(algorithm, k, d), "computeHmac");
223
156
  }
224
157
 
225
158
  /**
@@ -228,59 +161,44 @@ function computeHmac(algorithm, key, data) {
228
161
  * @param {string|Uint8Array} salt
229
162
  * @param {number} iterations
230
163
  * @param {number} keylen
231
- * @param {string=} algorithm
164
+ * @param {string=} algorithm "sha256" (default) or "sha512"
232
165
  * @returns {string}
233
166
  */
234
167
  function pbkdf2(password, salt, iterations, keylen, algorithm) {
235
168
  const p = typeof password === "string" ? utf8ToBytes(password) : arrayify(password);
236
169
  const s = typeof salt === "string" ? utf8ToBytes(salt) : arrayify(salt);
237
170
  const a = algorithm || "sha256";
238
- const out = crypto.pbkdf2Sync(Buffer.from(p), Buffer.from(s), iterations, keylen, a);
239
- return bytesToHex(new Uint8Array(out));
171
+ return _hexFromQcsdk(qcsdk.pbkdf2(p, s, iterations, keylen, a), "pbkdf2");
240
172
  }
241
173
 
242
174
  /**
243
- * scrypt (async) helper returning hex string.
175
+ * scrypt (sync) helper returning hex string.
244
176
  * @param {string|Uint8Array} password
245
177
  * @param {string|Uint8Array} salt
246
178
  * @param {number} N
247
179
  * @param {number} r
248
180
  * @param {number} p
249
181
  * @param {number} dkLen
250
- * @returns {Promise<string>}
182
+ * @returns {string}
251
183
  */
252
- function scrypt(password, salt, N, r, p, dkLen) {
184
+ function scryptSync(password, salt, N, r, p, dkLen) {
253
185
  const pw = typeof password === "string" ? utf8ToBytes(password) : arrayify(password);
254
186
  const sa = typeof salt === "string" ? utf8ToBytes(salt) : arrayify(salt);
255
- return new Promise((resolve, reject) => {
256
- crypto.scrypt(
257
- Buffer.from(pw),
258
- Buffer.from(sa),
259
- dkLen,
260
- { N, r, p, maxmem: 128 * 1024 * 1024 },
261
- (err, derived) => {
262
- if (err) return reject(err);
263
- resolve(bytesToHex(new Uint8Array(derived)));
264
- },
265
- );
266
- });
187
+ return _hexFromQcsdk(qcsdk.scryptDeriveKey(pw, sa, N, r, p, dkLen), "scrypt");
267
188
  }
268
189
 
269
190
  /**
270
- * scrypt (sync) helper returning hex string.
191
+ * scrypt (async) helper returning hex string.
271
192
  * @param {string|Uint8Array} password
272
193
  * @param {string|Uint8Array} salt
273
194
  * @param {number} N
274
195
  * @param {number} r
275
196
  * @param {number} p
276
197
  * @param {number} dkLen
277
- * @returns {string}
198
+ * @returns {Promise<string>}
278
199
  */
279
- function scryptSync(password, salt, N, r, p, dkLen) {
280
- const pw = typeof password === "string" ? utf8ToBytes(password) : arrayify(password);
281
- const sa = typeof salt === "string" ? utf8ToBytes(salt) : arrayify(salt);
282
- const out = crypto.scryptSync(Buffer.from(pw), Buffer.from(sa), dkLen, { N, r, p, maxmem: 257 * 1024 * 1024 }); //257 instead of 256 for buffer for compat for N=262144, r=8, p=1
283
- return bytesToHex(new Uint8Array(out));
200
+ function scrypt(password, salt, N, r, p, dkLen) {
201
+ return Promise.resolve().then(() => scryptSync(password, salt, N, r, p, dkLen));
284
202
  }
285
203
 
286
204
  module.exports = {
@@ -289,10 +207,10 @@ module.exports = {
289
207
  sha512,
290
208
  ripemd160,
291
209
  id,
210
+ hashMessage,
292
211
  randomBytes,
293
212
  computeHmac,
294
213
  pbkdf2,
295
214
  scrypt,
296
215
  scryptSync,
297
216
  };
298
-
@@ -1,4 +1,5 @@
1
1
  declare const _exports: {
2
+ FixedNumber: typeof import("./fixednumber").FixedNumber;
2
3
  formatUnits(value: import("./units").BigNumberish, decimals?: number | undefined): string;
3
4
  parseUnits(value: string, decimals?: number | undefined): bigint;
4
5
  formatEther(value: import("./units").BigNumberish): string;
@@ -16,6 +17,7 @@ declare const _exports: {
16
17
  sha512(data: string | Uint8Array): string;
17
18
  ripemd160(data: string | Uint8Array): string;
18
19
  id(text: string): string;
20
+ hashMessage(message: string | Uint8Array): string;
19
21
  randomBytes(length: number): Uint8Array;
20
22
  computeHmac(algorithm: string, key: string | Uint8Array, data: string | Uint8Array): string;
21
23
  pbkdf2(password: string | Uint8Array, salt: string | Uint8Array, iterations: number, keylen: number, algorithm?: string | undefined): string;
@@ -58,6 +60,5 @@ declare const _exports: {
58
60
  }): string;
59
61
  getCreate2Address(from: string, salt: string, initCodeHash: string): string;
60
62
  computeAddress(key: string | Uint8Array): string;
61
- FixedNumber: typeof import("./fixednumber").FixedNumber;
62
63
  };
63
64
  export = _exports;
package/src/utils/rlp.js CHANGED
@@ -11,8 +11,8 @@ const { arrayify, bytesToHex, hexToBytes, isHexString, normalizeHex, utf8ToBytes
11
11
  function _toBytes(value) {
12
12
  if (value == null) return new Uint8Array([]);
13
13
 
14
+ // Node Buffers are Uint8Array subclasses, so this covers both.
14
15
  if (value instanceof Uint8Array) return new Uint8Array(value);
15
- if (Buffer.isBuffer(value)) return new Uint8Array(value);
16
16
 
17
17
  if (Array.isArray(value)) {
18
18
  // List gets handled elsewhere; here we accept array-of-bytes as a BytesLike.
@@ -1,4 +1,5 @@
1
1
  declare const _exports: {
2
+ verifyMessage(message: string | Uint8Array, signature: string | Uint8Array): string;
2
3
  SigningKey: typeof import("./wallet").SigningKey;
3
4
  AbstractSigner: typeof import("./wallet").AbstractSigner;
4
5
  BaseWallet: typeof import("./wallet").BaseWallet;