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,165 +0,0 @@
1
- /**
2
- * @testCategory e2e
3
- * @blockchainRequired write
4
- * @transactional true
5
- * @description Real-chain e2e test verifying the generator skips the bytecode
6
- * validation for interface contracts. Materializes a tiny interface
7
- * SDK to a tmpdir and runs the generator's emitted `node --test`
8
- * file against the real QC_RPC_URL chain with the real test wallet.
9
- */
10
-
11
- const { describe, it } = require("node:test");
12
- const assert = require("node:assert/strict");
13
- const fs = require("node:fs");
14
- const os = require("node:os");
15
- const path = require("node:path");
16
- const { spawnSync } = require("node:child_process");
17
-
18
- const { generateFromArtifacts, generateTransactionalTestJs } = require("../../src/generator");
19
- const { getRpcUrl, getChainId, logE2eConfig } = require("./helpers");
20
- const { logSuite, logTest } = require("../verbose-logger");
21
-
22
- function _materializeInterfaceSdk({ contractName, abi, bytecode }) {
23
- const tmpRoot = fs.mkdtempSync(path.join(os.tmpdir(), "qcgen-iface-e2e-"));
24
- const srcDir = path.join(tmpRoot, "src");
25
- fs.mkdirSync(srcDir, { recursive: true });
26
-
27
- generateFromArtifacts({
28
- outDir: srcDir,
29
- artifacts: [{ contractName, abi, bytecode }],
30
- lang: "js",
31
- });
32
-
33
- fs.writeFileSync(
34
- path.join(tmpRoot, "index.js"),
35
- `module.exports = require("./src");\n`,
36
- );
37
- fs.writeFileSync(
38
- path.join(tmpRoot, "package.json"),
39
- JSON.stringify(
40
- { name: `qcgen-iface-${Date.now()}`, version: "0.0.1", main: "index.js", private: true },
41
- null,
42
- 2,
43
- ),
44
- );
45
-
46
- const repoRoot = path.resolve(__dirname, "..", "..");
47
- const qcShim = path.join(tmpRoot, "node_modules", "quantumcoin");
48
- fs.mkdirSync(qcShim, { recursive: true });
49
- fs.writeFileSync(
50
- path.join(qcShim, "package.json"),
51
- JSON.stringify(
52
- { name: "quantumcoin", version: "0.0.0", main: "index.js", private: true },
53
- null,
54
- 2,
55
- ),
56
- );
57
- fs.writeFileSync(
58
- path.join(qcShim, "index.js"),
59
- `module.exports = require(${JSON.stringify(path.join(repoRoot, "index.js"))});\n`,
60
- );
61
- fs.writeFileSync(
62
- path.join(qcShim, "config.js"),
63
- `module.exports = require(${JSON.stringify(path.join(repoRoot, "config.js"))});\n`,
64
- );
65
-
66
- const testFile = path.join(tmpRoot, "test", "e2e", `${contractName}.e2e.test.js`);
67
- fs.mkdirSync(path.dirname(testFile), { recursive: true });
68
- fs.writeFileSync(
69
- testFile,
70
- generateTransactionalTestJs({ contractName, abi, bytecode }),
71
- );
72
-
73
- return { tmpRoot, testFile };
74
- }
75
-
76
- describe("auto-generator: interface contract end-to-end (real chain)", () => {
77
- logSuite("auto-generator: interface contract end-to-end (real chain)");
78
-
79
- it("generated interface test runs against the real chain and passes (bytecode check skipped)", async (t) => {
80
- logTest("generated interface test runs against the real chain and passes", {});
81
- const rpcUrl = getRpcUrl();
82
- if (!rpcUrl) {
83
- t.skip("QC_RPC_URL not provided");
84
- return;
85
- }
86
- logE2eConfig();
87
- const chainId = getChainId();
88
-
89
- const contractName = "IThing";
90
- const abi = [
91
- {
92
- type: "function",
93
- name: "doThing",
94
- inputs: [],
95
- outputs: [],
96
- stateMutability: "nonpayable",
97
- },
98
- ];
99
- const bytecode = "0x";
100
-
101
- const { tmpRoot, testFile } = _materializeInterfaceSdk({ contractName, abi, bytecode });
102
-
103
- // Sanity: the generator should not have emitted a bytecode assertion for this interface.
104
- const generatedSrc = fs.readFileSync(testFile, "utf8");
105
- assert.ok(
106
- !/provider\.getCode\(contract\.target/.test(generatedSrc),
107
- "interface-generated test must not contain provider.getCode bytecode assertion",
108
- );
109
- assert.ok(
110
- /Skipping bytecode check/.test(generatedSrc),
111
- "interface-generated test must contain the skip-comment marker",
112
- );
113
-
114
- // IMPORTANT: scrub Node's internal --test child-context markers from the
115
- // spawn env. The outer `node --test` runner sets NODE_TEST_CONTEXT (and
116
- // related vars) which would make our spawned child short-circuit as a
117
- // "test child" instead of running the generated test normally.
118
- const childEnv = { ...process.env, QC_RPC_URL: rpcUrl, QC_CHAIN_ID: String(chainId) };
119
- delete childEnv.NODE_TEST_CONTEXT;
120
- delete childEnv.NODE_TEST_OPTIONS;
121
- if (childEnv.NODE_OPTIONS && /--test\b/.test(childEnv.NODE_OPTIONS)) {
122
- childEnv.NODE_OPTIONS = childEnv.NODE_OPTIONS.replace(/(^|\s)--test\b\S*/g, "").trim();
123
- }
124
-
125
- let succeeded = false;
126
- try {
127
- const res = spawnSync(
128
- process.execPath,
129
- ["--test", "--test-reporter=tap", testFile],
130
- {
131
- cwd: tmpRoot,
132
- env: childEnv,
133
- encoding: "utf8",
134
- shell: false,
135
- windowsHide: true,
136
- },
137
- );
138
- assert.equal(
139
- res.status,
140
- 0,
141
- `generated interface test failed:\nSTDOUT:\n${res.stdout}\nSTDERR:\n${res.stderr}`,
142
- );
143
- // Accept either the TAP reporter ("# pass 1") or the spec reporter
144
- // ("\u2139 pass 1") summary line so the assertion is reporter-agnostic.
145
- assert.match(
146
- res.stdout || "",
147
- /(?:#|\u2139)\s*pass 1\b/,
148
- `generated interface test did not actually run (no 'pass 1' summary in test output);\nSTDOUT:\n${res.stdout}\nSTDERR:\n${res.stderr}`,
149
- );
150
- assert.doesNotMatch(
151
- res.stdout || "",
152
- /(?:#|\u2139)\s*pass 0\b|(?:#|\u2139)\s*tests 0\b|(?:#|\u2139)\s*skipped 1\b/,
153
- `generated interface test was skipped or did not run any tests;\nSTDOUT:\n${res.stdout}\nSTDERR:\n${res.stderr}`,
154
- );
155
- succeeded = true;
156
- } finally {
157
- if (succeeded) {
158
- fs.rmSync(tmpRoot, { recursive: true, force: true });
159
- } else {
160
- // eslint-disable-next-line no-console
161
- console.error("Generated interface package kept at:", tmpRoot);
162
- }
163
- }
164
- }, { timeout: 1_800_000 });
165
- });
@@ -1,160 +0,0 @@
1
- /**
2
- * @testCategory e2e
3
- * @blockchainRequired write
4
- * @transactional true
5
- * @description Real-chain e2e test verifying the generator skips the bytecode
6
- * validation for interface contracts. Materializes a tiny interface
7
- * SDK to a tmpdir and runs the generator's emitted `node --test`
8
- * file against the real QC_RPC_URL chain with the real test wallet.
9
- */
10
-
11
- import { describe, it } from "node:test";
12
- import assert from "node:assert/strict";
13
- import fs from "node:fs";
14
- import os from "node:os";
15
- import path from "node:path";
16
- import { spawnSync } from "node:child_process";
17
-
18
- import { generateFromArtifacts, generateTransactionalTestJs } from "../../src/generator";
19
- import { getRpcUrl, getChainId, logE2eConfig } from "./helpers";
20
- import { logSuite, logTest } from "../verbose-logger";
21
-
22
- function _materializeInterfaceSdk({ contractName, abi, bytecode }: { contractName: string; abi: any[]; bytecode?: string }) {
23
- const tmpRoot = fs.mkdtempSync(path.join(os.tmpdir(), "qcgen-iface-e2e-"));
24
- const srcDir = path.join(tmpRoot, "src");
25
- fs.mkdirSync(srcDir, { recursive: true });
26
-
27
- generateFromArtifacts({
28
- outDir: srcDir,
29
- artifacts: [{ contractName, abi, bytecode }],
30
- lang: "js",
31
- });
32
-
33
- fs.writeFileSync(
34
- path.join(tmpRoot, "index.js"),
35
- `module.exports = require("./src");\n`,
36
- );
37
- fs.writeFileSync(
38
- path.join(tmpRoot, "package.json"),
39
- JSON.stringify(
40
- { name: `qcgen-iface-${Date.now()}`, version: "0.0.1", main: "index.js", private: true },
41
- null,
42
- 2,
43
- ),
44
- );
45
-
46
- const repoRoot = path.resolve(__dirname, "..", "..");
47
- const qcShim = path.join(tmpRoot, "node_modules", "quantumcoin");
48
- fs.mkdirSync(qcShim, { recursive: true });
49
- fs.writeFileSync(
50
- path.join(qcShim, "package.json"),
51
- JSON.stringify(
52
- { name: "quantumcoin", version: "0.0.0", main: "index.js", private: true },
53
- null,
54
- 2,
55
- ),
56
- );
57
- fs.writeFileSync(
58
- path.join(qcShim, "index.js"),
59
- `module.exports = require(${JSON.stringify(path.join(repoRoot, "index.js"))});\n`,
60
- );
61
- fs.writeFileSync(
62
- path.join(qcShim, "config.js"),
63
- `module.exports = require(${JSON.stringify(path.join(repoRoot, "config.js"))});\n`,
64
- );
65
-
66
- const testFile = path.join(tmpRoot, "test", "e2e", `${contractName}.e2e.test.js`);
67
- fs.mkdirSync(path.dirname(testFile), { recursive: true });
68
- fs.writeFileSync(
69
- testFile,
70
- generateTransactionalTestJs({ contractName, abi, bytecode }),
71
- );
72
-
73
- return { tmpRoot, testFile };
74
- }
75
-
76
- describe("auto-generator: interface contract end-to-end (real chain)", () => {
77
- logSuite("auto-generator: interface contract end-to-end (real chain)");
78
-
79
- it("generated interface test runs against the real chain and passes (bytecode check skipped)", async (t) => {
80
- logTest("generated interface test runs against the real chain and passes", {});
81
- const rpcUrl = getRpcUrl();
82
- if (!rpcUrl) {
83
- t.skip("QC_RPC_URL not provided");
84
- return;
85
- }
86
- logE2eConfig();
87
- const chainId = getChainId();
88
-
89
- const contractName = "IThing";
90
- const abi = [
91
- {
92
- type: "function",
93
- name: "doThing",
94
- inputs: [],
95
- outputs: [],
96
- stateMutability: "nonpayable",
97
- },
98
- ];
99
- const bytecode = "0x";
100
-
101
- const { tmpRoot, testFile } = _materializeInterfaceSdk({ contractName, abi, bytecode });
102
-
103
- const generatedSrc = fs.readFileSync(testFile, "utf8");
104
- assert.ok(
105
- !/provider\.getCode\(contract\.target/.test(generatedSrc),
106
- "interface-generated test must not contain provider.getCode bytecode assertion",
107
- );
108
- assert.ok(
109
- /Skipping bytecode check/.test(generatedSrc),
110
- "interface-generated test must contain the skip-comment marker",
111
- );
112
-
113
- const childEnv: NodeJS.ProcessEnv = { ...process.env, QC_RPC_URL: rpcUrl, QC_CHAIN_ID: String(chainId) };
114
- delete childEnv.NODE_TEST_CONTEXT;
115
- delete childEnv.NODE_TEST_OPTIONS;
116
- if (childEnv.NODE_OPTIONS && /--test\b/.test(childEnv.NODE_OPTIONS)) {
117
- childEnv.NODE_OPTIONS = childEnv.NODE_OPTIONS.replace(/(^|\s)--test\b\S*/g, "").trim();
118
- }
119
-
120
- let succeeded = false;
121
- try {
122
- const res = spawnSync(
123
- process.execPath,
124
- ["--test", "--test-reporter=tap", testFile],
125
- {
126
- cwd: tmpRoot,
127
- env: childEnv,
128
- encoding: "utf8",
129
- shell: false,
130
- windowsHide: true,
131
- },
132
- );
133
- assert.equal(
134
- res.status,
135
- 0,
136
- `generated interface test failed:\nSTDOUT:\n${res.stdout}\nSTDERR:\n${res.stderr}`,
137
- );
138
- // Accept either the TAP reporter ("# pass 1") or the spec reporter
139
- // ("\u2139 pass 1") summary line so the assertion is reporter-agnostic.
140
- assert.match(
141
- res.stdout || "",
142
- /(?:#|\u2139)\s*pass 1\b/,
143
- `generated interface test did not actually run (no 'pass 1' summary in test output);\nSTDOUT:\n${res.stdout}\nSTDERR:\n${res.stderr}`,
144
- );
145
- assert.doesNotMatch(
146
- res.stdout || "",
147
- /(?:#|\u2139)\s*pass 0\b|(?:#|\u2139)\s*tests 0\b|(?:#|\u2139)\s*skipped 1\b/,
148
- `generated interface test was skipped or did not run any tests;\nSTDOUT:\n${res.stdout}\nSTDERR:\n${res.stderr}`,
149
- );
150
- succeeded = true;
151
- } finally {
152
- if (succeeded) {
153
- fs.rmSync(tmpRoot, { recursive: true, force: true });
154
- } else {
155
- // eslint-disable-next-line no-console
156
- console.error("Generated interface package kept at:", tmpRoot);
157
- }
158
- }
159
- }, { timeout: 1_800_000 });
160
- });
@@ -1,59 +0,0 @@
1
- /**
2
- * E2E test helpers.
3
- */
4
-
5
- const fs = require("node:fs");
6
- const { isVerbose, log } = require("../verbose-logger");
7
-
8
- function getArg(name) {
9
- const prefix = name + "=";
10
- for (const a of process.argv) {
11
- if (a === name) return true;
12
- if (a.startsWith(prefix)) return a.slice(prefix.length);
13
- }
14
- return null;
15
- }
16
-
17
- function getRpcUrl() {
18
- return (
19
- process.env.QC_ENDPOINT ||
20
- process.env.QC_RPC_URL ||
21
- getArg("--rpc") ||
22
- getArg("--rpcUrl") ||
23
- getArg("--rpc-url") ||
24
- null
25
- );
26
- }
27
-
28
- function getChainId() {
29
- const v = process.env.QC_CHAIN_ID || getArg("--chainId") || getArg("--chain-id");
30
- return v ? Number(v) : 123123;
31
- }
32
-
33
- function getSolcPath() {
34
- return process.env.QC_SOLC_PATH || "c:\\solc\\solc.exe";
35
- }
36
-
37
- function assertSolcExists(solcPath) {
38
- if (!fs.existsSync(solcPath)) {
39
- throw new Error(`solc not found at ${solcPath}`);
40
- }
41
- }
42
-
43
- function logE2eConfig() {
44
- if (!isVerbose()) return;
45
- log("e2e", "config", {
46
- rpcUrl: getRpcUrl() ? "(set)" : null,
47
- chainId: getChainId(),
48
- solcPath: getSolcPath(),
49
- });
50
- }
51
-
52
- module.exports = {
53
- getRpcUrl,
54
- getChainId,
55
- getSolcPath,
56
- assertSolcExists,
57
- logE2eConfig,
58
- };
59
-
@@ -1,141 +0,0 @@
1
- /**
2
- * @testCategory e2e
3
- * @blockchainRequired write
4
- * @transactional true
5
- * @description Sends 1M coins to 32/36-word wallets, then sends back with signingContext (null, 0, 1, 2).
6
- * Asserts transaction fees. Run once and copy logged fee values into EXPECTED_FEE_* constants below.
7
- *
8
- * Requires QC_RPC_URL or QC_ENDPOINT. Uses same hardcoded test wallet as transactional.test.js.
9
- */
10
-
11
- const { describe, it } = require("node:test");
12
- const assert = require("node:assert/strict");
13
-
14
- const qc = require("../../index");
15
- const { Initialize } = require("../../config");
16
- const { getRpcUrl, getChainId, logE2eConfig } = require("./helpers");
17
- const { logSuite, logTest, logTxn, logAddress } = require("../verbose-logger");
18
-
19
- // Same funded test wallet as transactional.test.js
20
- const TEST_WALLET_ENCRYPTED_JSON =
21
- "{\"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}";
22
- const TEST_WALLET_PASSPHRASE = "QuantumCoinExample123!";
23
-
24
- // 32/36-word seed phrases (first 32 and 36 words from same 48-word seed as in address-wallet.test.js)
25
- const TEST_SEED_WORDS = [
26
- "cylamidal", "suculate", "sealmate", "radiploid", "equifaxis", "and", "antipoise", "stitchesy", "perelade", "lite",
27
- "gourtarel", "thursat", "overdrome", "cogulate", "nonviva", "stewnut", "floribund", "enduivist", "decatary", "elvenwort",
28
- "indoucate", "ravelent", "vocalus", "wetshirt", "rutatory", "percect", "breaktout", "corpation", "myricorus", "veofreat",
29
- "junkard", "supercarp", "sukerus", "tautang", "facetype", "shishkin", "insulal", "hobstone", "stumbed", "tecutonic",
30
- "jumplike", "hegwirth", "idea", "bhagatpur", "pavastava", "kukuluan", "mageiline", "extranite",
31
- ];
32
- const TEST_SEED_WORDS_32 = TEST_SEED_WORDS.slice(0, 32);
33
- const TEST_SEED_WORDS_36 = TEST_SEED_WORDS.slice(0, 36);
34
-
35
- const SEND_AMOUNT = qc.parseEther("1000000"); // 1M coins
36
- const GAS_LIMIT = 21000;
37
-
38
- // Expected tx fees (wei). Updated from run with IPC \\.\pipe\geth.ipc.
39
- const EXPECTED_FEE_36_CONTEXT_NULL = 1999999999999999200000n;
40
- const EXPECTED_FEE_36_CONTEXT_1 = 1999999999999999200000n;
41
- const EXPECTED_FEE_32_CONTEXT_NULL = 99999999999999960000n;
42
- const EXPECTED_FEE_32_CONTEXT_0 = 99999999999999960000n;
43
- const EXPECTED_FEE_32_CONTEXT_2 = 2999999999999998800000n;
44
-
45
- describe("SigningContext and fee E2E", () => {
46
- it("funds 32/36-word wallets, sends back with signingContext, asserts fees", async (t) => {
47
- logSuite("SigningContext and fee E2E");
48
- logTest("funds 32/36-word wallets, sends back with signingContext, asserts fees", {});
49
-
50
- const rpcUrl = getRpcUrl();
51
- if (!rpcUrl) {
52
- t.skip("QC_RPC_URL or QC_ENDPOINT not provided");
53
- return;
54
- }
55
- logE2eConfig();
56
-
57
- const chainId = getChainId();
58
- await Initialize(null);
59
-
60
- const provider = qc.getProvider(rpcUrl, chainId);
61
- const defaultWallet = qc.Wallet.fromEncryptedJsonSync(TEST_WALLET_ENCRYPTED_JSON, TEST_WALLET_PASSPHRASE, provider);
62
- const wallet32 = qc.Wallet.fromPhrase(TEST_SEED_WORDS_32, provider);
63
- const wallet36 = qc.Wallet.fromPhrase(TEST_SEED_WORDS_36, provider);
64
-
65
- logAddress("default", defaultWallet.address);
66
- logAddress("wallet32", wallet32.address);
67
- logAddress("wallet36", wallet36.address);
68
-
69
- // --- Phase 1: Fund 32 and 36-word wallets from default (32: 3 sends, 36: 2 sends; each send ~1M + fee) ---
70
- const fund32 = 3n * SEND_AMOUNT;
71
- const fund36 = 2n * SEND_AMOUNT;
72
- const tx1 = await defaultWallet.sendTransaction({
73
- to: wallet32.address,
74
- value: fund32,
75
- gasLimit: GAS_LIMIT,
76
- remarks: null,
77
- });
78
- logTxn(tx1.hash, { from: defaultWallet.address, to: wallet32.address, value: fund32.toString() });
79
- await tx1.wait(1, 600_000);
80
-
81
- const tx2 = await defaultWallet.sendTransaction({
82
- to: wallet36.address,
83
- value: fund36,
84
- gasLimit: GAS_LIMIT,
85
- remarks: null,
86
- });
87
- logTxn(tx2.hash, { from: defaultWallet.address, to: wallet36.address, value: fund36.toString() });
88
- await tx2.wait(1, 600_000);
89
-
90
- // Amount to send back (leave headroom for fee)
91
- const sendBackValue = SEND_AMOUNT - qc.parseEther("10000"); // arbitrary buffer
92
-
93
- // --- Phase 2: Send back with signingContext (36: null, 1; 32: null, 0, 2) ---
94
- const cases = [
95
- { wallet: wallet36, signingContext: wallet36.getSigningContext(), label: "36_null" },
96
- { wallet: wallet36, signingContext: wallet36.getSigningContext(true), label: "36_1" },
97
- { wallet: wallet32, signingContext: wallet32.getSigningContext(), label: "32_null" },
98
- { wallet: wallet32, signingContext: wallet32.getSigningContext(), label: "32_0" },
99
- { wallet: wallet32, signingContext: wallet32.getSigningContext(true), label: "32_2" },
100
- ];
101
-
102
- const expectedFees = {
103
- "36_null": EXPECTED_FEE_36_CONTEXT_NULL,
104
- "36_1": EXPECTED_FEE_36_CONTEXT_1,
105
- "32_null": EXPECTED_FEE_32_CONTEXT_NULL,
106
- "32_0": EXPECTED_FEE_32_CONTEXT_0,
107
- "32_2": EXPECTED_FEE_32_CONTEXT_2,
108
- };
109
-
110
- for (const { wallet, signingContext, label } of cases) {
111
- const senderBefore = await provider.getBalance(wallet.address);
112
-
113
- const txReq = {
114
- to: defaultWallet.address,
115
- value: sendBackValue,
116
- gasLimit: GAS_LIMIT,
117
- chainId,
118
- remarks: null,
119
- signingContext: signingContext === null ? null : signingContext,
120
- };
121
-
122
- const raw = await wallet.signTransaction(txReq);
123
- const sent = await provider.sendRawTransaction(raw);
124
- logTxn(sent.hash, { label, signingContext, from: wallet.address });
125
-
126
- const receipt = await sent.wait(1, 600_000);
127
- assert.ok(receipt && receipt.blockNumber != null);
128
-
129
- const confirmedTx = await provider.getTransaction(sent.hash);
130
- assert.ok(confirmedTx, `${label}: getTransaction should return the mined tx`);
131
- assert.strictEqual(confirmedTx.txType, 1, `${label}: txType should be 1`);
132
-
133
- const senderAfter = await provider.getBalance(wallet.address);
134
- const feePaid = senderBefore - senderAfter - sendBackValue;
135
- assert.ok(feePaid >= 0n, `${label}: fee should be non-negative`);
136
-
137
- console.log(`[signing-context-fee] ${label} signingContext=${signingContext} feeWei=${feePaid.toString()}`);
138
- assert.strictEqual(feePaid, expectedFees[label], `fee for ${label} (signingContext=${signingContext})`);
139
- }
140
- }, { timeout: 900_000 });
141
- });