@circle-fin/bridge-kit 1.0.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/LICENSE +190 -0
- package/QUICKSTART.md +1147 -0
- package/README.md +478 -0
- package/chains.cjs.js +2250 -0
- package/chains.cjs.js.map +1 -0
- package/chains.d.ts +1088 -0
- package/chains.mjs +2225 -0
- package/chains.mjs.map +1 -0
- package/index.cjs.js +4862 -0
- package/index.cjs.js.map +1 -0
- package/index.d.ts +4048 -0
- package/index.mjs +4858 -0
- package/index.mjs.map +1 -0
- package/package.json +46 -0
package/chains.mjs
ADDED
|
@@ -0,0 +1,2225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025, Circle Internet Group, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { z } from 'zod';
|
|
20
|
+
|
|
21
|
+
// -----------------------------------------------------------------------------
|
|
22
|
+
// Blockchain Enum
|
|
23
|
+
// -----------------------------------------------------------------------------
|
|
24
|
+
/**
|
|
25
|
+
* Enumeration of all blockchains supported by this library.
|
|
26
|
+
* @enum
|
|
27
|
+
* @category Enums
|
|
28
|
+
* @description Provides string identifiers for each supported blockchain.
|
|
29
|
+
*/
|
|
30
|
+
var Blockchain;
|
|
31
|
+
(function (Blockchain) {
|
|
32
|
+
Blockchain["Algorand"] = "Algorand";
|
|
33
|
+
Blockchain["Algorand_Testnet"] = "Algorand_Testnet";
|
|
34
|
+
Blockchain["Aptos"] = "Aptos";
|
|
35
|
+
Blockchain["Aptos_Testnet"] = "Aptos_Testnet";
|
|
36
|
+
Blockchain["Arbitrum"] = "Arbitrum";
|
|
37
|
+
Blockchain["Arbitrum_Sepolia"] = "Arbitrum_Sepolia";
|
|
38
|
+
Blockchain["Avalanche"] = "Avalanche";
|
|
39
|
+
Blockchain["Avalanche_Fuji"] = "Avalanche_Fuji";
|
|
40
|
+
Blockchain["Base"] = "Base";
|
|
41
|
+
Blockchain["Base_Sepolia"] = "Base_Sepolia";
|
|
42
|
+
Blockchain["Celo"] = "Celo";
|
|
43
|
+
Blockchain["Celo_Alfajores_Testnet"] = "Celo_Alfajores_Testnet";
|
|
44
|
+
Blockchain["Codex"] = "Codex";
|
|
45
|
+
Blockchain["Codex_Testnet"] = "Codex_Testnet";
|
|
46
|
+
Blockchain["Ethereum"] = "Ethereum";
|
|
47
|
+
Blockchain["Ethereum_Sepolia"] = "Ethereum_Sepolia";
|
|
48
|
+
Blockchain["Hedera"] = "Hedera";
|
|
49
|
+
Blockchain["Hedera_Testnet"] = "Hedera_Testnet";
|
|
50
|
+
Blockchain["HyperEVM"] = "HyperEVM";
|
|
51
|
+
Blockchain["HyperEVM_Testnet"] = "HyperEVM_Testnet";
|
|
52
|
+
Blockchain["Ink"] = "Ink";
|
|
53
|
+
Blockchain["Ink_Testnet"] = "Ink_Testnet";
|
|
54
|
+
Blockchain["Linea"] = "Linea";
|
|
55
|
+
Blockchain["Linea_Sepolia"] = "Linea_Sepolia";
|
|
56
|
+
Blockchain["NEAR"] = "NEAR";
|
|
57
|
+
Blockchain["NEAR_Testnet"] = "NEAR_Testnet";
|
|
58
|
+
Blockchain["Noble"] = "Noble";
|
|
59
|
+
Blockchain["Noble_Testnet"] = "Noble_Testnet";
|
|
60
|
+
Blockchain["Optimism"] = "Optimism";
|
|
61
|
+
Blockchain["Optimism_Sepolia"] = "Optimism_Sepolia";
|
|
62
|
+
Blockchain["Polkadot_Asset_Hub"] = "Polkadot_Asset_Hub";
|
|
63
|
+
Blockchain["Polkadot_Westmint"] = "Polkadot_Westmint";
|
|
64
|
+
Blockchain["Plume"] = "Plume";
|
|
65
|
+
Blockchain["Plume_Testnet"] = "Plume_Testnet";
|
|
66
|
+
Blockchain["Polygon"] = "Polygon";
|
|
67
|
+
Blockchain["Polygon_Amoy_Testnet"] = "Polygon_Amoy_Testnet";
|
|
68
|
+
Blockchain["Sei"] = "Sei";
|
|
69
|
+
Blockchain["Sei_Testnet"] = "Sei_Testnet";
|
|
70
|
+
Blockchain["Solana"] = "Solana";
|
|
71
|
+
Blockchain["Solana_Devnet"] = "Solana_Devnet";
|
|
72
|
+
Blockchain["Sonic"] = "Sonic";
|
|
73
|
+
Blockchain["Sonic_Testnet"] = "Sonic_Testnet";
|
|
74
|
+
Blockchain["Stellar"] = "Stellar";
|
|
75
|
+
Blockchain["Stellar_Testnet"] = "Stellar_Testnet";
|
|
76
|
+
Blockchain["Sui"] = "Sui";
|
|
77
|
+
Blockchain["Sui_Testnet"] = "Sui_Testnet";
|
|
78
|
+
Blockchain["Unichain"] = "Unichain";
|
|
79
|
+
Blockchain["Unichain_Sepolia"] = "Unichain_Sepolia";
|
|
80
|
+
Blockchain["World_Chain"] = "World_Chain";
|
|
81
|
+
Blockchain["World_Chain_Sepolia"] = "World_Chain_Sepolia";
|
|
82
|
+
Blockchain["XDC"] = "XDC";
|
|
83
|
+
Blockchain["XDC_Apothem"] = "XDC_Apothem";
|
|
84
|
+
Blockchain["ZKSync_Era"] = "ZKSync_Era";
|
|
85
|
+
Blockchain["ZKSync_Sepolia"] = "ZKSync_Sepolia";
|
|
86
|
+
})(Blockchain || (Blockchain = {}));
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Helper function to define a chain with proper TypeScript typing.
|
|
90
|
+
*
|
|
91
|
+
* This utility function works with TypeScript's `as const` assertion to create
|
|
92
|
+
* strongly-typed, immutable chain definition objects. It preserves literal types
|
|
93
|
+
* from the input and ensures the resulting object maintains all type information.
|
|
94
|
+
*
|
|
95
|
+
* When used with `as const`, it allows TypeScript to infer the most specific
|
|
96
|
+
* possible types for all properties, including string literals and numeric literals,
|
|
97
|
+
* rather than widening them to general types like string or number.
|
|
98
|
+
* @typeParam T - The specific chain definition type (must extend ChainDefinition)
|
|
99
|
+
* @param chain - The chain definition object, typically with an `as const` assertion
|
|
100
|
+
* @returns The same chain definition with preserved literal types
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* // Define an EVM chain with literal types preserved
|
|
104
|
+
* const Ethereum = defineChain({
|
|
105
|
+
* type: 'evm',
|
|
106
|
+
* chain: Blockchain.Ethereum,
|
|
107
|
+
* chainId: 1,
|
|
108
|
+
* name: 'Ethereum',
|
|
109
|
+
* nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
110
|
+
* isTestnet: false,
|
|
111
|
+
* usdcAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
|
112
|
+
* eurcAddress: null,
|
|
113
|
+
* cctp: {
|
|
114
|
+
* domain: 0,
|
|
115
|
+
* contracts: {
|
|
116
|
+
* TokenMessengerV1: '0xbd3fa81b58ba92a82136038b25adec7066af3155',
|
|
117
|
+
* MessageTransmitterV1: '0x0a992d191deec32afe36203ad87d7d289a738f81'
|
|
118
|
+
* }
|
|
119
|
+
* }
|
|
120
|
+
* } as const);
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
function defineChain(chain) {
|
|
124
|
+
return chain;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Algorand Mainnet chain definition
|
|
129
|
+
* @remarks
|
|
130
|
+
* This represents the official production network for the Algorand blockchain.
|
|
131
|
+
*/
|
|
132
|
+
defineChain({
|
|
133
|
+
type: 'algorand',
|
|
134
|
+
chain: Blockchain.Algorand,
|
|
135
|
+
name: 'Algorand',
|
|
136
|
+
title: 'Algorand Mainnet',
|
|
137
|
+
nativeCurrency: {
|
|
138
|
+
name: 'Algo',
|
|
139
|
+
symbol: 'ALGO',
|
|
140
|
+
decimals: 6,
|
|
141
|
+
},
|
|
142
|
+
isTestnet: false,
|
|
143
|
+
explorerUrl: 'https://explorer.perawallet.app/tx/{hash}',
|
|
144
|
+
rpcEndpoints: ['https://mainnet-api.algonode.cloud'],
|
|
145
|
+
eurcAddress: null,
|
|
146
|
+
usdcAddress: '31566704',
|
|
147
|
+
cctp: null,
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Algorand Testnet chain definition
|
|
152
|
+
* @remarks
|
|
153
|
+
* This represents the official testnet for the Algorand blockchain.
|
|
154
|
+
*/
|
|
155
|
+
defineChain({
|
|
156
|
+
type: 'algorand',
|
|
157
|
+
chain: Blockchain.Algorand_Testnet,
|
|
158
|
+
name: 'Algorand Testnet',
|
|
159
|
+
title: 'Algorand Test Network',
|
|
160
|
+
nativeCurrency: {
|
|
161
|
+
name: 'Algo',
|
|
162
|
+
symbol: 'ALGO',
|
|
163
|
+
decimals: 6,
|
|
164
|
+
},
|
|
165
|
+
isTestnet: true,
|
|
166
|
+
explorerUrl: 'https://testnet.explorer.perawallet.app/tx/{hash}',
|
|
167
|
+
rpcEndpoints: ['https://testnet-api.algonode.cloud'],
|
|
168
|
+
eurcAddress: null,
|
|
169
|
+
usdcAddress: '10458941',
|
|
170
|
+
cctp: null,
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Aptos Mainnet chain definition
|
|
175
|
+
* @remarks
|
|
176
|
+
* This represents the official production network for the Aptos blockchain.
|
|
177
|
+
*/
|
|
178
|
+
defineChain({
|
|
179
|
+
type: 'aptos',
|
|
180
|
+
chain: Blockchain.Aptos,
|
|
181
|
+
name: 'Aptos',
|
|
182
|
+
title: 'Aptos Mainnet',
|
|
183
|
+
nativeCurrency: {
|
|
184
|
+
name: 'Aptos',
|
|
185
|
+
symbol: 'APT',
|
|
186
|
+
decimals: 8,
|
|
187
|
+
},
|
|
188
|
+
isTestnet: false,
|
|
189
|
+
explorerUrl: 'https://explorer.aptoslabs.com/txn/{hash}?network=mainnet',
|
|
190
|
+
rpcEndpoints: ['https://fullnode.mainnet.aptoslabs.com/v1'],
|
|
191
|
+
eurcAddress: null,
|
|
192
|
+
usdcAddress: '0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b',
|
|
193
|
+
cctp: {
|
|
194
|
+
domain: 9,
|
|
195
|
+
contracts: {
|
|
196
|
+
v1: {
|
|
197
|
+
type: 'split',
|
|
198
|
+
tokenMessenger: '0x9bce6734f7b63e835108e3bd8c36743d4709fe435f44791918801d0989640a9d',
|
|
199
|
+
messageTransmitter: '0x177e17751820e4b4371873ca8c30279be63bdea63b88ed0f2239c2eea10f1772',
|
|
200
|
+
confirmations: 1,
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Aptos Testnet chain definition
|
|
208
|
+
* @remarks
|
|
209
|
+
* This represents the official test network for the Aptos blockchain.
|
|
210
|
+
*/
|
|
211
|
+
defineChain({
|
|
212
|
+
type: 'aptos',
|
|
213
|
+
chain: Blockchain.Aptos_Testnet,
|
|
214
|
+
name: 'Aptos Testnet',
|
|
215
|
+
title: 'Aptos Test Network',
|
|
216
|
+
nativeCurrency: {
|
|
217
|
+
name: 'Aptos',
|
|
218
|
+
symbol: 'APT',
|
|
219
|
+
decimals: 8,
|
|
220
|
+
},
|
|
221
|
+
isTestnet: true,
|
|
222
|
+
explorerUrl: 'https://explorer.aptoslabs.com/txn/{hash}?network=testnet',
|
|
223
|
+
rpcEndpoints: ['https://fullnode.testnet.aptoslabs.com/v1'],
|
|
224
|
+
eurcAddress: null,
|
|
225
|
+
usdcAddress: '0x69091fbab5f7d635ee7ac5098cf0c1efbe31d68fec0f2cd565e8d168daf52832',
|
|
226
|
+
cctp: {
|
|
227
|
+
domain: 9,
|
|
228
|
+
contracts: {
|
|
229
|
+
v1: {
|
|
230
|
+
type: 'split',
|
|
231
|
+
tokenMessenger: '0x5f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b9',
|
|
232
|
+
messageTransmitter: '0x081e86cebf457a0c6004f35bd648a2794698f52e0dde09a48619dcd3d4cc23d9',
|
|
233
|
+
confirmations: 1,
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* The bridge contract address for EVM testnet networks.
|
|
241
|
+
*
|
|
242
|
+
* This contract handles USDC transfers on testnet environments across
|
|
243
|
+
* EVM-compatible chains. Use this address when deploying or testing
|
|
244
|
+
* cross-chain USDC transfers on test networks.
|
|
245
|
+
*/
|
|
246
|
+
const BRIDGE_CONTRACT_EVM_TESTNET = '0xC5567a5E3370d4DBfB0540025078e283e36A363d';
|
|
247
|
+
/**
|
|
248
|
+
* The bridge contract address for EVM mainnet networks.
|
|
249
|
+
*
|
|
250
|
+
* This contract handles USDC transfers on mainnet environments across
|
|
251
|
+
* EVM-compatible chains. Use this address for production cross-chain
|
|
252
|
+
* USDC transfers on live networks.
|
|
253
|
+
*/
|
|
254
|
+
const BRIDGE_CONTRACT_EVM_MAINNET = '0xB3FA262d0fB521cc93bE83d87b322b8A23DAf3F0';
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Arbitrum Mainnet chain definition
|
|
258
|
+
* @remarks
|
|
259
|
+
* This represents the official production network for the Arbitrum blockchain.
|
|
260
|
+
*/
|
|
261
|
+
const Arbitrum = defineChain({
|
|
262
|
+
type: 'evm',
|
|
263
|
+
chain: Blockchain.Arbitrum,
|
|
264
|
+
name: 'Arbitrum',
|
|
265
|
+
title: 'Arbitrum Mainnet',
|
|
266
|
+
nativeCurrency: {
|
|
267
|
+
name: 'Ether',
|
|
268
|
+
symbol: 'ETH',
|
|
269
|
+
decimals: 18,
|
|
270
|
+
},
|
|
271
|
+
chainId: 42161,
|
|
272
|
+
isTestnet: false,
|
|
273
|
+
explorerUrl: 'https://arbiscan.io/tx/{hash}',
|
|
274
|
+
rpcEndpoints: ['https://arb1.arbitrum.io/rpc'],
|
|
275
|
+
eurcAddress: null,
|
|
276
|
+
usdcAddress: '0xaf88d065e77c8cc2239327c5edb3a432268e5831',
|
|
277
|
+
cctp: {
|
|
278
|
+
domain: 3,
|
|
279
|
+
contracts: {
|
|
280
|
+
v1: {
|
|
281
|
+
type: 'split',
|
|
282
|
+
tokenMessenger: '0x19330d10D9Cc8751218eaf51E8885D058642E08A',
|
|
283
|
+
messageTransmitter: '0xC30362313FBBA5cf9163F0bb16a0e01f01A896ca',
|
|
284
|
+
confirmations: 65,
|
|
285
|
+
},
|
|
286
|
+
v2: {
|
|
287
|
+
type: 'split',
|
|
288
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
|
|
289
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
290
|
+
confirmations: 65,
|
|
291
|
+
fastConfirmations: 1,
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
kitContracts: {
|
|
296
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
297
|
+
},
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* Arbitrum Sepolia Testnet chain definition
|
|
302
|
+
* @remarks
|
|
303
|
+
* This represents the official test network for the Arbitrum blockchain on Sepolia.
|
|
304
|
+
*/
|
|
305
|
+
const ArbitrumSepolia = defineChain({
|
|
306
|
+
type: 'evm',
|
|
307
|
+
chain: Blockchain.Arbitrum_Sepolia,
|
|
308
|
+
name: 'Arbitrum Sepolia',
|
|
309
|
+
title: 'Arbitrum Sepolia Testnet',
|
|
310
|
+
nativeCurrency: {
|
|
311
|
+
name: 'Sepolia Ether',
|
|
312
|
+
symbol: 'ETH',
|
|
313
|
+
decimals: 18,
|
|
314
|
+
},
|
|
315
|
+
chainId: 421614,
|
|
316
|
+
isTestnet: true,
|
|
317
|
+
explorerUrl: 'https://sepolia.arbiscan.io/tx/{hash}',
|
|
318
|
+
rpcEndpoints: ['https://sepolia-rollup.arbitrum.io/rpc'],
|
|
319
|
+
eurcAddress: null,
|
|
320
|
+
usdcAddress: '0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d',
|
|
321
|
+
cctp: {
|
|
322
|
+
domain: 3,
|
|
323
|
+
contracts: {
|
|
324
|
+
v1: {
|
|
325
|
+
type: 'split',
|
|
326
|
+
tokenMessenger: '0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5',
|
|
327
|
+
messageTransmitter: '0xaCF1ceeF35caAc005e15888dDb8A3515C41B4872',
|
|
328
|
+
confirmations: 65,
|
|
329
|
+
},
|
|
330
|
+
v2: {
|
|
331
|
+
type: 'split',
|
|
332
|
+
tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
|
|
333
|
+
messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
|
|
334
|
+
confirmations: 65,
|
|
335
|
+
fastConfirmations: 1,
|
|
336
|
+
},
|
|
337
|
+
},
|
|
338
|
+
},
|
|
339
|
+
kitContracts: {
|
|
340
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
341
|
+
},
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* Avalanche Mainnet chain definition
|
|
346
|
+
* @remarks
|
|
347
|
+
* This represents the official production network for the Avalanche blockchain.
|
|
348
|
+
*/
|
|
349
|
+
const Avalanche = defineChain({
|
|
350
|
+
type: 'evm',
|
|
351
|
+
chain: Blockchain.Avalanche,
|
|
352
|
+
name: 'Avalanche',
|
|
353
|
+
title: 'Avalanche Mainnet',
|
|
354
|
+
nativeCurrency: {
|
|
355
|
+
name: 'Avalanche',
|
|
356
|
+
symbol: 'AVAX',
|
|
357
|
+
decimals: 18,
|
|
358
|
+
},
|
|
359
|
+
chainId: 43114,
|
|
360
|
+
isTestnet: false,
|
|
361
|
+
explorerUrl: 'https://subnets.avax.network/c-chain/tx/{hash}',
|
|
362
|
+
rpcEndpoints: ['https://api.avax.network/ext/bc/C/rpc'],
|
|
363
|
+
eurcAddress: '0xc891eb4cbdeff6e073e859e987815ed1505c2acd',
|
|
364
|
+
usdcAddress: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E',
|
|
365
|
+
cctp: {
|
|
366
|
+
domain: 1,
|
|
367
|
+
contracts: {
|
|
368
|
+
v1: {
|
|
369
|
+
type: 'split',
|
|
370
|
+
tokenMessenger: '0x6b25532e1060ce10cc3b0a99e5683b91bfde6982',
|
|
371
|
+
messageTransmitter: '0x8186359af5f57fbb40c6b14a588d2a59c0c29880',
|
|
372
|
+
confirmations: 1,
|
|
373
|
+
},
|
|
374
|
+
v2: {
|
|
375
|
+
type: 'split',
|
|
376
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
|
|
377
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
378
|
+
confirmations: 1,
|
|
379
|
+
fastConfirmations: 1,
|
|
380
|
+
},
|
|
381
|
+
},
|
|
382
|
+
},
|
|
383
|
+
kitContracts: {
|
|
384
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
385
|
+
},
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
/**
|
|
389
|
+
* Avalanche Fuji Testnet chain definition
|
|
390
|
+
* @remarks
|
|
391
|
+
* This represents the official test network for the Avalanche blockchain.
|
|
392
|
+
*/
|
|
393
|
+
const AvalancheFuji = defineChain({
|
|
394
|
+
type: 'evm',
|
|
395
|
+
chain: Blockchain.Avalanche_Fuji,
|
|
396
|
+
name: 'Avalanche Fuji',
|
|
397
|
+
title: 'Avalanche Fuji Testnet',
|
|
398
|
+
nativeCurrency: {
|
|
399
|
+
name: 'Avalanche',
|
|
400
|
+
symbol: 'AVAX',
|
|
401
|
+
decimals: 18,
|
|
402
|
+
},
|
|
403
|
+
chainId: 43113,
|
|
404
|
+
isTestnet: true,
|
|
405
|
+
explorerUrl: 'https://subnets-test.avax.network/c-chain/tx/{hash}',
|
|
406
|
+
eurcAddress: '0x5e44db7996c682e92a960b65ac713a54ad815c6b',
|
|
407
|
+
usdcAddress: '0x5425890298aed601595a70ab815c96711a31bc65',
|
|
408
|
+
cctp: {
|
|
409
|
+
domain: 1,
|
|
410
|
+
contracts: {
|
|
411
|
+
v1: {
|
|
412
|
+
type: 'split',
|
|
413
|
+
tokenMessenger: '0xeb08f243e5d3fcff26a9e38ae5520a669f4019d0',
|
|
414
|
+
messageTransmitter: '0xa9fb1b3009dcb79e2fe346c16a604b8fa8ae0a79',
|
|
415
|
+
confirmations: 1,
|
|
416
|
+
},
|
|
417
|
+
v2: {
|
|
418
|
+
type: 'split',
|
|
419
|
+
tokenMessenger: '0x8fe6b999dc680ccfdd5bf7eb0974218be2542daa',
|
|
420
|
+
messageTransmitter: '0xe737e5cebeeba77efe34d4aa090756590b1ce275',
|
|
421
|
+
confirmations: 1,
|
|
422
|
+
fastConfirmations: 1,
|
|
423
|
+
},
|
|
424
|
+
},
|
|
425
|
+
},
|
|
426
|
+
rpcEndpoints: ['https://api.avax-test.network/ext/bc/C/rpc'],
|
|
427
|
+
kitContracts: {
|
|
428
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
429
|
+
},
|
|
430
|
+
});
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Base chain definition
|
|
434
|
+
* @remarks
|
|
435
|
+
* This represents the official production network for the Base blockchain.
|
|
436
|
+
*/
|
|
437
|
+
const Base = defineChain({
|
|
438
|
+
type: 'evm',
|
|
439
|
+
chain: Blockchain.Base,
|
|
440
|
+
name: 'Base',
|
|
441
|
+
title: 'Base Mainnet',
|
|
442
|
+
nativeCurrency: {
|
|
443
|
+
name: 'Ether',
|
|
444
|
+
symbol: 'ETH',
|
|
445
|
+
decimals: 18,
|
|
446
|
+
},
|
|
447
|
+
chainId: 8453,
|
|
448
|
+
isTestnet: false,
|
|
449
|
+
explorerUrl: 'https://basescan.org/tx/{hash}',
|
|
450
|
+
rpcEndpoints: ['https://mainnet.base.org', 'https://base.publicnode.com'],
|
|
451
|
+
eurcAddress: '0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42',
|
|
452
|
+
usdcAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
453
|
+
cctp: {
|
|
454
|
+
domain: 6,
|
|
455
|
+
contracts: {
|
|
456
|
+
v1: {
|
|
457
|
+
type: 'split',
|
|
458
|
+
tokenMessenger: '0x1682Ae6375C4E4A97e4B583BC394c861A46D8962',
|
|
459
|
+
messageTransmitter: '0xAD09780d193884d503182aD4588450C416D6F9D4',
|
|
460
|
+
confirmations: 65,
|
|
461
|
+
},
|
|
462
|
+
v2: {
|
|
463
|
+
type: 'split',
|
|
464
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
|
|
465
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
466
|
+
confirmations: 65,
|
|
467
|
+
fastConfirmations: 1,
|
|
468
|
+
},
|
|
469
|
+
},
|
|
470
|
+
},
|
|
471
|
+
kitContracts: {
|
|
472
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
473
|
+
},
|
|
474
|
+
});
|
|
475
|
+
|
|
476
|
+
/**
|
|
477
|
+
* Base Sepolia Testnet chain definition
|
|
478
|
+
* @remarks
|
|
479
|
+
* This represents the official test network for the Base blockchain on Sepolia.
|
|
480
|
+
*/
|
|
481
|
+
const BaseSepolia = defineChain({
|
|
482
|
+
type: 'evm',
|
|
483
|
+
chain: Blockchain.Base_Sepolia,
|
|
484
|
+
name: 'Base Sepolia',
|
|
485
|
+
title: 'Base Sepolia Testnet',
|
|
486
|
+
nativeCurrency: {
|
|
487
|
+
name: 'Sepolia Ether',
|
|
488
|
+
symbol: 'ETH',
|
|
489
|
+
decimals: 18,
|
|
490
|
+
},
|
|
491
|
+
chainId: 84532,
|
|
492
|
+
isTestnet: true,
|
|
493
|
+
explorerUrl: 'https://sepolia.basescan.org/tx/{hash}',
|
|
494
|
+
rpcEndpoints: ['https://sepolia.base.org'],
|
|
495
|
+
eurcAddress: '0x808456652fdb597867f38412077A9182bf77359F',
|
|
496
|
+
usdcAddress: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
|
|
497
|
+
cctp: {
|
|
498
|
+
domain: 6,
|
|
499
|
+
contracts: {
|
|
500
|
+
v1: {
|
|
501
|
+
type: 'split',
|
|
502
|
+
tokenMessenger: '0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5',
|
|
503
|
+
messageTransmitter: '0x7865fAfC2db2093669d92c0F33AeEF291086BEFD',
|
|
504
|
+
confirmations: 65,
|
|
505
|
+
},
|
|
506
|
+
v2: {
|
|
507
|
+
type: 'split',
|
|
508
|
+
tokenMessenger: '0x8fe6b999dc680ccfdd5bf7eb0974218be2542daa',
|
|
509
|
+
messageTransmitter: '0xe737e5cebeeba77efe34d4aa090756590b1ce275',
|
|
510
|
+
confirmations: 65,
|
|
511
|
+
fastConfirmations: 1,
|
|
512
|
+
},
|
|
513
|
+
},
|
|
514
|
+
},
|
|
515
|
+
kitContracts: {
|
|
516
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
517
|
+
},
|
|
518
|
+
});
|
|
519
|
+
|
|
520
|
+
/**
|
|
521
|
+
* Celo Mainnet chain definition
|
|
522
|
+
* @remarks
|
|
523
|
+
* This represents the official production network for the Celo blockchain.
|
|
524
|
+
*/
|
|
525
|
+
defineChain({
|
|
526
|
+
type: 'evm',
|
|
527
|
+
chain: Blockchain.Celo,
|
|
528
|
+
name: 'Celo',
|
|
529
|
+
title: 'Celo Mainnet',
|
|
530
|
+
nativeCurrency: {
|
|
531
|
+
name: 'Celo',
|
|
532
|
+
symbol: 'CELO',
|
|
533
|
+
decimals: 18,
|
|
534
|
+
},
|
|
535
|
+
chainId: 42220,
|
|
536
|
+
isTestnet: false,
|
|
537
|
+
explorerUrl: 'https://celoscan.io/tx/{hash}',
|
|
538
|
+
rpcEndpoints: ['https://forno.celo.org'],
|
|
539
|
+
eurcAddress: null,
|
|
540
|
+
usdcAddress: '0xcebA9300f2b948710d2653dD7B07f33A8B32118C',
|
|
541
|
+
cctp: null,
|
|
542
|
+
});
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* Celo Alfajores Testnet chain definition
|
|
546
|
+
* @remarks
|
|
547
|
+
* This represents the official test network for the Celo blockchain.
|
|
548
|
+
*/
|
|
549
|
+
defineChain({
|
|
550
|
+
type: 'evm',
|
|
551
|
+
chain: Blockchain.Celo_Alfajores_Testnet,
|
|
552
|
+
name: 'Celo Alfajores',
|
|
553
|
+
title: 'Celo Alfajores Testnet',
|
|
554
|
+
nativeCurrency: {
|
|
555
|
+
name: 'Celo',
|
|
556
|
+
symbol: 'CELO',
|
|
557
|
+
decimals: 18,
|
|
558
|
+
},
|
|
559
|
+
chainId: 44787,
|
|
560
|
+
isTestnet: true,
|
|
561
|
+
explorerUrl: 'https://alfajores.celoscan.io/tx/{hash}',
|
|
562
|
+
rpcEndpoints: ['https://alfajores-forno.celo-testnet.org'],
|
|
563
|
+
eurcAddress: null,
|
|
564
|
+
usdcAddress: '0x2F25deB3848C207fc8E0c34035B3Ba7fC157602B',
|
|
565
|
+
cctp: null,
|
|
566
|
+
});
|
|
567
|
+
|
|
568
|
+
/**
|
|
569
|
+
* Codex Mainnet chain definition
|
|
570
|
+
* @remarks
|
|
571
|
+
* This represents the main network for the Codex blockchain.
|
|
572
|
+
*/
|
|
573
|
+
const Codex = defineChain({
|
|
574
|
+
type: 'evm',
|
|
575
|
+
chain: Blockchain.Codex,
|
|
576
|
+
name: 'Codex Mainnet',
|
|
577
|
+
title: 'Codex Mainnet',
|
|
578
|
+
nativeCurrency: {
|
|
579
|
+
name: 'ETH',
|
|
580
|
+
symbol: 'ETH',
|
|
581
|
+
decimals: 18,
|
|
582
|
+
},
|
|
583
|
+
chainId: 81224,
|
|
584
|
+
isTestnet: false,
|
|
585
|
+
explorerUrl: 'https://explorer.codex.xyz/tx/{hash}',
|
|
586
|
+
rpcEndpoints: ['https://rpc.codex.xyz'],
|
|
587
|
+
eurcAddress: null,
|
|
588
|
+
usdcAddress: '0xd996633a415985DBd7D6D12f4A4343E31f5037cf',
|
|
589
|
+
cctp: {
|
|
590
|
+
domain: 12,
|
|
591
|
+
contracts: {
|
|
592
|
+
v2: {
|
|
593
|
+
type: 'split',
|
|
594
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
|
|
595
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
596
|
+
confirmations: 65,
|
|
597
|
+
fastConfirmations: 1,
|
|
598
|
+
},
|
|
599
|
+
},
|
|
600
|
+
},
|
|
601
|
+
kitContracts: {
|
|
602
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
603
|
+
},
|
|
604
|
+
});
|
|
605
|
+
|
|
606
|
+
/**
|
|
607
|
+
* Codex Testnet chain definition
|
|
608
|
+
* @remarks
|
|
609
|
+
* This represents the test network for the Codex blockchain.
|
|
610
|
+
*/
|
|
611
|
+
const CodexTestnet = defineChain({
|
|
612
|
+
type: 'evm',
|
|
613
|
+
chain: Blockchain.Codex_Testnet,
|
|
614
|
+
name: 'Codex Testnet',
|
|
615
|
+
title: 'Codex Testnet',
|
|
616
|
+
nativeCurrency: {
|
|
617
|
+
name: 'ETH',
|
|
618
|
+
symbol: 'ETH',
|
|
619
|
+
decimals: 18,
|
|
620
|
+
},
|
|
621
|
+
chainId: 812242,
|
|
622
|
+
isTestnet: true,
|
|
623
|
+
explorerUrl: 'https://explorer.codex-stg.xyz/tx/{hash}',
|
|
624
|
+
rpcEndpoints: ['https://rpc.codex-stg.xyz'],
|
|
625
|
+
eurcAddress: null,
|
|
626
|
+
usdcAddress: '0x6d7f141b6819C2c9CC2f818e6ad549E7Ca090F8f',
|
|
627
|
+
cctp: {
|
|
628
|
+
domain: 12,
|
|
629
|
+
contracts: {
|
|
630
|
+
v2: {
|
|
631
|
+
type: 'split',
|
|
632
|
+
tokenMessenger: '0x8fe6b999dc680ccfdd5bf7eb0974218be2542daa',
|
|
633
|
+
messageTransmitter: '0xe737e5cebeeba77efe34d4aa090756590b1ce275',
|
|
634
|
+
confirmations: 65,
|
|
635
|
+
fastConfirmations: 1,
|
|
636
|
+
},
|
|
637
|
+
},
|
|
638
|
+
},
|
|
639
|
+
kitContracts: {
|
|
640
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
641
|
+
},
|
|
642
|
+
});
|
|
643
|
+
|
|
644
|
+
/**
|
|
645
|
+
* Ethereum Mainnet chain definition
|
|
646
|
+
* @remarks
|
|
647
|
+
* This represents the official production network for the Ethereum blockchain.
|
|
648
|
+
*/
|
|
649
|
+
const Ethereum = defineChain({
|
|
650
|
+
type: 'evm',
|
|
651
|
+
chain: Blockchain.Ethereum,
|
|
652
|
+
name: 'Ethereum',
|
|
653
|
+
title: 'Ethereum Mainnet',
|
|
654
|
+
nativeCurrency: {
|
|
655
|
+
name: 'Ether',
|
|
656
|
+
symbol: 'ETH',
|
|
657
|
+
decimals: 18,
|
|
658
|
+
},
|
|
659
|
+
chainId: 1,
|
|
660
|
+
isTestnet: false,
|
|
661
|
+
explorerUrl: 'https://etherscan.io/tx/{hash}',
|
|
662
|
+
rpcEndpoints: ['https://eth.merkle.io', 'https://ethereum.publicnode.com'],
|
|
663
|
+
eurcAddress: '0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c',
|
|
664
|
+
usdcAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
|
|
665
|
+
cctp: {
|
|
666
|
+
domain: 0,
|
|
667
|
+
contracts: {
|
|
668
|
+
v1: {
|
|
669
|
+
type: 'split',
|
|
670
|
+
tokenMessenger: '0xbd3fa81b58ba92a82136038b25adec7066af3155',
|
|
671
|
+
messageTransmitter: '0x0a992d191deec32afe36203ad87d7d289a738f81',
|
|
672
|
+
confirmations: 65,
|
|
673
|
+
},
|
|
674
|
+
v2: {
|
|
675
|
+
type: 'split',
|
|
676
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
|
|
677
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
678
|
+
confirmations: 65,
|
|
679
|
+
fastConfirmations: 2,
|
|
680
|
+
},
|
|
681
|
+
},
|
|
682
|
+
},
|
|
683
|
+
kitContracts: {
|
|
684
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
685
|
+
},
|
|
686
|
+
});
|
|
687
|
+
|
|
688
|
+
/**
|
|
689
|
+
* Ethereum Sepolia Testnet chain definition
|
|
690
|
+
* @remarks
|
|
691
|
+
* This represents the official test network for the Ethereum blockchain on Sepolia.
|
|
692
|
+
*/
|
|
693
|
+
const EthereumSepolia = defineChain({
|
|
694
|
+
type: 'evm',
|
|
695
|
+
chain: Blockchain.Ethereum_Sepolia,
|
|
696
|
+
name: 'Ethereum Sepolia',
|
|
697
|
+
title: 'Ethereum Sepolia Testnet',
|
|
698
|
+
nativeCurrency: {
|
|
699
|
+
name: 'Sepolia Ether',
|
|
700
|
+
symbol: 'ETH',
|
|
701
|
+
decimals: 18,
|
|
702
|
+
},
|
|
703
|
+
chainId: 11155111,
|
|
704
|
+
isTestnet: true,
|
|
705
|
+
explorerUrl: 'https://sepolia.etherscan.io/tx/{hash}',
|
|
706
|
+
rpcEndpoints: ['https://sepolia.drpc.org'],
|
|
707
|
+
eurcAddress: '0x08210F9170F89Ab7658F0B5E3fF39b0E03C594D4',
|
|
708
|
+
usdcAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',
|
|
709
|
+
cctp: {
|
|
710
|
+
domain: 0,
|
|
711
|
+
contracts: {
|
|
712
|
+
v1: {
|
|
713
|
+
type: 'split',
|
|
714
|
+
tokenMessenger: '0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5',
|
|
715
|
+
messageTransmitter: '0x7865fAfC2db2093669d92c0F33AeEF291086BEFD',
|
|
716
|
+
confirmations: 65,
|
|
717
|
+
},
|
|
718
|
+
v2: {
|
|
719
|
+
type: 'split',
|
|
720
|
+
tokenMessenger: '0x8fe6b999dc680ccfdd5bf7eb0974218be2542daa',
|
|
721
|
+
messageTransmitter: '0xe737e5cebeeba77efe34d4aa090756590b1ce275',
|
|
722
|
+
confirmations: 65,
|
|
723
|
+
fastConfirmations: 2,
|
|
724
|
+
},
|
|
725
|
+
},
|
|
726
|
+
},
|
|
727
|
+
kitContracts: {
|
|
728
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
729
|
+
},
|
|
730
|
+
});
|
|
731
|
+
|
|
732
|
+
/**
|
|
733
|
+
* Hedera Mainnet chain definition
|
|
734
|
+
* @remarks
|
|
735
|
+
* This represents the official production network for the Hedera blockchain.
|
|
736
|
+
*/
|
|
737
|
+
defineChain({
|
|
738
|
+
type: 'hedera',
|
|
739
|
+
chain: Blockchain.Hedera,
|
|
740
|
+
name: 'Hedera',
|
|
741
|
+
title: 'Hedera Mainnet',
|
|
742
|
+
nativeCurrency: {
|
|
743
|
+
name: 'HBAR',
|
|
744
|
+
symbol: 'HBAR',
|
|
745
|
+
decimals: 18,
|
|
746
|
+
},
|
|
747
|
+
isTestnet: false,
|
|
748
|
+
explorerUrl: 'https://hashscan.io/mainnet/transaction/{hash}', // Note: Hedera uses `transaction_id`, not hash. Format is typically `0.0.X-YYYY...`.
|
|
749
|
+
rpcEndpoints: ['https://mainnet.hashio.io/api'],
|
|
750
|
+
eurcAddress: null,
|
|
751
|
+
usdcAddress: '0.0.456858',
|
|
752
|
+
cctp: null,
|
|
753
|
+
});
|
|
754
|
+
|
|
755
|
+
/**
|
|
756
|
+
* Hedera Testnet chain definition
|
|
757
|
+
* @remarks
|
|
758
|
+
* This represents the official test network for the Hedera blockchain.
|
|
759
|
+
*/
|
|
760
|
+
defineChain({
|
|
761
|
+
type: 'hedera',
|
|
762
|
+
chain: Blockchain.Hedera_Testnet,
|
|
763
|
+
name: 'Hedera Testnet',
|
|
764
|
+
title: 'Hedera Test Network',
|
|
765
|
+
nativeCurrency: {
|
|
766
|
+
name: 'HBAR',
|
|
767
|
+
symbol: 'HBAR',
|
|
768
|
+
decimals: 18,
|
|
769
|
+
},
|
|
770
|
+
isTestnet: true,
|
|
771
|
+
explorerUrl: 'https://hashscan.io/testnet/transaction/{hash}', // Note: Hedera uses `transaction_id`, not hash. Format is typically `0.0.X-YYYY...`.
|
|
772
|
+
rpcEndpoints: ['https://testnet.hashio.io/api'],
|
|
773
|
+
eurcAddress: null,
|
|
774
|
+
usdcAddress: '0.0.429274',
|
|
775
|
+
cctp: null,
|
|
776
|
+
});
|
|
777
|
+
|
|
778
|
+
/**
|
|
779
|
+
* HyperEVM Mainnet chain definition
|
|
780
|
+
* @remarks
|
|
781
|
+
* This represents the official production network for the HyperEVM blockchain.
|
|
782
|
+
* HyperEVM is a Layer 1 blockchain specialized for DeFi and trading applications
|
|
783
|
+
* with native orderbook and matching engine.
|
|
784
|
+
*/
|
|
785
|
+
defineChain({
|
|
786
|
+
type: 'evm',
|
|
787
|
+
chain: Blockchain.HyperEVM,
|
|
788
|
+
name: 'HyperEVM',
|
|
789
|
+
title: 'HyperEVM Mainnet',
|
|
790
|
+
nativeCurrency: {
|
|
791
|
+
name: 'Hype',
|
|
792
|
+
symbol: 'HYPE',
|
|
793
|
+
decimals: 18,
|
|
794
|
+
},
|
|
795
|
+
chainId: 999,
|
|
796
|
+
isTestnet: false,
|
|
797
|
+
explorerUrl: 'https://hyperevmscan.io/tx/{hash}',
|
|
798
|
+
rpcEndpoints: ['https://rpc.hyperliquid.xyz/evm'],
|
|
799
|
+
eurcAddress: null,
|
|
800
|
+
usdcAddress: '0xb88339CB7199b77E23DB6E890353E22632Ba630f',
|
|
801
|
+
cctp: {
|
|
802
|
+
domain: 19,
|
|
803
|
+
contracts: {
|
|
804
|
+
v2: {
|
|
805
|
+
type: 'split',
|
|
806
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
|
|
807
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
808
|
+
confirmations: 1,
|
|
809
|
+
fastConfirmations: 1,
|
|
810
|
+
},
|
|
811
|
+
},
|
|
812
|
+
},
|
|
813
|
+
kitContracts: {
|
|
814
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
815
|
+
},
|
|
816
|
+
});
|
|
817
|
+
|
|
818
|
+
/**
|
|
819
|
+
* HyperEVM Testnet chain definition
|
|
820
|
+
* @remarks
|
|
821
|
+
* This represents the official testnet for the HyperEVM blockchain.
|
|
822
|
+
* Used for development and testing purposes before deploying to mainnet.
|
|
823
|
+
*/
|
|
824
|
+
defineChain({
|
|
825
|
+
type: 'evm',
|
|
826
|
+
chain: Blockchain.HyperEVM_Testnet,
|
|
827
|
+
name: 'HyperEVM Testnet',
|
|
828
|
+
title: 'HyperEVM Test Network',
|
|
829
|
+
nativeCurrency: {
|
|
830
|
+
name: 'Hype',
|
|
831
|
+
symbol: 'HYPE',
|
|
832
|
+
decimals: 18,
|
|
833
|
+
},
|
|
834
|
+
chainId: 998,
|
|
835
|
+
isTestnet: true,
|
|
836
|
+
explorerUrl: 'https://testnet.hyperliquid.xyz/explorer/tx/{hash}',
|
|
837
|
+
rpcEndpoints: ['https://rpc.hyperliquid-testnet.xyz/evm'],
|
|
838
|
+
eurcAddress: null,
|
|
839
|
+
usdcAddress: '0x2B3370eE501B4a559b57D449569354196457D8Ab',
|
|
840
|
+
cctp: {
|
|
841
|
+
domain: 19,
|
|
842
|
+
contracts: {
|
|
843
|
+
v2: {
|
|
844
|
+
type: 'split',
|
|
845
|
+
tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
|
|
846
|
+
messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
|
|
847
|
+
confirmations: 1,
|
|
848
|
+
fastConfirmations: 1,
|
|
849
|
+
},
|
|
850
|
+
},
|
|
851
|
+
},
|
|
852
|
+
kitContracts: {
|
|
853
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
854
|
+
},
|
|
855
|
+
});
|
|
856
|
+
|
|
857
|
+
/**
|
|
858
|
+
* Ink Mainnet chain definition
|
|
859
|
+
* @remarks
|
|
860
|
+
* This represents the official production network for the Ink blockchain.
|
|
861
|
+
* Ink is a Layer 1 blockchain specialized for DeFi and trading applications
|
|
862
|
+
* with native orderbook and matching engine.
|
|
863
|
+
*/
|
|
864
|
+
defineChain({
|
|
865
|
+
type: 'evm',
|
|
866
|
+
chain: Blockchain.Ink,
|
|
867
|
+
name: 'Ink',
|
|
868
|
+
title: 'Ink Mainnet',
|
|
869
|
+
nativeCurrency: {
|
|
870
|
+
name: 'Ether',
|
|
871
|
+
symbol: 'ETH',
|
|
872
|
+
decimals: 18,
|
|
873
|
+
},
|
|
874
|
+
chainId: 57073,
|
|
875
|
+
isTestnet: false,
|
|
876
|
+
explorerUrl: 'https://explorer.inkonchain.com/tx/{hash}',
|
|
877
|
+
rpcEndpoints: [
|
|
878
|
+
'https://rpc-gel.inkonchain.com',
|
|
879
|
+
'https://rpc-qnd.inkonchain.com',
|
|
880
|
+
],
|
|
881
|
+
eurcAddress: null,
|
|
882
|
+
usdcAddress: '0x2D270e6886d130D724215A266106e6832161EAEd',
|
|
883
|
+
cctp: {
|
|
884
|
+
domain: 21,
|
|
885
|
+
contracts: {
|
|
886
|
+
v2: {
|
|
887
|
+
type: 'split',
|
|
888
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
|
|
889
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
890
|
+
confirmations: 65,
|
|
891
|
+
fastConfirmations: 1,
|
|
892
|
+
},
|
|
893
|
+
},
|
|
894
|
+
},
|
|
895
|
+
kitContracts: {
|
|
896
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
897
|
+
},
|
|
898
|
+
});
|
|
899
|
+
|
|
900
|
+
/**
|
|
901
|
+
* Ink Testnet chain definition
|
|
902
|
+
* @remarks
|
|
903
|
+
* This represents the official testnet for the Ink blockchain.
|
|
904
|
+
* Used for development and testing purposes before deploying to mainnet.
|
|
905
|
+
*/
|
|
906
|
+
defineChain({
|
|
907
|
+
type: 'evm',
|
|
908
|
+
chain: Blockchain.Ink_Testnet,
|
|
909
|
+
name: 'Ink Sepolia',
|
|
910
|
+
title: 'Ink Sepolia Testnet',
|
|
911
|
+
nativeCurrency: {
|
|
912
|
+
name: 'Sepolia Ether',
|
|
913
|
+
symbol: 'ETH',
|
|
914
|
+
decimals: 18,
|
|
915
|
+
},
|
|
916
|
+
chainId: 763373,
|
|
917
|
+
isTestnet: true,
|
|
918
|
+
explorerUrl: 'https://explorer-sepolia.inkonchain.com/tx/{hash}',
|
|
919
|
+
rpcEndpoints: [
|
|
920
|
+
'https://rpc-gel-sepolia.inkonchain.com',
|
|
921
|
+
'https://rpc-qnd-sepolia.inkonchain.com',
|
|
922
|
+
],
|
|
923
|
+
eurcAddress: null,
|
|
924
|
+
usdcAddress: '0xFabab97dCE620294D2B0b0e46C68964e326300Ac',
|
|
925
|
+
cctp: {
|
|
926
|
+
domain: 21,
|
|
927
|
+
contracts: {
|
|
928
|
+
v2: {
|
|
929
|
+
type: 'split',
|
|
930
|
+
tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
|
|
931
|
+
messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
|
|
932
|
+
confirmations: 65,
|
|
933
|
+
fastConfirmations: 1,
|
|
934
|
+
},
|
|
935
|
+
},
|
|
936
|
+
},
|
|
937
|
+
kitContracts: {
|
|
938
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
939
|
+
},
|
|
940
|
+
});
|
|
941
|
+
|
|
942
|
+
/**
|
|
943
|
+
* Linea Mainnet chain definition
|
|
944
|
+
* @remarks
|
|
945
|
+
* This represents the official production network for the Linea blockchain.
|
|
946
|
+
*/
|
|
947
|
+
const Linea = defineChain({
|
|
948
|
+
type: 'evm',
|
|
949
|
+
chain: Blockchain.Linea,
|
|
950
|
+
name: 'Linea',
|
|
951
|
+
title: 'Linea Mainnet',
|
|
952
|
+
nativeCurrency: {
|
|
953
|
+
name: 'Ether',
|
|
954
|
+
symbol: 'ETH',
|
|
955
|
+
decimals: 18,
|
|
956
|
+
},
|
|
957
|
+
chainId: 59144,
|
|
958
|
+
isTestnet: false,
|
|
959
|
+
explorerUrl: 'https://lineascan.build/tx/{hash}',
|
|
960
|
+
rpcEndpoints: ['https://rpc.linea.build'],
|
|
961
|
+
eurcAddress: null,
|
|
962
|
+
usdcAddress: '0x176211869ca2b568f2a7d4ee941e073a821ee1ff',
|
|
963
|
+
cctp: {
|
|
964
|
+
domain: 11,
|
|
965
|
+
contracts: {
|
|
966
|
+
v2: {
|
|
967
|
+
type: 'split',
|
|
968
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
|
|
969
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
970
|
+
confirmations: 1,
|
|
971
|
+
fastConfirmations: 1,
|
|
972
|
+
},
|
|
973
|
+
},
|
|
974
|
+
},
|
|
975
|
+
kitContracts: {
|
|
976
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
977
|
+
},
|
|
978
|
+
});
|
|
979
|
+
|
|
980
|
+
/**
|
|
981
|
+
* Linea Sepolia Testnet chain definition
|
|
982
|
+
* @remarks
|
|
983
|
+
* This represents the official test network for the Linea blockchain on Sepolia.
|
|
984
|
+
*/
|
|
985
|
+
const LineaSepolia = defineChain({
|
|
986
|
+
type: 'evm',
|
|
987
|
+
chain: Blockchain.Linea_Sepolia,
|
|
988
|
+
name: 'Linea Sepolia',
|
|
989
|
+
title: 'Linea Sepolia Testnet',
|
|
990
|
+
nativeCurrency: {
|
|
991
|
+
name: 'Sepolia Ether',
|
|
992
|
+
symbol: 'ETH',
|
|
993
|
+
decimals: 18,
|
|
994
|
+
},
|
|
995
|
+
chainId: 59141,
|
|
996
|
+
isTestnet: true,
|
|
997
|
+
explorerUrl: 'https://sepolia.lineascan.build/tx/{hash}',
|
|
998
|
+
rpcEndpoints: ['https://rpc.sepolia.linea.build'],
|
|
999
|
+
eurcAddress: null,
|
|
1000
|
+
usdcAddress: '0xfece4462d57bd51a6a552365a011b95f0e16d9b7',
|
|
1001
|
+
cctp: {
|
|
1002
|
+
domain: 11,
|
|
1003
|
+
contracts: {
|
|
1004
|
+
v2: {
|
|
1005
|
+
type: 'split',
|
|
1006
|
+
tokenMessenger: '0x8fe6b999dc680ccfdd5bf7eb0974218be2542daa',
|
|
1007
|
+
messageTransmitter: '0xe737e5cebeeba77efe34d4aa090756590b1ce275',
|
|
1008
|
+
confirmations: 1,
|
|
1009
|
+
fastConfirmations: 1,
|
|
1010
|
+
},
|
|
1011
|
+
},
|
|
1012
|
+
},
|
|
1013
|
+
kitContracts: {
|
|
1014
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
1015
|
+
},
|
|
1016
|
+
});
|
|
1017
|
+
|
|
1018
|
+
/**
|
|
1019
|
+
* NEAR Protocol Mainnet chain definition
|
|
1020
|
+
* @remarks
|
|
1021
|
+
* This represents the official production network for the NEAR Protocol blockchain.
|
|
1022
|
+
*/
|
|
1023
|
+
defineChain({
|
|
1024
|
+
type: 'near',
|
|
1025
|
+
chain: Blockchain.NEAR,
|
|
1026
|
+
name: 'NEAR Protocol',
|
|
1027
|
+
title: 'NEAR Mainnet',
|
|
1028
|
+
nativeCurrency: {
|
|
1029
|
+
name: 'NEAR',
|
|
1030
|
+
symbol: 'NEAR',
|
|
1031
|
+
decimals: 24,
|
|
1032
|
+
},
|
|
1033
|
+
isTestnet: false,
|
|
1034
|
+
explorerUrl: 'https://nearblocks.io/txns/{hash}',
|
|
1035
|
+
rpcEndpoints: ['https://eth-rpc.mainnet.near.org'],
|
|
1036
|
+
eurcAddress: null,
|
|
1037
|
+
usdcAddress: '17208628f84f5d6ad33f0da3bbbeb27ffcb398eac501a31bd6ad2011e36133a1',
|
|
1038
|
+
cctp: null,
|
|
1039
|
+
});
|
|
1040
|
+
|
|
1041
|
+
/**
|
|
1042
|
+
* NEAR Testnet chain definition
|
|
1043
|
+
* @remarks
|
|
1044
|
+
* This represents the official test network for the NEAR Protocol blockchain.
|
|
1045
|
+
*/
|
|
1046
|
+
defineChain({
|
|
1047
|
+
type: 'near',
|
|
1048
|
+
chain: Blockchain.NEAR_Testnet,
|
|
1049
|
+
name: 'NEAR Protocol Testnet',
|
|
1050
|
+
title: 'NEAR Test Network',
|
|
1051
|
+
nativeCurrency: {
|
|
1052
|
+
name: 'NEAR',
|
|
1053
|
+
symbol: 'NEAR',
|
|
1054
|
+
decimals: 24,
|
|
1055
|
+
},
|
|
1056
|
+
isTestnet: true,
|
|
1057
|
+
explorerUrl: 'https://testnet.nearblocks.io/txns/{hash}',
|
|
1058
|
+
rpcEndpoints: ['https://eth-rpc.testnet.near.org'],
|
|
1059
|
+
eurcAddress: null,
|
|
1060
|
+
usdcAddress: '3e2210e1184b45b64c8a434c0a7e7b23cc04ea7eb7a6c3c32520d03d4afcb8af',
|
|
1061
|
+
cctp: null,
|
|
1062
|
+
});
|
|
1063
|
+
|
|
1064
|
+
/**
|
|
1065
|
+
* Noble Mainnet chain definition
|
|
1066
|
+
* @remarks
|
|
1067
|
+
* This represents the official production network for the Noble blockchain.
|
|
1068
|
+
*/
|
|
1069
|
+
defineChain({
|
|
1070
|
+
type: 'noble',
|
|
1071
|
+
chain: Blockchain.Noble,
|
|
1072
|
+
name: 'Noble',
|
|
1073
|
+
title: 'Noble Mainnet',
|
|
1074
|
+
nativeCurrency: {
|
|
1075
|
+
name: 'Noble USDC',
|
|
1076
|
+
symbol: 'USDC',
|
|
1077
|
+
decimals: 6,
|
|
1078
|
+
},
|
|
1079
|
+
isTestnet: false,
|
|
1080
|
+
explorerUrl: 'https://www.mintscan.io/noble/tx/{hash}',
|
|
1081
|
+
rpcEndpoints: ['https://noble-rpc.polkachu.com'],
|
|
1082
|
+
eurcAddress: null,
|
|
1083
|
+
usdcAddress: 'uusdc',
|
|
1084
|
+
cctp: {
|
|
1085
|
+
domain: 4,
|
|
1086
|
+
contracts: {
|
|
1087
|
+
v1: {
|
|
1088
|
+
type: 'merged',
|
|
1089
|
+
contract: 'noble12l2w4ugfz4m6dd73yysz477jszqnfughxvkss5',
|
|
1090
|
+
confirmations: 1,
|
|
1091
|
+
},
|
|
1092
|
+
},
|
|
1093
|
+
},
|
|
1094
|
+
});
|
|
1095
|
+
|
|
1096
|
+
/**
|
|
1097
|
+
* Noble Testnet chain definition
|
|
1098
|
+
* @remarks
|
|
1099
|
+
* This represents the official test network for the Noble blockchain.
|
|
1100
|
+
*/
|
|
1101
|
+
defineChain({
|
|
1102
|
+
type: 'noble',
|
|
1103
|
+
chain: Blockchain.Noble_Testnet,
|
|
1104
|
+
name: 'Noble Testnet',
|
|
1105
|
+
title: 'Noble Test Network',
|
|
1106
|
+
nativeCurrency: {
|
|
1107
|
+
name: 'Noble USDC',
|
|
1108
|
+
symbol: 'USDC',
|
|
1109
|
+
decimals: 6,
|
|
1110
|
+
},
|
|
1111
|
+
isTestnet: true,
|
|
1112
|
+
explorerUrl: 'https://www.mintscan.io/noble-testnet/tx/{hash}',
|
|
1113
|
+
rpcEndpoints: ['https://noble-testnet-rpc.polkachu.com'],
|
|
1114
|
+
eurcAddress: null,
|
|
1115
|
+
usdcAddress: 'uusdc',
|
|
1116
|
+
cctp: {
|
|
1117
|
+
domain: 4,
|
|
1118
|
+
contracts: {
|
|
1119
|
+
v1: {
|
|
1120
|
+
type: 'merged',
|
|
1121
|
+
contract: 'noble12l2w4ugfz4m6dd73yysz477jszqnfughxvkss5',
|
|
1122
|
+
confirmations: 1,
|
|
1123
|
+
},
|
|
1124
|
+
},
|
|
1125
|
+
},
|
|
1126
|
+
});
|
|
1127
|
+
|
|
1128
|
+
/**
|
|
1129
|
+
* Optimism Mainnet chain definition
|
|
1130
|
+
* @remarks
|
|
1131
|
+
* This represents the official production network for the Optimism blockchain.
|
|
1132
|
+
*/
|
|
1133
|
+
const Optimism = defineChain({
|
|
1134
|
+
type: 'evm',
|
|
1135
|
+
chain: Blockchain.Optimism,
|
|
1136
|
+
name: 'Optimism',
|
|
1137
|
+
title: 'Optimism Mainnet',
|
|
1138
|
+
nativeCurrency: {
|
|
1139
|
+
name: 'Ether',
|
|
1140
|
+
symbol: 'ETH',
|
|
1141
|
+
decimals: 18,
|
|
1142
|
+
},
|
|
1143
|
+
chainId: 10,
|
|
1144
|
+
isTestnet: false,
|
|
1145
|
+
explorerUrl: 'https://optimistic.etherscan.io/tx/{hash}',
|
|
1146
|
+
rpcEndpoints: ['https://mainnet.optimism.io'],
|
|
1147
|
+
eurcAddress: null,
|
|
1148
|
+
usdcAddress: '0x0b2c639c533813f4aa9d7837caf62653d097ff85',
|
|
1149
|
+
cctp: {
|
|
1150
|
+
domain: 2,
|
|
1151
|
+
contracts: {
|
|
1152
|
+
v1: {
|
|
1153
|
+
type: 'split',
|
|
1154
|
+
tokenMessenger: '0x2B4069517957735bE00ceE0fadAE88a26365528f',
|
|
1155
|
+
messageTransmitter: '0x0a992d191deec32afe36203ad87d7d289a738f81',
|
|
1156
|
+
confirmations: 65,
|
|
1157
|
+
},
|
|
1158
|
+
v2: {
|
|
1159
|
+
type: 'split',
|
|
1160
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
|
|
1161
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
1162
|
+
confirmations: 65,
|
|
1163
|
+
fastConfirmations: 1,
|
|
1164
|
+
},
|
|
1165
|
+
},
|
|
1166
|
+
},
|
|
1167
|
+
kitContracts: {
|
|
1168
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
1169
|
+
},
|
|
1170
|
+
});
|
|
1171
|
+
|
|
1172
|
+
/**
|
|
1173
|
+
* Optimism Sepolia Testnet chain definition
|
|
1174
|
+
* @remarks
|
|
1175
|
+
* This represents the official test network for the Optimism blockchain on Sepolia.
|
|
1176
|
+
*/
|
|
1177
|
+
const OptimismSepolia = defineChain({
|
|
1178
|
+
type: 'evm',
|
|
1179
|
+
chain: Blockchain.Optimism_Sepolia,
|
|
1180
|
+
name: 'Optimism Sepolia',
|
|
1181
|
+
title: 'Optimism Sepolia Testnet',
|
|
1182
|
+
nativeCurrency: {
|
|
1183
|
+
name: 'Sepolia Ether',
|
|
1184
|
+
symbol: 'ETH',
|
|
1185
|
+
decimals: 18,
|
|
1186
|
+
},
|
|
1187
|
+
chainId: 11155420,
|
|
1188
|
+
isTestnet: true,
|
|
1189
|
+
explorerUrl: 'https://sepolia-optimistic.etherscan.io/tx/{hash}',
|
|
1190
|
+
rpcEndpoints: ['https://sepolia.optimism.io'],
|
|
1191
|
+
eurcAddress: null,
|
|
1192
|
+
usdcAddress: '0x5fd84259d66Cd46123540766Be93DFE6D43130D7',
|
|
1193
|
+
cctp: {
|
|
1194
|
+
domain: 2,
|
|
1195
|
+
contracts: {
|
|
1196
|
+
v1: {
|
|
1197
|
+
type: 'split',
|
|
1198
|
+
tokenMessenger: '0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5',
|
|
1199
|
+
messageTransmitter: '0x7865fAfC2db2093669d92c0F33AeEF291086BEFD',
|
|
1200
|
+
confirmations: 65,
|
|
1201
|
+
},
|
|
1202
|
+
v2: {
|
|
1203
|
+
type: 'split',
|
|
1204
|
+
tokenMessenger: '0x8fe6b999dc680ccfdd5bf7eb0974218be2542daa',
|
|
1205
|
+
messageTransmitter: '0xe737e5cebeeba77efe34d4aa090756590b1ce275',
|
|
1206
|
+
confirmations: 65,
|
|
1207
|
+
fastConfirmations: 1,
|
|
1208
|
+
},
|
|
1209
|
+
},
|
|
1210
|
+
},
|
|
1211
|
+
kitContracts: {
|
|
1212
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
1213
|
+
},
|
|
1214
|
+
});
|
|
1215
|
+
|
|
1216
|
+
/**
|
|
1217
|
+
* Plume Mainnet chain definition
|
|
1218
|
+
* @remarks
|
|
1219
|
+
* This represents the official production network for the Plume blockchain.
|
|
1220
|
+
* Plume is a Layer 1 blockchain specialized for DeFi and trading applications
|
|
1221
|
+
* with native orderbook and matching engine.
|
|
1222
|
+
*/
|
|
1223
|
+
defineChain({
|
|
1224
|
+
type: 'evm',
|
|
1225
|
+
chain: Blockchain.Plume,
|
|
1226
|
+
name: 'Plume',
|
|
1227
|
+
title: 'Plume Mainnet',
|
|
1228
|
+
nativeCurrency: {
|
|
1229
|
+
name: 'Plume',
|
|
1230
|
+
symbol: 'PLUME',
|
|
1231
|
+
decimals: 18,
|
|
1232
|
+
},
|
|
1233
|
+
chainId: 98866,
|
|
1234
|
+
isTestnet: false,
|
|
1235
|
+
explorerUrl: 'https://explorer.plume.org/tx/{hash}',
|
|
1236
|
+
rpcEndpoints: ['https://rpc.plume.org'],
|
|
1237
|
+
eurcAddress: null,
|
|
1238
|
+
usdcAddress: '0x222365EF19F7947e5484218551B56bb3965Aa7aF',
|
|
1239
|
+
cctp: {
|
|
1240
|
+
domain: 22,
|
|
1241
|
+
contracts: {
|
|
1242
|
+
v2: {
|
|
1243
|
+
type: 'split',
|
|
1244
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
|
|
1245
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
1246
|
+
confirmations: 65,
|
|
1247
|
+
fastConfirmations: 1,
|
|
1248
|
+
},
|
|
1249
|
+
},
|
|
1250
|
+
},
|
|
1251
|
+
kitContracts: {
|
|
1252
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
1253
|
+
},
|
|
1254
|
+
});
|
|
1255
|
+
|
|
1256
|
+
/**
|
|
1257
|
+
* Plume Testnet chain definition
|
|
1258
|
+
* @remarks
|
|
1259
|
+
* This represents the official testnet for the Plume blockchain.
|
|
1260
|
+
* Used for development and testing purposes before deploying to mainnet.
|
|
1261
|
+
*/
|
|
1262
|
+
defineChain({
|
|
1263
|
+
type: 'evm',
|
|
1264
|
+
chain: Blockchain.Plume_Testnet,
|
|
1265
|
+
name: 'Plume Testnet',
|
|
1266
|
+
title: 'Plume Test Network',
|
|
1267
|
+
nativeCurrency: {
|
|
1268
|
+
name: 'Plume',
|
|
1269
|
+
symbol: 'PLUME',
|
|
1270
|
+
decimals: 18,
|
|
1271
|
+
},
|
|
1272
|
+
chainId: 98867,
|
|
1273
|
+
isTestnet: true,
|
|
1274
|
+
explorerUrl: 'https://testnet-explorer.plume.org/tx/{hash}',
|
|
1275
|
+
rpcEndpoints: ['https://testnet-rpc.plume.org'],
|
|
1276
|
+
eurcAddress: null,
|
|
1277
|
+
usdcAddress: '0xcB5f30e335672893c7eb944B374c196392C19D18',
|
|
1278
|
+
cctp: {
|
|
1279
|
+
domain: 22,
|
|
1280
|
+
contracts: {
|
|
1281
|
+
v2: {
|
|
1282
|
+
type: 'split',
|
|
1283
|
+
tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
|
|
1284
|
+
messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
|
|
1285
|
+
confirmations: 65,
|
|
1286
|
+
fastConfirmations: 1,
|
|
1287
|
+
},
|
|
1288
|
+
},
|
|
1289
|
+
},
|
|
1290
|
+
kitContracts: {
|
|
1291
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
1292
|
+
},
|
|
1293
|
+
});
|
|
1294
|
+
|
|
1295
|
+
/**
|
|
1296
|
+
* Polkadot Asset Hub chain definition
|
|
1297
|
+
* @remarks
|
|
1298
|
+
* This represents the official asset management parachain for the Polkadot blockchain.
|
|
1299
|
+
*/
|
|
1300
|
+
defineChain({
|
|
1301
|
+
type: 'polkadot',
|
|
1302
|
+
chain: Blockchain.Polkadot_Asset_Hub,
|
|
1303
|
+
name: 'Polkadot Asset Hub',
|
|
1304
|
+
title: 'Polkadot Asset Hub',
|
|
1305
|
+
nativeCurrency: {
|
|
1306
|
+
name: 'Polkadot',
|
|
1307
|
+
symbol: 'DOT',
|
|
1308
|
+
decimals: 10,
|
|
1309
|
+
},
|
|
1310
|
+
isTestnet: false,
|
|
1311
|
+
explorerUrl: 'https://polkadot.subscan.io/extrinsic/{hash}',
|
|
1312
|
+
rpcEndpoints: ['https://asset-hub-polkadot-rpc.n.dwellir.com'],
|
|
1313
|
+
eurcAddress: null,
|
|
1314
|
+
usdcAddress: '1337',
|
|
1315
|
+
cctp: null,
|
|
1316
|
+
});
|
|
1317
|
+
|
|
1318
|
+
/**
|
|
1319
|
+
* Polkadot Westmint chain definition
|
|
1320
|
+
* @remarks
|
|
1321
|
+
* This represents an asset management parachain in the Polkadot ecosystem.
|
|
1322
|
+
*/
|
|
1323
|
+
defineChain({
|
|
1324
|
+
type: 'polkadot',
|
|
1325
|
+
chain: Blockchain.Polkadot_Westmint,
|
|
1326
|
+
name: 'Polkadot Westmint',
|
|
1327
|
+
title: 'Polkadot Westmint',
|
|
1328
|
+
nativeCurrency: {
|
|
1329
|
+
name: 'Polkadot',
|
|
1330
|
+
symbol: 'DOT',
|
|
1331
|
+
decimals: 10,
|
|
1332
|
+
},
|
|
1333
|
+
isTestnet: false,
|
|
1334
|
+
explorerUrl: 'https://assethub-polkadot.subscan.io/extrinsic/{hash}',
|
|
1335
|
+
rpcEndpoints: ['https://westmint-rpc.polkadot.io'],
|
|
1336
|
+
eurcAddress: null,
|
|
1337
|
+
usdcAddress: 'Asset ID 31337',
|
|
1338
|
+
cctp: null,
|
|
1339
|
+
});
|
|
1340
|
+
|
|
1341
|
+
/**
|
|
1342
|
+
* Polygon Mainnet chain definition
|
|
1343
|
+
* @remarks
|
|
1344
|
+
* This represents the official production network for the Polygon blockchain.
|
|
1345
|
+
*/
|
|
1346
|
+
const Polygon = defineChain({
|
|
1347
|
+
type: 'evm',
|
|
1348
|
+
chain: Blockchain.Polygon,
|
|
1349
|
+
name: 'Polygon',
|
|
1350
|
+
title: 'Polygon Mainnet',
|
|
1351
|
+
nativeCurrency: {
|
|
1352
|
+
name: 'POL',
|
|
1353
|
+
symbol: 'POL',
|
|
1354
|
+
decimals: 18,
|
|
1355
|
+
},
|
|
1356
|
+
chainId: 137,
|
|
1357
|
+
isTestnet: false,
|
|
1358
|
+
explorerUrl: 'https://polygonscan.com/tx/{hash}',
|
|
1359
|
+
rpcEndpoints: ['https://polygon-rpc.com', 'https://polygon.publicnode.com'],
|
|
1360
|
+
eurcAddress: null,
|
|
1361
|
+
usdcAddress: '0x3c499c542cef5e3811e1192ce70d8cc03d5c3359',
|
|
1362
|
+
cctp: {
|
|
1363
|
+
domain: 7,
|
|
1364
|
+
contracts: {
|
|
1365
|
+
v1: {
|
|
1366
|
+
type: 'split',
|
|
1367
|
+
tokenMessenger: '0x9daF8c91AEFAE50b9c0E69629D3F6Ca40cA3B3FE',
|
|
1368
|
+
messageTransmitter: '0xF3be9355363857F3e001be68856A2f96b4C39Ba9',
|
|
1369
|
+
confirmations: 200,
|
|
1370
|
+
},
|
|
1371
|
+
v2: {
|
|
1372
|
+
type: 'split',
|
|
1373
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
|
|
1374
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
1375
|
+
confirmations: 33,
|
|
1376
|
+
fastConfirmations: 13,
|
|
1377
|
+
},
|
|
1378
|
+
},
|
|
1379
|
+
},
|
|
1380
|
+
kitContracts: {
|
|
1381
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
1382
|
+
},
|
|
1383
|
+
});
|
|
1384
|
+
|
|
1385
|
+
/**
|
|
1386
|
+
* Polygon Amoy Testnet chain definition
|
|
1387
|
+
* @remarks
|
|
1388
|
+
* This represents the official test network for the Polygon blockchain.
|
|
1389
|
+
*/
|
|
1390
|
+
const PolygonAmoy = defineChain({
|
|
1391
|
+
type: 'evm',
|
|
1392
|
+
chain: Blockchain.Polygon_Amoy_Testnet,
|
|
1393
|
+
name: 'Polygon Amoy',
|
|
1394
|
+
title: 'Polygon Amoy Testnet',
|
|
1395
|
+
nativeCurrency: {
|
|
1396
|
+
name: 'POL',
|
|
1397
|
+
symbol: 'POL',
|
|
1398
|
+
decimals: 18,
|
|
1399
|
+
},
|
|
1400
|
+
chainId: 80002,
|
|
1401
|
+
isTestnet: true,
|
|
1402
|
+
explorerUrl: 'https://amoy.polygonscan.com/tx/{hash}',
|
|
1403
|
+
rpcEndpoints: ['https://rpc-amoy.polygon.technology'],
|
|
1404
|
+
eurcAddress: null,
|
|
1405
|
+
usdcAddress: '0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582',
|
|
1406
|
+
cctp: {
|
|
1407
|
+
domain: 7,
|
|
1408
|
+
contracts: {
|
|
1409
|
+
v1: {
|
|
1410
|
+
type: 'split',
|
|
1411
|
+
tokenMessenger: '0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5',
|
|
1412
|
+
messageTransmitter: '0x7865fAfC2db2093669d92c0F33AeEF291086BEFD',
|
|
1413
|
+
confirmations: 200,
|
|
1414
|
+
},
|
|
1415
|
+
v2: {
|
|
1416
|
+
type: 'split',
|
|
1417
|
+
tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
|
|
1418
|
+
messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
|
|
1419
|
+
confirmations: 33,
|
|
1420
|
+
fastConfirmations: 13,
|
|
1421
|
+
},
|
|
1422
|
+
},
|
|
1423
|
+
},
|
|
1424
|
+
kitContracts: {
|
|
1425
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
1426
|
+
},
|
|
1427
|
+
});
|
|
1428
|
+
|
|
1429
|
+
/**
|
|
1430
|
+
* Sei Mainnet chain definition
|
|
1431
|
+
* @remarks
|
|
1432
|
+
* This represents the official production network for the Sei blockchain.
|
|
1433
|
+
* Sei is a Layer 1 blockchain specialized for DeFi and trading applications
|
|
1434
|
+
* with native orderbook and matching engine.
|
|
1435
|
+
*/
|
|
1436
|
+
defineChain({
|
|
1437
|
+
type: 'evm',
|
|
1438
|
+
chain: Blockchain.Sei,
|
|
1439
|
+
name: 'Sei',
|
|
1440
|
+
title: 'Sei Mainnet',
|
|
1441
|
+
nativeCurrency: {
|
|
1442
|
+
name: 'Sei',
|
|
1443
|
+
symbol: 'SEI',
|
|
1444
|
+
decimals: 18,
|
|
1445
|
+
},
|
|
1446
|
+
chainId: 1329,
|
|
1447
|
+
isTestnet: false,
|
|
1448
|
+
explorerUrl: 'https://seitrace.com/tx/{hash}?chain=pacific-1',
|
|
1449
|
+
rpcEndpoints: ['https://evm-rpc.sei-apis.com'],
|
|
1450
|
+
eurcAddress: null,
|
|
1451
|
+
usdcAddress: '0xe15fC38F6D8c56aF07bbCBe3BAf5708A2Bf42392',
|
|
1452
|
+
cctp: {
|
|
1453
|
+
domain: 16,
|
|
1454
|
+
contracts: {
|
|
1455
|
+
v2: {
|
|
1456
|
+
type: 'split',
|
|
1457
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
|
|
1458
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
1459
|
+
confirmations: 1,
|
|
1460
|
+
fastConfirmations: 1,
|
|
1461
|
+
},
|
|
1462
|
+
},
|
|
1463
|
+
},
|
|
1464
|
+
kitContracts: {
|
|
1465
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
1466
|
+
},
|
|
1467
|
+
});
|
|
1468
|
+
|
|
1469
|
+
/**
|
|
1470
|
+
* Sei Testnet chain definition
|
|
1471
|
+
* @remarks
|
|
1472
|
+
* This represents the official testnet for the Sei blockchain.
|
|
1473
|
+
* Used for development and testing purposes before deploying to mainnet.
|
|
1474
|
+
*/
|
|
1475
|
+
defineChain({
|
|
1476
|
+
type: 'evm',
|
|
1477
|
+
chain: Blockchain.Sei_Testnet,
|
|
1478
|
+
name: 'Sei Testnet',
|
|
1479
|
+
title: 'Sei Test Network',
|
|
1480
|
+
nativeCurrency: {
|
|
1481
|
+
name: 'Sei',
|
|
1482
|
+
symbol: 'SEI',
|
|
1483
|
+
decimals: 18,
|
|
1484
|
+
},
|
|
1485
|
+
chainId: 1328,
|
|
1486
|
+
isTestnet: true,
|
|
1487
|
+
explorerUrl: 'https://seitrace.com/tx/{hash}?chain=atlantic-2',
|
|
1488
|
+
rpcEndpoints: ['https://evm-rpc-testnet.sei-apis.com'],
|
|
1489
|
+
eurcAddress: null,
|
|
1490
|
+
usdcAddress: '0x4fCF1784B31630811181f670Aea7A7bEF803eaED',
|
|
1491
|
+
cctp: {
|
|
1492
|
+
domain: 16,
|
|
1493
|
+
contracts: {
|
|
1494
|
+
v2: {
|
|
1495
|
+
type: 'split',
|
|
1496
|
+
tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
|
|
1497
|
+
messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
|
|
1498
|
+
confirmations: 1,
|
|
1499
|
+
fastConfirmations: 1,
|
|
1500
|
+
},
|
|
1501
|
+
},
|
|
1502
|
+
},
|
|
1503
|
+
kitContracts: {
|
|
1504
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
1505
|
+
},
|
|
1506
|
+
});
|
|
1507
|
+
|
|
1508
|
+
/**
|
|
1509
|
+
* Sonic Mainnet chain definition
|
|
1510
|
+
* @remarks
|
|
1511
|
+
* This represents the official production network for the Sonic blockchain.
|
|
1512
|
+
*/
|
|
1513
|
+
const Sonic = defineChain({
|
|
1514
|
+
type: 'evm',
|
|
1515
|
+
chain: Blockchain.Sonic,
|
|
1516
|
+
name: 'Sonic',
|
|
1517
|
+
title: 'Sonic Mainnet',
|
|
1518
|
+
nativeCurrency: {
|
|
1519
|
+
name: 'Sonic',
|
|
1520
|
+
symbol: 'S',
|
|
1521
|
+
decimals: 18,
|
|
1522
|
+
},
|
|
1523
|
+
chainId: 146,
|
|
1524
|
+
isTestnet: false,
|
|
1525
|
+
explorerUrl: 'https://sonicscan.org/tx/{hash}',
|
|
1526
|
+
rpcEndpoints: ['https://rpc.soniclabs.com'],
|
|
1527
|
+
eurcAddress: null,
|
|
1528
|
+
usdcAddress: '0x29219dd400f2Bf60E5a23d13Be72B486D4038894',
|
|
1529
|
+
cctp: {
|
|
1530
|
+
domain: 13,
|
|
1531
|
+
contracts: {
|
|
1532
|
+
v2: {
|
|
1533
|
+
type: 'split',
|
|
1534
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
|
|
1535
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
1536
|
+
confirmations: 1,
|
|
1537
|
+
fastConfirmations: 1,
|
|
1538
|
+
},
|
|
1539
|
+
},
|
|
1540
|
+
},
|
|
1541
|
+
kitContracts: {
|
|
1542
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
1543
|
+
},
|
|
1544
|
+
});
|
|
1545
|
+
|
|
1546
|
+
/**
|
|
1547
|
+
* Sonic Blaze Testnet chain definition
|
|
1548
|
+
* @remarks
|
|
1549
|
+
* This represents the official test network for the Sonic blockchain.
|
|
1550
|
+
*/
|
|
1551
|
+
const SonicTestnet = defineChain({
|
|
1552
|
+
type: 'evm',
|
|
1553
|
+
chain: Blockchain.Sonic_Testnet,
|
|
1554
|
+
name: 'Sonic Blaze Testnet',
|
|
1555
|
+
title: 'Sonic Blaze Testnet',
|
|
1556
|
+
nativeCurrency: {
|
|
1557
|
+
name: 'Sonic',
|
|
1558
|
+
symbol: 'S',
|
|
1559
|
+
decimals: 18,
|
|
1560
|
+
},
|
|
1561
|
+
chainId: 57054,
|
|
1562
|
+
isTestnet: true,
|
|
1563
|
+
explorerUrl: 'https://testnet.sonicscan.org/tx/{hash}',
|
|
1564
|
+
rpcEndpoints: ['https://rpc.blaze.soniclabs.com'],
|
|
1565
|
+
eurcAddress: null,
|
|
1566
|
+
usdcAddress: '0xA4879Fed32Ecbef99399e5cbC247E533421C4eC6',
|
|
1567
|
+
cctp: {
|
|
1568
|
+
domain: 13,
|
|
1569
|
+
contracts: {
|
|
1570
|
+
v2: {
|
|
1571
|
+
type: 'split',
|
|
1572
|
+
tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
|
|
1573
|
+
messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
|
|
1574
|
+
confirmations: 1,
|
|
1575
|
+
fastConfirmations: 1,
|
|
1576
|
+
},
|
|
1577
|
+
},
|
|
1578
|
+
},
|
|
1579
|
+
kitContracts: {
|
|
1580
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
1581
|
+
},
|
|
1582
|
+
});
|
|
1583
|
+
|
|
1584
|
+
/**
|
|
1585
|
+
* Solana Mainnet chain definition
|
|
1586
|
+
* @remarks
|
|
1587
|
+
* This represents the official production network for the Solana blockchain.
|
|
1588
|
+
*/
|
|
1589
|
+
const Solana = defineChain({
|
|
1590
|
+
type: 'solana',
|
|
1591
|
+
chain: Blockchain.Solana,
|
|
1592
|
+
name: 'Solana',
|
|
1593
|
+
title: 'Solana Mainnet',
|
|
1594
|
+
nativeCurrency: {
|
|
1595
|
+
name: 'Solana',
|
|
1596
|
+
symbol: 'SOL',
|
|
1597
|
+
decimals: 9,
|
|
1598
|
+
},
|
|
1599
|
+
isTestnet: false,
|
|
1600
|
+
explorerUrl: 'https://solscan.io/tx/{hash}',
|
|
1601
|
+
rpcEndpoints: ['https://api.mainnet-beta.solana.com'],
|
|
1602
|
+
eurcAddress: 'HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr',
|
|
1603
|
+
usdcAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
|
|
1604
|
+
cctp: {
|
|
1605
|
+
domain: 5,
|
|
1606
|
+
contracts: {
|
|
1607
|
+
v1: {
|
|
1608
|
+
type: 'split',
|
|
1609
|
+
tokenMessenger: 'CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3',
|
|
1610
|
+
messageTransmitter: 'CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd',
|
|
1611
|
+
confirmations: 32,
|
|
1612
|
+
},
|
|
1613
|
+
v2: {
|
|
1614
|
+
type: 'split',
|
|
1615
|
+
tokenMessenger: 'CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe',
|
|
1616
|
+
messageTransmitter: 'CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC',
|
|
1617
|
+
confirmations: 32,
|
|
1618
|
+
fastConfirmations: 3,
|
|
1619
|
+
},
|
|
1620
|
+
},
|
|
1621
|
+
},
|
|
1622
|
+
kitContracts: {
|
|
1623
|
+
bridge: 'DFaauJEjmiHkPs1JG89A4p95hDWi9m9SAEERY1LQJiC3',
|
|
1624
|
+
},
|
|
1625
|
+
});
|
|
1626
|
+
|
|
1627
|
+
/**
|
|
1628
|
+
* Solana Devnet chain definition
|
|
1629
|
+
* @remarks
|
|
1630
|
+
* This represents the development test network for the Solana blockchain.
|
|
1631
|
+
*/
|
|
1632
|
+
const SolanaDevnet = defineChain({
|
|
1633
|
+
type: 'solana',
|
|
1634
|
+
chain: Blockchain.Solana_Devnet,
|
|
1635
|
+
name: 'Solana Devnet',
|
|
1636
|
+
title: 'Solana Development Network',
|
|
1637
|
+
nativeCurrency: {
|
|
1638
|
+
name: 'Solana',
|
|
1639
|
+
symbol: 'SOL',
|
|
1640
|
+
decimals: 9,
|
|
1641
|
+
},
|
|
1642
|
+
isTestnet: true,
|
|
1643
|
+
explorerUrl: 'https://solscan.io/tx/{hash}?cluster=devnet',
|
|
1644
|
+
eurcAddress: 'HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr',
|
|
1645
|
+
usdcAddress: '4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU',
|
|
1646
|
+
cctp: {
|
|
1647
|
+
domain: 5,
|
|
1648
|
+
contracts: {
|
|
1649
|
+
v1: {
|
|
1650
|
+
type: 'split',
|
|
1651
|
+
tokenMessenger: 'CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3',
|
|
1652
|
+
messageTransmitter: 'CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd',
|
|
1653
|
+
confirmations: 32,
|
|
1654
|
+
},
|
|
1655
|
+
v2: {
|
|
1656
|
+
type: 'split',
|
|
1657
|
+
tokenMessenger: 'CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe',
|
|
1658
|
+
messageTransmitter: 'CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC',
|
|
1659
|
+
confirmations: 32,
|
|
1660
|
+
fastConfirmations: 3,
|
|
1661
|
+
},
|
|
1662
|
+
},
|
|
1663
|
+
},
|
|
1664
|
+
kitContracts: {
|
|
1665
|
+
bridge: 'DFaauJEjmiHkPs1JG89A4p95hDWi9m9SAEERY1LQJiC3',
|
|
1666
|
+
},
|
|
1667
|
+
rpcEndpoints: ['https://api.devnet.solana.com'],
|
|
1668
|
+
});
|
|
1669
|
+
|
|
1670
|
+
/**
|
|
1671
|
+
* Stellar Mainnet chain definition
|
|
1672
|
+
* @remarks
|
|
1673
|
+
* This represents the official production network for the Stellar blockchain.
|
|
1674
|
+
*/
|
|
1675
|
+
defineChain({
|
|
1676
|
+
type: 'stellar',
|
|
1677
|
+
chain: Blockchain.Stellar,
|
|
1678
|
+
name: 'Stellar',
|
|
1679
|
+
title: 'Stellar Mainnet',
|
|
1680
|
+
nativeCurrency: {
|
|
1681
|
+
name: 'Stellar Lumens',
|
|
1682
|
+
symbol: 'XLM',
|
|
1683
|
+
decimals: 7,
|
|
1684
|
+
},
|
|
1685
|
+
isTestnet: false,
|
|
1686
|
+
explorerUrl: 'https://stellar.expert/explorer/public/tx/{hash}',
|
|
1687
|
+
rpcEndpoints: ['https://horizon.stellar.org'],
|
|
1688
|
+
eurcAddress: 'EURC-GDHU6WRG4IEQXM5NZ4BMPKOXHW76MZM4Y2IEMFDVXBSDP6SJY4ITNPP2',
|
|
1689
|
+
usdcAddress: 'USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN',
|
|
1690
|
+
cctp: null,
|
|
1691
|
+
});
|
|
1692
|
+
|
|
1693
|
+
/**
|
|
1694
|
+
* Stellar Testnet chain definition
|
|
1695
|
+
* @remarks
|
|
1696
|
+
* This represents the official test network for the Stellar blockchain.
|
|
1697
|
+
*/
|
|
1698
|
+
defineChain({
|
|
1699
|
+
type: 'stellar',
|
|
1700
|
+
chain: Blockchain.Stellar_Testnet,
|
|
1701
|
+
name: 'Stellar Testnet',
|
|
1702
|
+
title: 'Stellar Test Network',
|
|
1703
|
+
nativeCurrency: {
|
|
1704
|
+
name: 'Stellar Lumens',
|
|
1705
|
+
symbol: 'XLM',
|
|
1706
|
+
decimals: 7,
|
|
1707
|
+
},
|
|
1708
|
+
isTestnet: true,
|
|
1709
|
+
explorerUrl: 'https://stellar.expert/explorer/testnet/tx/{hash}',
|
|
1710
|
+
rpcEndpoints: ['https://horizon-testnet.stellar.org'],
|
|
1711
|
+
eurcAddress: 'EURC-GB3Q6QDZYTHWT7E5PVS3W7FUT5GVAFC5KSZFFLPU25GO7VTC3NM2ZTVO',
|
|
1712
|
+
usdcAddress: 'USDC-GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5',
|
|
1713
|
+
cctp: null,
|
|
1714
|
+
});
|
|
1715
|
+
|
|
1716
|
+
/**
|
|
1717
|
+
* Sui Mainnet chain definition
|
|
1718
|
+
* @remarks
|
|
1719
|
+
* This represents the official production network for the Sui blockchain.
|
|
1720
|
+
*/
|
|
1721
|
+
defineChain({
|
|
1722
|
+
type: 'sui',
|
|
1723
|
+
chain: Blockchain.Sui,
|
|
1724
|
+
name: 'Sui',
|
|
1725
|
+
title: 'Sui Mainnet',
|
|
1726
|
+
nativeCurrency: {
|
|
1727
|
+
name: 'Sui',
|
|
1728
|
+
symbol: 'SUI',
|
|
1729
|
+
decimals: 9,
|
|
1730
|
+
},
|
|
1731
|
+
isTestnet: false,
|
|
1732
|
+
explorerUrl: 'https://suiscan.xyz/mainnet/tx/{hash}',
|
|
1733
|
+
rpcEndpoints: ['https://fullnode.mainnet.sui.io'],
|
|
1734
|
+
eurcAddress: null,
|
|
1735
|
+
usdcAddress: '0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC',
|
|
1736
|
+
cctp: {
|
|
1737
|
+
domain: 8,
|
|
1738
|
+
contracts: {
|
|
1739
|
+
v1: {
|
|
1740
|
+
type: 'split',
|
|
1741
|
+
tokenMessenger: '0x2aa6c5d56376c371f88a6cc42e852824994993cb9bab8d3e6450cbe3cb32b94e',
|
|
1742
|
+
messageTransmitter: '0x08d87d37ba49e785dde270a83f8e979605b03dc552b5548f26fdf2f49bf7ed1b',
|
|
1743
|
+
confirmations: 1,
|
|
1744
|
+
},
|
|
1745
|
+
},
|
|
1746
|
+
},
|
|
1747
|
+
});
|
|
1748
|
+
|
|
1749
|
+
/**
|
|
1750
|
+
* Sui Testnet chain definition
|
|
1751
|
+
* @remarks
|
|
1752
|
+
* This represents the official test network for the Sui blockchain.
|
|
1753
|
+
*/
|
|
1754
|
+
defineChain({
|
|
1755
|
+
type: 'sui',
|
|
1756
|
+
chain: Blockchain.Sui_Testnet,
|
|
1757
|
+
name: 'Sui Testnet',
|
|
1758
|
+
title: 'Sui Test Network',
|
|
1759
|
+
nativeCurrency: {
|
|
1760
|
+
name: 'Sui',
|
|
1761
|
+
symbol: 'SUI',
|
|
1762
|
+
decimals: 9,
|
|
1763
|
+
},
|
|
1764
|
+
isTestnet: true,
|
|
1765
|
+
explorerUrl: 'https://suiscan.xyz/testnet/tx/{hash}',
|
|
1766
|
+
rpcEndpoints: ['https://fullnode.testnet.sui.io'],
|
|
1767
|
+
eurcAddress: null,
|
|
1768
|
+
usdcAddress: '0xa1ec7fc00a6f40db9693ad1415d0c193ad3906494428cf252621037bd7117e29::usdc::USDC',
|
|
1769
|
+
cctp: {
|
|
1770
|
+
domain: 8,
|
|
1771
|
+
contracts: {
|
|
1772
|
+
v1: {
|
|
1773
|
+
type: 'split',
|
|
1774
|
+
tokenMessenger: '0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb',
|
|
1775
|
+
messageTransmitter: '0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5',
|
|
1776
|
+
confirmations: 1,
|
|
1777
|
+
},
|
|
1778
|
+
},
|
|
1779
|
+
},
|
|
1780
|
+
});
|
|
1781
|
+
|
|
1782
|
+
/**
|
|
1783
|
+
* Unichain Mainnet chain definition
|
|
1784
|
+
* @remarks
|
|
1785
|
+
* This represents the official production network for the Unichain blockchain.
|
|
1786
|
+
*/
|
|
1787
|
+
const Unichain = defineChain({
|
|
1788
|
+
type: 'evm',
|
|
1789
|
+
chain: Blockchain.Unichain,
|
|
1790
|
+
name: 'Unichain',
|
|
1791
|
+
title: 'Unichain Mainnet',
|
|
1792
|
+
nativeCurrency: {
|
|
1793
|
+
name: 'Uni',
|
|
1794
|
+
symbol: 'UNI',
|
|
1795
|
+
decimals: 18,
|
|
1796
|
+
},
|
|
1797
|
+
chainId: 130,
|
|
1798
|
+
isTestnet: false,
|
|
1799
|
+
explorerUrl: 'https://unichain.blockscout.com/tx/{hash}',
|
|
1800
|
+
rpcEndpoints: ['https://rpc.unichain.org', 'https://mainnet.unichain.org'],
|
|
1801
|
+
eurcAddress: null,
|
|
1802
|
+
usdcAddress: '0x078D782b760474a361dDA0AF3839290b0EF57AD6',
|
|
1803
|
+
cctp: {
|
|
1804
|
+
domain: 10,
|
|
1805
|
+
contracts: {
|
|
1806
|
+
v1: {
|
|
1807
|
+
type: 'split',
|
|
1808
|
+
tokenMessenger: '0x4e744b28E787c3aD0e810eD65A24461D4ac5a762',
|
|
1809
|
+
messageTransmitter: '0x353bE9E2E38AB1D19104534e4edC21c643Df86f4',
|
|
1810
|
+
confirmations: 65,
|
|
1811
|
+
},
|
|
1812
|
+
v2: {
|
|
1813
|
+
type: 'split',
|
|
1814
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
|
|
1815
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
1816
|
+
confirmations: 65,
|
|
1817
|
+
fastConfirmations: 1,
|
|
1818
|
+
},
|
|
1819
|
+
},
|
|
1820
|
+
},
|
|
1821
|
+
kitContracts: {
|
|
1822
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
1823
|
+
},
|
|
1824
|
+
});
|
|
1825
|
+
|
|
1826
|
+
/**
|
|
1827
|
+
* Unichain Sepolia Testnet chain definition
|
|
1828
|
+
* @remarks
|
|
1829
|
+
* This represents the official test network for the Unichain blockchain.
|
|
1830
|
+
*/
|
|
1831
|
+
const UnichainSepolia = defineChain({
|
|
1832
|
+
type: 'evm',
|
|
1833
|
+
chain: Blockchain.Unichain_Sepolia,
|
|
1834
|
+
name: 'Unichain Sepolia',
|
|
1835
|
+
title: 'Unichain Sepolia Testnet',
|
|
1836
|
+
nativeCurrency: {
|
|
1837
|
+
name: 'Sepolia Uni',
|
|
1838
|
+
symbol: 'UNI',
|
|
1839
|
+
decimals: 18,
|
|
1840
|
+
},
|
|
1841
|
+
chainId: 1301,
|
|
1842
|
+
isTestnet: true,
|
|
1843
|
+
explorerUrl: 'https://unichain-sepolia.blockscout.com/tx/{hash}',
|
|
1844
|
+
rpcEndpoints: ['https://sepolia.unichain.org'],
|
|
1845
|
+
eurcAddress: null,
|
|
1846
|
+
usdcAddress: '0x31d0220469e10c4E71834a79b1f276d740d3768F',
|
|
1847
|
+
cctp: {
|
|
1848
|
+
domain: 10,
|
|
1849
|
+
contracts: {
|
|
1850
|
+
v1: {
|
|
1851
|
+
type: 'split',
|
|
1852
|
+
tokenMessenger: '0x8ed94B8dAd2Dc5453862ea5e316A8e71AAed9782',
|
|
1853
|
+
messageTransmitter: '0xbc498c326533d675cf571B90A2Ced265ACb7d086',
|
|
1854
|
+
confirmations: 65,
|
|
1855
|
+
},
|
|
1856
|
+
v2: {
|
|
1857
|
+
type: 'split',
|
|
1858
|
+
tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
|
|
1859
|
+
messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
|
|
1860
|
+
confirmations: 65,
|
|
1861
|
+
fastConfirmations: 1,
|
|
1862
|
+
},
|
|
1863
|
+
},
|
|
1864
|
+
},
|
|
1865
|
+
kitContracts: {
|
|
1866
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
1867
|
+
},
|
|
1868
|
+
});
|
|
1869
|
+
|
|
1870
|
+
/**
|
|
1871
|
+
* World Chain chain definition
|
|
1872
|
+
* @remarks
|
|
1873
|
+
* This represents the main network for the World Chain blockchain.
|
|
1874
|
+
*/
|
|
1875
|
+
const WorldChain = defineChain({
|
|
1876
|
+
type: 'evm',
|
|
1877
|
+
chain: Blockchain.World_Chain,
|
|
1878
|
+
name: 'World Chain',
|
|
1879
|
+
title: 'World Chain',
|
|
1880
|
+
nativeCurrency: {
|
|
1881
|
+
name: 'Ether',
|
|
1882
|
+
symbol: 'ETH',
|
|
1883
|
+
decimals: 18,
|
|
1884
|
+
},
|
|
1885
|
+
chainId: 480,
|
|
1886
|
+
isTestnet: false,
|
|
1887
|
+
explorerUrl: 'https://worldscan.org/tx/{hash}',
|
|
1888
|
+
rpcEndpoints: ['https://worldchain-mainnet.g.alchemy.com/public'],
|
|
1889
|
+
eurcAddress: null,
|
|
1890
|
+
usdcAddress: '0x79A02482A880bCe3F13E09da970dC34dB4cD24D1',
|
|
1891
|
+
cctp: {
|
|
1892
|
+
domain: 14,
|
|
1893
|
+
contracts: {
|
|
1894
|
+
v2: {
|
|
1895
|
+
type: 'split',
|
|
1896
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cF5d',
|
|
1897
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
1898
|
+
confirmations: 65,
|
|
1899
|
+
fastConfirmations: 1,
|
|
1900
|
+
},
|
|
1901
|
+
},
|
|
1902
|
+
},
|
|
1903
|
+
kitContracts: {
|
|
1904
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
1905
|
+
},
|
|
1906
|
+
});
|
|
1907
|
+
|
|
1908
|
+
/**
|
|
1909
|
+
* World Chain Sepolia chain definition
|
|
1910
|
+
* @remarks
|
|
1911
|
+
* This represents the test network for the World Chain blockchain.
|
|
1912
|
+
*/
|
|
1913
|
+
const WorldChainSepolia = defineChain({
|
|
1914
|
+
type: 'evm',
|
|
1915
|
+
chain: Blockchain.World_Chain_Sepolia,
|
|
1916
|
+
name: 'World Chain Sepolia',
|
|
1917
|
+
title: 'World Chain Sepolia',
|
|
1918
|
+
nativeCurrency: {
|
|
1919
|
+
name: 'Ether',
|
|
1920
|
+
symbol: 'ETH',
|
|
1921
|
+
decimals: 18,
|
|
1922
|
+
},
|
|
1923
|
+
chainId: 4801,
|
|
1924
|
+
isTestnet: true,
|
|
1925
|
+
explorerUrl: 'https://sepolia.worldscan.org/tx/{hash}',
|
|
1926
|
+
rpcEndpoints: [
|
|
1927
|
+
'https://worldchain-sepolia.drpc.org',
|
|
1928
|
+
'https://worldchain-sepolia.g.alchemy.com/public',
|
|
1929
|
+
],
|
|
1930
|
+
eurcAddress: null,
|
|
1931
|
+
usdcAddress: '0x66145f38cBAC35Ca6F1Dfb4914dF98F1614aeA88',
|
|
1932
|
+
cctp: {
|
|
1933
|
+
domain: 14,
|
|
1934
|
+
contracts: {
|
|
1935
|
+
v2: {
|
|
1936
|
+
type: 'split',
|
|
1937
|
+
tokenMessenger: '0x8fe6b999dc680ccfdd5bf7eb0974218be2542daa',
|
|
1938
|
+
messageTransmitter: '0xe737e5cebeeba77efe34d4aa090756590b1ce275',
|
|
1939
|
+
confirmations: 65,
|
|
1940
|
+
fastConfirmations: 1,
|
|
1941
|
+
},
|
|
1942
|
+
},
|
|
1943
|
+
},
|
|
1944
|
+
kitContracts: {
|
|
1945
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
1946
|
+
},
|
|
1947
|
+
});
|
|
1948
|
+
|
|
1949
|
+
/**
|
|
1950
|
+
* XDC Mainnet chain definition
|
|
1951
|
+
* @remarks
|
|
1952
|
+
* This represents the official production network for the XDC blockchain.
|
|
1953
|
+
* XDC is a Layer 1 blockchain specialized for DeFi and trading applications
|
|
1954
|
+
* with native orderbook and matching engine.
|
|
1955
|
+
*/
|
|
1956
|
+
defineChain({
|
|
1957
|
+
type: 'evm',
|
|
1958
|
+
chain: Blockchain.XDC,
|
|
1959
|
+
name: 'XDC',
|
|
1960
|
+
title: 'XDC Mainnet',
|
|
1961
|
+
nativeCurrency: {
|
|
1962
|
+
name: 'XDC',
|
|
1963
|
+
symbol: 'XDC',
|
|
1964
|
+
decimals: 18,
|
|
1965
|
+
},
|
|
1966
|
+
chainId: 50,
|
|
1967
|
+
isTestnet: false,
|
|
1968
|
+
explorerUrl: 'https://xdcscan.io/tx/{hash}',
|
|
1969
|
+
rpcEndpoints: ['https://erpc.xinfin.network'],
|
|
1970
|
+
eurcAddress: null,
|
|
1971
|
+
usdcAddress: '0xfA2958CB79b0491CC627c1557F441eF849Ca8eb1',
|
|
1972
|
+
cctp: {
|
|
1973
|
+
domain: 18,
|
|
1974
|
+
contracts: {
|
|
1975
|
+
v2: {
|
|
1976
|
+
type: 'split',
|
|
1977
|
+
tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
|
|
1978
|
+
messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
|
|
1979
|
+
confirmations: 3,
|
|
1980
|
+
fastConfirmations: 3,
|
|
1981
|
+
},
|
|
1982
|
+
},
|
|
1983
|
+
},
|
|
1984
|
+
kitContracts: {
|
|
1985
|
+
bridge: BRIDGE_CONTRACT_EVM_MAINNET,
|
|
1986
|
+
},
|
|
1987
|
+
});
|
|
1988
|
+
|
|
1989
|
+
/**
|
|
1990
|
+
* XDC Apothem Testnet chain definition
|
|
1991
|
+
* @remarks
|
|
1992
|
+
* This represents the official test network for the XDC Network, known as Apothem.
|
|
1993
|
+
*/
|
|
1994
|
+
defineChain({
|
|
1995
|
+
type: 'evm',
|
|
1996
|
+
chain: Blockchain.XDC_Apothem,
|
|
1997
|
+
name: 'Apothem Network',
|
|
1998
|
+
title: 'Apothem Network',
|
|
1999
|
+
nativeCurrency: {
|
|
2000
|
+
name: 'TXDC',
|
|
2001
|
+
symbol: 'TXDC',
|
|
2002
|
+
decimals: 18,
|
|
2003
|
+
},
|
|
2004
|
+
chainId: 51,
|
|
2005
|
+
isTestnet: true,
|
|
2006
|
+
explorerUrl: 'https://testnet.xdcscan.com/tx/{hash}',
|
|
2007
|
+
rpcEndpoints: ['https://erpc.apothem.network'],
|
|
2008
|
+
eurcAddress: null,
|
|
2009
|
+
usdcAddress: '0xb5AB69F7bBada22B28e79C8FFAECe55eF1c771D4',
|
|
2010
|
+
cctp: {
|
|
2011
|
+
domain: 18,
|
|
2012
|
+
contracts: {
|
|
2013
|
+
v2: {
|
|
2014
|
+
type: 'split',
|
|
2015
|
+
tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
|
|
2016
|
+
messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
|
|
2017
|
+
confirmations: 3,
|
|
2018
|
+
fastConfirmations: 1,
|
|
2019
|
+
},
|
|
2020
|
+
},
|
|
2021
|
+
},
|
|
2022
|
+
kitContracts: {
|
|
2023
|
+
bridge: BRIDGE_CONTRACT_EVM_TESTNET,
|
|
2024
|
+
},
|
|
2025
|
+
});
|
|
2026
|
+
|
|
2027
|
+
/**
|
|
2028
|
+
* ZKSync Era Mainnet chain definition
|
|
2029
|
+
* @remarks
|
|
2030
|
+
* This represents the official production network for the ZKSync Era blockchain.
|
|
2031
|
+
*/
|
|
2032
|
+
defineChain({
|
|
2033
|
+
type: 'evm',
|
|
2034
|
+
chain: Blockchain.ZKSync_Era,
|
|
2035
|
+
name: 'ZKSync Era',
|
|
2036
|
+
title: 'ZKSync Era Mainnet',
|
|
2037
|
+
nativeCurrency: {
|
|
2038
|
+
name: 'Ether',
|
|
2039
|
+
symbol: 'ETH',
|
|
2040
|
+
decimals: 18,
|
|
2041
|
+
},
|
|
2042
|
+
chainId: 324,
|
|
2043
|
+
isTestnet: false,
|
|
2044
|
+
explorerUrl: 'https://explorer.zksync.io/tx/{hash}',
|
|
2045
|
+
rpcEndpoints: ['https://mainnet.era.zksync.io'],
|
|
2046
|
+
eurcAddress: null,
|
|
2047
|
+
usdcAddress: '0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4',
|
|
2048
|
+
cctp: null,
|
|
2049
|
+
});
|
|
2050
|
+
|
|
2051
|
+
/**
|
|
2052
|
+
* ZKSync Era Sepolia Testnet chain definition
|
|
2053
|
+
* @remarks
|
|
2054
|
+
* This represents the official test network for the ZKSync Era blockchain on Sepolia.
|
|
2055
|
+
*/
|
|
2056
|
+
defineChain({
|
|
2057
|
+
type: 'evm',
|
|
2058
|
+
chain: Blockchain.ZKSync_Sepolia,
|
|
2059
|
+
name: 'ZKSync Era Sepolia',
|
|
2060
|
+
title: 'ZKSync Era Sepolia Testnet',
|
|
2061
|
+
nativeCurrency: {
|
|
2062
|
+
name: 'Sepolia Ether',
|
|
2063
|
+
symbol: 'ETH',
|
|
2064
|
+
decimals: 18,
|
|
2065
|
+
},
|
|
2066
|
+
chainId: 300,
|
|
2067
|
+
isTestnet: true,
|
|
2068
|
+
explorerUrl: 'https://sepolia.explorer.zksync.io/tx/{hash}',
|
|
2069
|
+
rpcEndpoints: ['https://sepolia.era.zksync.dev'],
|
|
2070
|
+
eurcAddress: null,
|
|
2071
|
+
usdcAddress: '0xAe045DE5638162fa134807Cb558E15A3F5A7F853',
|
|
2072
|
+
cctp: null,
|
|
2073
|
+
});
|
|
2074
|
+
|
|
2075
|
+
/**
|
|
2076
|
+
* Base schema for common chain definition properties.
|
|
2077
|
+
* This contains all properties shared between EVM and non-EVM chains.
|
|
2078
|
+
*/
|
|
2079
|
+
const baseChainDefinitionSchema = z.object({
|
|
2080
|
+
chain: z.nativeEnum(Blockchain, {
|
|
2081
|
+
required_error: 'Chain enum is required. Please provide a valid Blockchain enum value.',
|
|
2082
|
+
invalid_type_error: 'Chain must be a valid Blockchain enum value.',
|
|
2083
|
+
}),
|
|
2084
|
+
name: z.string({
|
|
2085
|
+
required_error: 'Chain name is required. Please provide a valid chain name.',
|
|
2086
|
+
invalid_type_error: 'Chain name must be a string.',
|
|
2087
|
+
}),
|
|
2088
|
+
title: z.string().optional(),
|
|
2089
|
+
nativeCurrency: z.object({
|
|
2090
|
+
name: z.string(),
|
|
2091
|
+
symbol: z.string(),
|
|
2092
|
+
decimals: z.number(),
|
|
2093
|
+
}),
|
|
2094
|
+
isTestnet: z.boolean({
|
|
2095
|
+
required_error: 'isTestnet is required. Please specify whether this is a testnet.',
|
|
2096
|
+
invalid_type_error: 'isTestnet must be a boolean.',
|
|
2097
|
+
}),
|
|
2098
|
+
explorerUrl: z.string({
|
|
2099
|
+
required_error: 'Explorer URL is required. Please provide a valid explorer URL.',
|
|
2100
|
+
invalid_type_error: 'Explorer URL must be a string.',
|
|
2101
|
+
}),
|
|
2102
|
+
rpcEndpoints: z.array(z.string()),
|
|
2103
|
+
eurcAddress: z.string().nullable(),
|
|
2104
|
+
usdcAddress: z.string().nullable(),
|
|
2105
|
+
cctp: z.any().nullable(), // We'll accept any CCTP config structure
|
|
2106
|
+
kitContracts: z
|
|
2107
|
+
.object({
|
|
2108
|
+
bridge: z.string().optional(),
|
|
2109
|
+
})
|
|
2110
|
+
.optional(),
|
|
2111
|
+
});
|
|
2112
|
+
/**
|
|
2113
|
+
* Zod schema for validating EVM chain definitions specifically.
|
|
2114
|
+
* This schema extends the base schema with EVM-specific properties.
|
|
2115
|
+
*
|
|
2116
|
+
* @example
|
|
2117
|
+
* ```typescript
|
|
2118
|
+
* import { evmChainDefinitionSchema } from '@core/chains/validation'
|
|
2119
|
+
* import { Blockchain } from '@core/chains'
|
|
2120
|
+
*
|
|
2121
|
+
* const ethereumChain = {
|
|
2122
|
+
* type: 'evm',
|
|
2123
|
+
* chain: Blockchain.Ethereum,
|
|
2124
|
+
* name: 'Ethereum',
|
|
2125
|
+
* chainId: 1,
|
|
2126
|
+
* nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
|
|
2127
|
+
* isTestnet: false,
|
|
2128
|
+
* explorerUrl: 'https://etherscan.io/tx/{hash}',
|
|
2129
|
+
* usdcAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
|
|
2130
|
+
* eurcAddress: null,
|
|
2131
|
+
* cctp: null
|
|
2132
|
+
* }
|
|
2133
|
+
*
|
|
2134
|
+
* const result = evmChainDefinitionSchema.safeParse(ethereumChain)
|
|
2135
|
+
* if (result.success) {
|
|
2136
|
+
* console.log('EVM chain definition is valid')
|
|
2137
|
+
* } else {
|
|
2138
|
+
* console.error('Validation failed:', result.error)
|
|
2139
|
+
* }
|
|
2140
|
+
* ```
|
|
2141
|
+
*/
|
|
2142
|
+
const evmChainDefinitionSchema = baseChainDefinitionSchema
|
|
2143
|
+
.extend({
|
|
2144
|
+
type: z.literal('evm'),
|
|
2145
|
+
chainId: z.number({
|
|
2146
|
+
required_error: 'EVM chains must have a chainId. Please provide a valid EVM chain ID.',
|
|
2147
|
+
invalid_type_error: 'EVM chain ID must be a number.',
|
|
2148
|
+
}),
|
|
2149
|
+
})
|
|
2150
|
+
.strict(); //// Reject any additional properties not defined in the schema
|
|
2151
|
+
/**
|
|
2152
|
+
* Zod schema for validating non-EVM chain definitions.
|
|
2153
|
+
* This schema extends the base schema with non-EVM specific properties.
|
|
2154
|
+
*/
|
|
2155
|
+
const nonEvmChainDefinitionSchema = baseChainDefinitionSchema
|
|
2156
|
+
.extend({
|
|
2157
|
+
type: z.enum([
|
|
2158
|
+
'algorand',
|
|
2159
|
+
'avalanche',
|
|
2160
|
+
'solana',
|
|
2161
|
+
'aptos',
|
|
2162
|
+
'near',
|
|
2163
|
+
'stellar',
|
|
2164
|
+
'sui',
|
|
2165
|
+
'hedera',
|
|
2166
|
+
'noble',
|
|
2167
|
+
'polkadot',
|
|
2168
|
+
]),
|
|
2169
|
+
})
|
|
2170
|
+
.strict(); // Reject any additional properties not defined in the schema
|
|
2171
|
+
/**
|
|
2172
|
+
* Discriminated union schema for all chain definitions.
|
|
2173
|
+
* This schema validates different chain types based on their 'type' field.
|
|
2174
|
+
*
|
|
2175
|
+
* @example
|
|
2176
|
+
* ```typescript
|
|
2177
|
+
* import { chainDefinitionSchema } from '@core/chains/validation'
|
|
2178
|
+
* import { Blockchain } from '@core/chains'
|
|
2179
|
+
*
|
|
2180
|
+
* // EVM chain
|
|
2181
|
+
* chainDefinitionSchema.parse({
|
|
2182
|
+
* type: 'evm',
|
|
2183
|
+
* chain: Blockchain.Ethereum,
|
|
2184
|
+
* chainId: 1,
|
|
2185
|
+
* // ... other properties
|
|
2186
|
+
* })
|
|
2187
|
+
*
|
|
2188
|
+
* // Non-EVM chain
|
|
2189
|
+
* chainDefinitionSchema.parse({
|
|
2190
|
+
* type: 'solana',
|
|
2191
|
+
* chain: Blockchain.Solana,
|
|
2192
|
+
* // ... other properties (no chainId)
|
|
2193
|
+
* })
|
|
2194
|
+
* ```
|
|
2195
|
+
*/
|
|
2196
|
+
const chainDefinitionSchema = z.discriminatedUnion('type', [
|
|
2197
|
+
evmChainDefinitionSchema,
|
|
2198
|
+
nonEvmChainDefinitionSchema,
|
|
2199
|
+
]);
|
|
2200
|
+
/**
|
|
2201
|
+
* Zod schema for validating chain identifiers.
|
|
2202
|
+
* This schema accepts either a string blockchain identifier, a Blockchain enum value,
|
|
2203
|
+
* or a full ChainDefinition object.
|
|
2204
|
+
*
|
|
2205
|
+
* @example
|
|
2206
|
+
* ```typescript
|
|
2207
|
+
* import { chainIdentifierSchema } from '@core/chains/validation'
|
|
2208
|
+
* import { Blockchain, Ethereum } from '@core/chains'
|
|
2209
|
+
*
|
|
2210
|
+
* // All of these are valid:
|
|
2211
|
+
* chainIdentifierSchema.parse('Ethereum')
|
|
2212
|
+
* chainIdentifierSchema.parse(Blockchain.Ethereum)
|
|
2213
|
+
* chainIdentifierSchema.parse(Ethereum)
|
|
2214
|
+
* ```
|
|
2215
|
+
*/
|
|
2216
|
+
z.union([
|
|
2217
|
+
z
|
|
2218
|
+
.string()
|
|
2219
|
+
.refine((val) => val in Blockchain, 'Must be a valid Blockchain enum value as string'),
|
|
2220
|
+
z.nativeEnum(Blockchain),
|
|
2221
|
+
chainDefinitionSchema,
|
|
2222
|
+
]);
|
|
2223
|
+
|
|
2224
|
+
export { Arbitrum, ArbitrumSepolia, Avalanche, AvalancheFuji, Base, BaseSepolia, Codex, CodexTestnet, Ethereum, EthereumSepolia, Linea, LineaSepolia, Optimism, OptimismSepolia, Polygon, PolygonAmoy, Solana, SolanaDevnet, Sonic, SonicTestnet, Unichain, UnichainSepolia, WorldChain, WorldChainSepolia };
|
|
2225
|
+
//# sourceMappingURL=chains.mjs.map
|