quantumcoin 7.0.12 → 7.0.13

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 (321) hide show
  1. package/README-SDK.md +828 -823
  2. package/README.md +4 -0
  3. package/config.d.ts +50 -50
  4. package/examples/example-generated-sdk-js/README.md +65 -0
  5. package/examples/example-generated-sdk-js/examples/_test-wallet.js +17 -0
  6. package/examples/example-generated-sdk-js/examples/deploy.js +41 -0
  7. package/examples/example-generated-sdk-js/examples/events.js +36 -0
  8. package/examples/example-generated-sdk-js/examples/read-operations.js +46 -0
  9. package/examples/example-generated-sdk-js/examples/write-operations.js +44 -0
  10. package/examples/example-generated-sdk-js/index.d.ts +1 -0
  11. package/examples/example-generated-sdk-js/index.js +15 -0
  12. package/examples/example-generated-sdk-js/package-lock.json +59 -0
  13. package/examples/example-generated-sdk-js/package.json +22 -0
  14. package/examples/example-generated-sdk-js/src/SimpleERC20.d.ts +19 -0
  15. package/examples/example-generated-sdk-js/src/SimpleERC20.js +353 -0
  16. package/examples/example-generated-sdk-js/src/SimpleERC20__factory.d.ts +10 -0
  17. package/examples/example-generated-sdk-js/src/SimpleERC20__factory.js +29 -0
  18. package/examples/example-generated-sdk-js/src/index.d.ts +4 -0
  19. package/examples/example-generated-sdk-js/src/index.js +5 -0
  20. package/examples/example-generated-sdk-js/src/quantumcoin-shims.d.ts +23 -0
  21. package/examples/example-generated-sdk-js/src/types.d.ts +3 -0
  22. package/examples/example-generated-sdk-js/src/types.js +3 -0
  23. package/examples/example-generated-sdk-js/test/e2e/SimpleERC20.e2e.test.js +78 -0
  24. package/examples/example-generated-sdk-ts/README.md +65 -0
  25. package/examples/example-generated-sdk-ts/examples/_test-wallet.js +17 -0
  26. package/examples/example-generated-sdk-ts/examples/deploy.js +41 -0
  27. package/examples/example-generated-sdk-ts/examples/events.js +36 -0
  28. package/examples/example-generated-sdk-ts/examples/read-operations.js +46 -0
  29. package/examples/example-generated-sdk-ts/examples/write-operations.js +44 -0
  30. package/examples/example-generated-sdk-ts/index.d.ts +1 -0
  31. package/examples/example-generated-sdk-ts/index.js +15 -0
  32. package/examples/example-generated-sdk-ts/package-lock.json +59 -0
  33. package/examples/example-generated-sdk-ts/package.json +23 -0
  34. package/examples/example-generated-sdk-ts/src/SimpleERC20.ts +334 -0
  35. package/examples/example-generated-sdk-ts/src/SimpleERC20__factory.ts +28 -0
  36. package/examples/example-generated-sdk-ts/src/index.ts +4 -0
  37. package/examples/example-generated-sdk-ts/src/quantumcoin-shims.d.ts +23 -0
  38. package/examples/example-generated-sdk-ts/src/types.ts +4 -0
  39. package/examples/example-generated-sdk-ts/test/e2e/SimpleERC20.e2e.test.js +78 -0
  40. package/examples/example-generated-sdk-ts/tsconfig.json +14 -0
  41. package/examples/sdk-generator-erc20.inline.json +251 -251
  42. package/generate-sdk.js +1824 -1822
  43. package/package.json +1 -1
  44. package/src/abi/fragments.d.ts +42 -42
  45. package/src/abi/index.d.ts +13 -13
  46. package/src/contract/index.d.ts +9 -9
  47. package/src/errors/index.d.ts +92 -92
  48. package/src/generator/index.d.ts +11 -4
  49. package/src/generator/index.js +33 -5
  50. package/src/internal/hex.d.ts +68 -61
  51. package/src/internal/hex.js +36 -0
  52. package/src/providers/json-rpc-provider.d.ts +12 -12
  53. package/src/providers/provider.js +3 -3
  54. package/src/utils/address.d.ts +58 -58
  55. package/src/utils/encoding.d.ts +120 -120
  56. package/src/utils/hashing.js +298 -298
  57. package/src/utils/index.d.ts +63 -63
  58. package/src/utils/index.js +14 -14
  59. package/src/utils/result.d.ts +57 -57
  60. package/src/utils/rlp.d.ts +12 -12
  61. package/src/utils/units.d.ts +29 -29
  62. package/src/wallet/index.d.ts +10 -10
  63. package/src/wallet/wallet.d.ts +192 -192
  64. package/src/wallet/wallet.js +630 -630
  65. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/README.md +83 -0
  66. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/artifacts/AllSolidityTypes.abi.json +12544 -0
  67. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/artifacts/AllSolidityTypes.bin +1 -0
  68. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/_test-wallet.js +17 -0
  69. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/_test-wallet.ts +10 -0
  70. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/deploy.js +41 -0
  71. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/deploy.ts +41 -0
  72. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/events.js +36 -0
  73. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/events.ts +36 -0
  74. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/offline-signing.js +82 -0
  75. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/offline-signing.ts +80 -0
  76. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/read-operations.js +46 -0
  77. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/read-operations.ts +44 -0
  78. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/write-operations.js +44 -0
  79. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/write-operations.ts +44 -0
  80. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/index.d.ts +1 -0
  81. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/index.js +21 -0
  82. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/package-lock.json +597 -0
  83. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/package.json +25 -0
  84. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes.d.ts +1280 -0
  85. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes.js +14021 -0
  86. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes__factory.d.ts +11 -0
  87. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes__factory.js +29 -0
  88. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/index.d.ts +4 -0
  89. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/index.js +5 -0
  90. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/quantumcoin-shims.d.ts +25 -0
  91. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/types.d.ts +3 -0
  92. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/types.js +3 -0
  93. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/test/e2e/AllSolidityTypes.e2e.test.js +77 -0
  94. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/test/e2e/AllSolidityTypes.extra.test.js +195 -0
  95. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/README.md +83 -0
  96. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/artifacts/AllSolidityTypes.abi.json +12544 -0
  97. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/artifacts/AllSolidityTypes.bin +1 -0
  98. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/_test-wallet.js +17 -0
  99. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/_test-wallet.ts +10 -0
  100. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/deploy.js +41 -0
  101. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/deploy.ts +41 -0
  102. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/events.js +36 -0
  103. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/events.ts +36 -0
  104. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/offline-signing.js +82 -0
  105. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/offline-signing.ts +80 -0
  106. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/read-operations.js +46 -0
  107. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/read-operations.ts +44 -0
  108. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/write-operations.js +44 -0
  109. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/write-operations.ts +44 -0
  110. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/index.d.ts +1 -0
  111. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/index.js +21 -0
  112. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/package-lock.json +597 -0
  113. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/package.json +26 -0
  114. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/AllSolidityTypes.ts +13940 -0
  115. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/AllSolidityTypes__factory.ts +29 -0
  116. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/index.ts +4 -0
  117. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/quantumcoin-shims.d.ts +25 -0
  118. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/types.ts +4 -0
  119. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/test/e2e/AllSolidityTypes.e2e.test.js +77 -0
  120. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/test/e2e/AllSolidityTypes.extra.test.js +195 -0
  121. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/tsconfig.json +18 -0
  122. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/README.md +74 -0
  123. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/artifacts/SimpleERC20.abi.json +245 -0
  124. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/artifacts/SimpleERC20.bin +1 -0
  125. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/_test-wallet.js +17 -0
  126. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/_test-wallet.ts +10 -0
  127. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/deploy.js +41 -0
  128. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/deploy.ts +41 -0
  129. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/events.js +36 -0
  130. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/events.ts +36 -0
  131. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/offline-signing.js +82 -0
  132. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/offline-signing.ts +80 -0
  133. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/read-operations.js +46 -0
  134. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/read-operations.ts +44 -0
  135. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/write-operations.js +44 -0
  136. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/write-operations.ts +44 -0
  137. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/index.d.ts +1 -0
  138. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/index.js +16 -0
  139. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/package-lock.json +597 -0
  140. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/package.json +25 -0
  141. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20.d.ts +24 -0
  142. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20.js +372 -0
  143. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20__factory.d.ts +10 -0
  144. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20__factory.js +29 -0
  145. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/index.d.ts +4 -0
  146. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/index.js +5 -0
  147. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/quantumcoin-shims.d.ts +25 -0
  148. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/types.d.ts +3 -0
  149. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/types.js +3 -0
  150. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/test/e2e/SimpleERC20.e2e.test.js +90 -0
  151. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/README.md +74 -0
  152. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/artifacts/SimpleERC20.abi.json +245 -0
  153. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/artifacts/SimpleERC20.bin +1 -0
  154. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/_test-wallet.js +17 -0
  155. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/_test-wallet.ts +10 -0
  156. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/deploy.js +41 -0
  157. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/deploy.ts +41 -0
  158. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/events.js +36 -0
  159. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/events.ts +36 -0
  160. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/offline-signing.js +82 -0
  161. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/offline-signing.ts +80 -0
  162. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/read-operations.js +46 -0
  163. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/read-operations.ts +44 -0
  164. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/write-operations.js +44 -0
  165. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/write-operations.ts +44 -0
  166. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/index.d.ts +1 -0
  167. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/index.js +16 -0
  168. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/package-lock.json +597 -0
  169. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/package.json +26 -0
  170. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/SimpleERC20.ts +355 -0
  171. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/SimpleERC20__factory.ts +28 -0
  172. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/index.ts +4 -0
  173. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/quantumcoin-shims.d.ts +25 -0
  174. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/types.ts +4 -0
  175. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/test/e2e/SimpleERC20.e2e.test.js +90 -0
  176. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/tsconfig.json +18 -0
  177. package/test/e2e/generator-interface.e2e.test.js +163 -0
  178. package/test/e2e/generator-interface.e2e.test.ts +158 -0
  179. package/test/e2e/signing-context-and-fee.e2e.test.js +141 -141
  180. package/test/e2e/signing-context-and-fee.e2e.test.ts +128 -128
  181. package/test/integration/provider.test.js +88 -88
  182. package/test/unit/address-wallet.test.js +892 -892
  183. package/test/unit/address-wallet.test.ts +877 -877
  184. package/test/unit/generator.test.js +48 -1
  185. package/test/unit/generator.test.ts +48 -1
  186. package/test/unit/hashing.test.js +64 -64
  187. package/test/unit/hashing.test.ts +63 -63
  188. package/test/unit/internal-hex.test.js +32 -1
  189. package/test/unit/internal-hex.test.ts +32 -1
  190. package/test/unit/providers.test.js +51 -1
  191. package/test/unit/providers.test.ts +53 -0
  192. package/examples/node_modules/.bin/esbuild +0 -16
  193. package/examples/node_modules/.bin/esbuild.cmd +0 -17
  194. package/examples/node_modules/.bin/esbuild.ps1 +0 -28
  195. package/examples/node_modules/.bin/sdkgen +0 -16
  196. package/examples/node_modules/.bin/sdkgen.cmd +0 -17
  197. package/examples/node_modules/.bin/sdkgen.ps1 +0 -28
  198. package/examples/node_modules/.bin/tsx +0 -16
  199. package/examples/node_modules/.bin/tsx.cmd +0 -17
  200. package/examples/node_modules/.bin/tsx.ps1 +0 -28
  201. package/examples/node_modules/.package-lock.json +0 -144
  202. package/examples/node_modules/@esbuild/win32-x64/README.md +0 -3
  203. package/examples/node_modules/@esbuild/win32-x64/esbuild.exe +0 -0
  204. package/examples/node_modules/@esbuild/win32-x64/package.json +0 -20
  205. package/examples/node_modules/esbuild/LICENSE.md +0 -21
  206. package/examples/node_modules/esbuild/README.md +0 -3
  207. package/examples/node_modules/esbuild/bin/esbuild +0 -223
  208. package/examples/node_modules/esbuild/install.js +0 -289
  209. package/examples/node_modules/esbuild/lib/main.d.ts +0 -716
  210. package/examples/node_modules/esbuild/lib/main.js +0 -2532
  211. package/examples/node_modules/esbuild/package.json +0 -49
  212. package/examples/node_modules/get-tsconfig/LICENSE +0 -21
  213. package/examples/node_modules/get-tsconfig/README.md +0 -235
  214. package/examples/node_modules/get-tsconfig/dist/index.cjs +0 -7
  215. package/examples/node_modules/get-tsconfig/dist/index.d.cts +0 -2088
  216. package/examples/node_modules/get-tsconfig/dist/index.d.mts +0 -2088
  217. package/examples/node_modules/get-tsconfig/dist/index.mjs +0 -7
  218. package/examples/node_modules/get-tsconfig/package.json +0 -46
  219. package/examples/node_modules/quantum-coin-js-sdk/LICENSE +0 -21
  220. package/examples/node_modules/quantum-coin-js-sdk/LICENSE-wasm_exec.js.txt +0 -30
  221. package/examples/node_modules/quantum-coin-js-sdk/README.md +0 -1675
  222. package/examples/node_modules/quantum-coin-js-sdk/example/README.md +0 -14
  223. package/examples/node_modules/quantum-coin-js-sdk/example/conversion-example.js +0 -19
  224. package/examples/node_modules/quantum-coin-js-sdk/example/example-create-contract.js +0 -396
  225. package/examples/node_modules/quantum-coin-js-sdk/example/example-encode-decode-rlp.js +0 -225
  226. package/examples/node_modules/quantum-coin-js-sdk/example/example-event-pack-unpack.js +0 -391
  227. package/examples/node_modules/quantum-coin-js-sdk/example/example-misc.js +0 -101
  228. package/examples/node_modules/quantum-coin-js-sdk/example/example-rpc-send-signRawTransaction.js +0 -318
  229. package/examples/node_modules/quantum-coin-js-sdk/example/example-rpc-send.js +0 -116
  230. package/examples/node_modules/quantum-coin-js-sdk/example/example-send.js +0 -70
  231. package/examples/node_modules/quantum-coin-js-sdk/example/example-token-pack-unpack.js +0 -961
  232. package/examples/node_modules/quantum-coin-js-sdk/example/example-wallet-version4.js +0 -35
  233. package/examples/node_modules/quantum-coin-js-sdk/example/example-wallet.js +0 -43
  234. package/examples/node_modules/quantum-coin-js-sdk/example/example.js +0 -405
  235. package/examples/node_modules/quantum-coin-js-sdk/example/package-lock.json +0 -134
  236. package/examples/node_modules/quantum-coin-js-sdk/example/package.json +0 -15
  237. package/examples/node_modules/quantum-coin-js-sdk/index.d.ts +0 -1031
  238. package/examples/node_modules/quantum-coin-js-sdk/index.js +0 -3144
  239. package/examples/node_modules/quantum-coin-js-sdk/package.json +0 -34
  240. package/examples/node_modules/quantum-coin-js-sdk/tests/encrypted-32.json +0 -1
  241. package/examples/node_modules/quantum-coin-js-sdk/tests/encrypted-36.json +0 -1
  242. package/examples/node_modules/quantum-coin-js-sdk/tests/encrypted-48.json +0 -1
  243. package/examples/node_modules/quantum-coin-js-sdk/tests/generate-verify-vectors.js +0 -91
  244. package/examples/node_modules/quantum-coin-js-sdk/tests/non-transactional.preinit.test.js +0 -41
  245. package/examples/node_modules/quantum-coin-js-sdk/tests/non-transactional.test.js +0 -1389
  246. package/examples/node_modules/quantum-coin-js-sdk/tests/sign-raw-keytype5-context-null.test.js +0 -107
  247. package/examples/node_modules/quantum-coin-js-sdk/tests/sign-raw-transaction.test.js +0 -196
  248. package/examples/node_modules/quantum-coin-js-sdk/tests/sign-verify.test.js +0 -311
  249. package/examples/node_modules/quantum-coin-js-sdk/tests/transactional.relay.test.js +0 -131
  250. package/examples/node_modules/quantum-coin-js-sdk/tests/transactional.rpc.test.js +0 -103
  251. package/examples/node_modules/quantum-coin-js-sdk/tests/verify-vectors.json +0 -95035
  252. package/examples/node_modules/quantum-coin-js-sdk/wasmBase64.d.ts +0 -9
  253. package/examples/node_modules/quantum-coin-js-sdk/wasmBase64.js +0 -16
  254. package/examples/node_modules/quantum-coin-js-sdk/wasm_exec.d.ts +0 -0
  255. package/examples/node_modules/quantum-coin-js-sdk/wasm_exec.js +0 -587
  256. package/examples/node_modules/resolve-pkg-maps/LICENSE +0 -21
  257. package/examples/node_modules/resolve-pkg-maps/README.md +0 -216
  258. package/examples/node_modules/resolve-pkg-maps/dist/index.cjs +0 -1
  259. package/examples/node_modules/resolve-pkg-maps/dist/index.d.cts +0 -11
  260. package/examples/node_modules/resolve-pkg-maps/dist/index.d.mts +0 -11
  261. package/examples/node_modules/resolve-pkg-maps/dist/index.mjs +0 -1
  262. package/examples/node_modules/resolve-pkg-maps/package.json +0 -42
  263. package/examples/node_modules/seed-words/.github/workflows/publish-npmjs.yaml +0 -22
  264. package/examples/node_modules/seed-words/BUILD.md +0 -7
  265. package/examples/node_modules/seed-words/LICENSE +0 -121
  266. package/examples/node_modules/seed-words/README.md +0 -67
  267. package/examples/node_modules/seed-words/dist/seedwords.d.ts +0 -39
  268. package/examples/node_modules/seed-words/package.json +0 -27
  269. package/examples/node_modules/seed-words/seedwords.js +0 -315
  270. package/examples/node_modules/seed-words/seedwords.txt +0 -65536
  271. package/examples/node_modules/seed-words/tsconfig.json +0 -21
  272. package/examples/node_modules/tsx/LICENSE +0 -21
  273. package/examples/node_modules/tsx/README.md +0 -32
  274. package/examples/node_modules/tsx/dist/cjs/api/index.cjs +0 -1
  275. package/examples/node_modules/tsx/dist/cjs/api/index.d.cts +0 -35
  276. package/examples/node_modules/tsx/dist/cjs/api/index.d.mts +0 -35
  277. package/examples/node_modules/tsx/dist/cjs/api/index.mjs +0 -1
  278. package/examples/node_modules/tsx/dist/cjs/index.cjs +0 -1
  279. package/examples/node_modules/tsx/dist/cjs/index.mjs +0 -1
  280. package/examples/node_modules/tsx/dist/cli.cjs +0 -54
  281. package/examples/node_modules/tsx/dist/cli.mjs +0 -55
  282. package/examples/node_modules/tsx/dist/client-BQVF1NaW.mjs +0 -1
  283. package/examples/node_modules/tsx/dist/client-D6NvIMSC.cjs +0 -1
  284. package/examples/node_modules/tsx/dist/esm/api/index.cjs +0 -1
  285. package/examples/node_modules/tsx/dist/esm/api/index.d.cts +0 -35
  286. package/examples/node_modules/tsx/dist/esm/api/index.d.mts +0 -35
  287. package/examples/node_modules/tsx/dist/esm/api/index.mjs +0 -1
  288. package/examples/node_modules/tsx/dist/esm/index.cjs +0 -2
  289. package/examples/node_modules/tsx/dist/esm/index.mjs +0 -2
  290. package/examples/node_modules/tsx/dist/get-pipe-path-BHW2eJdv.mjs +0 -1
  291. package/examples/node_modules/tsx/dist/get-pipe-path-BoR10qr8.cjs +0 -1
  292. package/examples/node_modules/tsx/dist/index-7AaEi15b.mjs +0 -14
  293. package/examples/node_modules/tsx/dist/index-BWFBUo6r.cjs +0 -1
  294. package/examples/node_modules/tsx/dist/index-gbaejti9.mjs +0 -1
  295. package/examples/node_modules/tsx/dist/index-gckBtVBf.cjs +0 -14
  296. package/examples/node_modules/tsx/dist/lexer-DQCqS3nf.mjs +0 -3
  297. package/examples/node_modules/tsx/dist/lexer-DgIbo0BU.cjs +0 -3
  298. package/examples/node_modules/tsx/dist/loader.cjs +0 -1
  299. package/examples/node_modules/tsx/dist/loader.mjs +0 -1
  300. package/examples/node_modules/tsx/dist/node-features-_8ZFwP_x.mjs +0 -1
  301. package/examples/node_modules/tsx/dist/node-features-roYmp9jK.cjs +0 -1
  302. package/examples/node_modules/tsx/dist/package-CeBgXWuR.mjs +0 -1
  303. package/examples/node_modules/tsx/dist/package-Dxt5kIHw.cjs +0 -1
  304. package/examples/node_modules/tsx/dist/patch-repl.cjs +0 -1
  305. package/examples/node_modules/tsx/dist/patch-repl.mjs +0 -1
  306. package/examples/node_modules/tsx/dist/preflight.cjs +0 -1
  307. package/examples/node_modules/tsx/dist/preflight.mjs +0 -1
  308. package/examples/node_modules/tsx/dist/register-2sWVXuRQ.cjs +0 -1
  309. package/examples/node_modules/tsx/dist/register-B7jrtLTO.mjs +0 -1
  310. package/examples/node_modules/tsx/dist/register-CFH5oNdT.mjs +0 -4
  311. package/examples/node_modules/tsx/dist/register-D46fvsV_.cjs +0 -4
  312. package/examples/node_modules/tsx/dist/repl.cjs +0 -3
  313. package/examples/node_modules/tsx/dist/repl.mjs +0 -3
  314. package/examples/node_modules/tsx/dist/require-D4F1Lv60.cjs +0 -1
  315. package/examples/node_modules/tsx/dist/require-DQxpCAr4.mjs +0 -1
  316. package/examples/node_modules/tsx/dist/suppress-warnings.cjs +0 -1
  317. package/examples/node_modules/tsx/dist/suppress-warnings.mjs +0 -1
  318. package/examples/node_modules/tsx/dist/temporary-directory-B83uKxJF.cjs +0 -1
  319. package/examples/node_modules/tsx/dist/temporary-directory-CwHp0_NW.mjs +0 -1
  320. package/examples/node_modules/tsx/dist/types-Cxp8y2TL.d.ts +0 -5
  321. package/examples/node_modules/tsx/package.json +0 -68
