quantumcoin 7.0.3 → 7.0.4

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 (155) hide show
  1. package/.github/workflows/publish-npmjs.yaml +22 -22
  2. package/.gitignore +15 -15
  3. package/LICENSE +21 -21
  4. package/README-SDK.md +756 -754
  5. package/README.md +165 -150
  6. package/SPEC.md +3845 -3843
  7. package/config.d.ts +50 -50
  8. package/config.js +115 -115
  9. package/examples/AllSolidityTypes.sol +184 -184
  10. package/examples/SimpleIERC20.sol +74 -74
  11. package/examples/events.js +41 -35
  12. package/examples/events.ts +35 -0
  13. package/examples/example-generator-sdk-js.js +100 -95
  14. package/examples/example-generator-sdk-js.ts +77 -0
  15. package/examples/example-generator-sdk-ts.js +100 -95
  16. package/examples/example-generator-sdk-ts.ts +77 -0
  17. package/examples/example.js +72 -61
  18. package/examples/example.ts +61 -0
  19. package/examples/offline-signing.js +79 -73
  20. package/examples/offline-signing.ts +66 -0
  21. package/examples/package-lock.json +48 -57
  22. package/examples/package.json +32 -16
  23. package/examples/read-operations.js +32 -27
  24. package/examples/read-operations.ts +31 -0
  25. package/examples/sdk-generator-erc20.inline.json +251 -251
  26. package/examples/solidity-types.ts +43 -43
  27. package/examples/wallet-offline.js +35 -29
  28. package/examples/wallet-offline.ts +34 -0
  29. package/generate-sdk.js +1824 -1490
  30. package/index.js +12 -12
  31. package/package.json +95 -75
  32. package/scripts/copy-declarations.js +31 -0
  33. package/scripts/run-all-one-by-one.js +151 -0
  34. package/src/abi/fragments.d.ts +42 -42
  35. package/src/abi/fragments.js +63 -63
  36. package/src/abi/index.d.ts +13 -13
  37. package/src/abi/index.js +9 -9
  38. package/src/abi/interface.d.ts +128 -132
  39. package/src/abi/interface.js +590 -590
  40. package/src/abi/js-abi-coder.d.ts +8 -0
  41. package/src/abi/js-abi-coder.js +474 -474
  42. package/src/constants.d.ts +66 -61
  43. package/src/constants.js +101 -94
  44. package/src/contract/contract-factory.d.ts +28 -28
  45. package/src/contract/contract-factory.js +105 -105
  46. package/src/contract/contract.d.ts +113 -114
  47. package/src/contract/contract.js +354 -354
  48. package/src/contract/index.d.ts +9 -9
  49. package/src/contract/index.js +9 -9
  50. package/src/errors/index.d.ts +92 -92
  51. package/src/errors/index.js +188 -188
  52. package/src/generator/index.d.ts +74 -0
  53. package/src/generator/index.js +1404 -1404
  54. package/src/index.d.ts +125 -127
  55. package/src/index.js +41 -41
  56. package/src/internal/hex.d.ts +61 -61
  57. package/src/internal/hex.js +144 -144
  58. package/src/providers/extra-providers.d.ts +139 -128
  59. package/src/providers/extra-providers.js +600 -575
  60. package/src/providers/index.d.ts +17 -16
  61. package/src/providers/index.js +10 -10
  62. package/src/providers/json-rpc-provider.d.ts +12 -12
  63. package/src/providers/json-rpc-provider.js +79 -79
  64. package/src/providers/provider.d.ts +207 -203
  65. package/src/providers/provider.js +392 -371
  66. package/src/types/index.d.ts +214 -462
  67. package/src/types/index.js +9 -9
  68. package/src/utils/address.d.ts +72 -72
  69. package/src/utils/address.js +181 -182
  70. package/src/utils/encoding.d.ts +120 -120
  71. package/src/utils/encoding.js +306 -306
  72. package/src/utils/hashing.d.ts +82 -76
  73. package/src/utils/hashing.js +313 -298
  74. package/src/utils/index.d.ts +65 -55
  75. package/src/utils/index.js +13 -13
  76. package/src/utils/result.d.ts +57 -57
  77. package/src/utils/result.js +128 -128
  78. package/src/utils/rlp.d.ts +12 -12
  79. package/src/utils/rlp.js +200 -200
  80. package/src/utils/units.d.ts +29 -29
  81. package/src/utils/units.js +107 -107
  82. package/src/wallet/index.d.ts +10 -10
  83. package/src/wallet/index.js +8 -8
  84. package/src/wallet/wallet.d.ts +160 -160
  85. package/src/wallet/wallet.js +483 -489
  86. package/test/e2e/all-solidity-types.dynamic.test.js +207 -200
  87. package/test/e2e/all-solidity-types.dynamic.test.ts +191 -0
  88. package/test/e2e/all-solidity-types.fixtures.js +231 -231
  89. package/test/e2e/all-solidity-types.generated-sdks.e2e.test.js +387 -368
  90. package/test/e2e/all-solidity-types.generated-sdks.e2e.test.ts +350 -0
  91. package/test/e2e/helpers.js +59 -47
  92. package/test/e2e/signing-context-and-fee.e2e.test.js +137 -0
  93. package/test/e2e/signing-context-and-fee.e2e.test.ts +128 -0
  94. package/test/e2e/simple-erc20.generated-sdks.e2e.test.js +168 -151
  95. package/test/e2e/simple-erc20.generated-sdks.e2e.test.ts +141 -0
  96. package/test/e2e/transactional.test.js +245 -191
  97. package/test/e2e/transactional.test.ts +208 -0
  98. package/test/e2e/typed-generator.e2e.test.js +407 -404
  99. package/test/e2e/typed-generator.e2e.test.ts +337 -0
  100. package/test/fixtures/ConstructorParam.sol +23 -23
  101. package/test/fixtures/MultiContracts.sol +37 -37
  102. package/test/fixtures/SimpleStorage.sol +18 -18
  103. package/test/fixtures/StakingContract.abi.json +1 -1
  104. package/test/integration/ipc-provider.test.js +49 -44
  105. package/test/integration/ipc-provider.test.ts +44 -0
  106. package/test/integration/provider.test.js +88 -72
  107. package/test/integration/provider.test.ts +85 -0
  108. package/test/integration/ws-provider.test.js +41 -33
  109. package/test/integration/ws-provider.test.ts +38 -0
  110. package/test/security/malformed-input.test.js +37 -31
  111. package/test/security/malformed-input.test.ts +35 -0
  112. package/test/unit/_encrypted-output.txt +6 -0
  113. package/test/unit/_log-encrypted-jsons.js +45 -0
  114. package/test/unit/_write-keystore-fixture.js +16 -0
  115. package/test/unit/abi-interface.test.js +103 -98
  116. package/test/unit/abi-interface.test.ts +102 -0
  117. package/test/unit/address-wallet.test.js +355 -257
  118. package/test/unit/address-wallet.test.ts +342 -0
  119. package/test/unit/browser-provider.test.js +85 -82
  120. package/test/unit/browser-provider.test.ts +79 -0
  121. package/test/unit/contract.test.js +85 -82
  122. package/test/unit/contract.test.ts +83 -0
  123. package/test/unit/encoding-units-rlp.test.js +92 -89
  124. package/test/unit/encoding-units-rlp.test.ts +91 -0
  125. package/test/unit/errors.test.js +77 -74
  126. package/test/unit/errors.test.ts +76 -0
  127. package/test/unit/filter-by-blockhash.test.js +55 -52
  128. package/test/unit/filter-by-blockhash.test.ts +54 -0
  129. package/test/unit/fixtures/encrypted-keystores-48-32-36.js +9 -0
  130. package/test/unit/generate-contract-cli.test.js +42 -39
  131. package/test/unit/generate-contract-cli.test.ts +41 -0
  132. package/test/unit/generate-sdk-artifacts-json.test.js +113 -110
  133. package/test/unit/generate-sdk-artifacts-json.test.ts +110 -0
  134. package/test/unit/generator.test.js +102 -99
  135. package/test/unit/generator.test.ts +101 -0
  136. package/test/unit/hashing.test.js +68 -54
  137. package/test/unit/hashing.test.ts +67 -0
  138. package/test/unit/init.test.js +39 -36
  139. package/test/unit/init.test.ts +38 -0
  140. package/test/unit/interface.test.js +56 -53
  141. package/test/unit/interface.test.ts +54 -0
  142. package/test/unit/internal-hex.test.js +50 -47
  143. package/test/unit/internal-hex.test.ts +49 -0
  144. package/test/unit/populate-transaction.test.js +65 -62
  145. package/test/unit/populate-transaction.test.ts +64 -0
  146. package/test/unit/providers.test.js +200 -144
  147. package/test/unit/providers.test.ts +196 -0
  148. package/test/unit/result.test.js +80 -77
  149. package/test/unit/result.test.ts +79 -0
  150. package/test/unit/solidity-types.test.js +49 -46
  151. package/test/unit/solidity-types.test.ts +39 -0
  152. package/test/unit/utils.test.js +57 -54
  153. package/test/unit/utils.test.ts +56 -0
  154. package/test/verbose-logger.js +74 -0
  155. package/tsconfig.build.json +14 -0
