quantumcoin 7.0.13 → 7.0.14

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 (204) hide show
  1. package/examples/node_modules/.bin/esbuild +16 -0
  2. package/examples/node_modules/.bin/esbuild.cmd +17 -0
  3. package/examples/node_modules/.bin/esbuild.ps1 +28 -0
  4. package/examples/node_modules/.bin/sdkgen +16 -0
  5. package/examples/node_modules/.bin/sdkgen.cmd +17 -0
  6. package/examples/node_modules/.bin/sdkgen.ps1 +28 -0
  7. package/examples/node_modules/.bin/tsx +16 -0
  8. package/examples/node_modules/.bin/tsx.cmd +17 -0
  9. package/examples/node_modules/.bin/tsx.ps1 +28 -0
  10. package/examples/node_modules/.package-lock.json +144 -0
  11. package/examples/node_modules/@esbuild/win32-x64/README.md +3 -0
  12. package/examples/node_modules/@esbuild/win32-x64/esbuild.exe +0 -0
  13. package/examples/node_modules/@esbuild/win32-x64/package.json +20 -0
  14. package/examples/node_modules/esbuild/LICENSE.md +21 -0
  15. package/examples/node_modules/esbuild/README.md +3 -0
  16. package/examples/node_modules/esbuild/bin/esbuild +223 -0
  17. package/examples/node_modules/esbuild/install.js +289 -0
  18. package/examples/node_modules/esbuild/lib/main.d.ts +716 -0
  19. package/examples/node_modules/esbuild/lib/main.js +2532 -0
  20. package/examples/node_modules/esbuild/package.json +49 -0
  21. package/examples/node_modules/get-tsconfig/LICENSE +21 -0
  22. package/examples/node_modules/get-tsconfig/README.md +235 -0
  23. package/examples/node_modules/get-tsconfig/dist/index.cjs +7 -0
  24. package/examples/node_modules/get-tsconfig/dist/index.d.cts +2088 -0
  25. package/examples/node_modules/get-tsconfig/dist/index.d.mts +2088 -0
  26. package/examples/node_modules/get-tsconfig/dist/index.mjs +7 -0
  27. package/examples/node_modules/get-tsconfig/package.json +46 -0
  28. package/examples/node_modules/quantum-coin-js-sdk/LICENSE +21 -0
  29. package/examples/node_modules/quantum-coin-js-sdk/LICENSE-wasm_exec.js.txt +30 -0
  30. package/examples/node_modules/quantum-coin-js-sdk/README.md +1675 -0
  31. package/examples/node_modules/quantum-coin-js-sdk/example/README.md +14 -0
  32. package/examples/node_modules/quantum-coin-js-sdk/example/conversion-example.js +19 -0
  33. package/examples/node_modules/quantum-coin-js-sdk/example/example-create-contract.js +396 -0
  34. package/examples/node_modules/quantum-coin-js-sdk/example/example-encode-decode-rlp.js +225 -0
  35. package/examples/node_modules/quantum-coin-js-sdk/example/example-event-pack-unpack.js +391 -0
  36. package/examples/node_modules/quantum-coin-js-sdk/example/example-misc.js +101 -0
  37. package/examples/node_modules/quantum-coin-js-sdk/example/example-rpc-send-signRawTransaction.js +318 -0
  38. package/examples/node_modules/quantum-coin-js-sdk/example/example-rpc-send.js +116 -0
  39. package/examples/node_modules/quantum-coin-js-sdk/example/example-send.js +70 -0
  40. package/examples/node_modules/quantum-coin-js-sdk/example/example-token-pack-unpack.js +961 -0
  41. package/examples/node_modules/quantum-coin-js-sdk/example/example-wallet-version4.js +35 -0
  42. package/examples/node_modules/quantum-coin-js-sdk/example/example-wallet.js +43 -0
  43. package/examples/node_modules/quantum-coin-js-sdk/example/example.js +405 -0
  44. package/examples/node_modules/quantum-coin-js-sdk/example/package-lock.json +134 -0
  45. package/examples/node_modules/quantum-coin-js-sdk/example/package.json +15 -0
  46. package/examples/node_modules/quantum-coin-js-sdk/index.d.ts +1031 -0
  47. package/examples/node_modules/quantum-coin-js-sdk/index.js +3144 -0
  48. package/examples/node_modules/quantum-coin-js-sdk/package.json +34 -0
  49. package/examples/node_modules/quantum-coin-js-sdk/tests/encrypted-32.json +1 -0
  50. package/examples/node_modules/quantum-coin-js-sdk/tests/encrypted-36.json +1 -0
  51. package/examples/node_modules/quantum-coin-js-sdk/tests/encrypted-48.json +1 -0
  52. package/examples/node_modules/quantum-coin-js-sdk/tests/generate-verify-vectors.js +91 -0
  53. package/examples/node_modules/quantum-coin-js-sdk/tests/non-transactional.preinit.test.js +41 -0
  54. package/examples/node_modules/quantum-coin-js-sdk/tests/non-transactional.test.js +1389 -0
  55. package/examples/node_modules/quantum-coin-js-sdk/tests/sign-raw-keytype5-context-null.test.js +107 -0
  56. package/examples/node_modules/quantum-coin-js-sdk/tests/sign-raw-transaction.test.js +196 -0
  57. package/examples/node_modules/quantum-coin-js-sdk/tests/sign-verify.test.js +311 -0
  58. package/examples/node_modules/quantum-coin-js-sdk/tests/transactional.relay.test.js +131 -0
  59. package/examples/node_modules/quantum-coin-js-sdk/tests/transactional.rpc.test.js +103 -0
  60. package/examples/node_modules/quantum-coin-js-sdk/tests/verify-vectors.json +95035 -0
  61. package/examples/node_modules/quantum-coin-js-sdk/wasmBase64.d.ts +9 -0
  62. package/examples/node_modules/quantum-coin-js-sdk/wasmBase64.js +16 -0
  63. package/examples/node_modules/quantum-coin-js-sdk/wasm_exec.d.ts +0 -0
  64. package/examples/node_modules/quantum-coin-js-sdk/wasm_exec.js +587 -0
  65. package/examples/node_modules/resolve-pkg-maps/LICENSE +21 -0
  66. package/examples/node_modules/resolve-pkg-maps/README.md +216 -0
  67. package/examples/node_modules/resolve-pkg-maps/dist/index.cjs +1 -0
  68. package/examples/node_modules/resolve-pkg-maps/dist/index.d.cts +11 -0
  69. package/examples/node_modules/resolve-pkg-maps/dist/index.d.mts +11 -0
  70. package/examples/node_modules/resolve-pkg-maps/dist/index.mjs +1 -0
  71. package/examples/node_modules/resolve-pkg-maps/package.json +42 -0
  72. package/examples/node_modules/seed-words/.github/workflows/publish-npmjs.yaml +22 -0
  73. package/examples/node_modules/seed-words/BUILD.md +7 -0
  74. package/examples/node_modules/seed-words/LICENSE +121 -0
  75. package/examples/node_modules/seed-words/README.md +67 -0
  76. package/examples/node_modules/seed-words/dist/seedwords.d.ts +39 -0
  77. package/examples/node_modules/seed-words/package.json +27 -0
  78. package/examples/node_modules/seed-words/seedwords.js +315 -0
  79. package/examples/node_modules/seed-words/seedwords.txt +65536 -0
  80. package/examples/node_modules/seed-words/tsconfig.json +21 -0
  81. package/examples/node_modules/tsx/LICENSE +21 -0
  82. package/examples/node_modules/tsx/README.md +32 -0
  83. package/examples/node_modules/tsx/dist/cjs/api/index.cjs +1 -0
  84. package/examples/node_modules/tsx/dist/cjs/api/index.d.cts +35 -0
  85. package/examples/node_modules/tsx/dist/cjs/api/index.d.mts +35 -0
  86. package/examples/node_modules/tsx/dist/cjs/api/index.mjs +1 -0
  87. package/examples/node_modules/tsx/dist/cjs/index.cjs +1 -0
  88. package/examples/node_modules/tsx/dist/cjs/index.mjs +1 -0
  89. package/examples/node_modules/tsx/dist/cli.cjs +54 -0
  90. package/examples/node_modules/tsx/dist/cli.mjs +55 -0
  91. package/examples/node_modules/tsx/dist/client-BQVF1NaW.mjs +1 -0
  92. package/examples/node_modules/tsx/dist/client-D6NvIMSC.cjs +1 -0
  93. package/examples/node_modules/tsx/dist/esm/api/index.cjs +1 -0
  94. package/examples/node_modules/tsx/dist/esm/api/index.d.cts +35 -0
  95. package/examples/node_modules/tsx/dist/esm/api/index.d.mts +35 -0
  96. package/examples/node_modules/tsx/dist/esm/api/index.mjs +1 -0
  97. package/examples/node_modules/tsx/dist/esm/index.cjs +2 -0
  98. package/examples/node_modules/tsx/dist/esm/index.mjs +2 -0
  99. package/examples/node_modules/tsx/dist/get-pipe-path-BHW2eJdv.mjs +1 -0
  100. package/examples/node_modules/tsx/dist/get-pipe-path-BoR10qr8.cjs +1 -0
  101. package/examples/node_modules/tsx/dist/index-7AaEi15b.mjs +14 -0
  102. package/examples/node_modules/tsx/dist/index-BWFBUo6r.cjs +1 -0
  103. package/examples/node_modules/tsx/dist/index-gbaejti9.mjs +1 -0
  104. package/examples/node_modules/tsx/dist/index-gckBtVBf.cjs +14 -0
  105. package/examples/node_modules/tsx/dist/lexer-DQCqS3nf.mjs +3 -0
  106. package/examples/node_modules/tsx/dist/lexer-DgIbo0BU.cjs +3 -0
  107. package/examples/node_modules/tsx/dist/loader.cjs +1 -0
  108. package/examples/node_modules/tsx/dist/loader.mjs +1 -0
  109. package/examples/node_modules/tsx/dist/node-features-_8ZFwP_x.mjs +1 -0
  110. package/examples/node_modules/tsx/dist/node-features-roYmp9jK.cjs +1 -0
  111. package/examples/node_modules/tsx/dist/package-CeBgXWuR.mjs +1 -0
  112. package/examples/node_modules/tsx/dist/package-Dxt5kIHw.cjs +1 -0
  113. package/examples/node_modules/tsx/dist/patch-repl.cjs +1 -0
  114. package/examples/node_modules/tsx/dist/patch-repl.mjs +1 -0
  115. package/examples/node_modules/tsx/dist/preflight.cjs +1 -0
  116. package/examples/node_modules/tsx/dist/preflight.mjs +1 -0
  117. package/examples/node_modules/tsx/dist/register-2sWVXuRQ.cjs +1 -0
  118. package/examples/node_modules/tsx/dist/register-B7jrtLTO.mjs +1 -0
  119. package/examples/node_modules/tsx/dist/register-CFH5oNdT.mjs +4 -0
  120. package/examples/node_modules/tsx/dist/register-D46fvsV_.cjs +4 -0
  121. package/examples/node_modules/tsx/dist/repl.cjs +3 -0
  122. package/examples/node_modules/tsx/dist/repl.mjs +3 -0
  123. package/examples/node_modules/tsx/dist/require-D4F1Lv60.cjs +1 -0
  124. package/examples/node_modules/tsx/dist/require-DQxpCAr4.mjs +1 -0
  125. package/examples/node_modules/tsx/dist/suppress-warnings.cjs +1 -0
  126. package/examples/node_modules/tsx/dist/suppress-warnings.mjs +1 -0
  127. package/examples/node_modules/tsx/dist/temporary-directory-B83uKxJF.cjs +1 -0
  128. package/examples/node_modules/tsx/dist/temporary-directory-CwHp0_NW.mjs +1 -0
  129. package/examples/node_modules/tsx/dist/types-Cxp8y2TL.d.ts +5 -0
  130. package/examples/node_modules/tsx/package.json +68 -0
  131. package/examples/package-lock.json +6 -6
  132. package/examples/package.json +1 -1
  133. package/generate-sdk.js +30 -9
  134. package/package.json +2 -2
  135. package/src/abi/interface.js +11 -2
  136. package/src/abi/js-abi-coder.js +61 -2
  137. package/src/contract/contract.js +53 -5
  138. package/src/generator/index.js +152 -13
  139. package/src/providers/provider.js +138 -5
  140. package/src/utils/rlp.js +13 -1
  141. package/src/wallet/wallet.js +91 -8
  142. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/_test-wallet.js +1 -1
  143. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/_test-wallet.ts +1 -1
  144. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/deploy.js +1 -1
  145. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/deploy.ts +1 -1
  146. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/offline-signing.js +1 -1
  147. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/offline-signing.ts +1 -1
  148. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/write-operations.js +1 -1
  149. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/write-operations.ts +1 -1
  150. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/package-lock.json +6 -6
  151. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/package.json +1 -1
  152. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes__factory.js +3 -1
  153. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/test/e2e/AllSolidityTypes.e2e.test.js +1 -1
  154. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/_test-wallet.js +1 -1
  155. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/_test-wallet.ts +1 -1
  156. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/deploy.js +1 -1
  157. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/deploy.ts +1 -1
  158. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/offline-signing.js +1 -1
  159. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/offline-signing.ts +1 -1
  160. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/write-operations.js +1 -1
  161. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/write-operations.ts +1 -1
  162. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/package-lock.json +6 -6
  163. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/package.json +1 -1
  164. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/AllSolidityTypes__factory.ts +3 -1
  165. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/test/e2e/AllSolidityTypes.e2e.test.js +1 -1
  166. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/_test-wallet.js +1 -1
  167. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/_test-wallet.ts +1 -1
  168. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/deploy.js +1 -1
  169. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/deploy.ts +1 -1
  170. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/offline-signing.js +1 -1
  171. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/offline-signing.ts +1 -1
  172. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/write-operations.js +1 -1
  173. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/write-operations.ts +1 -1
  174. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/package-lock.json +6 -6
  175. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/package.json +1 -1
  176. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20.js +9 -3
  177. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20__factory.js +3 -1
  178. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/test/e2e/SimpleERC20.e2e.test.js +1 -1
  179. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/_test-wallet.js +1 -1
  180. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/_test-wallet.ts +1 -1
  181. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/deploy.js +1 -1
  182. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/deploy.ts +1 -1
  183. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/offline-signing.js +1 -1
  184. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/offline-signing.ts +1 -1
  185. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/write-operations.js +1 -1
  186. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/write-operations.ts +1 -1
  187. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/package-lock.json +6 -6
  188. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/package.json +1 -1
  189. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/SimpleERC20.ts +9 -3
  190. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/SimpleERC20__factory.ts +3 -1
  191. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/test/e2e/SimpleERC20.e2e.test.js +1 -1
  192. package/test/e2e/generator-interface.e2e.test.js +6 -4
  193. package/test/e2e/generator-interface.e2e.test.ts +6 -4
  194. package/test/security/abi-decoder-bounds.test.js +122 -0
  195. package/test/security/contract-overrides.test.js +112 -0
  196. package/test/security/generator-injection.test.js +195 -0
  197. package/test/security/malformed-input.test.js +26 -27
  198. package/test/security/rpc-numeric-bounds.test.js +81 -0
  199. package/test/security/rpc-trust.test.js +202 -0
  200. package/test/unit/abi-interface.test.js +12 -5
  201. package/test/unit/abi-interface.test.ts +8 -1
  202. package/test/unit/address-wallet.test.js +31 -0
  203. package/test/unit/encoding-units-rlp.test.js +35 -0
  204. package/test/unit/populate-transaction.test.js +33 -0
