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.
- package/.github/workflows/publish-npmjs.yaml +22 -22
- package/.gitignore +15 -15
- package/LICENSE +21 -21
- package/README-SDK.md +758 -754
- package/README.md +165 -150
- package/SPEC.md +3845 -3843
- package/config.d.ts +50 -50
- package/config.js +115 -115
- package/examples/AllSolidityTypes.sol +184 -184
- package/examples/SimpleIERC20.sol +74 -74
- package/examples/events.js +41 -35
- package/examples/events.ts +35 -0
- package/examples/example-generator-sdk-js.js +100 -95
- package/examples/example-generator-sdk-js.ts +77 -0
- package/examples/example-generator-sdk-ts.js +100 -95
- package/examples/example-generator-sdk-ts.ts +77 -0
- package/examples/example.js +72 -61
- package/examples/example.ts +61 -0
- package/examples/offline-signing.js +79 -73
- package/examples/offline-signing.ts +66 -0
- package/examples/package-lock.json +596 -57
- package/examples/package.json +32 -16
- package/examples/read-operations.js +32 -27
- package/examples/read-operations.ts +31 -0
- package/examples/sdk-generator-erc20.inline.json +251 -251
- package/examples/solidity-types.ts +43 -43
- package/examples/wallet-offline.js +35 -29
- package/examples/wallet-offline.ts +34 -0
- package/generate-sdk.js +1824 -1490
- package/index.js +12 -12
- package/package.json +95 -75
- package/scripts/copy-declarations.js +31 -0
- package/scripts/run-all-one-by-one.js +151 -0
- package/src/abi/fragments.d.ts +42 -42
- package/src/abi/fragments.js +63 -63
- package/src/abi/index.d.ts +13 -13
- package/src/abi/index.js +9 -9
- package/src/abi/interface.d.ts +128 -132
- package/src/abi/interface.js +590 -590
- package/src/abi/js-abi-coder.d.ts +8 -0
- package/src/abi/js-abi-coder.js +474 -474
- package/src/constants.d.ts +66 -61
- package/src/constants.js +101 -94
- package/src/contract/contract-factory.d.ts +28 -28
- package/src/contract/contract-factory.js +105 -105
- package/src/contract/contract.d.ts +113 -114
- package/src/contract/contract.js +354 -354
- package/src/contract/index.d.ts +9 -9
- package/src/contract/index.js +9 -9
- package/src/errors/index.d.ts +92 -92
- package/src/errors/index.js +188 -188
- package/src/generator/index.d.ts +74 -0
- package/src/generator/index.js +1404 -1404
- package/src/index.d.ts +125 -127
- package/src/index.js +41 -41
- package/src/internal/hex.d.ts +61 -61
- package/src/internal/hex.js +144 -144
- package/src/providers/extra-providers.d.ts +139 -128
- package/src/providers/extra-providers.js +600 -575
- package/src/providers/index.d.ts +17 -16
- package/src/providers/index.js +10 -10
- package/src/providers/json-rpc-provider.d.ts +12 -12
- package/src/providers/json-rpc-provider.js +79 -79
- package/src/providers/provider.d.ts +208 -203
- package/src/providers/provider.js +393 -371
- package/src/types/index.d.ts +214 -462
- package/src/types/index.js +9 -9
- package/src/utils/address.d.ts +72 -72
- package/src/utils/address.js +181 -182
- package/src/utils/encoding.d.ts +120 -120
- package/src/utils/encoding.js +306 -306
- package/src/utils/hashing.d.ts +82 -76
- package/src/utils/hashing.js +313 -298
- package/src/utils/index.d.ts +65 -55
- package/src/utils/index.js +13 -13
- package/src/utils/result.d.ts +57 -57
- package/src/utils/result.js +128 -128
- package/src/utils/rlp.d.ts +12 -12
- package/src/utils/rlp.js +200 -200
- package/src/utils/units.d.ts +29 -29
- package/src/utils/units.js +107 -107
- package/src/wallet/index.d.ts +10 -10
- package/src/wallet/index.js +8 -8
- package/src/wallet/wallet.d.ts +168 -160
- package/src/wallet/wallet.js +500 -489
- package/test/e2e/all-solidity-types.dynamic.test.js +207 -200
- package/test/e2e/all-solidity-types.dynamic.test.ts +191 -0
- package/test/e2e/all-solidity-types.fixtures.js +231 -231
- package/test/e2e/all-solidity-types.generated-sdks.e2e.test.js +387 -368
- package/test/e2e/all-solidity-types.generated-sdks.e2e.test.ts +350 -0
- package/test/e2e/helpers.js +59 -47
- package/test/e2e/signing-context-and-fee.e2e.test.js +141 -0
- package/test/e2e/signing-context-and-fee.e2e.test.ts +128 -0
- package/test/e2e/simple-erc20.generated-sdks.e2e.test.js +168 -151
- package/test/e2e/simple-erc20.generated-sdks.e2e.test.ts +141 -0
- package/test/e2e/transactional.test.js +245 -191
- package/test/e2e/transactional.test.ts +208 -0
- package/test/e2e/typed-generator.e2e.test.js +407 -404
- package/test/e2e/typed-generator.e2e.test.ts +337 -0
- package/test/fixtures/ConstructorParam.sol +23 -23
- package/test/fixtures/MultiContracts.sol +37 -37
- package/test/fixtures/SimpleStorage.sol +18 -18
- package/test/fixtures/StakingContract.abi.json +1 -1
- package/test/integration/ipc-provider.test.js +49 -44
- package/test/integration/ipc-provider.test.ts +44 -0
- package/test/integration/provider.test.js +88 -72
- package/test/integration/provider.test.ts +85 -0
- package/test/integration/ws-provider.test.js +41 -33
- package/test/integration/ws-provider.test.ts +38 -0
- package/test/security/malformed-input.test.js +37 -31
- package/test/security/malformed-input.test.ts +35 -0
- package/test/unit/_encrypted-output.txt +6 -0
- package/test/unit/_log-encrypted-jsons.js +45 -0
- package/test/unit/_write-keystore-fixture.js +16 -0
- package/test/unit/abi-interface.test.js +103 -98
- package/test/unit/abi-interface.test.ts +102 -0
- package/test/unit/address-wallet.test.js +392 -257
- package/test/unit/address-wallet.test.ts +379 -0
- package/test/unit/browser-provider.test.js +85 -82
- package/test/unit/browser-provider.test.ts +79 -0
- package/test/unit/contract.test.js +85 -82
- package/test/unit/contract.test.ts +83 -0
- package/test/unit/encoding-units-rlp.test.js +92 -89
- package/test/unit/encoding-units-rlp.test.ts +91 -0
- package/test/unit/errors.test.js +77 -74
- package/test/unit/errors.test.ts +76 -0
- package/test/unit/filter-by-blockhash.test.js +55 -52
- package/test/unit/filter-by-blockhash.test.ts +54 -0
- package/test/unit/fixtures/encrypted-keystores-48-32-36.js +9 -0
- package/test/unit/generate-contract-cli.test.js +42 -39
- package/test/unit/generate-contract-cli.test.ts +41 -0
- package/test/unit/generate-sdk-artifacts-json.test.js +113 -110
- package/test/unit/generate-sdk-artifacts-json.test.ts +110 -0
- package/test/unit/generator.test.js +102 -99
- package/test/unit/generator.test.ts +101 -0
- package/test/unit/hashing.test.js +68 -54
- package/test/unit/hashing.test.ts +67 -0
- package/test/unit/init.test.js +39 -36
- package/test/unit/init.test.ts +38 -0
- package/test/unit/interface.test.js +56 -53
- package/test/unit/interface.test.ts +54 -0
- package/test/unit/internal-hex.test.js +50 -47
- package/test/unit/internal-hex.test.ts +49 -0
- package/test/unit/populate-transaction.test.js +65 -62
- package/test/unit/populate-transaction.test.ts +64 -0
- package/test/unit/providers.test.js +200 -144
- package/test/unit/providers.test.ts +196 -0
- package/test/unit/result.test.js +80 -77
- package/test/unit/result.test.ts +79 -0
- package/test/unit/solidity-types.test.js +49 -46
- package/test/unit/solidity-types.test.ts +39 -0
- package/test/unit/utils.test.js +57 -54
- package/test/unit/utils.test.ts +56 -0
- package/test/verbose-logger.js +74 -0
- 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
|
+
};
|