@dynamic-labs/solana-core 4.6.2 → 4.7.0
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/CHANGELOG.md +21 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +8 -8
- package/src/connector/SolanaWalletConnector.cjs +12 -10
- package/src/connector/SolanaWalletConnector.d.ts +5 -1
- package/src/connector/SolanaWalletConnector.js +12 -10
- package/src/index.cjs +2 -0
- package/src/index.js +1 -0
- package/src/utils/getBackwardsCompatibleSolNetworks/getBackwardsCompatibleSolNetworks.cjs +86 -0
- package/src/utils/getBackwardsCompatibleSolNetworks/getBackwardsCompatibleSolNetworks.d.ts +3 -0
- package/src/utils/getBackwardsCompatibleSolNetworks/getBackwardsCompatibleSolNetworks.js +82 -0
- package/src/utils/getBackwardsCompatibleSolNetworks/index.d.ts +1 -0
- package/src/utils/index.d.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,25 @@
|
|
|
1
1
|
|
|
2
|
+
## [4.7.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.6.3...v4.7.0) (2025-02-20)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* 7702 support ([14ee3cd](https://github.com/dynamic-labs/dynamic-auth/commit/14ee3cd3513ac8b3e8e866cc2026b042c706b7e6))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* fallback to empty array when token balances is called with an invalid chain ID ([#8108](https://github.com/dynamic-labs/dynamic-auth/issues/8108)) ([7d14ded](https://github.com/dynamic-labs/dynamic-auth/commit/7d14ded6afa0de604901bbc8bc13620d03dc2e8c))
|
|
13
|
+
* improve global connectivity sign typed data reliability ([#8103](https://github.com/dynamic-labs/dynamic-auth/issues/8103)) ([8b0d2dd](https://github.com/dynamic-labs/dynamic-auth/commit/8b0d2ddbeb62a11732a9d59bc6cd4b72d82b9855))
|
|
14
|
+
* **QNTM-2902:** ensure react updates icons ([#8105](https://github.com/dynamic-labs/dynamic-auth/issues/8105)) ([1182c4c](https://github.com/dynamic-labs/dynamic-auth/commit/1182c4cc103c599e6bbff89af9b1312fb96b6d05))
|
|
15
|
+
|
|
16
|
+
### [4.6.3](https://github.com/dynamic-labs/dynamic-auth/compare/v4.6.2...v4.6.3) (2025-02-14)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
* optimize zerodev connector initialization ([dff1b4d](https://github.com/dynamic-labs/dynamic-auth/commit/dff1b4d410ab06c45635e0114823cbba4b8c1905))
|
|
22
|
+
|
|
2
23
|
### [4.6.2](https://github.com/dynamic-labs/dynamic-auth/compare/v4.6.1...v4.6.2) (2025-02-14)
|
|
3
24
|
|
|
4
25
|
|
package/package.cjs
CHANGED
package/package.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/solana-core",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.7.0",
|
|
4
4
|
"description": "Core package for utilities and types for solana",
|
|
5
5
|
"author": "Dynamic Labs, Inc.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -18,15 +18,15 @@
|
|
|
18
18
|
},
|
|
19
19
|
"homepage": "https://www.dynamic.xyz/",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@dynamic-labs/sdk-api-core": "0.0.
|
|
21
|
+
"@dynamic-labs/sdk-api-core": "0.0.628",
|
|
22
22
|
"@solana/web3.js": "1.92.1",
|
|
23
23
|
"@solana/spl-token": "0.4.6",
|
|
24
|
-
"@dynamic-labs/assert-package-version": "4.
|
|
25
|
-
"@dynamic-labs/rpc-providers": "4.
|
|
26
|
-
"@dynamic-labs/types": "4.
|
|
27
|
-
"@dynamic-labs/utils": "4.
|
|
28
|
-
"@dynamic-labs/wallet-book": "4.
|
|
29
|
-
"@dynamic-labs/wallet-connector-core": "4.
|
|
24
|
+
"@dynamic-labs/assert-package-version": "4.7.0",
|
|
25
|
+
"@dynamic-labs/rpc-providers": "4.7.0",
|
|
26
|
+
"@dynamic-labs/types": "4.7.0",
|
|
27
|
+
"@dynamic-labs/utils": "4.7.0",
|
|
28
|
+
"@dynamic-labs/wallet-book": "4.7.0",
|
|
29
|
+
"@dynamic-labs/wallet-connector-core": "4.7.0",
|
|
30
30
|
"eventemitter3": "5.0.1"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {}
|
|
@@ -11,6 +11,8 @@ var SolanaWallet = require('../wallet/SolanaWallet.cjs');
|
|
|
11
11
|
var extractNonce = require('../utils/extractNonce/extractNonce.cjs');
|
|
12
12
|
var getGenesisHashLSKey = require('../utils/getGenesisHashLSKey/getGenesisHashLSKey.cjs');
|
|
13
13
|
var getOverrideRpcUrlForNetwork = require('../utils/getOverrideRpcUrlForNetwork/getOverrideRpcUrlForNetwork.cjs');
|
|
14
|
+
require('@solana/spl-token');
|
|
15
|
+
var getBackwardsCompatibleSolNetworks = require('../utils/getBackwardsCompatibleSolNetworks/getBackwardsCompatibleSolNetworks.cjs');
|
|
14
16
|
|
|
15
17
|
const MEMO_PROGRAM_ID = new web3_js.PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr');
|
|
16
18
|
class SolanaWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
@@ -22,13 +24,17 @@ class SolanaWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
22
24
|
this.ChainWallet = SolanaWallet.SolanaWallet;
|
|
23
25
|
this.supportedChains = ['SOL'];
|
|
24
26
|
this.connectedChain = 'SOL';
|
|
25
|
-
this.solNetworks = opts.solNetworks;
|
|
27
|
+
this.solNetworks = getBackwardsCompatibleSolNetworks.getBackwardsCompatibleSolNetworks(opts.solNetworks, opts.connectionConfig);
|
|
26
28
|
this.chainRpcProviders = opts.chainRpcProviders;
|
|
27
29
|
this.connectionConfig = opts.connectionConfig;
|
|
28
30
|
(_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerSolanaProviders(this.connectionConfig);
|
|
29
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* @param returnDynamicNetworkId - If true, the dynamic network ID will be returned instead of the network cluster
|
|
34
|
+
* @returns The network cluster (e.g. 'mainnet', 'testnet', 'devnet') or dynamic network (used for switching networks)
|
|
35
|
+
*/
|
|
30
36
|
getNetwork() {
|
|
31
|
-
return _tslib.__awaiter(this,
|
|
37
|
+
return _tslib.__awaiter(this, arguments, void 0, function* (returnDynamicNetworkId = false) {
|
|
32
38
|
const provider = this.getWalletClient();
|
|
33
39
|
let genesisHash = localStorage.getItem(getGenesisHashLSKey.getGenesisHashLSKey(provider.rpcEndpoint));
|
|
34
40
|
if (!genesisHash) {
|
|
@@ -37,17 +43,13 @@ class SolanaWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
37
43
|
}
|
|
38
44
|
genesisHash = genesisHash.substring(0, 32);
|
|
39
45
|
// see: https://github.com/ChainAgnostic/namespaces/blob/main/solana/caip2.md
|
|
40
|
-
let network;
|
|
41
46
|
if (genesisHash === '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp') {
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
else if (genesisHash === 'EtWTRABZaYq6iMfeYKouRu166VU2xqa1') {
|
|
45
|
-
network = 'devnet';
|
|
47
|
+
return returnDynamicNetworkId ? '101' : 'mainnet';
|
|
46
48
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
if (genesisHash === 'EtWTRABZaYq6iMfeYKouRu166VU2xqa1') {
|
|
50
|
+
return returnDynamicNetworkId ? '103' : 'devnet';
|
|
49
51
|
}
|
|
50
|
-
return
|
|
52
|
+
return returnDynamicNetworkId ? '102' : 'testnet';
|
|
51
53
|
});
|
|
52
54
|
}
|
|
53
55
|
endSession() {
|
|
@@ -22,7 +22,11 @@ export declare abstract class SolanaWalletConnector extends WalletConnectorBase<
|
|
|
22
22
|
connectedChain: Chain;
|
|
23
23
|
protected connectionConfig: SolanaConnectionConfig | undefined;
|
|
24
24
|
constructor(opts: SolanaWalletConnectorOpts);
|
|
25
|
-
|
|
25
|
+
/**
|
|
26
|
+
* @param returnDynamicNetworkId - If true, the dynamic network ID will be returned instead of the network cluster
|
|
27
|
+
* @returns The network cluster (e.g. 'mainnet', 'testnet', 'devnet') or dynamic network (used for switching networks)
|
|
28
|
+
*/
|
|
29
|
+
getNetwork(returnDynamicNetworkId?: boolean): Promise<string>;
|
|
26
30
|
endSession(): Promise<void>;
|
|
27
31
|
getWalletClient(): Connection;
|
|
28
32
|
getPublicClient(): Promise<Connection | undefined>;
|
|
@@ -7,6 +7,8 @@ import { SolanaWallet } from '../wallet/SolanaWallet.js';
|
|
|
7
7
|
import { extractNonce } from '../utils/extractNonce/extractNonce.js';
|
|
8
8
|
import { getGenesisHashLSKey } from '../utils/getGenesisHashLSKey/getGenesisHashLSKey.js';
|
|
9
9
|
import { getOverrideRpcUrlForNetwork } from '../utils/getOverrideRpcUrlForNetwork/getOverrideRpcUrlForNetwork.js';
|
|
10
|
+
import '@solana/spl-token';
|
|
11
|
+
import { getBackwardsCompatibleSolNetworks } from '../utils/getBackwardsCompatibleSolNetworks/getBackwardsCompatibleSolNetworks.js';
|
|
10
12
|
|
|
11
13
|
const MEMO_PROGRAM_ID = new PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr');
|
|
12
14
|
class SolanaWalletConnector extends WalletConnectorBase {
|
|
@@ -18,13 +20,17 @@ class SolanaWalletConnector extends WalletConnectorBase {
|
|
|
18
20
|
this.ChainWallet = SolanaWallet;
|
|
19
21
|
this.supportedChains = ['SOL'];
|
|
20
22
|
this.connectedChain = 'SOL';
|
|
21
|
-
this.solNetworks = opts.solNetworks;
|
|
23
|
+
this.solNetworks = getBackwardsCompatibleSolNetworks(opts.solNetworks, opts.connectionConfig);
|
|
22
24
|
this.chainRpcProviders = opts.chainRpcProviders;
|
|
23
25
|
this.connectionConfig = opts.connectionConfig;
|
|
24
26
|
(_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerSolanaProviders(this.connectionConfig);
|
|
25
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* @param returnDynamicNetworkId - If true, the dynamic network ID will be returned instead of the network cluster
|
|
30
|
+
* @returns The network cluster (e.g. 'mainnet', 'testnet', 'devnet') or dynamic network (used for switching networks)
|
|
31
|
+
*/
|
|
26
32
|
getNetwork() {
|
|
27
|
-
return __awaiter(this,
|
|
33
|
+
return __awaiter(this, arguments, void 0, function* (returnDynamicNetworkId = false) {
|
|
28
34
|
const provider = this.getWalletClient();
|
|
29
35
|
let genesisHash = localStorage.getItem(getGenesisHashLSKey(provider.rpcEndpoint));
|
|
30
36
|
if (!genesisHash) {
|
|
@@ -33,17 +39,13 @@ class SolanaWalletConnector extends WalletConnectorBase {
|
|
|
33
39
|
}
|
|
34
40
|
genesisHash = genesisHash.substring(0, 32);
|
|
35
41
|
// see: https://github.com/ChainAgnostic/namespaces/blob/main/solana/caip2.md
|
|
36
|
-
let network;
|
|
37
42
|
if (genesisHash === '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp') {
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
else if (genesisHash === 'EtWTRABZaYq6iMfeYKouRu166VU2xqa1') {
|
|
41
|
-
network = 'devnet';
|
|
43
|
+
return returnDynamicNetworkId ? '101' : 'mainnet';
|
|
42
44
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
+
if (genesisHash === 'EtWTRABZaYq6iMfeYKouRu166VU2xqa1') {
|
|
46
|
+
return returnDynamicNetworkId ? '103' : 'devnet';
|
|
45
47
|
}
|
|
46
|
-
return
|
|
48
|
+
return returnDynamicNetworkId ? '102' : 'testnet';
|
|
47
49
|
});
|
|
48
50
|
}
|
|
49
51
|
endSession() {
|
package/src/index.cjs
CHANGED
|
@@ -18,6 +18,7 @@ var isTransactionSigned = require('./utils/isTransactionSigned/isTransactionSign
|
|
|
18
18
|
var getOverrideRpcUrlForNetwork = require('./utils/getOverrideRpcUrlForNetwork/getOverrideRpcUrlForNetwork.cjs');
|
|
19
19
|
var createNonNativeTokenTransfer = require('./utils/createNonNativeTokenTransfer/createNonNativeTokenTransfer.cjs');
|
|
20
20
|
var createSolTransfer = require('./utils/createSolTransfer/createSolTransfer.cjs');
|
|
21
|
+
var getBackwardsCompatibleSolNetworks = require('./utils/getBackwardsCompatibleSolNetworks/getBackwardsCompatibleSolNetworks.cjs');
|
|
21
22
|
var SolanaWallet = require('./wallet/SolanaWallet.cjs');
|
|
22
23
|
var isSolanaWallet = require('./wallet/isSolanaWallet/isSolanaWallet.cjs');
|
|
23
24
|
var isLedgerSolanaWallet = require('./wallet/isLedgerSolanaWallet/isLedgerSolanaWallet.cjs');
|
|
@@ -36,6 +37,7 @@ exports.isTxAlreadySigned = isTransactionSigned.isTxAlreadySigned;
|
|
|
36
37
|
exports.getOverrideRpcUrlForNetwork = getOverrideRpcUrlForNetwork.getOverrideRpcUrlForNetwork;
|
|
37
38
|
exports.createNonNativeTokenTransfer = createNonNativeTokenTransfer.createNonNativeTokenTransfer;
|
|
38
39
|
exports.createSolTransfer = createSolTransfer.createSolTransfer;
|
|
40
|
+
exports.getBackwardsCompatibleSolNetworks = getBackwardsCompatibleSolNetworks.getBackwardsCompatibleSolNetworks;
|
|
39
41
|
exports.SolanaWallet = SolanaWallet.SolanaWallet;
|
|
40
42
|
exports.isSolanaWallet = isSolanaWallet.isSolanaWallet;
|
|
41
43
|
exports.isLedgerSolanaWallet = isLedgerSolanaWallet.isLedgerSolanaWallet;
|
package/src/index.js
CHANGED
|
@@ -14,6 +14,7 @@ export { isTxAlreadySigned } from './utils/isTransactionSigned/isTransactionSign
|
|
|
14
14
|
export { getOverrideRpcUrlForNetwork } from './utils/getOverrideRpcUrlForNetwork/getOverrideRpcUrlForNetwork.js';
|
|
15
15
|
export { createNonNativeTokenTransfer } from './utils/createNonNativeTokenTransfer/createNonNativeTokenTransfer.js';
|
|
16
16
|
export { createSolTransfer } from './utils/createSolTransfer/createSolTransfer.js';
|
|
17
|
+
export { getBackwardsCompatibleSolNetworks } from './utils/getBackwardsCompatibleSolNetworks/getBackwardsCompatibleSolNetworks.js';
|
|
17
18
|
export { SolanaWallet } from './wallet/SolanaWallet.js';
|
|
18
19
|
export { isSolanaWallet } from './wallet/isSolanaWallet/isSolanaWallet.js';
|
|
19
20
|
export { isLedgerSolanaWallet } from './wallet/isLedgerSolanaWallet/isLedgerSolanaWallet.js';
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
var getOverrideRpcUrlForNetwork = require('../getOverrideRpcUrlForNetwork/getOverrideRpcUrlForNetwork.cjs');
|
|
7
|
+
|
|
8
|
+
const SOLANA_MAINNET_NETWORK = {
|
|
9
|
+
blockExplorerUrls: ['https://explorer.solana.com'],
|
|
10
|
+
chainId: '101',
|
|
11
|
+
genesisHash: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',
|
|
12
|
+
iconUrls: ['https://app.dynamic.xyz/assets/networks/solana.svg'],
|
|
13
|
+
name: 'Solana Mainnet',
|
|
14
|
+
nativeCurrency: {
|
|
15
|
+
decimals: 9,
|
|
16
|
+
iconUrl: 'https://app.dynamic.xyz/assets/networks/solana.svg',
|
|
17
|
+
name: 'Solana',
|
|
18
|
+
pricingProviderTokenId: 'solana',
|
|
19
|
+
symbol: 'SOL',
|
|
20
|
+
},
|
|
21
|
+
networkId: '101',
|
|
22
|
+
rpcUrls: ['https://api.mainnet-beta.solana.com'],
|
|
23
|
+
vanityName: 'Solana',
|
|
24
|
+
};
|
|
25
|
+
const SOLANA_TESTNET_NETWORK = {
|
|
26
|
+
blockExplorerUrls: ['https://explorer.solana.com/?cluster=testnet'],
|
|
27
|
+
chainId: '102',
|
|
28
|
+
genesisHash: '4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',
|
|
29
|
+
iconUrls: ['https://app.dynamic.xyz/assets/networks/solana.svg'],
|
|
30
|
+
name: 'Solana Testnet',
|
|
31
|
+
nativeCurrency: {
|
|
32
|
+
decimals: 9,
|
|
33
|
+
iconUrl: 'https://app.dynamic.xyz/assets/networks/solana.svg',
|
|
34
|
+
name: 'Solana',
|
|
35
|
+
pricingProviderTokenId: 'solana',
|
|
36
|
+
symbol: 'SOL',
|
|
37
|
+
},
|
|
38
|
+
networkId: '102',
|
|
39
|
+
rpcUrls: ['https://api.testnet.solana.com'],
|
|
40
|
+
};
|
|
41
|
+
const SOLANA_DEVNET_NETWORK = {
|
|
42
|
+
blockExplorerUrls: ['https://explorer.solana.com/?cluster=devnet'],
|
|
43
|
+
chainId: '103',
|
|
44
|
+
genesisHash: 'EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG',
|
|
45
|
+
iconUrls: ['https://app.dynamic.xyz/assets/networks/solana.svg'],
|
|
46
|
+
name: 'Solana Devnet',
|
|
47
|
+
nativeCurrency: {
|
|
48
|
+
decimals: 9,
|
|
49
|
+
iconUrl: 'https://app.dynamic.xyz/assets/networks/solana.svg',
|
|
50
|
+
name: 'Solana',
|
|
51
|
+
pricingProviderTokenId: 'solana',
|
|
52
|
+
symbol: 'SOL',
|
|
53
|
+
},
|
|
54
|
+
networkId: '103',
|
|
55
|
+
rpcUrls: ['https://api.devnet.solana.com'],
|
|
56
|
+
};
|
|
57
|
+
const getBackwardsCompatibleSolNetworks = (originalSolNetworks, connectionConfig) => {
|
|
58
|
+
if (!(originalSolNetworks === null || originalSolNetworks === void 0 ? void 0 : originalSolNetworks.length)) {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
if (originalSolNetworks.length > 1) {
|
|
62
|
+
return originalSolNetworks;
|
|
63
|
+
}
|
|
64
|
+
// because we didn't have multi-network support in the past,
|
|
65
|
+
// customer would just pass in testnet/devnet rpc urls to the mainnet network
|
|
66
|
+
// so we need to check the rpc and return the correct/expected network data
|
|
67
|
+
const rpcUrl = getOverrideRpcUrlForNetwork.getOverrideRpcUrlForNetwork(connectionConfig, originalSolNetworks[0]);
|
|
68
|
+
if (rpcUrl.includes('testnet')) {
|
|
69
|
+
return [
|
|
70
|
+
Object.assign(Object.assign({}, SOLANA_TESTNET_NETWORK), { privateCustomerRpcUrls: [rpcUrl] }),
|
|
71
|
+
];
|
|
72
|
+
}
|
|
73
|
+
if (rpcUrl.includes('devnet')) {
|
|
74
|
+
return [
|
|
75
|
+
Object.assign(Object.assign({}, SOLANA_DEVNET_NETWORK), { privateCustomerRpcUrls: [rpcUrl] }),
|
|
76
|
+
];
|
|
77
|
+
}
|
|
78
|
+
if (rpcUrl.includes('mainnet')) {
|
|
79
|
+
return [
|
|
80
|
+
Object.assign(Object.assign({}, SOLANA_MAINNET_NETWORK), { privateCustomerRpcUrls: [rpcUrl] }),
|
|
81
|
+
];
|
|
82
|
+
}
|
|
83
|
+
return originalSolNetworks;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
exports.getBackwardsCompatibleSolNetworks = getBackwardsCompatibleSolNetworks;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { getOverrideRpcUrlForNetwork } from '../getOverrideRpcUrlForNetwork/getOverrideRpcUrlForNetwork.js';
|
|
3
|
+
|
|
4
|
+
const SOLANA_MAINNET_NETWORK = {
|
|
5
|
+
blockExplorerUrls: ['https://explorer.solana.com'],
|
|
6
|
+
chainId: '101',
|
|
7
|
+
genesisHash: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',
|
|
8
|
+
iconUrls: ['https://app.dynamic.xyz/assets/networks/solana.svg'],
|
|
9
|
+
name: 'Solana Mainnet',
|
|
10
|
+
nativeCurrency: {
|
|
11
|
+
decimals: 9,
|
|
12
|
+
iconUrl: 'https://app.dynamic.xyz/assets/networks/solana.svg',
|
|
13
|
+
name: 'Solana',
|
|
14
|
+
pricingProviderTokenId: 'solana',
|
|
15
|
+
symbol: 'SOL',
|
|
16
|
+
},
|
|
17
|
+
networkId: '101',
|
|
18
|
+
rpcUrls: ['https://api.mainnet-beta.solana.com'],
|
|
19
|
+
vanityName: 'Solana',
|
|
20
|
+
};
|
|
21
|
+
const SOLANA_TESTNET_NETWORK = {
|
|
22
|
+
blockExplorerUrls: ['https://explorer.solana.com/?cluster=testnet'],
|
|
23
|
+
chainId: '102',
|
|
24
|
+
genesisHash: '4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',
|
|
25
|
+
iconUrls: ['https://app.dynamic.xyz/assets/networks/solana.svg'],
|
|
26
|
+
name: 'Solana Testnet',
|
|
27
|
+
nativeCurrency: {
|
|
28
|
+
decimals: 9,
|
|
29
|
+
iconUrl: 'https://app.dynamic.xyz/assets/networks/solana.svg',
|
|
30
|
+
name: 'Solana',
|
|
31
|
+
pricingProviderTokenId: 'solana',
|
|
32
|
+
symbol: 'SOL',
|
|
33
|
+
},
|
|
34
|
+
networkId: '102',
|
|
35
|
+
rpcUrls: ['https://api.testnet.solana.com'],
|
|
36
|
+
};
|
|
37
|
+
const SOLANA_DEVNET_NETWORK = {
|
|
38
|
+
blockExplorerUrls: ['https://explorer.solana.com/?cluster=devnet'],
|
|
39
|
+
chainId: '103',
|
|
40
|
+
genesisHash: 'EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG',
|
|
41
|
+
iconUrls: ['https://app.dynamic.xyz/assets/networks/solana.svg'],
|
|
42
|
+
name: 'Solana Devnet',
|
|
43
|
+
nativeCurrency: {
|
|
44
|
+
decimals: 9,
|
|
45
|
+
iconUrl: 'https://app.dynamic.xyz/assets/networks/solana.svg',
|
|
46
|
+
name: 'Solana',
|
|
47
|
+
pricingProviderTokenId: 'solana',
|
|
48
|
+
symbol: 'SOL',
|
|
49
|
+
},
|
|
50
|
+
networkId: '103',
|
|
51
|
+
rpcUrls: ['https://api.devnet.solana.com'],
|
|
52
|
+
};
|
|
53
|
+
const getBackwardsCompatibleSolNetworks = (originalSolNetworks, connectionConfig) => {
|
|
54
|
+
if (!(originalSolNetworks === null || originalSolNetworks === void 0 ? void 0 : originalSolNetworks.length)) {
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
57
|
+
if (originalSolNetworks.length > 1) {
|
|
58
|
+
return originalSolNetworks;
|
|
59
|
+
}
|
|
60
|
+
// because we didn't have multi-network support in the past,
|
|
61
|
+
// customer would just pass in testnet/devnet rpc urls to the mainnet network
|
|
62
|
+
// so we need to check the rpc and return the correct/expected network data
|
|
63
|
+
const rpcUrl = getOverrideRpcUrlForNetwork(connectionConfig, originalSolNetworks[0]);
|
|
64
|
+
if (rpcUrl.includes('testnet')) {
|
|
65
|
+
return [
|
|
66
|
+
Object.assign(Object.assign({}, SOLANA_TESTNET_NETWORK), { privateCustomerRpcUrls: [rpcUrl] }),
|
|
67
|
+
];
|
|
68
|
+
}
|
|
69
|
+
if (rpcUrl.includes('devnet')) {
|
|
70
|
+
return [
|
|
71
|
+
Object.assign(Object.assign({}, SOLANA_DEVNET_NETWORK), { privateCustomerRpcUrls: [rpcUrl] }),
|
|
72
|
+
];
|
|
73
|
+
}
|
|
74
|
+
if (rpcUrl.includes('mainnet')) {
|
|
75
|
+
return [
|
|
76
|
+
Object.assign(Object.assign({}, SOLANA_MAINNET_NETWORK), { privateCustomerRpcUrls: [rpcUrl] }),
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
return originalSolNetworks;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export { getBackwardsCompatibleSolNetworks };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getBackwardsCompatibleSolNetworks } from './getBackwardsCompatibleSolNetworks';
|
package/src/utils/index.d.ts
CHANGED
|
@@ -7,3 +7,4 @@ export { isTxAlreadySigned } from './isTransactionSigned';
|
|
|
7
7
|
export { getOverrideRpcUrlForNetwork } from './getOverrideRpcUrlForNetwork';
|
|
8
8
|
export { createNonNativeTokenTransfer } from './createNonNativeTokenTransfer';
|
|
9
9
|
export { createSolTransfer } from './createSolTransfer';
|
|
10
|
+
export { getBackwardsCompatibleSolNetworks } from './getBackwardsCompatibleSolNetworks';
|