@@ -890,3 +890,34 @@ describe("Address + Wallet (offline)", () => {
890
890
  });
891
891
  });
892
892
 
893
+ describe("Security: universal key-pair verification", () => {
894
+ logSuite("Security: universal key-pair verification");
895
+
896
+ it("constructing a Wallet from a mismatched key pair throws (negative)", async () => {
897
+ logTest("constructing a Wallet from a mismatched key pair throws", {});
898
+ await Initialize(null);
899
+ const a = qc.Wallet.createRandom();
900
+ const b = qc.Wallet.createRandom();
901
+ // Private key of A paired with public key of B -> inconsistent key pair.
902
+ const mismatched = new qc.SigningKey(a.signingKey.privateKeyBytes, b.signingKey.publicKeyBytes);
903
+ assert.throws(() => new qc.Wallet(mismatched), /verifyWallet failed|invalid/i);
904
+ });
905
+
906
+ it("fromKeys still rejects a mismatched key pair (negative)", async () => {
907
+ logTest("fromKeys still rejects a mismatched key pair", {});
908
+ await Initialize(null);
909
+ const a = qc.Wallet.createRandom();
910
+ const b = qc.Wallet.createRandom();
911
+ assert.throws(() => qc.Wallet.fromKeys(a.privateKey, b.publicKey), /verifyWallet failed|invalid/i);
912
+ });
913
+
914
+ it("createRandom and fromKeys construct valid wallets (positive)", async () => {
915
+ logTest("createRandom and fromKeys construct valid wallets", {});
916
+ await Initialize(null);
917
+ const w = qc.Wallet.createRandom();
918
+ assert.ok(w.address.startsWith("0x"));
919
+ const w2 = qc.Wallet.fromKeys(w.privateKey, w.publicKey);
920
+ assert.equal(w2.address, w.address);
921
+ });
922
+ });
923
+
@@ -89,4 +89,39 @@
89
89
  assert.equal(decoded, "0x");