@@ -1,43 +1,43 @@
1
- /**
2
- * TypeScript-only example: core Solidity types.
3
- *
4
- * This file is intended for developers using QuantumCoin.js from TypeScript.
5
- * It is not executed by `npm run example`.
6
- */
7
-
8
- import type {
9
- AddressLike,
10
- BigNumberish,
11
- BytesLike,
12
- SolidityInputValue,
13
- SolidityOutputValue,
14
- SolidityTypeName,
15
- } from "quantumcoin/types";
16
-
17
- // AddressLike is currently a string (32-byte QuantumCoin address).
18
- const addr: AddressLike = "0x0000000000000000000000000000000000000000000000000000000000001000";
19
-
20
- // BigNumberish is accepted for uint/int inputs (string | number | bigint).
21
- const amount: BigNumberish = "123";
22
-
23
- // BytesLike is a hex string or Uint8Array.
24
- const data: BytesLike = "0x1234";
25
-
26
- // Generic mappings for ABI input/output values:
27
- type T1 = SolidityInputValue<"uint256">; // BigNumberish
28
- type T2 = SolidityOutputValue<"uint256">; // bigint
29
- type T3 = SolidityInputValue<"address">; // AddressLike
30
- type T4 = SolidityOutputValue<"address">; // string
31
-
32
- // Example: using SolidityTypeName
33
- const t: SolidityTypeName = "bytes32";
34
-
35
- void addr;
36
- void amount;
37
- void data;
38
- void t;
39
- void (null as any as T1);
40
- void (null as any as T2);
41
- void (null as any as T3);
42
- void (null as any as T4);
43
-
1
+ /**
2
+ * TypeScript-only example: core Solidity types.
3
+ *
4
+ * This file is intended for developers using QuantumCoin.js from TypeScript.
5
+ * It is not executed by `npm run example`.
6
+ */
7
+
8
+ import type {
9
+ AddressLike,
10
+ BigNumberish,
11
+ BytesLike,
12
+ SolidityInputValue,
13
+ SolidityOutputValue,
14
+ SolidityTypeName,
15
+ } from "quantumcoin/types";
16
+
17
+ // AddressLike is currently a string (32-byte QuantumCoin address).
18
+ const addr: AddressLike = "0x0000000000000000000000000000000000000000000000000000000000001000";
19
+
20
+ // BigNumberish is accepted for uint/int inputs (string | number | bigint).
21
+ const amount: BigNumberish = "123";
22
+
23
+ // BytesLike is a hex string or Uint8Array.
24
+ const data: BytesLike = "0x1234";
25
+
26
+ // Generic mappings for ABI input/output values:
27
+ type T1 = SolidityInputValue<"uint256">; // BigNumberish
28
+ type T2 = SolidityOutputValue<"uint256">; // bigint
29
+ type T3 = SolidityInputValue<"address">; // AddressLike
30
+ type T4 = SolidityOutputValue<"address">; // string
31
+
32
+ // Example: using SolidityTypeName
33
+ const t: SolidityTypeName = "bytes32";
34
+
35
+ void addr;
36
+ void amount;
37
+ void data;
38
+ void t;
39
+ void (null as any as T1);
40
+ void (null as any as T2);
41
+ void (null as any as T3);
42
+ void (null as any as T4);
43
+
@@ -1,29 +1,35 @@
1
- /**
2
- * Example: Offline wallet operations (no blockchain connectivity required).
3
- */
4
-
5
- const { Initialize } = require("../config");
6
- const { Wallet, verifyMessage } = require("..");
7
-
8
- async function walletOffline() {
9
- await Initialize(null);
10
-
11
- const wallet = Wallet.createRandom();
12
- console.log("Wallet address:", wallet.address);
13
-
14
- const msg = "Hello, QuantumCoin!";
15
- const sig = wallet.signMessageSync(msg);
16
- console.log("Signature:", sig.slice(0, 18) + "...");
17
-
18
- const recovered = verifyMessage(msg, sig);
19
- console.log("Recovered address:", recovered);
20
-
21
- const json = wallet.encryptSync("mySecurePassword123");
22
- console.log("Encrypted wallet JSON length:", json.length);
23
- }
24
-
25
- walletOffline().catch((e) => {
26
- console.error(e);
27
- process.exitCode = 1;
28
- });
29
-
1
+ /**
2
+ * Example: Offline wallet operations (no blockchain connectivity required).
3
+ * Run with VERBOSE=1 for wallet addresses and recovered address.
4
+ */
5
+
6
+ const { Initialize } = require("../config");
7
+ const { Wallet, verifyMessage } = require("..");
8
+ const { logExample, logAddress } = require("../test/verbose-logger");
9
+
10
+ async function walletOffline() {
11
+ logExample("wallet-offline.js", "starting");
12
+ await Initialize(null);
13
+
14
+ const wallet = Wallet.createRandom();
15
+ console.log("Wallet address:", wallet.address);
16
+ logAddress("wallet", wallet.address);
17
+
18
+ const msg = "Hello, QuantumCoin!";
19
+ const sig = wallet.signMessageSync(msg);
20
+ console.log("Signature:", sig.slice(0, 18) + "...");
21
+
22
+ const recovered = verifyMessage(msg, sig);
23
+ console.log("Recovered address:", recovered);
24
+ logAddress("recovered", recovered);
25
+
26
+ const json = wallet.encryptSync("mySecurePassword123");
27
+ console.log("Encrypted wallet JSON length:", json.length);
28
+ logExample("wallet-offline.js", "encryptSync", { jsonLength: json.length });
29
+ }
30
+
31
+ walletOffline().catch((e) => {
32
+ console.error(e);
33
+ process.exitCode = 1;
34
+ });
35
+
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Example: Offline wallet operations (no blockchain) - TypeScript.
3
+ * Run: npx tsx examples/wallet-offline.ts
4
+ */
5
+
6
+ import { Initialize } from "../config";
7
+ import { Wallet, verifyMessage } from "..";
8
+ import { logExample, logAddress } from "../test/verbose-logger";
9
+
10
+ async function walletOffline(): Promise<void> {
11
+ logExample("wallet-offline.ts", "starting");
12
+ await Initialize(null);
13
+
14
+ const wallet = Wallet.createRandom();
15
+ console.log("Wallet address:", wallet.address);
16
+ logAddress("wallet", wallet.address);
17
+
18
+ const msg = "Hello, QuantumCoin!";
19
+ const sig = wallet.signMessageSync(msg);
20
+ console.log("Signature:", sig.slice(0, 18) + "...");
21
+
22
+ const recovered = verifyMessage(msg, sig);
23
+ console.log("Recovered address:", recovered);
24
+ logAddress("recovered", recovered);
25
+
26
+ const json = wallet.encryptSync("mySecurePassword123");
27
+ console.log("Encrypted wallet JSON length:", json.length);
28
+ logExample("wallet-offline.ts", "encryptSync", { jsonLength: json.length });
29
+ }
30
+
31
+ walletOffline().catch((e) => {
32
+ console.error(e);
33
+ process.exitCode = 1;
34
+ });