@rhinestone/shared-configs 1.16.0 → 1.17.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 +238 -6
- package/dist/scripts/__tests__/validation.test.js +117 -0
- package/dist/scripts/generate.js +15 -1
- package/dist/scripts/validation.d.ts +10 -0
- package/dist/scripts/validation.js +137 -0
- package/dist/src/chains.d.ts +10 -1
- package/dist/src/chains.js +238 -6
- package/dist/src/generated/packageVersion.d.ts +1 -1
- package/dist/src/generated/packageVersion.js +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/types.d.ts +72 -1
- package/package.json +1 -1
|
@@ -40,6 +40,7 @@ exports.validateChainIconSlugs = validateChainIconSlugs;
|
|
|
40
40
|
exports.classifyChainPublicRpcUrls = classifyChainPublicRpcUrls;
|
|
41
41
|
exports.classifyChainStacks = classifyChainStacks;
|
|
42
42
|
exports.validateChainConfig = validateChainConfig;
|
|
43
|
+
exports.validateOftCoverage = validateOftCoverage;
|
|
43
44
|
exports.formatValidationIssues = formatValidationIssues;
|
|
44
45
|
const celo_1 = require("viem/celo");
|
|
45
46
|
const viemChains = __importStar(require("viem/chains"));
|
|
@@ -93,6 +94,87 @@ const isObject = (v) => typeof v === 'object' && v !== null && !Array.isArray(v)
|
|
|
93
94
|
const isNonEmptyString = (v) => typeof v === 'string' && v.length > 0;
|
|
94
95
|
const isNonNegativeInt = (v) => typeof v === 'number' && Number.isInteger(v) && v >= 0;
|
|
95
96
|
const isAbsentOr = (v, check) => v === undefined || check(v);
|
|
97
|
+
// Every vendor layer's REQUIRED payload, keyed by the SettlementLayer value
|
|
98
|
+
// that switches it on. This is what replaces the chain-id allowlists the
|
|
99
|
+
// jsonnet used to carry with "must match <map> in the orchestrator" comments —
|
|
100
|
+
// nothing enforced those, and they had drifted. A layer declared without the
|
|
101
|
+
// identifiers needed to address it is a route we advertise and then cannot
|
|
102
|
+
// take, so it fails the build rather than the fill.
|
|
103
|
+
const SETTLEMENT_CONFIG_SCHEMA = {
|
|
104
|
+
RHINO: { key: 'rhino', required: { chainName: isNonEmptyString } },
|
|
105
|
+
CCTP: { key: 'cctp', required: { domain: isNonNegativeInt } },
|
|
106
|
+
NEAR: { key: 'near', required: { prefix: isNonEmptyString } },
|
|
107
|
+
OFT: {
|
|
108
|
+
key: 'oft',
|
|
109
|
+
required: { adapter: isNonEmptyString, layerZeroEid: isNonNegativeInt },
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
// Optional payload fields, shape-checked only when present. `bridgeContract` is
|
|
113
|
+
// absent for a destination-only chain, which nothing originates from.
|
|
114
|
+
const SETTLEMENT_CONFIG_OPTIONAL = {
|
|
115
|
+
rhino: { bridgeContract: isNonEmptyString },
|
|
116
|
+
};
|
|
117
|
+
const SETTLEMENT_CONFIG_KEYS = new Set(Object.values(SETTLEMENT_CONFIG_SCHEMA).map((entry) => entry.key));
|
|
118
|
+
/**
|
|
119
|
+
* Cross-checks `settlementConfig` against `settlementLayers`.
|
|
120
|
+
*
|
|
121
|
+
* Both directions matter. A layer with no payload is unaddressable; a payload
|
|
122
|
+
* for a layer that is off is a route someone believes is live — the producer
|
|
123
|
+
* emits neither, so either means the derivation broke.
|
|
124
|
+
*/
|
|
125
|
+
function settlementConfigProblems(chain) {
|
|
126
|
+
const problems = [];
|
|
127
|
+
const config = chain.settlementConfig;
|
|
128
|
+
if (config !== undefined && !isObject(config)) {
|
|
129
|
+
return ['settlementConfig is not an object'];
|
|
130
|
+
}
|
|
131
|
+
const cfg = (config ?? {});
|
|
132
|
+
const layers = new Set(Array.isArray(chain.settlementLayers)
|
|
133
|
+
? chain.settlementLayers.filter((l) => typeof l === 'string')
|
|
134
|
+
: []);
|
|
135
|
+
for (const key of Object.keys(cfg)) {
|
|
136
|
+
if (!SETTLEMENT_CONFIG_KEYS.has(key)) {
|
|
137
|
+
problems.push(`settlementConfig has unknown layer ${JSON.stringify(key)} — add it to SETTLEMENT_CONFIG_SCHEMA and to SettlementConfig in src/types.ts`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
for (const [layer, { key, required }] of Object.entries(SETTLEMENT_CONFIG_SCHEMA)) {
|
|
141
|
+
const payload = cfg[key];
|
|
142
|
+
if (!layers.has(layer)) {
|
|
143
|
+
if (payload !== undefined) {
|
|
144
|
+
problems.push(`settlementConfig.${key} is present but ${layer} is not in settlementLayers`);
|
|
145
|
+
}
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
if (!isObject(payload)) {
|
|
149
|
+
problems.push(`settlementLayers contains ${layer} but settlementConfig.${key} is missing`);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
for (const [field, check] of Object.entries(required)) {
|
|
153
|
+
if (!check(payload[field])) {
|
|
154
|
+
problems.push(`settlementConfig.${key}.${field} ${JSON.stringify(payload[field])} is invalid — ${layer} cannot be addressed without it`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
for (const [field, check] of Object.entries(SETTLEMENT_CONFIG_OPTIONAL[key] ?? {})) {
|
|
158
|
+
if (!isAbsentOr(payload[field], check)) {
|
|
159
|
+
problems.push(`settlementConfig.${key}.${field} is invalid`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// A non-EVM chain's 1Click asset ids are not derivable from the on-chain
|
|
164
|
+
// address, so every token on one has to carry its own. Missing it is not a
|
|
165
|
+
// degraded route: `toNearAssetId` throws mid-plan.
|
|
166
|
+
if (layers.has('NEAR') &&
|
|
167
|
+
typeof chain.vmType === 'string' &&
|
|
168
|
+
chain.vmType !== 'evm' &&
|
|
169
|
+
Array.isArray(chain.tokens)) {
|
|
170
|
+
for (const token of chain.tokens) {
|
|
171
|
+
if (isObject(token) && !isNonEmptyString(token.nearAssetId)) {
|
|
172
|
+
problems.push(`token ${JSON.stringify(token.symbol)} has no nearAssetId, which a non-EVM NEAR chain cannot derive`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return problems;
|
|
177
|
+
}
|
|
96
178
|
/**
|
|
97
179
|
* Structural checks on one chain entry, returning human-readable problems.
|
|
98
180
|
*
|
|
@@ -196,6 +278,10 @@ function structuralProblems(chain) {
|
|
|
196
278
|
}
|
|
197
279
|
if (!isAbsentOr(token.priceSymbol, isNonEmptyString))
|
|
198
280
|
problems.push(`${at}.priceSymbol is not a string`);
|
|
281
|
+
if (!isAbsentOr(token.rhinoSymbol, isNonEmptyString))
|
|
282
|
+
problems.push(`${at}.rhinoSymbol is not a string`);
|
|
283
|
+
if (!isAbsentOr(token.nearAssetId, isNonEmptyString))
|
|
284
|
+
problems.push(`${at}.nearAssetId is not a string`);
|
|
199
285
|
if (!isAbsentOr(token.unpriced, (v) => typeof v === 'boolean'))
|
|
200
286
|
problems.push(`${at}.unpriced is not a boolean`);
|
|
201
287
|
if (!isAbsentOr(token.pegGroup, (v) => PEG_GROUPS.has(v))) {
|
|
@@ -218,6 +304,7 @@ function structuralProblems(chain) {
|
|
|
218
304
|
}
|
|
219
305
|
}
|
|
220
306
|
}
|
|
307
|
+
problems.push(...settlementConfigProblems(chain));
|
|
221
308
|
const quoterConfig = chain.swapQuoterConfig;
|
|
222
309
|
if (quoterConfig !== undefined) {
|
|
223
310
|
if (!isObject(quoterConfig)) {
|
|
@@ -885,6 +972,56 @@ function validateChainConfig(chains) {
|
|
|
885
972
|
hasErrors: issues.some((issue) => issue.severity === 'error'),
|
|
886
973
|
};
|
|
887
974
|
}
|
|
975
|
+
/**
|
|
976
|
+
* Insists that every chain the OFT registry deploys on declares OFT.
|
|
977
|
+
*
|
|
978
|
+
* The chain block states the membership and reads the adapter and endpoint id
|
|
979
|
+
* back out of config/oft.jsonnet, so the two can only disagree one way: a
|
|
980
|
+
* deployment added to the OFT registry whose chain block was never given an
|
|
981
|
+
* `oft` entry. That chain silently stops advertising OFT, which is invisible in
|
|
982
|
+
* a diff of either file on its own — this is the check that sees both.
|
|
983
|
+
*/
|
|
984
|
+
function validateOftCoverage(chains, oft) {
|
|
985
|
+
const issues = [];
|
|
986
|
+
const expected = new Map();
|
|
987
|
+
for (const registry of Object.values(oft)) {
|
|
988
|
+
if (!isObject(registry) || !isObject(registry.adapters))
|
|
989
|
+
continue;
|
|
990
|
+
for (const [chainId, adapter] of Object.entries(registry.adapters)) {
|
|
991
|
+
if (typeof adapter === 'string')
|
|
992
|
+
expected.set(chainId, adapter);
|
|
993
|
+
}
|
|
994
|
+
}
|
|
995
|
+
for (const [chainId, adapter] of expected) {
|
|
996
|
+
const chain = chains[chainId];
|
|
997
|
+
if (!chain)
|
|
998
|
+
continue;
|
|
999
|
+
const chainName = isNonEmptyString(chain.name) ? chain.name : '<unnamed>';
|
|
1000
|
+
const config = isObject(chain.settlementConfig)
|
|
1001
|
+
? chain.settlementConfig.oft
|
|
1002
|
+
: undefined;
|
|
1003
|
+
if (!Array.isArray(chain.settlementLayers) || !chain.settlementLayers.includes('OFT')) {
|
|
1004
|
+
issues.push({
|
|
1005
|
+
severity: 'error',
|
|
1006
|
+
chainId,
|
|
1007
|
+
chainName,
|
|
1008
|
+
message: 'config/oft.jsonnet deploys an OFT adapter here, but the chain declares no OFT layer — add `oft: oftLayer.forChain(<chain_id>)` to its supported_settlement_layers',
|
|
1009
|
+
});
|
|
1010
|
+
continue;
|
|
1011
|
+
}
|
|
1012
|
+
if (!isObject(config) ||
|
|
1013
|
+
typeof config.adapter !== 'string' ||
|
|
1014
|
+
config.adapter.toLowerCase() !== adapter.toLowerCase()) {
|
|
1015
|
+
issues.push({
|
|
1016
|
+
severity: 'error',
|
|
1017
|
+
chainId,
|
|
1018
|
+
chainName,
|
|
1019
|
+
message: `settlementConfig.oft.adapter ${JSON.stringify(config?.adapter)} does not match config/oft.jsonnet's ${JSON.stringify(adapter)}`,
|
|
1020
|
+
});
|
|
1021
|
+
}
|
|
1022
|
+
}
|
|
1023
|
+
return issues;
|
|
1024
|
+
}
|
|
888
1025
|
/**
|
|
889
1026
|
* Formats validation issues for console output.
|
|
890
1027
|
*
|
package/dist/src/chains.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ChainNetwork, ChainStack, PegGroup, ProviderName, SettlementLayer, SupportedChain, SwapQuoter, SwapQuoterConfig, VmType } from "./types";
|
|
1
|
+
import type { ChainNetwork, ChainStack, PegGroup, ProviderName, SettlementConfig, SettlementLayer, SupportedChain, SwapQuoter, SwapQuoterConfig, VmType } from "./types";
|
|
2
2
|
interface Token {
|
|
3
3
|
/** EVM: 0x-prefixed hex. SVM: base58 SPL mint. TVM: base58 (T-prefixed). */
|
|
4
4
|
address: string;
|
|
@@ -10,6 +10,11 @@ interface Token {
|
|
|
10
10
|
approvalSlot: number | null;
|
|
11
11
|
/** Bridge layers that can carry this token on this chain, when known. */
|
|
12
12
|
settlementLayers?: SettlementLayer[];
|
|
13
|
+
/** Rhino's own symbol for this token, where it differs from ours. */
|
|
14
|
+
rhinoSymbol?: string;
|
|
15
|
+
/** NEAR 1Click asset id, for tokens whose id 1Click does not derive from
|
|
16
|
+
* the on-chain address (non-EVM chains). */
|
|
17
|
+
nearAssetId?: string;
|
|
13
18
|
unpriced?: boolean;
|
|
14
19
|
}
|
|
15
20
|
interface NativeToken {
|
|
@@ -58,6 +63,10 @@ interface Chain {
|
|
|
58
63
|
wrappedNativeToken: NativeToken;
|
|
59
64
|
tokens: Token[];
|
|
60
65
|
settlementLayers: SettlementLayer[];
|
|
66
|
+
/** Per-vendor addressing for the enabled layers that need it (Rhino chain
|
|
67
|
+
* name, CCTP domain, NEAR prefix, OFT adapter). Third-party addresses —
|
|
68
|
+
* never the contracts block, which is read as Rhinestone-deployed. */
|
|
69
|
+
settlementConfig?: SettlementConfig;
|
|
61
70
|
providers: ProviderName[];
|
|
62
71
|
swapQuoters: SwapQuoter[];
|
|
63
72
|
swapQuoterConfig?: Partial<Record<SwapQuoter, SwapQuoterConfig>>;
|
package/dist/src/chains.js
CHANGED
|
@@ -18,6 +18,22 @@ const chains = {
|
|
|
18
18
|
},
|
|
19
19
|
"network": "mainnet",
|
|
20
20
|
"publicRpcUrl": "https://eth.merkle.io",
|
|
21
|
+
"settlementConfig": {
|
|
22
|
+
"cctp": {
|
|
23
|
+
"domain": 0
|
|
24
|
+
},
|
|
25
|
+
"near": {
|
|
26
|
+
"prefix": "eth"
|
|
27
|
+
},
|
|
28
|
+
"oft": {
|
|
29
|
+
"adapter": "0x6c96de32cea08842dcc4058c14d3aaad7fa41dee",
|
|
30
|
+
"layerZeroEid": 30101
|
|
31
|
+
},
|
|
32
|
+
"rhino": {
|
|
33
|
+
"bridgeContract": "0xbca3039a18c0d2f2f84ba8a028c67290bc045afa",
|
|
34
|
+
"chainName": "ETHEREUM"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
21
37
|
"settlementLayers": [
|
|
22
38
|
"ACROSS",
|
|
23
39
|
"ECO",
|
|
@@ -82,7 +98,8 @@ const chains = {
|
|
|
82
98
|
"priceSymbol": "USDT",
|
|
83
99
|
"settlementLayers": [
|
|
84
100
|
"ACROSS",
|
|
85
|
-
"ECO"
|
|
101
|
+
"ECO",
|
|
102
|
+
"OFT"
|
|
86
103
|
],
|
|
87
104
|
"symbol": "USDT"
|
|
88
105
|
}
|
|
@@ -114,6 +131,22 @@ const chains = {
|
|
|
114
131
|
},
|
|
115
132
|
"network": "mainnet",
|
|
116
133
|
"publicRpcUrl": "https://mainnet.optimism.io",
|
|
134
|
+
"settlementConfig": {
|
|
135
|
+
"cctp": {
|
|
136
|
+
"domain": 2
|
|
137
|
+
},
|
|
138
|
+
"near": {
|
|
139
|
+
"prefix": "op"
|
|
140
|
+
},
|
|
141
|
+
"oft": {
|
|
142
|
+
"adapter": "0xF03b4d9AC1D5d1E7c4cEf54C2A313b9fe051A0aD",
|
|
143
|
+
"layerZeroEid": 30111
|
|
144
|
+
},
|
|
145
|
+
"rhino": {
|
|
146
|
+
"bridgeContract": "0x0bca65bf4b4c8803d2f0b49353ed57caaf3d66dc",
|
|
147
|
+
"chainName": "OPTIMISM"
|
|
148
|
+
}
|
|
149
|
+
},
|
|
117
150
|
"settlementLayers": [
|
|
118
151
|
"ACROSS",
|
|
119
152
|
"ECO",
|
|
@@ -177,7 +210,8 @@ const chains = {
|
|
|
177
210
|
"priceSymbol": "USDT",
|
|
178
211
|
"settlementLayers": [
|
|
179
212
|
"ACROSS",
|
|
180
|
-
"ECO"
|
|
213
|
+
"ECO",
|
|
214
|
+
"OFT"
|
|
181
215
|
],
|
|
182
216
|
"symbol": "USDT0"
|
|
183
217
|
},
|
|
@@ -221,10 +255,23 @@ const chains = {
|
|
|
221
255
|
},
|
|
222
256
|
"network": "mainnet",
|
|
223
257
|
"publicRpcUrl": "https://56.rpc.thirdweb.com",
|
|
258
|
+
"settlementConfig": {
|
|
259
|
+
"cctp": {
|
|
260
|
+
"domain": 17
|
|
261
|
+
},
|
|
262
|
+
"near": {
|
|
263
|
+
"prefix": "bsc"
|
|
264
|
+
},
|
|
265
|
+
"rhino": {
|
|
266
|
+
"bridgeContract": "0xb80a582fa430645a043bb4f6135321ee01005fef",
|
|
267
|
+
"chainName": "BINANCE"
|
|
268
|
+
}
|
|
269
|
+
},
|
|
224
270
|
"settlementLayers": [
|
|
225
271
|
"ACROSS",
|
|
226
272
|
"ECO",
|
|
227
273
|
"RELAY",
|
|
274
|
+
"NEAR",
|
|
228
275
|
"RHINO",
|
|
229
276
|
"CCTP"
|
|
230
277
|
],
|
|
@@ -301,6 +348,15 @@ const chains = {
|
|
|
301
348
|
},
|
|
302
349
|
"network": "mainnet",
|
|
303
350
|
"publicRpcUrl": "https://rpc.gnosischain.com",
|
|
351
|
+
"settlementConfig": {
|
|
352
|
+
"near": {
|
|
353
|
+
"prefix": "gnosis"
|
|
354
|
+
},
|
|
355
|
+
"rhino": {
|
|
356
|
+
"bridgeContract": "0x5e023c31e1d3dcd08a1b3e8c96f6ef8aa8fcacd1",
|
|
357
|
+
"chainName": "GNOSIS"
|
|
358
|
+
}
|
|
359
|
+
},
|
|
304
360
|
"settlementLayers": [
|
|
305
361
|
"RELAY",
|
|
306
362
|
"NEAR",
|
|
@@ -349,6 +405,19 @@ const chains = {
|
|
|
349
405
|
},
|
|
350
406
|
"network": "mainnet",
|
|
351
407
|
"publicRpcUrl": "https://mainnet.unichain.org",
|
|
408
|
+
"settlementConfig": {
|
|
409
|
+
"cctp": {
|
|
410
|
+
"domain": 10
|
|
411
|
+
},
|
|
412
|
+
"oft": {
|
|
413
|
+
"adapter": "0xc07bE8994D035631c36fb4a89C918CeFB2f03EC3",
|
|
414
|
+
"layerZeroEid": 30320
|
|
415
|
+
},
|
|
416
|
+
"rhino": {
|
|
417
|
+
"bridgeContract": "0xb0d7040b93fe5b099d3ce02ea86c4a1b695732d0",
|
|
418
|
+
"chainName": "UNICHAIN"
|
|
419
|
+
}
|
|
420
|
+
},
|
|
352
421
|
"settlementLayers": [
|
|
353
422
|
"ACROSS",
|
|
354
423
|
"ECO",
|
|
@@ -413,7 +482,8 @@ const chains = {
|
|
|
413
482
|
"priceSymbol": "USDT",
|
|
414
483
|
"settlementLayers": [
|
|
415
484
|
"ACROSS",
|
|
416
|
-
"ECO"
|
|
485
|
+
"ECO",
|
|
486
|
+
"OFT"
|
|
417
487
|
],
|
|
418
488
|
"symbol": "USDT0"
|
|
419
489
|
}
|
|
@@ -445,6 +515,22 @@ const chains = {
|
|
|
445
515
|
},
|
|
446
516
|
"network": "mainnet",
|
|
447
517
|
"publicRpcUrl": "https://polygon.drpc.org",
|
|
518
|
+
"settlementConfig": {
|
|
519
|
+
"cctp": {
|
|
520
|
+
"domain": 7
|
|
521
|
+
},
|
|
522
|
+
"near": {
|
|
523
|
+
"prefix": "pol"
|
|
524
|
+
},
|
|
525
|
+
"oft": {
|
|
526
|
+
"adapter": "0x6BA10300f0DC58B7a1e4c0e41f5daBb7D7829e13",
|
|
527
|
+
"layerZeroEid": 30109
|
|
528
|
+
},
|
|
529
|
+
"rhino": {
|
|
530
|
+
"bridgeContract": "0xBA4EEE20F434bC3908A0B18DA496348657133A7E",
|
|
531
|
+
"chainName": "MATIC_POS"
|
|
532
|
+
}
|
|
533
|
+
},
|
|
448
534
|
"settlementLayers": [
|
|
449
535
|
"ACROSS",
|
|
450
536
|
"ECO",
|
|
@@ -494,9 +580,11 @@ const chains = {
|
|
|
494
580
|
"decimals": 6,
|
|
495
581
|
"pegGroup": "USD",
|
|
496
582
|
"priceSymbol": "USDT",
|
|
583
|
+
"rhinoSymbol": "USDT",
|
|
497
584
|
"settlementLayers": [
|
|
498
585
|
"ACROSS",
|
|
499
|
-
"ECO"
|
|
586
|
+
"ECO",
|
|
587
|
+
"OFT"
|
|
500
588
|
],
|
|
501
589
|
"symbol": "USDT0"
|
|
502
590
|
}
|
|
@@ -528,6 +616,11 @@ const chains = {
|
|
|
528
616
|
},
|
|
529
617
|
"network": "mainnet",
|
|
530
618
|
"publicRpcUrl": "https://rpc.monad.xyz",
|
|
619
|
+
"settlementConfig": {
|
|
620
|
+
"cctp": {
|
|
621
|
+
"domain": 15
|
|
622
|
+
}
|
|
623
|
+
},
|
|
531
624
|
"settlementLayers": [
|
|
532
625
|
"ACROSS",
|
|
533
626
|
"RELAY",
|
|
@@ -609,6 +702,15 @@ const chains = {
|
|
|
609
702
|
},
|
|
610
703
|
"network": "mainnet",
|
|
611
704
|
"publicRpcUrl": "https://rpc.soniclabs.com",
|
|
705
|
+
"settlementConfig": {
|
|
706
|
+
"cctp": {
|
|
707
|
+
"domain": 13
|
|
708
|
+
},
|
|
709
|
+
"rhino": {
|
|
710
|
+
"bridgeContract": "0x5e023c31e1d3dcd08a1b3e8c96f6ef8aa8fcacd1",
|
|
711
|
+
"chainName": "SONIC"
|
|
712
|
+
}
|
|
713
|
+
},
|
|
612
714
|
"settlementLayers": [
|
|
613
715
|
"ECO",
|
|
614
716
|
"RELAY",
|
|
@@ -662,10 +764,20 @@ const chains = {
|
|
|
662
764
|
},
|
|
663
765
|
"network": "mainnet",
|
|
664
766
|
"publicRpcUrl": "https://rpc.hyperliquid.xyz/evm",
|
|
767
|
+
"settlementConfig": {
|
|
768
|
+
"cctp": {
|
|
769
|
+
"domain": 19
|
|
770
|
+
},
|
|
771
|
+
"rhino": {
|
|
772
|
+
"bridgeContract": "0x5e023c31e1d3dcd08a1b3e8c96f6ef8aa8fcacd1",
|
|
773
|
+
"chainName": "HYPEREVM"
|
|
774
|
+
}
|
|
775
|
+
},
|
|
665
776
|
"settlementLayers": [
|
|
666
777
|
"ACROSS",
|
|
667
778
|
"ECO",
|
|
668
779
|
"RELAY",
|
|
780
|
+
"RHINO",
|
|
669
781
|
"CCTP"
|
|
670
782
|
],
|
|
671
783
|
"stack": "vanilla",
|
|
@@ -692,6 +804,7 @@ const chains = {
|
|
|
692
804
|
"decimals": 6,
|
|
693
805
|
"pegGroup": "USD",
|
|
694
806
|
"priceSymbol": "USDT",
|
|
807
|
+
"rhinoSymbol": "USDT",
|
|
695
808
|
"settlementLayers": [
|
|
696
809
|
"ACROSS",
|
|
697
810
|
"ECO"
|
|
@@ -917,6 +1030,18 @@ const chains = {
|
|
|
917
1030
|
},
|
|
918
1031
|
"network": "mainnet",
|
|
919
1032
|
"publicRpcUrl": "https://mainnet.base.org",
|
|
1033
|
+
"settlementConfig": {
|
|
1034
|
+
"cctp": {
|
|
1035
|
+
"domain": 6
|
|
1036
|
+
},
|
|
1037
|
+
"near": {
|
|
1038
|
+
"prefix": "base"
|
|
1039
|
+
},
|
|
1040
|
+
"rhino": {
|
|
1041
|
+
"bridgeContract": "0x2f59e9086ec8130e21bd052065a9e6b2497bb102",
|
|
1042
|
+
"chainName": "BASE"
|
|
1043
|
+
}
|
|
1044
|
+
},
|
|
920
1045
|
"settlementLayers": [
|
|
921
1046
|
"ACROSS",
|
|
922
1047
|
"ECO",
|
|
@@ -998,6 +1123,16 @@ const chains = {
|
|
|
998
1123
|
},
|
|
999
1124
|
"network": "mainnet",
|
|
1000
1125
|
"publicRpcUrl": "https://rpc.plasma.to",
|
|
1126
|
+
"settlementConfig": {
|
|
1127
|
+
"oft": {
|
|
1128
|
+
"adapter": "0x02ca37966753bDdDf11216B73B16C1dE756A7CF9",
|
|
1129
|
+
"layerZeroEid": 30383
|
|
1130
|
+
},
|
|
1131
|
+
"rhino": {
|
|
1132
|
+
"bridgeContract": "0x5e023c31e1d3dcd08a1b3e8c96f6ef8aa8fcacd1",
|
|
1133
|
+
"chainName": "PLASMA"
|
|
1134
|
+
}
|
|
1135
|
+
},
|
|
1001
1136
|
"settlementLayers": [
|
|
1002
1137
|
"ACROSS",
|
|
1003
1138
|
"ECO",
|
|
@@ -1019,9 +1154,11 @@ const chains = {
|
|
|
1019
1154
|
"decimals": 6,
|
|
1020
1155
|
"pegGroup": "USD",
|
|
1021
1156
|
"priceSymbol": "USDT",
|
|
1157
|
+
"rhinoSymbol": "USDT",
|
|
1022
1158
|
"settlementLayers": [
|
|
1023
1159
|
"ACROSS",
|
|
1024
|
-
"ECO"
|
|
1160
|
+
"ECO",
|
|
1161
|
+
"OFT"
|
|
1025
1162
|
],
|
|
1026
1163
|
"symbol": "USDT0"
|
|
1027
1164
|
}
|
|
@@ -1112,6 +1249,22 @@ const chains = {
|
|
|
1112
1249
|
},
|
|
1113
1250
|
"network": "mainnet",
|
|
1114
1251
|
"publicRpcUrl": "https://arb1.arbitrum.io/rpc",
|
|
1252
|
+
"settlementConfig": {
|
|
1253
|
+
"cctp": {
|
|
1254
|
+
"domain": 3
|
|
1255
|
+
},
|
|
1256
|
+
"near": {
|
|
1257
|
+
"prefix": "arb"
|
|
1258
|
+
},
|
|
1259
|
+
"oft": {
|
|
1260
|
+
"adapter": "0x14E4A1B13bf7F943c8ff7C51fb60FA964A298D92",
|
|
1261
|
+
"layerZeroEid": 30110
|
|
1262
|
+
},
|
|
1263
|
+
"rhino": {
|
|
1264
|
+
"bridgeContract": "0x10417734001162Ea139e8b044DFe28DbB8B28ad0",
|
|
1265
|
+
"chainName": "ARBITRUM"
|
|
1266
|
+
}
|
|
1267
|
+
},
|
|
1115
1268
|
"settlementLayers": [
|
|
1116
1269
|
"ACROSS",
|
|
1117
1270
|
"ECO",
|
|
@@ -1174,9 +1327,11 @@ const chains = {
|
|
|
1174
1327
|
"decimals": 6,
|
|
1175
1328
|
"pegGroup": "USD",
|
|
1176
1329
|
"priceSymbol": "USDT",
|
|
1330
|
+
"rhinoSymbol": "USDT",
|
|
1177
1331
|
"settlementLayers": [
|
|
1178
1332
|
"ACROSS",
|
|
1179
|
-
"ECO"
|
|
1333
|
+
"ECO",
|
|
1334
|
+
"OFT"
|
|
1180
1335
|
],
|
|
1181
1336
|
"symbol": "USDT0"
|
|
1182
1337
|
}
|
|
@@ -1208,6 +1363,18 @@ const chains = {
|
|
|
1208
1363
|
},
|
|
1209
1364
|
"network": "mainnet",
|
|
1210
1365
|
"publicRpcUrl": "https://api.avax.network/ext/bc/C/rpc",
|
|
1366
|
+
"settlementConfig": {
|
|
1367
|
+
"cctp": {
|
|
1368
|
+
"domain": 1
|
|
1369
|
+
},
|
|
1370
|
+
"near": {
|
|
1371
|
+
"prefix": "avax"
|
|
1372
|
+
},
|
|
1373
|
+
"rhino": {
|
|
1374
|
+
"bridgeContract": "0x5e023c31e1d3dcd08a1b3e8c96f6ef8aa8fcacd1",
|
|
1375
|
+
"chainName": "AVALANCHE"
|
|
1376
|
+
}
|
|
1377
|
+
},
|
|
1211
1378
|
"settlementLayers": [
|
|
1212
1379
|
"ACROSS",
|
|
1213
1380
|
"RELAY",
|
|
@@ -1297,6 +1464,11 @@ const chains = {
|
|
|
1297
1464
|
},
|
|
1298
1465
|
"network": "testnet",
|
|
1299
1466
|
"publicRpcUrl": "https://sepolia.base.org",
|
|
1467
|
+
"settlementConfig": {
|
|
1468
|
+
"cctp": {
|
|
1469
|
+
"domain": 6
|
|
1470
|
+
}
|
|
1471
|
+
},
|
|
1300
1472
|
"settlementLayers": [
|
|
1301
1473
|
"ACROSS",
|
|
1302
1474
|
"ECO",
|
|
@@ -1384,6 +1556,11 @@ const chains = {
|
|
|
1384
1556
|
},
|
|
1385
1557
|
"network": "testnet",
|
|
1386
1558
|
"publicRpcUrl": "https://sepolia-rollup.arbitrum.io/rpc",
|
|
1559
|
+
"settlementConfig": {
|
|
1560
|
+
"cctp": {
|
|
1561
|
+
"domain": 3
|
|
1562
|
+
}
|
|
1563
|
+
},
|
|
1387
1564
|
"settlementLayers": [
|
|
1388
1565
|
"ACROSS",
|
|
1389
1566
|
"ECO",
|
|
@@ -1457,6 +1634,12 @@ const chains = {
|
|
|
1457
1634
|
},
|
|
1458
1635
|
"network": "mainnet",
|
|
1459
1636
|
"publicRpcUrl": "https://rpc.katana.network",
|
|
1637
|
+
"settlementConfig": {
|
|
1638
|
+
"rhino": {
|
|
1639
|
+
"bridgeContract": "0x04317f0e4795b1e1bab333234153fa10aaac79e9",
|
|
1640
|
+
"chainName": "KATANA"
|
|
1641
|
+
}
|
|
1642
|
+
},
|
|
1460
1643
|
"settlementLayers": [
|
|
1461
1644
|
"RELAY",
|
|
1462
1645
|
"RHINO"
|
|
@@ -1609,6 +1792,11 @@ const chains = {
|
|
|
1609
1792
|
},
|
|
1610
1793
|
"network": "testnet",
|
|
1611
1794
|
"publicRpcUrl": "https://11155111.rpc.thirdweb.com",
|
|
1795
|
+
"settlementConfig": {
|
|
1796
|
+
"cctp": {
|
|
1797
|
+
"domain": 0
|
|
1798
|
+
}
|
|
1799
|
+
},
|
|
1612
1800
|
"settlementLayers": [
|
|
1613
1801
|
"ACROSS",
|
|
1614
1802
|
"ECO",
|
|
@@ -1692,6 +1880,11 @@ const chains = {
|
|
|
1692
1880
|
},
|
|
1693
1881
|
"network": "testnet",
|
|
1694
1882
|
"publicRpcUrl": "https://sepolia.optimism.io",
|
|
1883
|
+
"settlementConfig": {
|
|
1884
|
+
"cctp": {
|
|
1885
|
+
"domain": 2
|
|
1886
|
+
}
|
|
1887
|
+
},
|
|
1695
1888
|
"settlementLayers": [
|
|
1696
1889
|
"ACROSS",
|
|
1697
1890
|
"ECO",
|
|
@@ -1764,6 +1957,18 @@ const chains = {
|
|
|
1764
1957
|
"symbol": "TRX"
|
|
1765
1958
|
},
|
|
1766
1959
|
"network": "mainnet",
|
|
1960
|
+
"settlementConfig": {
|
|
1961
|
+
"near": {
|
|
1962
|
+
"prefix": "tron"
|
|
1963
|
+
},
|
|
1964
|
+
"oft": {
|
|
1965
|
+
"adapter": "TFG4wBaDQ8sHWWP1ACeSGnoNR6RRzevLPt",
|
|
1966
|
+
"layerZeroEid": 30420
|
|
1967
|
+
},
|
|
1968
|
+
"rhino": {
|
|
1969
|
+
"chainName": "TRON"
|
|
1970
|
+
}
|
|
1971
|
+
},
|
|
1767
1972
|
"settlementLayers": [
|
|
1768
1973
|
"RELAY",
|
|
1769
1974
|
"OFT",
|
|
@@ -1778,6 +1983,7 @@ const chains = {
|
|
|
1778
1983
|
"approvalSlot": null,
|
|
1779
1984
|
"balanceSlot": null,
|
|
1780
1985
|
"decimals": 6,
|
|
1986
|
+
"nearAssetId": "nep141:tron.omft.near",
|
|
1781
1987
|
"symbol": "TRX"
|
|
1782
1988
|
},
|
|
1783
1989
|
{
|
|
@@ -1785,7 +1991,11 @@ const chains = {
|
|
|
1785
1991
|
"approvalSlot": null,
|
|
1786
1992
|
"balanceSlot": null,
|
|
1787
1993
|
"decimals": 6,
|
|
1994
|
+
"nearAssetId": "nep141:tron-d28a265909efecdcee7c5028585214ea0b96f015.omft.near",
|
|
1788
1995
|
"pegGroup": "USD",
|
|
1996
|
+
"settlementLayers": [
|
|
1997
|
+
"OFT"
|
|
1998
|
+
],
|
|
1789
1999
|
"symbol": "USDT"
|
|
1790
2000
|
}
|
|
1791
2001
|
],
|
|
@@ -1812,6 +2022,21 @@ const chains = {
|
|
|
1812
2022
|
"symbol": "SOL"
|
|
1813
2023
|
},
|
|
1814
2024
|
"network": "mainnet",
|
|
2025
|
+
"settlementConfig": {
|
|
2026
|
+
"cctp": {
|
|
2027
|
+
"domain": 5
|
|
2028
|
+
},
|
|
2029
|
+
"near": {
|
|
2030
|
+
"prefix": "sol"
|
|
2031
|
+
},
|
|
2032
|
+
"oft": {
|
|
2033
|
+
"adapter": "HyXJcgYpURfDhgzuyRL7zxP4FhLg7LZQMeDrR4MXZcMN",
|
|
2034
|
+
"layerZeroEid": 30168
|
|
2035
|
+
},
|
|
2036
|
+
"rhino": {
|
|
2037
|
+
"chainName": "SOLANA"
|
|
2038
|
+
}
|
|
2039
|
+
},
|
|
1815
2040
|
"settlementLayers": [
|
|
1816
2041
|
"RELAY",
|
|
1817
2042
|
"OFT",
|
|
@@ -1827,6 +2052,7 @@ const chains = {
|
|
|
1827
2052
|
"approvalSlot": null,
|
|
1828
2053
|
"balanceSlot": null,
|
|
1829
2054
|
"decimals": 9,
|
|
2055
|
+
"nearAssetId": "nep141:sol.omft.near",
|
|
1830
2056
|
"symbol": "SOL"
|
|
1831
2057
|
},
|
|
1832
2058
|
{
|
|
@@ -1834,6 +2060,7 @@ const chains = {
|
|
|
1834
2060
|
"approvalSlot": null,
|
|
1835
2061
|
"balanceSlot": null,
|
|
1836
2062
|
"decimals": 9,
|
|
2063
|
+
"nearAssetId": "nep141:sol.omft.near",
|
|
1837
2064
|
"priceSymbol": "SOL",
|
|
1838
2065
|
"symbol": "WSOL"
|
|
1839
2066
|
},
|
|
@@ -1842,6 +2069,7 @@ const chains = {
|
|
|
1842
2069
|
"approvalSlot": null,
|
|
1843
2070
|
"balanceSlot": null,
|
|
1844
2071
|
"decimals": 6,
|
|
2072
|
+
"nearAssetId": "nep141:sol-5ce3bf3a31af18be40ba30f721101b4341690186.omft.near",
|
|
1845
2073
|
"pegGroup": "USD",
|
|
1846
2074
|
"symbol": "USDC"
|
|
1847
2075
|
},
|
|
@@ -1850,8 +2078,12 @@ const chains = {
|
|
|
1850
2078
|
"approvalSlot": null,
|
|
1851
2079
|
"balanceSlot": null,
|
|
1852
2080
|
"decimals": 6,
|
|
2081
|
+
"nearAssetId": "nep141:sol-c800a4bd850783ccb82c2b2c7e84175443606352.omft.near",
|
|
1853
2082
|
"pegGroup": "USD",
|
|
1854
2083
|
"priceSymbol": "USDT",
|
|
2084
|
+
"settlementLayers": [
|
|
2085
|
+
"OFT"
|
|
2086
|
+
],
|
|
1855
2087
|
"symbol": "USDT"
|
|
1856
2088
|
}
|
|
1857
2089
|
],
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const PACKAGE_VERSION = "1.
|
|
1
|
+
declare const PACKAGE_VERSION = "1.17.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 = "1.
|
|
5
|
+
const PACKAGE_VERSION = "1.17.0";
|
|
6
6
|
exports.PACKAGE_VERSION = PACKAGE_VERSION;
|