quantumcoin 7.0.3 → 7.0.5

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 +758 -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 +596 -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 +208 -203
  65. package/src/providers/provider.js +393 -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 +168 -160
  85. package/src/wallet/wallet.js +500 -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 +141 -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 +392 -257
  118. package/test/unit/address-wallet.test.ts +379 -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
package/config.d.ts CHANGED
@@ -1,50 +1,50 @@
1
- /**
2
- * Configuration class for QuantumCoin SDK
3
- * @class
4
- */
5
- export class Config {
6
- /**
7
- * Creates a Config instance
8
- * @param {number} chainId - The chain ID (default: 123123 for mainnet)
9
- * @param {string} rpcEndpoint - The RPC endpoint URL (default: https://public.rpc.quantumcoinapi.com)
10
- */
11
- constructor(chainId?: number, rpcEndpoint?: string);
12
- chainId: number;
13
- rpcEndpoint: string;
14
- }
15
- /**
16
- * Initializes the QuantumCoin SDK with the provided configuration.
17
- *
18
- * WARNING: This function MUST be called before using any SDK functionality.
19
- * If Initialize() is not called, the SDK behavior can be unpredictable and
20
- * may result in errors or incorrect validation results.
21
- *
22
- * If config is null or undefined, the SDK will be initialized with default values:
23
- * - chainId: 123123 (mainnet)
24
- * - rpcEndpoint: https://public.rpc.quantumcoinapi.com
25
- *
26
- * @param {Config|null} config - The configuration object containing chainId and rpcEndpoint.
27
- * If null or undefined, default values will be used.
28
- * @return {Promise<boolean>} Promise that resolves to true if initialization succeeded, false otherwise
29
- * @example
30
- * // Initialize with custom config
31
- * const { Config, Initialize } = require('quantumcoin/config');
32
- * const config = new Config(123123, 'https://rpc.example.com');
33
- * await Initialize(config);
34
- *
35
- * @example
36
- * // Initialize with default config (chainId: 123123, rpcEndpoint: https://public.rpc.quantumcoinapi.com)
37
- * const { Initialize } = require('quantumcoin/config');
38
- * await Initialize(null);
39
- */
40
- export function Initialize(config: Config | null): Promise<boolean>;
41
- /**
42
- * Checks if the SDK has been initialized
43
- * @return {boolean} True if initialized, false otherwise
44
- */
45
- export function isInitialized(): boolean;
46
- /**
47
- * Returns the currently active SDK config (or null if not initialized).
48
- * @return {Config|null}
49
- */
50
- export function getConfig(): Config | null;
1
+ /**
2
+ * Configuration class for QuantumCoin SDK
3
+ * @class
4
+ */
5
+ export class Config {
6
+ /**
7
+ * Creates a Config instance
8
+ * @param {number} chainId - The chain ID (default: 123123 for mainnet)
9
+ * @param {string} rpcEndpoint - The RPC endpoint URL (default: https://public.rpc.quantumcoinapi.com)
10
+ */
11
+ constructor(chainId?: number, rpcEndpoint?: string);
12
+ chainId: number;
13
+ rpcEndpoint: string;
14
+ }
15
+ /**
16
+ * Initializes the QuantumCoin SDK with the provided configuration.
17
+ *
18
+ * WARNING: This function MUST be called before using any SDK functionality.
19
+ * If Initialize() is not called, the SDK behavior can be unpredictable and
20
+ * may result in errors or incorrect validation results.
21
+ *
22
+ * If config is null or undefined, the SDK will be initialized with default values:
23
+ * - chainId: 123123 (mainnet)
24
+ * - rpcEndpoint: https://public.rpc.quantumcoinapi.com
25
+ *
26
+ * @param {Config|null} config - The configuration object containing chainId and rpcEndpoint.
27
+ * If null or undefined, default values will be used.
28
+ * @return {Promise<boolean>} Promise that resolves to true if initialization succeeded, false otherwise
29
+ * @example
30
+ * // Initialize with custom config
31
+ * const { Config, Initialize } = require('quantumcoin/config');
32
+ * const config = new Config(123123, 'https://rpc.example.com');
33
+ * await Initialize(config);
34
+ *
35
+ * @example
36
+ * // Initialize with default config (chainId: 123123, rpcEndpoint: https://public.rpc.quantumcoinapi.com)
37
+ * const { Initialize } = require('quantumcoin/config');
38
+ * await Initialize(null);
39
+ */
40
+ export function Initialize(config: Config | null): Promise<boolean>;
41
+ /**
42
+ * Checks if the SDK has been initialized
43
+ * @return {boolean} True if initialized, false otherwise
44
+ */
45
+ export function isInitialized(): boolean;
46
+ /**
47
+ * Returns the currently active SDK config (or null if not initialized).
48
+ * @return {Config|null}
49
+ */
50
+ export function getConfig(): Config | null;
package/config.js CHANGED
@@ -1,115 +1,115 @@
1
- /**
2
- * Configuration class for QuantumCoin SDK
3
- *
4
- * This module provides the Config class and Initialize function
5
- * for setting up the QuantumCoin SDK.
6
- *
7
- * @module config
8
- */
9
-
10
- const qcsdk = require('quantum-coin-js-sdk');
11
-
12
- let _isInitialized = false;
13
- let _initializationPromise = null;
14
- let _config = null;
15
-
16
- // Default configuration values
17
- const DEFAULT_CHAIN_ID = 123123;
18
- const DEFAULT_RPC_ENDPOINT = "https://public.rpc.quantumcoinapi.com";
19
- const DEFAULT_READ_URL = "https://sdk.readrelay.quantumcoinapi.com";
20
- const DEFAULT_WRITE_URL = "https://sdk.writerelay.quantumcoinapi.com";
21
-
22
- /**
23
- * Configuration class for QuantumCoin SDK
24
- * @class
25
- */
26
- class Config {
27
- /**
28
- * Creates a Config instance
29
- * @param {number} chainId - The chain ID (default: 123123 for mainnet)
30
- * @param {string} rpcEndpoint - The RPC endpoint URL (default: https://public.rpc.quantumcoinapi.com)
31
- */
32
- constructor(chainId = DEFAULT_CHAIN_ID, rpcEndpoint = DEFAULT_RPC_ENDPOINT) {
33
- this.chainId = chainId;
34
- this.rpcEndpoint = rpcEndpoint;
35
- }
36
- }
37
-
38
- /**
39
- * Initializes the QuantumCoin SDK with the provided configuration.
40
- *
41
- * WARNING: This function MUST be called before using any SDK functionality.
42
- * If Initialize() is not called, the SDK behavior can be unpredictable and
43
- * may result in errors or incorrect validation results.
44
- *
45
- * If config is null or undefined, the SDK will be initialized with default values:
46
- * - chainId: 123123 (mainnet)
47
- * - rpcEndpoint: https://public.rpc.quantumcoinapi.com
48
- *
49
- * @param {Config|null} config - The configuration object containing chainId and rpcEndpoint.
50
- * If null or undefined, default values will be used.
51
- * @return {Promise<boolean>} Promise that resolves to true if initialization succeeded, false otherwise
52
- * @example
53
- * // Initialize with custom config
54
- * const { Config, Initialize } = require('quantumcoin/config');
55
- * const config = new Config(123123, 'https://rpc.example.com');
56
- * await Initialize(config);
57
- *
58
- * @example
59
- * // Initialize with default config (chainId: 123123, rpcEndpoint: https://public.rpc.quantumcoinapi.com)
60
- * const { Initialize } = require('quantumcoin/config');
61
- * await Initialize(null);
62
- */
63
- function Initialize(config) {
64
- // If config is null or undefined, use default values
65
- if (config === null || config === undefined) {
66
- config = new Config(DEFAULT_CHAIN_ID, DEFAULT_RPC_ENDPOINT);
67
- } else if (!(config instanceof Config)) {
68
- throw new Error('Initialize() requires a Config instance as parameter, or null/undefined for default config');
69
- }
70
-
71
- if (_initializationPromise === null) {
72
- _config = config;
73
-
74
- // Initialize quantum-coin-js-sdk (WASM + crypto helpers).
75
- // Note: quantum-coin-js-sdk expects relay URLs for some network operations.
76
- // We provide community defaults here; the ethers-compatible Provider uses `config.rpcEndpoint`.
77
- const clientConfigVal = new qcsdk.Config(DEFAULT_READ_URL, DEFAULT_WRITE_URL, config.chainId, "", "");
78
-
79
- _initializationPromise = qcsdk.initialize(clientConfigVal).then((initResult) => {
80
- if (initResult === true) {
81
- _isInitialized = true;
82
- }
83
- return initResult === true;
84
- }).catch((error) => {
85
- console.error('SDK initialization failed:', error);
86
- return false;
87
- });
88
- }
89
-
90
- return _initializationPromise;
91
- }
92
-
93
- /**
94
- * Checks if the SDK has been initialized
95
- * @return {boolean} True if initialized, false otherwise
96
- */
97
- function isInitialized() {
98
- return _isInitialized;
99
- }
100
-
101
- /**
102
- * Returns the currently active SDK config (or null if not initialized).
103
- * @return {Config|null}
104
- */
105
- function getConfig() {
106
- return _config;
107
- }
108
-
109
- // Export Config class and Initialize function
110
- module.exports = {
111
- Config,
112
- Initialize,
113
- isInitialized,
114
- getConfig
115
- };
1
+ /**
2
+ * Configuration class for QuantumCoin SDK
3
+ *
4
+ * This module provides the Config class and Initialize function
5
+ * for setting up the QuantumCoin SDK.
6
+ *
7
+ * @module config
8
+ */
9
+
10
+ const qcsdk = require('quantum-coin-js-sdk');
11
+
12
+ let _isInitialized = false;
13
+ let _initializationPromise = null;
14
+ let _config = null;
15
+
16
+ // Default configuration values
17
+ const DEFAULT_CHAIN_ID = 123123;
18
+ const DEFAULT_RPC_ENDPOINT = "https://public.rpc.quantumcoinapi.com";
19
+ const DEFAULT_READ_URL = "https://sdk.readrelay.quantumcoinapi.com";
20
+ const DEFAULT_WRITE_URL = "https://sdk.writerelay.quantumcoinapi.com";
21
+
22
+ /**
23
+ * Configuration class for QuantumCoin SDK
24
+ * @class
25
+ */
26
+ class Config {
27
+ /**
28
+ * Creates a Config instance
29
+ * @param {number} chainId - The chain ID (default: 123123 for mainnet)
30
+ * @param {string} rpcEndpoint - The RPC endpoint URL (default: https://public.rpc.quantumcoinapi.com)
31
+ */
32
+ constructor(chainId = DEFAULT_CHAIN_ID, rpcEndpoint = DEFAULT_RPC_ENDPOINT) {
33
+ this.chainId = chainId;
34
+ this.rpcEndpoint = rpcEndpoint;
35
+ }
36
+ }
37
+
38
+ /**
39
+ * Initializes the QuantumCoin SDK with the provided configuration.
40
+ *
41
+ * WARNING: This function MUST be called before using any SDK functionality.
42
+ * If Initialize() is not called, the SDK behavior can be unpredictable and
43
+ * may result in errors or incorrect validation results.
44
+ *
45
+ * If config is null or undefined, the SDK will be initialized with default values:
46
+ * - chainId: 123123 (mainnet)
47
+ * - rpcEndpoint: https://public.rpc.quantumcoinapi.com
48
+ *
49
+ * @param {Config|null} config - The configuration object containing chainId and rpcEndpoint.
50
+ * If null or undefined, default values will be used.
51
+ * @return {Promise<boolean>} Promise that resolves to true if initialization succeeded, false otherwise
52
+ * @example
53
+ * // Initialize with custom config
54
+ * const { Config, Initialize } = require('quantumcoin/config');
55
+ * const config = new Config(123123, 'https://rpc.example.com');
56
+ * await Initialize(config);
57
+ *
58
+ * @example
59
+ * // Initialize with default config (chainId: 123123, rpcEndpoint: https://public.rpc.quantumcoinapi.com)
60
+ * const { Initialize } = require('quantumcoin/config');
61
+ * await Initialize(null);
62
+ */
63
+ function Initialize(config) {
64
+ // If config is null or undefined, use default values
65
+ if (config === null || config === undefined) {
66
+ config = new Config(DEFAULT_CHAIN_ID, DEFAULT_RPC_ENDPOINT);
67
+ } else if (!(config instanceof Config)) {
68
+ throw new Error('Initialize() requires a Config instance as parameter, or null/undefined for default config');
69
+ }
70
+
71
+ if (_initializationPromise === null) {
72
+ _config = config;
73
+
74
+ // Initialize quantum-coin-js-sdk (WASM + crypto helpers).
75
+ // Note: quantum-coin-js-sdk expects relay URLs for some network operations.
76
+ // We provide community defaults here; the ethers-compatible Provider uses `config.rpcEndpoint`.
77
+ const clientConfigVal = new qcsdk.Config(DEFAULT_READ_URL, DEFAULT_WRITE_URL, config.chainId, "", "");
78
+
79
+ _initializationPromise = qcsdk.initialize(clientConfigVal).then((initResult) => {
80
+ if (initResult === true) {
81
+ _isInitialized = true;
82
+ }
83
+ return initResult === true;
84
+ }).catch((error) => {
85
+ console.error('SDK initialization failed:', error);
86
+ return false;
87
+ });
88
+ }
89
+
90
+ return _initializationPromise;
91
+ }
92
+
93
+ /**
94
+ * Checks if the SDK has been initialized
95
+ * @return {boolean} True if initialized, false otherwise
96
+ */
97
+ function isInitialized() {
98
+ return _isInitialized;
99
+ }
100
+
101
+ /**
102
+ * Returns the currently active SDK config (or null if not initialized).
103
+ * @return {Config|null}
104
+ */
105
+ function getConfig() {
106
+ return _config;
107
+ }
108
+
109
+ // Export Config class and Initialize function
110
+ module.exports = {
111
+ Config,
112
+ Initialize,
113
+ isInitialized,
114
+ getConfig
115
+ };