90
90
  });
91
91
  });
92
+
93
+ describe("Security: RLP canonical encoding & length overflow", () => {
94
+ it("rejects a single byte < 0x80 encoded as a 1-byte string (negative)", () => {
95
+ // 0x81 0x00 = "short string of length 1 containing 0x00" — must be 0x00.
96
+ assert.throws(() => qc.decodeRlp("0x8100"), /non-canonical single byte/i);
97
+ });
98
+
99
+ it("rejects a long-string form whose length fits the short form (negative)", () => {
100
+ // 0xb8 (long string, lenOfLen=1) 0x01 0xff -> declared length 1 (<= 55).
101
+ assert.throws(() => qc.decodeRlp("0xb801ff"), /non-canonical long string/i);
102
+ });
103
+
104
+ it("rejects a length field with a leading zero byte (negative)", () => {
105
+ // 0xb9 (long string, lenOfLen=2) 0x00 0x38 -> leading zero in the length.
106
+ assert.throws(() => qc.decodeRlp("0xb9003800"), /leading zero/i);
107
+ });
108
+
109
+ it("rejects a length that overflows MAX_SAFE_INTEGER (negative)", () => {
110
+ // 0xbf (long string, lenOfLen=8) followed by an 8-byte length starting at 0x20.
111
+ assert.throws(() => qc.decodeRlp("0xbf2000000000000000"), /maximum safe integer/i);
112
+ });
113
+
114
+ it("round-trips a canonical long string (> 55 bytes) (positive)", () => {
115
+ const big = "0x" + "ab".repeat(60); // 60-byte string -> long-string form
116
+ const encoded = qc.encodeRlp(big);
117
+ const decoded = qc.decodeRlp(encoded);
118
+ assert.equal(decoded, big);
119
+ });
120
+
121
+ it("round-trips a canonical nested list (positive)", () => {
122
+ const encoded = qc.encodeRlp([["0x01", "0x02"], "0x03"]);
123
+ const decoded = qc.decodeRlp(encoded);
124
+ assert.deepEqual(decoded, [["0x01", "0x02"], "0x03"]);
125
+ });
126
+ });
92
127
 
