@rhinestone/shared-configs 2.16.0 → 2.18.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/dist/configs/chains.json +58 -0
- package/dist/configs/testnets.json +3 -0
- package/dist/scripts/__tests__/validation.test.js +19 -4
- package/dist/src/__tests__/chainFactsClient.test.js +15 -7
- package/dist/src/__tests__/chainVirtualization.test.js +11 -1
- package/dist/src/__tests__/solanaDevnet.test.d.ts +1 -0
- package/dist/src/__tests__/solanaDevnet.test.js +112 -0
- package/dist/src/chains.js +59 -0
- package/dist/src/generated/networks.d.ts +2 -1
- package/dist/src/generated/networks.js +1 -0
- package/dist/src/generated/packageVersion.d.ts +1 -1
- package/dist/src/generated/packageVersion.js +1 -1
- package/package.json +1 -1
package/dist/configs/chains.json
CHANGED
|
@@ -3202,5 +3202,63 @@
|
|
|
3202
3202
|
"decimals": 9,
|
|
3203
3203
|
"symbol": "WSOL"
|
|
3204
3204
|
}
|
|
3205
|
+
},
|
|
3206
|
+
"792703810": {
|
|
3207
|
+
"caip2": "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
|
|
3208
|
+
"explorer": null,
|
|
3209
|
+
"iconSlug": "solana",
|
|
3210
|
+
"name": "Solana Devnet",
|
|
3211
|
+
"nativeToken": {
|
|
3212
|
+
"address": "11111111111111111111111111111111",
|
|
3213
|
+
"decimals": 9,
|
|
3214
|
+
"symbol": "SOL"
|
|
3215
|
+
},
|
|
3216
|
+
"network": "testnet",
|
|
3217
|
+
"providerIds": {
|
|
3218
|
+
"alchemy": null,
|
|
3219
|
+
"zerion": null
|
|
3220
|
+
},
|
|
3221
|
+
"sessionCapable": false,
|
|
3222
|
+
"settlementConfig": {
|
|
3223
|
+
"cctp": {
|
|
3224
|
+
"domain": 5
|
|
3225
|
+
}
|
|
3226
|
+
},
|
|
3227
|
+
"settlementLayers": [
|
|
3228
|
+
"CCTP"
|
|
3229
|
+
],
|
|
3230
|
+
"stack": "vanilla",
|
|
3231
|
+
"swapQuoters": [],
|
|
3232
|
+
"tokens": [
|
|
3233
|
+
{
|
|
3234
|
+
"address": "11111111111111111111111111111111",
|
|
3235
|
+
"approvalSlot": null,
|
|
3236
|
+
"balanceSlot": null,
|
|
3237
|
+
"decimals": 9,
|
|
3238
|
+
"symbol": "SOL"
|
|
3239
|
+
},
|
|
3240
|
+
{
|
|
3241
|
+
"address": "So11111111111111111111111111111111111111112",
|
|
3242
|
+
"approvalSlot": null,
|
|
3243
|
+
"balanceSlot": null,
|
|
3244
|
+
"decimals": 9,
|
|
3245
|
+
"priceSymbol": "SOL",
|
|
3246
|
+
"symbol": "WSOL"
|
|
3247
|
+
},
|
|
3248
|
+
{
|
|
3249
|
+
"address": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
|
|
3250
|
+
"approvalSlot": null,
|
|
3251
|
+
"balanceSlot": null,
|
|
3252
|
+
"decimals": 6,
|
|
3253
|
+
"pegGroup": "USD",
|
|
3254
|
+
"symbol": "USDC"
|
|
3255
|
+
}
|
|
3256
|
+
],
|
|
3257
|
+
"vmType": "svm",
|
|
3258
|
+
"wrappedNativeToken": {
|
|
3259
|
+
"address": "So11111111111111111111111111111111111111112",
|
|
3260
|
+
"decimals": 9,
|
|
3261
|
+
"symbol": "WSOL"
|
|
3262
|
+
}
|
|
3205
3263
|
}
|
|
3206
3264
|
}
|
|
@@ -5,10 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const bun_test_1 = require("bun:test");
|
|
7
7
|
const viem_1 = require("viem");
|
|
8
|
-
const validation_1 = require("../validation");
|
|
9
|
-
const index_1 = require("../../src/index");
|
|
10
|
-
const oft_json_1 = __importDefault(require("../../configs/oft.json"));
|
|
11
8
|
const chain_indexer_json_1 = __importDefault(require("../../configs/chain-indexer.json"));
|
|
9
|
+
const oft_json_1 = __importDefault(require("../../configs/oft.json"));
|
|
10
|
+
const index_1 = require("../../src/index");
|
|
11
|
+
const validation_1 = require("../validation");
|
|
12
12
|
const nativeToken = { address: "0x0", symbol: "ETH", decimals: 18 };
|
|
13
13
|
const usdcAddress = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48";
|
|
14
14
|
const validAuthorization = {
|
|
@@ -344,6 +344,19 @@ function errorsFor(chain) {
|
|
|
344
344
|
(0, bun_test_1.expect)(result.issues[0].message).toContain("no settlement layers");
|
|
345
345
|
(0, bun_test_1.expect)(result.hasErrors).toBe(true);
|
|
346
346
|
});
|
|
347
|
+
(0, bun_test_1.it)("has no per-chain exemption from the zero-settlement-layer rule", () => {
|
|
348
|
+
const result = (0, validation_1.validateChainConfig)({
|
|
349
|
+
"792703810": validChain({
|
|
350
|
+
name: "Solana Devnet",
|
|
351
|
+
vmType: "svm",
|
|
352
|
+
network: "testnet",
|
|
353
|
+
caip2: "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
|
|
354
|
+
settlementLayers: [],
|
|
355
|
+
}),
|
|
356
|
+
});
|
|
357
|
+
(0, bun_test_1.expect)(result.issues.some((issue) => issue.message.includes("no settlement layers"))).toBe(true);
|
|
358
|
+
(0, bun_test_1.expect)(result.hasErrors).toBe(true);
|
|
359
|
+
});
|
|
347
360
|
(0, bun_test_1.it)("returns warning for chain with single settlement layer", () => {
|
|
348
361
|
const chains = {
|
|
349
362
|
"100": validChain({ name: "Gnosis", settlementLayers: ["RELAY"] }),
|
|
@@ -857,7 +870,9 @@ function validIndexerEntry(overrides = {}) {
|
|
|
857
870
|
const withoutExplorer = Object.entries(index_1.chainRegistry)
|
|
858
871
|
.filter(([, e]) => e.explorer == null)
|
|
859
872
|
.map(([id]) => id);
|
|
860
|
-
|
|
873
|
+
// Solana Devnet deliberately omits an explorer: Solscan's Devnet cluster
|
|
874
|
+
// selector is an appended query that the origin-plus-path schema cannot express.
|
|
875
|
+
(0, bun_test_1.expect)(withoutExplorer).toEqual(["792703810"]);
|
|
861
876
|
for (const venueId of ["1337001", "1337002"]) {
|
|
862
877
|
(0, bun_test_1.expect)(index_1.chainRegistry[venueId].explorer.url, venueId).toBe("https://app.hyperliquid.xyz");
|
|
863
878
|
}
|
|
@@ -3,11 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const bun_test_1 = require("bun:test");
|
|
4
4
|
const node_crypto_1 = require("node:crypto");
|
|
5
5
|
const chainFactsClient_1 = require("../chainFactsClient");
|
|
6
|
-
const index_1 = require("../index");
|
|
7
6
|
const packageVersion_1 = require("../generated/packageVersion");
|
|
7
|
+
const index_1 = require("../index");
|
|
8
8
|
const REMOTE_URL = "https://example.invalid/chain-facts.json";
|
|
9
9
|
const SIGNATURE_URL = `${REMOTE_URL}.sig`;
|
|
10
10
|
const ETHEREUM = String(index_1.MainnetNetwork.ETHEREUM);
|
|
11
|
+
const SOLANA_DEVNET = "792703810";
|
|
11
12
|
// A real P-256 keypair, signing in DER exactly as KMS ECDSA_SHA_256 does, so
|
|
12
13
|
// these tests exercise the same bytes production will see rather than a
|
|
13
14
|
// convenient stand-in.
|
|
@@ -69,12 +70,6 @@ function withEthereum(overrides) {
|
|
|
69
70
|
[ETHEREUM]: { ...index_1.chainRegistry[ETHEREUM], ...overrides },
|
|
70
71
|
};
|
|
71
72
|
}
|
|
72
|
-
/** The bundled registry minus one chain — the shape a stale artifact has. */
|
|
73
|
-
function registryMissingOneChain() {
|
|
74
|
-
const partial = { ...index_1.chainRegistry };
|
|
75
|
-
delete partial[ETHEREUM];
|
|
76
|
-
return partial;
|
|
77
|
-
}
|
|
78
73
|
function clientWith(extra = {}) {
|
|
79
74
|
return (0, chainFactsClient_1.createChainFactsClient)({
|
|
80
75
|
remoteUrl: REMOTE_URL,
|
|
@@ -123,6 +118,19 @@ function clientWith(extra = {}) {
|
|
|
123
118
|
(0, bun_test_1.expect)(snapshot.version).toBe(packageVersion_1.PACKAGE_VERSION);
|
|
124
119
|
(0, bun_test_1.expect)(Object.keys(client.getChainRegistry())).toEqual(Object.keys(index_1.chainRegistry));
|
|
125
120
|
});
|
|
121
|
+
(0, bun_test_1.it)("accepts a signed full registry carrying Solana Devnet", async () => {
|
|
122
|
+
serveSigned(payload());
|
|
123
|
+
const client = clientWith();
|
|
124
|
+
(0, bun_test_1.expect)(await client.refresh()).toBe(true);
|
|
125
|
+
const snapshot = client.getSnapshot();
|
|
126
|
+
(0, bun_test_1.expect)(snapshot.source).toBe("remote");
|
|
127
|
+
(0, bun_test_1.expect)(snapshot.chains[ETHEREUM]).toBeDefined();
|
|
128
|
+
(0, bun_test_1.expect)(snapshot.chains[SOLANA_DEVNET]).toMatchObject({
|
|
129
|
+
caip2: "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
|
|
130
|
+
network: "testnet",
|
|
131
|
+
vmType: "svm",
|
|
132
|
+
});
|
|
133
|
+
});
|
|
126
134
|
(0, bun_test_1.it)("accepts a remote payload that adds chains beyond the bundled set", async () => {
|
|
127
135
|
serveSigned(payload({ ...index_1.chainRegistry, "424242": index_1.chainRegistry[ETHEREUM] }));
|
|
128
136
|
const client = clientWith();
|
|
@@ -5,6 +5,7 @@ const index_1 = require("../index");
|
|
|
5
5
|
const HYPERCORE_SPOT_CAIP2 = "hypercore:spot";
|
|
6
6
|
const HYPERCORE_PERP_CAIP2 = "hypercore:perp";
|
|
7
7
|
const SOLANA_CAIP2 = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
|
|
8
|
+
const SOLANA_DEVNET_CAIP2 = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1";
|
|
8
9
|
const TRON_CAIP2 = "tron:mainnet";
|
|
9
10
|
(0, bun_test_1.describe)("chainVirtualization", () => {
|
|
10
11
|
(0, bun_test_1.describe)("getCaip2", () => {
|
|
@@ -19,6 +20,7 @@ const TRON_CAIP2 = "tron:mainnet";
|
|
|
19
20
|
(0, bun_test_1.it)("emits the registry caip2 for non-EVM chains", () => {
|
|
20
21
|
(0, bun_test_1.expect)((0, index_1.getCaip2)(index_1.MainnetNetwork.SOLANA)).toBe(SOLANA_CAIP2);
|
|
21
22
|
(0, bun_test_1.expect)((0, index_1.getCaip2)(index_1.MainnetNetwork.TRON)).toBe(TRON_CAIP2);
|
|
23
|
+
(0, bun_test_1.expect)((0, index_1.getCaip2)(index_1.TestnetNetwork.SOLANA_DEVNET)).toBe(SOLANA_DEVNET_CAIP2);
|
|
22
24
|
});
|
|
23
25
|
(0, bun_test_1.it)("falls back to eip155:<id> for EVM and unknown chains", () => {
|
|
24
26
|
(0, bun_test_1.expect)((0, index_1.getCaip2)(index_1.MainnetNetwork.ETHEREUM)).toBe(`eip155:${index_1.MainnetNetwork.ETHEREUM}`);
|
|
@@ -40,6 +42,7 @@ const TRON_CAIP2 = "tron:mainnet";
|
|
|
40
42
|
(0, bun_test_1.it)("resolves registry non-EVM caip2 strings", () => {
|
|
41
43
|
(0, bun_test_1.expect)((0, index_1.chainIdFromCaip2)(SOLANA_CAIP2)).toBe(index_1.MainnetNetwork.SOLANA);
|
|
42
44
|
(0, bun_test_1.expect)((0, index_1.chainIdFromCaip2)(TRON_CAIP2)).toBe(index_1.MainnetNetwork.TRON);
|
|
45
|
+
(0, bun_test_1.expect)((0, index_1.chainIdFromCaip2)(SOLANA_DEVNET_CAIP2)).toBe(index_1.TestnetNetwork.SOLANA_DEVNET);
|
|
43
46
|
});
|
|
44
47
|
(0, bun_test_1.it)("resolves eip155 caip2 strings, now that every entry carries one", () => {
|
|
45
48
|
(0, bun_test_1.expect)((0, index_1.chainIdFromCaip2)("eip155:1")).toBe(index_1.MainnetNetwork.ETHEREUM);
|
|
@@ -58,6 +61,7 @@ const TRON_CAIP2 = "tron:mainnet";
|
|
|
58
61
|
for (const id of [
|
|
59
62
|
index_1.MainnetNetwork.SOLANA,
|
|
60
63
|
index_1.MainnetNetwork.TRON,
|
|
64
|
+
index_1.TestnetNetwork.SOLANA_DEVNET,
|
|
61
65
|
index_1.HYPERCORE_SPOT_CHAIN_ID,
|
|
62
66
|
index_1.HYPERCORE_PERP_CHAIN_ID,
|
|
63
67
|
]) {
|
|
@@ -106,6 +110,7 @@ const TRON_CAIP2 = "tron:mainnet";
|
|
|
106
110
|
index_1.MainnetNetwork.ETHEREUM,
|
|
107
111
|
index_1.MainnetNetwork.BASE,
|
|
108
112
|
index_1.MainnetNetwork.SOLANA,
|
|
113
|
+
index_1.TestnetNetwork.SOLANA_DEVNET,
|
|
109
114
|
index_1.MainnetNetwork.TRON,
|
|
110
115
|
]) {
|
|
111
116
|
(0, bun_test_1.expect)((0, index_1.canBeOrigin)(id)).toBe(true);
|
|
@@ -139,8 +144,13 @@ const TRON_CAIP2 = "tron:mainnet";
|
|
|
139
144
|
(0, bun_test_1.it)("still classifies genuine non-EVM chains", () => {
|
|
140
145
|
(0, bun_test_1.expect)((0, index_1.isNonEvmChainId)(index_1.MainnetNetwork.SOLANA)).toBe(true);
|
|
141
146
|
(0, bun_test_1.expect)((0, index_1.isNonEvmChainId)(index_1.MainnetNetwork.TRON)).toBe(true);
|
|
147
|
+
(0, bun_test_1.expect)((0, index_1.isNonEvmChainId)(index_1.TestnetNetwork.SOLANA_DEVNET)).toBe(true);
|
|
142
148
|
(0, bun_test_1.expect)((0, index_1.isNonEvmChainId)(index_1.MainnetNetwork.ETHEREUM)).toBe(false);
|
|
143
|
-
(0, bun_test_1.expect)((0, index_1.getNonEvmChainIds)()).toEqual(bun_test_1.expect.arrayContaining([
|
|
149
|
+
(0, bun_test_1.expect)((0, index_1.getNonEvmChainIds)()).toEqual(bun_test_1.expect.arrayContaining([
|
|
150
|
+
index_1.MainnetNetwork.SOLANA,
|
|
151
|
+
index_1.TestnetNetwork.SOLANA_DEVNET,
|
|
152
|
+
index_1.MainnetNetwork.TRON,
|
|
153
|
+
]));
|
|
144
154
|
});
|
|
145
155
|
});
|
|
146
156
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const bun_test_1 = require("bun:test");
|
|
4
|
+
const index_1 = require("../index");
|
|
5
|
+
const oft_1 = require("../oft");
|
|
6
|
+
const DEVNET_ID = 792_703_810;
|
|
7
|
+
const NATIVE_SOL = '11111111111111111111111111111111';
|
|
8
|
+
const WRAPPED_SOL = 'So11111111111111111111111111111111111111112';
|
|
9
|
+
const DEVNET_USDC = '4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU';
|
|
10
|
+
const BASE_SEPOLIA_ID = 84_532;
|
|
11
|
+
const BASE_SEPOLIA_USDC = '0x036CbD53842c5426634e7929541eC2318f3dCF7e';
|
|
12
|
+
const BASE_ID = 8453;
|
|
13
|
+
const SOLANA_ID = 792_703_809;
|
|
14
|
+
(0, bun_test_1.describe)('Solana Devnet registry', () => {
|
|
15
|
+
(0, bun_test_1.it)('publishes the exact testnet identity without a viem chain', () => {
|
|
16
|
+
(0, bun_test_1.expect)(index_1.TestnetNetwork.SOLANA_DEVNET).toBe(DEVNET_ID);
|
|
17
|
+
const entry = index_1.chainRegistry[String(DEVNET_ID)];
|
|
18
|
+
(0, bun_test_1.expect)(entry).toMatchObject({
|
|
19
|
+
name: 'Solana Devnet',
|
|
20
|
+
caip2: 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',
|
|
21
|
+
vmType: 'svm',
|
|
22
|
+
network: 'testnet',
|
|
23
|
+
stack: 'vanilla',
|
|
24
|
+
explorer: null,
|
|
25
|
+
iconSlug: 'solana',
|
|
26
|
+
providerIds: { alchemy: null, zerion: null },
|
|
27
|
+
sessionCapable: false,
|
|
28
|
+
});
|
|
29
|
+
(0, bun_test_1.expect)(index_1.testnetChainList[String(DEVNET_ID)]).toEqual({ providers: [] });
|
|
30
|
+
(0, bun_test_1.expect)(index_1.mainnetChainList[String(DEVNET_ID)]).toBeUndefined();
|
|
31
|
+
for (const viemChains of [index_1.mainnetChains, index_1.testnetChains, index_1.chains]) {
|
|
32
|
+
(0, bun_test_1.expect)(viemChains.some((chain) => Number(chain.id) === DEVNET_ID)).toBe(false);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
(0, bun_test_1.it)('publishes only native SOL, WSOL, and Devnet USDC', () => {
|
|
36
|
+
const entry = index_1.chainRegistry[String(DEVNET_ID)];
|
|
37
|
+
(0, bun_test_1.expect)(entry.nativeToken).toEqual({
|
|
38
|
+
address: NATIVE_SOL,
|
|
39
|
+
decimals: 9,
|
|
40
|
+
symbol: 'SOL',
|
|
41
|
+
});
|
|
42
|
+
(0, bun_test_1.expect)(entry.wrappedNativeToken).toEqual({
|
|
43
|
+
address: WRAPPED_SOL,
|
|
44
|
+
decimals: 9,
|
|
45
|
+
symbol: 'WSOL',
|
|
46
|
+
});
|
|
47
|
+
(0, bun_test_1.expect)(entry.nativeToken.address).not.toBe(entry.wrappedNativeToken.address);
|
|
48
|
+
(0, bun_test_1.expect)(entry.tokens).toEqual([
|
|
49
|
+
{
|
|
50
|
+
address: NATIVE_SOL,
|
|
51
|
+
approvalSlot: null,
|
|
52
|
+
balanceSlot: null,
|
|
53
|
+
decimals: 9,
|
|
54
|
+
symbol: 'SOL',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
address: WRAPPED_SOL,
|
|
58
|
+
approvalSlot: null,
|
|
59
|
+
balanceSlot: null,
|
|
60
|
+
decimals: 9,
|
|
61
|
+
priceSymbol: 'SOL',
|
|
62
|
+
symbol: 'WSOL',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
address: DEVNET_USDC,
|
|
66
|
+
approvalSlot: null,
|
|
67
|
+
balanceSlot: null,
|
|
68
|
+
decimals: 6,
|
|
69
|
+
pegGroup: 'USD',
|
|
70
|
+
symbol: 'USDC',
|
|
71
|
+
},
|
|
72
|
+
]);
|
|
73
|
+
});
|
|
74
|
+
(0, bun_test_1.it)('advertises CCTP coverage and nothing else', () => {
|
|
75
|
+
const entry = index_1.chainRegistry[String(DEVNET_ID)];
|
|
76
|
+
(0, bun_test_1.expect)(entry.settlementLayers).toEqual(['CCTP']);
|
|
77
|
+
(0, bun_test_1.expect)(entry.swapQuoters).toEqual([]);
|
|
78
|
+
(0, bun_test_1.expect)(entry.settlementConfig).toEqual({ cctp: { domain: 5 } });
|
|
79
|
+
(0, bun_test_1.expect)(entry.paymentTokens).toBeUndefined();
|
|
80
|
+
// Token-level CCTP coverage is authored registry-wide in a later pass;
|
|
81
|
+
// absent here means "no opinion", not "routes nothing".
|
|
82
|
+
(0, bun_test_1.expect)(entry.tokens.every((token) => token.settlementLayers === undefined)).toBe(true);
|
|
83
|
+
(0, bun_test_1.expect)(oft_1.OFT_PROGRAM_IDS[DEVNET_ID]).toBeUndefined();
|
|
84
|
+
for (const config of Object.values(oft_1.OFT_REGISTRY)) {
|
|
85
|
+
(0, bun_test_1.expect)(config.adapters[DEVNET_ID]).toBeUndefined();
|
|
86
|
+
(0, bun_test_1.expect)(config.tokens[DEVNET_ID]).toBeUndefined();
|
|
87
|
+
(0, bun_test_1.expect)(config.layerZeroEids[DEVNET_ID]).toBeUndefined();
|
|
88
|
+
}
|
|
89
|
+
(0, bun_test_1.expect)((0, index_1.canBeOrigin)(DEVNET_ID)).toBe(true);
|
|
90
|
+
(0, bun_test_1.expect)((0, index_1.canBeDestination)(DEVNET_ID)).toBe(true);
|
|
91
|
+
});
|
|
92
|
+
(0, bun_test_1.it)('pairs with Base Sepolia over CCTP on Circle test USDC', () => {
|
|
93
|
+
const baseSepolia = index_1.chainRegistry[String(BASE_SEPOLIA_ID)];
|
|
94
|
+
const devnet = index_1.chainRegistry[String(DEVNET_ID)];
|
|
95
|
+
(0, bun_test_1.expect)(baseSepolia.settlementLayers).toContain('CCTP');
|
|
96
|
+
(0, bun_test_1.expect)(baseSepolia.settlementConfig?.cctp).toEqual({ domain: 6 });
|
|
97
|
+
(0, bun_test_1.expect)(baseSepolia.tokens.some((token) => token.symbol === 'USDC' && token.address === BASE_SEPOLIA_USDC)).toBe(true);
|
|
98
|
+
(0, bun_test_1.expect)(devnet.tokens.some((token) => token.symbol === 'USDC' && token.address === DEVNET_USDC)).toBe(true);
|
|
99
|
+
// Circle assigns domains per blockchain, not per network, so a testnet
|
|
100
|
+
// domain equals its mainnet counterpart and `network` is the only
|
|
101
|
+
// discriminator between the two environments.
|
|
102
|
+
// https://developers.circle.com/cctp/concepts/supported-chains-and-domains
|
|
103
|
+
(0, bun_test_1.expect)(baseSepolia.network).toBe('testnet');
|
|
104
|
+
(0, bun_test_1.expect)(devnet.network).toBe('testnet');
|
|
105
|
+
(0, bun_test_1.expect)(index_1.chainRegistry[String(BASE_ID)].settlementConfig?.cctp).toEqual({
|
|
106
|
+
domain: 6,
|
|
107
|
+
});
|
|
108
|
+
(0, bun_test_1.expect)(index_1.chainRegistry[String(SOLANA_ID)].settlementConfig?.cctp).toEqual({
|
|
109
|
+
domain: 5,
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
});
|
package/dist/src/chains.js
CHANGED
|
@@ -3306,6 +3306,65 @@ const chains = {
|
|
|
3306
3306
|
"symbol": "WSOL"
|
|
3307
3307
|
},
|
|
3308
3308
|
"providers": []
|
|
3309
|
+
},
|
|
3310
|
+
"792703810": {
|
|
3311
|
+
"caip2": "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
|
|
3312
|
+
"explorer": null,
|
|
3313
|
+
"iconSlug": "solana",
|
|
3314
|
+
"name": "Solana Devnet",
|
|
3315
|
+
"nativeToken": {
|
|
3316
|
+
"address": "11111111111111111111111111111111",
|
|
3317
|
+
"decimals": 9,
|
|
3318
|
+
"symbol": "SOL"
|
|
3319
|
+
},
|
|
3320
|
+
"network": "testnet",
|
|
3321
|
+
"providerIds": {
|
|
3322
|
+
"alchemy": null,
|
|
3323
|
+
"zerion": null
|
|
3324
|
+
},
|
|
3325
|
+
"sessionCapable": false,
|
|
3326
|
+
"settlementConfig": {
|
|
3327
|
+
"cctp": {
|
|
3328
|
+
"domain": 5
|
|
3329
|
+
}
|
|
3330
|
+
},
|
|
3331
|
+
"settlementLayers": [
|
|
3332
|
+
"CCTP"
|
|
3333
|
+
],
|
|
3334
|
+
"stack": "vanilla",
|
|
3335
|
+
"swapQuoters": [],
|
|
3336
|
+
"tokens": [
|
|
3337
|
+
{
|
|
3338
|
+
"address": "11111111111111111111111111111111",
|
|
3339
|
+
"approvalSlot": null,
|
|
3340
|
+
"balanceSlot": null,
|
|
3341
|
+
"decimals": 9,
|
|
3342
|
+
"symbol": "SOL"
|
|
3343
|
+
},
|
|
3344
|
+
{
|
|
3345
|
+
"address": "So11111111111111111111111111111111111111112",
|
|
3346
|
+
"approvalSlot": null,
|
|
3347
|
+
"balanceSlot": null,
|
|
3348
|
+
"decimals": 9,
|
|
3349
|
+
"priceSymbol": "SOL",
|
|
3350
|
+
"symbol": "WSOL"
|
|
3351
|
+
},
|
|
3352
|
+
{
|
|
3353
|
+
"address": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
|
|
3354
|
+
"approvalSlot": null,
|
|
3355
|
+
"balanceSlot": null,
|
|
3356
|
+
"decimals": 6,
|
|
3357
|
+
"pegGroup": "USD",
|
|
3358
|
+
"symbol": "USDC"
|
|
3359
|
+
}
|
|
3360
|
+
],
|
|
3361
|
+
"vmType": "svm",
|
|
3362
|
+
"wrappedNativeToken": {
|
|
3363
|
+
"address": "So11111111111111111111111111111111111111112",
|
|
3364
|
+
"decimals": 9,
|
|
3365
|
+
"symbol": "WSOL"
|
|
3366
|
+
},
|
|
3367
|
+
"providers": []
|
|
3309
3368
|
}
|
|
3310
3369
|
};
|
|
3311
3370
|
exports.chains = chains;
|
|
@@ -42,6 +42,7 @@ var TestnetNetwork;
|
|
|
42
42
|
TestnetNetwork[TestnetNetwork["BASE_SEPOLIA"] = chains_1.baseSepolia.id] = "BASE_SEPOLIA";
|
|
43
43
|
TestnetNetwork[TestnetNetwork["ARBITRUM_SEPOLIA"] = chains_1.arbitrumSepolia.id] = "ARBITRUM_SEPOLIA";
|
|
44
44
|
TestnetNetwork[TestnetNetwork["PLASMA_TESTNET"] = chains_1.plasmaTestnet.id] = "PLASMA_TESTNET";
|
|
45
|
+
TestnetNetwork[TestnetNetwork["SOLANA_DEVNET"] = 792703810] = "SOLANA_DEVNET";
|
|
45
46
|
})(TestnetNetwork || (exports.TestnetNetwork = TestnetNetwork = {}));
|
|
46
47
|
var OPStackChains;
|
|
47
48
|
(function (OPStackChains) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const PACKAGE_VERSION = "2.
|
|
1
|
+
declare const PACKAGE_VERSION = "2.18.0";
|
|
2
2
|
export { PACKAGE_VERSION };
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PACKAGE_VERSION = void 0;
|
|
4
4
|
// Auto-generated by scripts/generate.ts. Do not edit manually.
|
|
5
|
-
const PACKAGE_VERSION = "2.
|
|
5
|
+
const PACKAGE_VERSION = "2.18.0";
|
|
6
6
|
exports.PACKAGE_VERSION = PACKAGE_VERSION;
|