@@ -1,131 +0,0 @@
1
- const { describe, test } = require('node:test');
2
- const assert = require('node:assert/strict');
3
-
4
- // These are the "transactional" tests using relay endpoints from examples.
5
- // Per requirements:
6
- // - Relay transactional tests must use the relay endpoints shown in examples
7
- // - The transaction must either succeed OR fail only due to no coins for gas.
8
-
9
- const qcsdk = require('..');
10
-
11
- const MAINNET_CHAIN_ID = 123123;
12
- const READ_RELAY_URL = 'https://sdk.readrelay.quantumcoinapi.com';
13
- const WRITE_RELAY_URL = 'https://sdk.writerelay.quantumcoinapi.com';
14
-
15
- const TO_ADDRESS_EXAMPLE =
16
- '0x8293cd9b6ac502d2fe077b0c157dad39f36a5e546525b053151dced633634612';
17
-
18
- function isCirclAvailable() {
19
- const w = qcsdk.newWallet();
20
- return (
21
- typeof w === 'object' &&
22
- w != null &&
23
- w.privateKey != null &&
24
- w.address != null &&
25
- qcsdk.verifyWallet(w) === true
26
- );
27
- }
28
-
29
- const EXAMPLE_WALLET_ENCRYPTED_JSON =
30
- '{"address":"1a846abe71c8b989e8337c55d608be81c28ab3b2e40c83eaa2a68d516049aec6","crypto":{"cipher":"aes-256-ctr","ciphertext":"ab7e620dd66cb55ac201b9c6796de92bbb06f3681b5932eabe099871f1f7d79acabe30921a39ad13bfe74f42c515734882b6723760142aa3e26e011df514a534ae47bd15d86badd9c6f17c48d4c892711d54d441ee3a0ee0e5b060f816e79c7badd13ff4c235934b1986774223ecf6e8761388969bb239c759b54c8c70e6a2e27c93a4b70129c8159f461d271ae8f3573414c78b88e4d0abfa6365ed45456636d4ed971c7a0c6b84e6f0c2621e819268b135e2bcc169a54d1847b39e6ba2ae8ec969b69f330b7db9e785ed02204d5a1185915ae5338b0f40ef2a7f4d5aaf7563d502135e57f4eb89d5ec1efa5c77e374969d6cd85be625a2ed1225d68ecdd84067bfc69adb83ecd5c6050472eca28a5a646fcdd28077165c629975bec8a79fe1457cb53389b788b25e1f8eff8b2ca326d7dfcaba3f8839225a08057c018a458891fd2caa0d2b27632cffd80f592147ccec9a10dc8a08a48fb55047bff5cf85cda39eb089096bef63842fc3686412f298a54a9e4b0bf4ad36907ba373cbd6d32e7ac494af371da5aa9d38a3463220865114c4adc5e4ac258ba9c6af9fa2ddfd1aec2e16887e4b3977c69561df8599ac9d411c9dd2a4d57f92ea4e5c02aae3f49fb3bc83e16673e6c2dbe96bb181c8dfd0f9757ade2e4ff27215a836058c5ffeab042f6f97c7c02339f76a6284680e01b4bb733690eb3347fbfcc26614b8bf755f9dfce3fea9d4e4d15b164983201732c2e87593a86bca6da6972e128490338f76ae68135888070f4e59e90db54d23834769bdbda9769213faf5357f9167a224523975a946367b68f0cec98658575609f58bfd329e420a921c06713326e4cb20a0df1d77f37e78a320a637a96c604ca3fa89e24beb42313751b8f09b14f9c14c77e4fd13fc6382505d27c771bca0d821ec7c3765acffa99d83c50140a56b0b28101c762bd682fe55cb6f23cbeb3f421d7b36021010e45ac27160dd7ead99c864a1b550c7edb1246950fe32dcc049799f9085287f0a747a6ef7a023df46a23a22f3e833bbf8d404f84344870492658256ee1dfc40fda33bb8d48fc72d4520ba9fc820c9123104a045206809037709f2a5f6723fa77d6bac5a573823d4ec3a7f1cb786a52ee2697e622e5d75962fa554d1024a6c355e21f33a63b2b72e6c4742a8b1c373aa532b40518c38c90b5373c2eb8c9d7be2a9e16047a3ee09dc9a6849deac5183ace6cfe91a9bef2ffc0a7df6ccebfd4c858c84b0e0355650d7466971e66f1e3883013e5ad1be33199b1d110b79070ac1b745ccb14cf63a08f8cca3a21c9525e626ff5f0c34746e10750fb742ad51f11f2acae3676c2111853d7250d01b77821a6ba9e04400ba2c543ca9f2d701ae6f47bfad14ffe3039ee9e71f7b2401359ade9938750ddb9c5a8b018a7929ed8d0e717ff1861446ce17535e9b17c187711190aae3388bd9490837a636c25ed4d42d7079ad1a51e13292c683d5d012abcf46965c534b83ab53f2c1f0cf5830ef7582e06863a33c19a70511df632885d63245965047ea96b56f1af5b3b94a54999f784fb9574fdfcd7c1230e07a2aaa04acd3097b2b9f8ddba05ae9734491deb5c1a513c76ed276cb78bbf4839dae3156d76af444a5805129d5df791167a9c8576a1d7f760b2d2797c4658669608706fbd0ace1be2346f74862dfc9ef518e55632e43c043186e5d070deb34d12fb9e5aba84e5cb50213dc88efd39cc35bf42455aa82d5e3b707b3140be3b8623b34fdd81d08615c188ae8438a13881fdf6bf32f2cb9ff5fa625561040c6b71d4b8eccc90bc3b99650d28dd1ee63773e49664e3d48c484996b290943635a6f2eb1ce9796d3fa144a3f00ef82faaa32d6a413668f7b521517cb68b2b017fcf56c79326fa5e4060e643631ca3f0a0dc0ed718798b6f46b130d437c33f64039e887324b6f5e604b1669d613923794edbf04b1b3caea54793b52b44b170173a4f25c7ecef3b71e2aad76e556b1cb9f1d637ec52ececfa950dd31dbb6a60828a3ad34c1beffe09eb4785786d63bad10a0b0f66ea88c57380f38ea85f018dbd7f538cf1ee7624095b9a01ec5edd528f281168af020609e651ff316aa1320a710134ddfca600cc72174dcdb846d2aa29916488aa1b537b66da92e61af526debef4eb38c984569eaf549ff2129449269b492d030cd74d885f6f5785881cc4804b4a8a09ba4ff7aefe9074ac7d0c4f05d51fe4cc0ff7388a772092b9d02d70e5433a5cf3e02f46a6bd6b818d59a07ce3b9fbbf8b5faba74563bcc5240930c2d406c9aaee3e3ce0429bf68ac2b0a57adb09414cff50817d2a48fb9fa624ab863cb0c31a8b8dc5eaf6fa68cc1d7c6c685c5a33edd5c8933b9e8ab628ee428d0743699b2ff17f25586c7ce959280bb0b8c5342251f0a30b53dbc7bf1ee426ac9619c3560f811f2268ee37f189794e2e4b3db3a2fb2e34b649e504fb467438abfd1082619cc4a0b30d66beb831077812e418d2e2148db10cf4d4a29101ca52ec445b8d83519dd7de85a98e0beae9ee537096d3f1a55a7a80cdfa93d25f07c9f98e8af18cde19ec1f99c5dd4588b717a5039ddb7f177717caf0d0fd45420a70dbd6d3146890d9e450d5224146db4c33b779e3c3a04b976c052bad042ac57dd38be45407808c0fb0d7e2a8819e6cd53c6739e6612996ddaa6f066552590aa0343bc1e62b298ff2514a0cef8be21956c2e942816f7a3a3a0935eaf9b37251409ce444c986c3817e82835555fe18239f3ae33469d7965c2bde9991fde556bd07af01df52bbde0c35bb4ef48e3b5d0db53f8ca4ed35b83f760f0a1bc4ed9f86e85d6039a17df373c85402ef956f01db00eb39c4b74bd0660d29ee746714d9780d738e05c6cca414ce3d7b40dda8036a9eea9ab1388805f913eb19bdd3f09d9e161eaa50231bd9caba61971f194332dd28c696a60458c1c6c2cc5da8b1192611c7c553e9e12fe48ce46bbb891be8bb118721c86222e671ddd1da8f0ccb2b68e02f2014b4925e904e88369aaf7466bd7033a60c265d45955944916ecbdb84bf1b522b01b0149c632e04c568a7eb627c5bb90ece052ebcf79166c28b30d23fe52da0a5ab5dea83ca479a3e3b7a9cfbbfea04dbe6137c19d067317c2ec427a8c75a6b06bec6dcd5d5c0edc9aa80b9003b8e17c088b2f3db327d3e42630d82d20120240c3ba56232280787da4aabbf5bc95a864029f00710e195f2a76460a0317d10b552fe1bea097e41d49756c680a41d6ac186e62169b6b6cd7776ea84618b5b752328a5bacaa10aa122ff9b2698b43efe73d852a899db644863c8c9bc8068ea86ea843fd6fe36272b91cdc5d5317083ef3fd1e5462a0b0d0604dc57b3bbfceb0fca4cd349625dd7b25166af30efe5ee6a0af953a74d65f4736c59918ee55a3b0d9d9d42e04c7f8a77e479109f740e20c464d5d7e3d16805f47b61f403ff7f408c9e850d9baacd8067e544536a4953480b0f9ee9cd45f41ebd67b51f78788a6470cb1e5ca72ca346ce8a50d0ca0c921d5576a4455a1afb6d0bc688004712ee122cacdb29c51e84893324c27fa4a3f1917edf5352272b4c97579a6152e4b77663d0ab532915f2eeb6a862de8b696452321b660c3f2449673d086e95a7af28845a5259b763e0fcd09f72acf7b6c811066263060e5aa5b24658e880a01fd56bda4dad5ab604e129290f7d5489728f2a40968c6168b21cebbbcd11727cc9e9160c4e92e04387d3b0d62aab06a61f26daedd9fed11816ef2180172a47f47184ac4032b88758c98a2e0fb200f70e93ba695f5ebb7a1029610ad360d3b7fa1b4640b9dc674d3625eef786da93dff19bc7991b5d6193a3896664763fde479b5dfc04812111a80782854f2cf68ca7d82765cc9eb40fba4b44640710ed6e653abf9f07b466333f4fd22784d53cf40e17120f42caa841eaa24056b237827b0f47f7257c103c35027e9f503e5acfd023e7357b600d3084d361d5ee65ba319b45c153212a54e6fed85af7e43e0a926ebcbc2edf8de7e2ec9528f00bec262ad04d5c9dafccaea06a24748d28bf1799bae0e895543084539c50b5aaa4fb50d7431d6f0c8cee2a54aaf7ee7919b55bf40adb688632e5dbe273cea09e97b19c3d8e1f4de000deb66fa1942ad03a62d3252f51992244366c156000b49c297167a6cbdedea7ebae139d295f0ad298e0864249b905b7eb812886ec70ecdb286702274b5b8574149bf3866f9e46b997ff5ed622b169a0eb071347f18d530db1663906a28f4544ee4e004ab87b65476af30ede118052ff052b8dc986ca2c93dd5d4943266a579c7698ea014f688b3e8063a107feb162d392e2177b01bff77fb5abe5feebd0607158049a5a093325b7c9ee6b4dfa7a9f65c7c2fb628920d3603a1c2dad979eaa047cd661a268af1078c9788d720e64e4ce9d12e68de1e417ef2f293323681e1071f9220e1ee43d2e29d111b870ce3439f5100ecd4551ab65ee74aa1667e564957e9bc0ae1ea193980da2a0ec2698073388c85bec25ef447f0d5e93a5203fa44dff268e5cb799ed3b66e63d5e07b487e7534f24934c73a62a243e0151843a0fd3807711a101eaa7fc71f0ba68aebb9534d57cba41b094eebfb4c31cca8eddfa426f676aa347be8a7023a4e91ddb154b35cd4d5f7dbc2e5db491de99f33fc2cff2d57029ac950e1ccd681980af6a4e8969dfe39b3c7bfcbcf8fac92f1e6ec9fe572bfa6a7d65860eab2ed10ac01a71290b52e3148e84b7376a8605cd2bb0e8681ffc54691ce087685e33921bd44d36c78291713dce17569570f62137e6904f0d68cf53aa2ec395c389a75141f08114fb293ea63950e4ffee55ec6fc83cf44876b8e7f25cdd393ff87b9eda6eb746085b61a6900de191f0ce2cb388d61ece52e78bc47368194e8e00277e0d1631e6b9d4626ef76f8522582ccd5a40be3febc699bb510acc6271d55ff0f4cf3bb7669855a72efd9ca3e1056a2fe592a5bc877cce2b1f63b58383971da87873d2d1349cf5881242cdce4e7e2c5c514755746a0e0a7c2a6d9701cde005ae3420beb17c379a3516662253554f51f0423bb1844b0b90c54ed8177ceb0e1036a6609d836e748ca06c40ca64befadc6443ec286a0ce464678e8d11eb455f7bb305acebf6cb1f50e394a9bfeb752df1687831bac9cdd811f4f112ef6658d0f8799a866374ff96c5e2b79f30e7a74f8a2bc9ed1f88f01f30e30cb78ffb2bff10108f35e910ee3be4463e9e6f0ed910e8d598326e71dfa2277ffe5579d7fe9b6018bfe295b25219eae07b3b0270665c3fa00c3e0d180812b5cd62925585de84a7c48a9a86dba96544a251654d1966e082432dc85b6149cf21e91a46020ec32b66d28ba3b6a90c0617bc6fdd55aea819af2bcf84864ad60c28fe3c9f8339d0aee68b39d97f63b6e082835d86119cf9b9fdc8b827c847ce40aa10e1577a710132316845e825345e95bdf94d0c66ec65a6c4319fce4792313663b5f7a651a6710783e6ab71608ac6cbbf3af6911adf596ccf7c172b9bd5bceb6db379967b32b143bdd11d2ee12ddf64ecef6391e0f8570e6cddd3db95204919362b89b739fa94e7c1bfde799fd5e22aa25ca6ca42e30c08e23aae2385d99ebab441072a880dcefdab74a4c9bd39d363f6d1933d59400fca161d432aa00f23b1b1c19a154be8989699d549b66d44e39896f5523443bc6ddf4a65e91f1f3fb7b52318869a05856a4fc92f3694c81ed833c972fb918f7e5","cipherparams":{"iv":"8c46d6162cd4c765759aedcbce2a5874"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"82fb6cdc6917609135277badacf15baa31899d08b71a5a0fa33167167c161537"},"mac":"9187b17f7eca48e6b8c586b0cd790dbe0feb876ac8385f93faa7d5e22a3c8fc7"},"id":"92caf6ee-2d43-48c0-859e-ffa1e0e23312","version":3}';
31
- const EXAMPLE_WALLET_PASSPHRASE = 'QuantumCoinExample123!';
32
-
33
- function isInsufficientGasErrorText(text) {
34
- if (!text || typeof text !== 'string') return false;
35
- const t = text.toLowerCase();
36
- return t.includes('insufficient') && t.includes('fund') && t.includes('gas');
37
- }
38
-
39
- async function readResponseTextSafe(response) {
40
- try {
41
- if (!response) return '';
42
- return await response.text();
43
- } catch {
44
- return '';
45
- }
46
- }
47
-
48
- describe('transactional', { concurrency: 1 }, () => {
49
- test(
50
- 'relay submit sendCoins: must succeed or fail only for insufficient gas',
51
- { timeout: 120_000 },
52
- async () => {
53
- const initOk = await qcsdk.initialize(
54
- new qcsdk.Config(READ_RELAY_URL, WRITE_RELAY_URL, MAINNET_CHAIN_ID, '', ''),
55
- );
56
- assert.equal(initOk, true);
57
-
58
- assert.ok(isCirclAvailable(), 'CIRCL WASM must be loaded and verifyWallet(newWallet()) must pass');
59
- const wallet = qcsdk.newWallet();
60
- assert.ok(wallet);
61
-
62
- const acct = await qcsdk.getAccountDetails(wallet.address);
63
- assert.ok(acct);
64
- assert.equal(acct.resultCode, 0, 'relay getAccountDetails must succeed to proceed');
65
- const nonce = acct.accountDetails.nonce;
66
- assert.ok(Number.isInteger(nonce) && nonce >= 0);
67
-
68
- // Send 0 coins so the only acceptable failure is "no gas".
69
- const send = await qcsdk.sendCoins(wallet, TO_ADDRESS_EXAMPLE, '0', nonce);
70
- assert.ok(send);
71
-
72
- if (send.resultCode === 0) {
73
- // Accepted by relay
74
- return;
75
- }
76
-
77
- // Only acceptable failure is insufficient gas.
78
- const statusText = send.response?.statusText ?? '';
79
- const bodyText = await readResponseTextSafe(send.response);
80
- const combined = `${statusText}\n${bodyText}`.trim();
81
-
82
- assert.ok(
83
- isInsufficientGasErrorText(combined),
84
- `Transactional relay test failed with unexpected error. resultCode=${send.resultCode}\n${combined || '(no response body)'}`,
85
- );
86
- },
87
- );
88
-
89
- test(
90
- 'relay signSendCoinTransaction + postTransaction: must succeed or fail only for insufficient gas',
91
- { timeout: 120_000 },
92
- async () => {
93
- await qcsdk.initialize(
94
- new qcsdk.Config(READ_RELAY_URL, WRITE_RELAY_URL, MAINNET_CHAIN_ID, '', ''),
95
- );
96
- // initialize() returns false if already initialized (e.g. by previous test); either way SDK is ready
97
-
98
- assert.ok(isCirclAvailable(), 'CIRCL WASM must be loaded and verifyWallet(newWallet()) must pass');
99
- const wallet = qcsdk.newWallet();
100
- assert.ok(wallet);
101
-
102
- const acct = await qcsdk.getAccountDetails(wallet.address);
103
- assert.ok(acct);
104
- assert.equal(acct.resultCode, 0, 'relay getAccountDetails must succeed to proceed');
105
- const nonce = acct.accountDetails.nonce;
106
- assert.ok(Number.isInteger(nonce) && nonce >= 0);
107
-
108
- const signResult = await qcsdk.signSendCoinTransaction(wallet, TO_ADDRESS_EXAMPLE, '0', nonce);
109
- assert.ok(signResult);
110
- assert.equal(signResult.resultCode, 0, 'signSendCoinTransaction must succeed');
111
- assert.ok(signResult.txnData && typeof signResult.txnData === 'string');
112
-
113
- const post = await qcsdk.postTransaction(signResult.txnData);
114
- assert.ok(post && typeof post.resultCode === 'number');
115
-
116
- if (post.resultCode === 0) {
117
- return;
118
- }
119
-
120
- const statusText = post.response?.statusText ?? '';
121
- const bodyText = await readResponseTextSafe(post.response);
122
- const combined = `${statusText}\n${bodyText}`.trim();
123
-
124
- assert.ok(
125
- isInsufficientGasErrorText(combined),
126
- `Transactional relay test (signSendCoinTransaction + postTransaction) failed with unexpected error. resultCode=${post.resultCode}\n${combined || '(no response body)'}`,
127
- );
128
- },
129
- );
130
- });
131
-
@@ -1,103 +0,0 @@
1
- const { describe, test } = require('node:test');
2
- const assert = require('node:assert/strict');
3
-
4
- // These are the "transactional" tests: they attempt to submit a transaction.
5
- // Per requirements:
6
- // - RPC-based transactional tests must use `https://public.rpc.quantumcoinapi.com`
7
- // - The transaction must either succeed OR fail only due to no coins for gas.
8
-
9
- const qcsdk = require('..');
10
-
11
- const MAINNET_CHAIN_ID = 123123;
12
- const PUBLIC_RPC_URL = 'https://public.rpc.quantumcoinapi.com';
13
-
14
- const TO_ADDRESS_EXAMPLE =
15
- '0x8293cd9b6ac502d2fe077b0c157dad39f36a5e546525b053151dced633634612';
16
-
17
- function isCirclAvailable() {
18
- const w = qcsdk.newWallet();
19
- return (
20
- typeof w === 'object' &&
21
- w != null &&
22
- w.privateKey != null &&
23
- w.address != null &&
24
- qcsdk.verifyWallet(w) === true
25
- );
26
- }
27
-
28
- const EXAMPLE_WALLET_ENCRYPTED_JSON =
29
- '{"address":"1a846abe71c8b989e8337c55d608be81c28ab3b2e40c83eaa2a68d516049aec6","crypto":{"cipher":"aes-256-ctr","ciphertext":"ab7e620dd66cb55ac201b9c6796de92bbb06f3681b5932eabe099871f1f7d79acabe30921a39ad13bfe74f42c515734882b6723760142aa3e26e011df514a534ae47bd15d86badd9c6f17c48d4c892711d54d441ee3a0ee0e5b060f816e79c7badd13ff4c235934b1986774223ecf6e8761388969bb239c759b54c8c70e6a2e27c93a4b70129c8159f461d271ae8f3573414c78b88e4d0abfa6365ed45456636d4ed971c7a0c6b84e6f0c2621e819268b135e2bcc169a54d1847b39e6ba2ae8ec969b69f330b7db9e785ed02204d5a1185915ae5338b0f40ef2a7f4d5aaf7563d502135e57f4eb89d5ec1efa5c77e374969d6cd85be625a2ed1225d68ecdd84067bfc69adb83ecd5c6050472eca28a5a646fcdd28077165c629975bec8a79fe1457cb53389b788b25e1f8eff8b2ca326d7dfcaba3f8839225a08057c018a458891fd2caa0d2b27632cffd80f592147ccec9a10dc8a08a48fb55047bff5cf85cda39eb089096bef63842fc3686412f298a54a9e4b0bf4ad36907ba373cbd6d32e7ac494af371da5aa9d38a3463220865114c4adc5e4ac258ba9c6af9fa2ddfd1aec2e16887e4b3977c69561df8599ac9d411c9dd2a4d57f92ea4e5c02aae3f49fb3bc83e16673e6c2dbe96bb181c8dfd0f9757ade2e4ff27215a836058c5ffeab042f6f97c7c02339f76a6284680e01b4bb733690eb3347fbfcc26614b8bf755f9dfce3fea9d4e4d15b164983201732c2e87593a86bca6da6972e128490338f76ae68135888070f4e59e90db54d23834769bdbda9769213faf5357f9167a224523975a946367b68f0cec98658575609f58bfd329e420a921c06713326e4cb20a0df1d77f37e78a320a637a96c604ca3fa89e24beb42313751b8f09b14f9c14c77e4fd13fc6382505d27c771bca0d821ec7c3765acffa99d83c50140a56b0b28101c762bd682fe55cb6f23cbeb3f421d7b36021010e45ac27160dd7ead99c864a1b550c7edb1246950fe32dcc049799f9085287f0a747a6ef7a023df46a23a22f3e833bbf8d404f84344870492658256ee1dfc40fda33bb8d48fc72d4520ba9fc820c9123104a045206809037709f2a5f6723fa77d6bac5a573823d4ec3a7f1cb786a52ee2697e622e5d75962fa554d1024a6c355e21f33a63b2b72e6c4742a8b1c373aa532b40518c38c90b5373c2eb8c9d7be2a9e16047a3ee09dc9a6849deac5183ace6cfe91a9bef2ffc0a7df6ccebfd4c858c84b0e0355650d7466971e66f1e3883013e5ad1be33199b1d110b79070ac1b745ccb14cf63a08f8cca3a21c9525e626ff5f0c34746e10750fb742ad51f11f2acae3676c2111853d7250d01b77821a6ba9e04400ba2c543ca9f2d701ae6f47bfad14ffe3039ee9e71f7b2401359ade9938750ddb9c5a8b018a7929ed8d0e717ff1861446ce17535e9b17c187711190aae3388bd9490837a636c25ed4d42d7079ad1a51e13292c683d5d012abcf46965c534b83ab53f2c1f0cf5830ef7582e06863a33c19a70511df632885d63245965047ea96b56f1af5b3b94a54999f784fb9574fdfcd7c1230e07a2aaa04acd3097b2b9f8ddba05ae9734491deb5c1a513c76ed276cb78bbf4839dae3156d76af444a5805129d5df791167a9c8576a1d7f760b2d2797c4658669608706fbd0ace1be2346f74862dfc9ef518e55632e43c043186e5d070deb34d12fb9e5aba84e5cb50213dc88efd39cc35bf42455aa82d5e3b707b3140be3b8623b34fdd81d08615c188ae8438a13881fdf6bf32f2cb9ff5fa625561040c6b71d4b8eccc90bc3b99650d28dd1ee63773e49664e3d48c484996b290943635a6f2eb1ce9796d3fa144a3f00ef82faaa32d6a413668f7b521517cb68b2b017fcf56c79326fa5e4060e643631ca3f0a0dc0ed718798b6f46b130d437c33f64039e887324b6f5e604b1669d613923794edbf04b1b3caea54793b52b44b170173a4f25c7ecef3b71e2aad76e556b1cb9f1d637ec52ececfa950dd31dbb6a60828a3ad34c1beffe09eb4785786d63bad10a0b0f66ea88c57380f38ea85f018dbd7f538cf1ee7624095b9a01ec5edd528f281168af020609e651ff316aa1320a710134ddfca600cc72174dcdb846d2aa29916488aa1b537b66da92e61af526debef4eb38c984569eaf549ff2129449269b492d030cd74d885f6f5785881cc4804b4a8a09ba4ff7aefe9074ac7d0c4f05d51fe4cc0ff7388a772092b9d02d70e5433a5cf3e02f46a6bd6b818d59a07ce3b9fbbf8b5faba74563bcc5240930c2d406c9aaee3e3ce0429bf68ac2b0a57adb09414cff50817d2a48fb9fa624ab863cb0c31a8b8dc5eaf6fa68cc1d7c6c685c5a33edd5c8933b9e8ab628ee428d0743699b2ff17f25586c7ce959280bb0b8c5342251f0a30b53dbc7bf1ee426ac9619c3560f811f2268ee37f189794e2e4b3db3a2fb2e34b649e504fb467438abfd1082619cc4a0b30d66beb831077812e418d2e2148db10cf4d4a29101ca52ec445b8d83519dd7de85a98e0beae9ee537096d3f1a55a7a80cdfa93d25f07c9f98e8af18cde19ec1f99c5dd4588b717a5039ddb7f177717caf0d0fd45420a70dbd6d3146890d9e450d5224146db4c33b779e3c3a04b976c052bad042ac57dd38be45407808c0fb0d7e2a8819e6cd53c6739e6612996ddaa6f066552590aa0343bc1e62b298ff2514a0cef8be21956c2e942816f7a3a3a0935eaf9b37251409ce444c986c3817e82835555fe18239f3ae33469d7965c2bde9991fde556bd07af01df52bbde0c35bb4ef48e3b5d0db53f8ca4ed35b83f760f0a1bc4ed9f86e85d6039a17df373c85402ef956f01db00eb39c4b74bd0660d29ee746714d9780d738e05c6cca414ce3d7b40dda8036a9eea9ab1388805f913eb19bdd3f09d9e161eaa50231bd9caba61971f194332dd28c696a60458c1c6c2cc5da8b1192611c7c553e9e12fe48ce46bbb891be8bb118721c86222e671ddd1da8f0ccb2b68e02f2014b4925e904e88369aaf7466bd7033a60c265d45955944916ecbdb84bf1b522b01b0149c632e04c568a7eb627c5bb90ece052ebcf79166c28b30d23fe52da0a5ab5dea83ca479a3e3b7a9cfbbfea04dbe6137c19d067317c2ec427a8c75a6b06bec6dcd5d5c0edc9aa80b9003b8e17c088b2f3db327d3e42630d82d20120240c3ba56232280787da4aabbf5bc95a864029f00710e195f2a76460a0317d10b552fe1bea097e41d49756c680a41d6ac186e62169b6b6cd7776ea84618b5b752328a5bacaa10aa122ff9b2698b43efe73d852a899db644863c8c9bc8068ea86ea843fd6fe36272b91cdc5d5317083ef3fd1e5462a0b0d0604dc57b3bbfceb0fca4cd349625dd7b25166af30efe5ee6a0af953a74d65f4736c59918ee55a3b0d9d9d42e04c7f8a77e479109f740e20c464d5d7e3d16805f47b61f403ff7f408c9e850d9baacd8067e544536a4953480b0f9ee9cd45f41ebd67b51f78788a6470cb1e5ca72ca346ce8a50d0ca0c921d5576a4455a1afb6d0bc688004712ee122cacdb29c51e84893324c27fa4a3f1917edf5352272b4c97579a6152e4b77663d0ab532915f2eeb6a862de8b696452321b660c3f2449673d086e95a7af28845a5259b763e0fcd09f72acf7b6c811066263060e5aa5b24658e880a01fd56bda4dad5ab604e129290f7d5489728f2a40968c6168b21cebbbcd11727cc9e9160c4e92e04387d3b0d62aab06a61f26daedd9fed11816ef2180172a47f47184ac4032b88758c98a2e0fb200f70e93ba695f5ebb7a1029610ad360d3b7fa1b4640b9dc674d3625eef786da93dff19bc7991b5d6193a3896664763fde479b5dfc04812111a80782854f2cf68ca7d82765cc9eb40fba4b44640710ed6e653abf9f07b466333f4fd22784d53cf40e17120f42caa841eaa24056b237827b0f47f7257c103c35027e9f503e5acfd023e7357b600d3084d361d5ee65ba319b45c153212a54e6fed85af7e43e0a926ebcbc2edf8de7e2ec9528f00bec262ad04d5c9dafccaea06a24748d28bf1799bae0e895543084539c50b5aaa4fb50d7431d6f0c8cee2a54aaf7ee7919b55bf40adb688632e5dbe273cea09e97b19c3d8e1f4de000deb66fa1942ad03a62d3252f51992244366c156000b49c297167a6cbdedea7ebae139d295f0ad298e0864249b905b7eb812886ec70ecdb286702274b5b8574149bf3866f9e46b997ff5ed622b169a0eb071347f18d530db1663906a28f4544ee4e004ab87b65476af30ede118052ff052b8dc986ca2c93dd5d4943266a579c7698ea014f688b3e8063a107feb162d392e2177b01bff77fb5abe5feebd0607158049a5a093325b7c9ee6b4dfa7a9f65c7c2fb628920d3603a1c2dad979eaa047cd661a268af1078c9788d720e64e4ce9d12e68de1e417ef2f293323681e1071f9220e1ee43d2e29d111b870ce3439f5100ecd4551ab65ee74aa1667e564957e9bc0ae1ea193980da2a0ec2698073388c85bec25ef447f0d5e93a5203fa44dff268e5cb799ed3b66e63d5e07b487e7534f24934c73a62a243e0151843a0fd3807711a101eaa7fc71f0ba68aebb9534d57cba41b094eebfb4c31cca8eddfa426f676aa347be8a7023a4e91ddb154b35cd4d5f7dbc2e5db491de99f33fc2cff2d57029ac950e1ccd681980af6a4e8969dfe39b3c7bfcbcf8fac92f1e6ec9fe572bfa6a7d65860eab2ed10ac01a71290b52e3148e84b7376a8605cd2bb0e8681ffc54691ce087685e33921bd44d36c78291713dce17569570f62137e6904f0d68cf53aa2ec395c389a75141f08114fb293ea63950e4ffee55ec6fc83cf44876b8e7f25cdd393ff87b9eda6eb746085b61a6900de191f0ce2cb388d61ece52e78bc47368194e8e00277e0d1631e6b9d4626ef76f8522582ccd5a40be3febc699bb510acc6271d55ff0f4cf3bb7669855a72efd9ca3e1056a2fe592a5bc877cce2b1f63b58383971da87873d2d1349cf5881242cdce4e7e2c5c514755746a0e0a7c2a6d9701cde005ae3420beb17c379a3516662253554f51f0423bb1844b0b90c54ed8177ceb0e1036a6609d836e748ca06c40ca64befadc6443ec286a0ce464678e8d11eb455f7bb305acebf6cb1f50e394a9bfeb752df1687831bac9cdd811f4f112ef6658d0f8799a866374ff96c5e2b79f30e7a74f8a2bc9ed1f88f01f30e30cb78ffb2bff10108f35e910ee3be4463e9e6f0ed910e8d598326e71dfa2277ffe5579d7fe9b6018bfe295b25219eae07b3b0270665c3fa00c3e0d180812b5cd62925585de84a7c48a9a86dba96544a251654d1966e082432dc85b6149cf21e91a46020ec32b66d28ba3b6a90c0617bc6fdd55aea819af2bcf84864ad60c28fe3c9f8339d0aee68b39d97f63b6e082835d86119cf9b9fdc8b827c847ce40aa10e1577a710132316845e825345e95bdf94d0c66ec65a6c4319fce4792313663b5f7a651a6710783e6ab71608ac6cbbf3af6911adf596ccf7c172b9bd5bceb6db379967b32b143bdd11d2ee12ddf64ecef6391e0f8570e6cddd3db95204919362b89b739fa94e7c1bfde799fd5e22aa25ca6ca42e30c08e23aae2385d99ebab441072a880dcefdab74a4c9bd39d363f6d1933d59400fca161d432aa00f23b1b1c19a154be8989699d549b66d44e39896f5523443bc6ddf4a65e91f1f3fb7b52318869a05856a4fc92f3694c81ed833c972fb918f7e5","cipherparams":{"iv":"8c46d6162cd4c765759aedcbce2a5874"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"82fb6cdc6917609135277badacf15baa31899d08b71a5a0fa33167167c161537"},"mac":"9187b17f7eca48e6b8c586b0cd790dbe0feb876ac8385f93faa7d5e22a3c8fc7"},"id":"92caf6ee-2d43-48c0-859e-ffa1e0e23312","version":3}';
30
- const EXAMPLE_WALLET_PASSPHRASE = 'QuantumCoinExample123!';
31
-
32
- async function rpc(method, params) {
33
- const response = await fetch(PUBLIC_RPC_URL, {
34
- method: 'POST',
35
- headers: { 'Content-Type': 'application/json' },
36
- body: JSON.stringify({ jsonrpc: '2.0', id: 1, method, params }),
37
- });
38
- assert.ok(response.ok, `RPC HTTP ${response.status}`);
39
- return response.json();
40
- }
41
-
42
- function isInsufficientGasErrorMessage(message) {
43
- if (!message || typeof message !== 'string') return false;
44
- const m = message.toLowerCase();
45
- return (
46
- (m.includes('insufficient') && m.includes('fund')) &&
47
- m.includes('gas')
48
- );
49
- }
50
-
51
- describe('transactional', { concurrency: 1 }, () => {
52
- test(
53
- 'RPC submit signed raw tx: must succeed or fail only for insufficient gas',
54
- { timeout: 120_000 },
55
- async () => {
56
- // For RPC-only flows, read/write URLs can be empty strings (see examples)
57
- const initOk = await qcsdk.initialize(new qcsdk.Config('', '', MAINNET_CHAIN_ID, '', ''));
58
- assert.equal(initOk, true);
59
-
60
- assert.ok(isCirclAvailable(), 'CIRCL WASM must be loaded and verifyWallet(newWallet()) must pass');
61
- const wallet = qcsdk.newWallet();
62
- assert.ok(wallet);
63
-
64
- const txnCount = await rpc('eth_getTransactionCount', [wallet.address, 'latest']);
65
- assert.ok(txnCount && (txnCount.result || txnCount.error));
66
- assert.ok(txnCount.result, `RPC error: ${txnCount.error?.message ?? 'unknown'}`);
67
- const nonce = parseInt(txnCount.result, 16);
68
- assert.ok(Number.isInteger(nonce) && nonce >= 0);
69
-
70
- // Build and sign a minimal transfer with value 0 to keep "value" out of the equation.
71
- const txReq = new qcsdk.TransactionSigningRequest(
72
- wallet,
73
- TO_ADDRESS_EXAMPLE,
74
- '0x0',
75
- nonce,
76
- null,
77
- 21000,
78
- null,
79
- MAINNET_CHAIN_ID,
80
- );
81
- const sign = qcsdk.signRawTransaction(txReq);
82
- assert.equal(sign.resultCode, 0);
83
- assert.ok(typeof sign.txnData === 'string' && sign.txnData.startsWith('0x'));
84
-
85
- const send = await rpc('eth_sendRawTransaction', [sign.txnData]);
86
-
87
- if (send && send.result && typeof send.result === 'string') {
88
- assert.ok(send.result.startsWith('0x'));
89
- return;
90
- }
91
-
92
- console.log(sign.txnData);
93
-
94
- // If it failed, ONLY accept "insufficient funds for gas" style errors.
95
- const msg = send?.error?.message ?? '';
96
- assert.ok(
97
- isInsufficientGasErrorMessage(msg),
98
- `Transactional RPC test failed with unexpected error: ${msg || JSON.stringify(send)}`,
99
- );
100
- },
101
- );
102
- });
103
-