@@ -63,3 +63,36 @@ describe("populateTransaction + sendRawTransaction", () => {
63
63
  });
64
64
  });
65
65
 
66
+ describe("Security: mandatory chainId for signing", () => {
67
+ logSuite("Security: mandatory chainId for signing");
68
+
69
+ it("offline signing without a chainId throws (negative)", async () => {
70
+ logTest("offline signing without a chainId throws", {});
71
+ await Initialize(null);
72
+ const w = qc.Wallet.createRandom(); // no provider connected
73
+ await assert.rejects(
74
+ () => w.signTransaction({ to: w.address, value: 0n, nonce: 0 }),
75
+ /chainId is required for signing/i,
76
+ );
77
+ });
78
+
79
+ it("offline signing with an explicit chainId succeeds (positive)", async () => {
80
+ logTest("offline signing with an explicit chainId succeeds", {});
81
+ await Initialize(null);
82
+ const w = qc.Wallet.createRandom();
83
+ const raw = await w.signTransaction({ to: w.address, value: 0n, nonce: 0, chainId: 123123 });
84
+ assert.equal(typeof raw, "string");
85
+ assert.ok(raw.startsWith("0x"));
86
+ });
87
+
88
+ it("signing resolves chainId from a connected provider (positive)", async () => {
89
+ logTest("signing resolves chainId from a connected provider", {});
90
+ await Initialize(null);
91
+ const provider = new qc.JsonRpcProvider("http://127.0.0.1:9999", 123123);
92
+ const w = qc.Wallet.createRandom().connect(provider);
93
+ const raw = await w.signTransaction({ to: w.address, value: 0n, nonce: 0 });
94
+ assert.equal(typeof raw, "string");
95
+ assert.ok(raw.startsWith("0x"));
96
+ });
97
+ });
98
+