@cybertools/networks 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.
Files changed (64) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +31 -0
  3. package/assets/ame.png +0 -0
  4. package/assets/arbitrum.svg +10 -0
  5. package/assets/areon.svg +49 -0
  6. package/assets/avax.png +0 -0
  7. package/assets/base.png +0 -0
  8. package/assets/blast.png +0 -0
  9. package/assets/brise.png +0 -0
  10. package/assets/bsc.png +0 -0
  11. package/assets/celo.png +0 -0
  12. package/assets/core.png +0 -0
  13. package/assets/cro.png +0 -0
  14. package/assets/doge.png +0 -0
  15. package/assets/etc.svg +1 -0
  16. package/assets/eth.png +0 -0
  17. package/assets/fantom.png +0 -0
  18. package/assets/fuse.png +0 -0
  19. package/assets/glmr.svg +135 -0
  20. package/assets/ht.png +0 -0
  21. package/assets/kcc.png +0 -0
  22. package/assets/klay.svg +13 -0
  23. package/assets/linea.png +0 -0
  24. package/assets/loop.png +0 -0
  25. package/assets/mantle.png +0 -0
  26. package/assets/matic.png +0 -0
  27. package/assets/movr.svg +111 -0
  28. package/assets/one.png +0 -0
  29. package/assets/optimism.svg +21 -0
  30. package/assets/robinhood.png +0 -0
  31. package/assets/rose.png +0 -0
  32. package/assets/scroll.png +0 -0
  33. package/assets/sol.png +0 -0
  34. package/assets/taiko.png +0 -0
  35. package/assets/telos.png +0 -0
  36. package/assets/ton.png +0 -0
  37. package/assets/trx.png +0 -0
  38. package/assets/vlx.png +0 -0
  39. package/assets/wanchain.png +0 -0
  40. package/assets/xdai.svg +22 -0
  41. package/assets/xdc.png +0 -0
  42. package/assets/xlayer.png +0 -0
  43. package/assets/xrp.png +0 -0
  44. package/assets/zkSync.png +0 -0
  45. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  46. package/dist/icons.cjs +291 -0
  47. package/dist/icons.d.cts +8 -0
  48. package/dist/icons.d.mts +8 -0
  49. package/dist/icons.mjs +250 -0
  50. package/dist/index.cjs +10 -0
  51. package/dist/index.d.cts +4 -0
  52. package/dist/index.d.mts +4 -0
  53. package/dist/index.mjs +3 -0
  54. package/dist/networks.cjs +849 -0
  55. package/dist/networks.d.cts +997 -0
  56. package/dist/networks.d.mts +997 -0
  57. package/dist/networks.mjs +846 -0
  58. package/dist/supported.cjs +52 -0
  59. package/dist/supported.d.cts +6 -0
  60. package/dist/supported.d.mts +6 -0
  61. package/dist/supported.mjs +50 -0
  62. package/dist/types.d.cts +35 -0
  63. package/dist/types.d.mts +35 -0
  64. package/package.json +58 -0
@@ -0,0 +1,846 @@
1
+ import { isAddress } from "@solana/addresses";
2
+ import { isAddress as isAddress$1 } from "viem";
3
+ //#region src/networks.ts
4
+ const placeholders = {
5
+ XRP: "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
6
+ TRX: "TVau3x4zuCaAWN6oX2b8BTputTrJSPTGx8",
7
+ ETH: "0xd41c4805a9a3128f9f7a7074da25965371ba50d5",
8
+ SOL: "9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E",
9
+ TON: "UQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJKZ"
10
+ };
11
+ const ethValidator = (value) => {
12
+ if (value === void 0) return void 0;
13
+ try {
14
+ const normalized = typeof value === "string" ? value.replace(/^0X/, "0x") : value;
15
+ if (isAddress$1(normalized, { strict: false })) return void 0;
16
+ } catch {}
17
+ return `Address should be like ${placeholders.ETH}`;
18
+ };
19
+ const solValidator = (value) => {
20
+ try {
21
+ if (isAddress(value)) return void 0;
22
+ } catch {}
23
+ return `SOL address should be like ${placeholders.SOL}`;
24
+ };
25
+ const caseSensitive = (address) => address;
26
+ const caseInsensitive = (address) => address.toLowerCase();
27
+ const isDeadAddressEth = (address) => address === "0x0000000000000000000000000000000000000000" || address === "0x000000000000000000000000000000000000dead" || address === "0xdEAD000000000000000042069420694206942069";
28
+ const ethDefaults = {
29
+ placeholder: placeholders.ETH,
30
+ normalizeAddress: caseInsensitive,
31
+ validator: ethValidator,
32
+ isDeadAddress: isDeadAddressEth,
33
+ erc20: true
34
+ };
35
+ const isDeadAddressSol = (address) => address === "1nc1nerator11111111111111111111111111111111" || address === "11111111111111111111111111111111";
36
+ const networks = {
37
+ ETH: {
38
+ ...ethDefaults,
39
+ name: "Ethereum",
40
+ shortName: "Ethereum",
41
+ slither: "",
42
+ symbol: "ETH",
43
+ makeExplorerTxLink: (address) => `https://etherscan.io/tx/${address}`,
44
+ makeExplorerAddressLink: (address) => `https://etherscan.io/address/${address}`,
45
+ makeExplorerLink: (address) => `https://etherscan.io/token/${address}`,
46
+ feesCheckerContract: "0x7F97A0db6309003d4F0CB00D237dc9a85B400488",
47
+ lockerFactory: "0x269D4d211CBc9845B006128717eE51b0D6524955",
48
+ onChainAggregatorContract: "0x335c40873C1aCC296Cfb01eeA2540C7Aa2845400",
49
+ listed: true,
50
+ chainId: 1,
51
+ rpc: "https://eth-mainnet.public.blastapi.io",
52
+ routerAddress: "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",
53
+ dividentTracker: "0x687D7a1a6fF81974ed101557b98030d77e905a0d",
54
+ wrapped: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
55
+ },
56
+ BSC: {
57
+ ...ethDefaults,
58
+ name: "Binance Smart Chain",
59
+ shortName: "BSC",
60
+ slither: "bsc",
61
+ symbol: "BNB",
62
+ makeExplorerTxLink: (address) => `https://bscscan.com/tx/${address}`,
63
+ makeExplorerAddressLink: (address) => `https://bscscan.com/address/${address}`,
64
+ makeExplorerLink: (address) => `https://bscscan.com/token/${address}`,
65
+ feesCheckerContract: "0xA127ddf1747adcbE45a15dcadF69a844492424a6",
66
+ lockerFactory: "0x269D4d211CBc9845B006128717eE51b0D6524955",
67
+ onChainAggregatorContract: "0xfCC9D294D2Fa97aFc9b366751DE5ECb387DdEbB5",
68
+ listed: true,
69
+ chainId: 56,
70
+ rpc: "https://bsc-dataseed.bnbchain.org/",
71
+ routerAddress: "0x10ED43C718714eb63d5aA57B78B54704E256024E",
72
+ dividentTracker: "0x9795DcF2CfEe83456bCD4801eeB7a7f9c7A7551B",
73
+ wrapped: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"
74
+ },
75
+ MATIC: {
76
+ ...ethDefaults,
77
+ name: "Matic",
78
+ shortName: "Matic",
79
+ slither: "poly",
80
+ symbol: "MATIC",
81
+ makeExplorerTxLink: (address) => `https://polygonscan.com/tx/${address}`,
82
+ makeExplorerAddressLink: (address) => `https://polygonscan.com/address/${address}`,
83
+ makeExplorerLink: (address) => `https://polygonscan.com/token/${address}`,
84
+ feesCheckerContract: "0xcD9d5f112828839f0D470E7b26f186167493EcF7",
85
+ lockerFactory: "0x269D4d211CBc9845B006128717eE51b0D6524955",
86
+ onChainAggregatorContract: "0xA10D8b1C871573297Ad63f0cE3A3f376A4547F4e",
87
+ listed: true,
88
+ chainId: 137,
89
+ rpc: "https://polygon-rpc.com",
90
+ routerAddress: "0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff",
91
+ dividentTracker: "0xEC8eea03ec866514F8e7Caa2131f1c4B4564d974",
92
+ wrapped: "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270"
93
+ },
94
+ AVAX: {
95
+ ...ethDefaults,
96
+ name: "Avalanche",
97
+ shortName: "Avax",
98
+ slither: "avax",
99
+ symbol: "AVAX",
100
+ makeExplorerTxLink: (address) => `https://snowtrace.io/tx/${address}`,
101
+ makeExplorerAddressLink: (address) => `https://snowtrace.io/address/${address}`,
102
+ makeExplorerLink: (address) => `https://snowtrace.io/token/${address}`,
103
+ lockerFactory: "0x269D4d211CBc9845B006128717eE51b0D6524955",
104
+ feesCheckerContract: "0x7F97A0db6309003d4F0CB00D237dc9a85B400488",
105
+ feesCheckerContract2: "0xf1d320D75650b95e3a5c4b6942a7488bEa5EE519",
106
+ onChainAggregatorContract: "0x335c40873C1aCC296Cfb01eeA2540C7Aa2845400",
107
+ listed: true,
108
+ chainId: 43114,
109
+ rpc: "https://avalanche.drpc.org",
110
+ routerAddress: "0x60aE616a2155Ee3d9A68541Ba4544862310933d4",
111
+ wrapped: "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7"
112
+ },
113
+ ARBITRUM: {
114
+ ...ethDefaults,
115
+ name: "Arbitrum One",
116
+ shortName: "Arbitrum",
117
+ slither: "arbi",
118
+ symbol: "ETH",
119
+ makeExplorerTxLink: (address) => `https://arbiscan.io/tx/${address}`,
120
+ makeExplorerAddressLink: (address) => `https://arbiscan.io/address/${address}`,
121
+ makeExplorerLink: (address) => `https://arbiscan.io/token/${address}`,
122
+ listed: true,
123
+ chainId: 42161,
124
+ rpc: "https://arb1.arbitrum.io/rpc",
125
+ routerAddress: "0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506",
126
+ lockerFactory: "0x269D4d211CBc9845B006128717eE51b0D6524955",
127
+ dividentTracker: "0x4EF50A0E87481CAe04927eDA96231CDA5891FD4F",
128
+ wrapped: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1"
129
+ },
130
+ CRO: {
131
+ ...ethDefaults,
132
+ name: "Cronos",
133
+ shortName: "Cronos",
134
+ symbol: "CRO",
135
+ makeExplorerTxLink: (address) => `https://cronoscan.com/tx/${address}`,
136
+ makeExplorerAddressLink: (address) => `https://cronoscan.com/address/${address}`,
137
+ makeExplorerLink: (address) => `https://cronoscan.com/token/${address}`,
138
+ lockerFactory: "0x269D4d211CBc9845B006128717eE51b0D6524955",
139
+ listed: true,
140
+ chainId: 25,
141
+ rpc: "https://evm.cronos.org",
142
+ routerAddress: "0xcd7d16fB918511BF7269eC4f48d61D79Fb26f918",
143
+ wrapped: "0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23"
144
+ },
145
+ DOGE: {
146
+ ...ethDefaults,
147
+ name: "Doge",
148
+ shortName: "Doge",
149
+ symbol: "DOGE",
150
+ makeExplorerTxLink: (address) => `https://explorer.dogechain.dog/tx/${address}`,
151
+ makeExplorerAddressLink: (address) => `https://explorer.dogechain.dog/address/${address}`,
152
+ makeExplorerLink: (address) => `https://explorer.dogechain.dog/token/${address}`,
153
+ listed: true,
154
+ chainId: 2e3,
155
+ rpc: "https://rpc01-sg.dogechain.dog",
156
+ routerAddress: "0x6258c967337D3faF0C2ba3ADAe5656bA95419d5f",
157
+ wrapped: "0xB7ddC6414bf4F5515b52D8BdD69973Ae205ff101"
158
+ },
159
+ ONE: {
160
+ ...ethDefaults,
161
+ name: "Harmony One",
162
+ shortName: "One",
163
+ symbol: "ONE",
164
+ makeExplorerTxLink: (address) => `https://explorer.harmony.one/tx/${address}`,
165
+ makeExplorerAddressLink: (address) => `https://explorer.harmony.one/address/${address}`,
166
+ makeExplorerLink: (address) => `https://explorer.harmony.one/token/${address}`,
167
+ lockerFactory: "0x097f5E933306ad0EbB1c0027B223a3dd153520BE",
168
+ listed: true,
169
+ chainId: 16666e5,
170
+ rpc: "https://api.harmony.one",
171
+ wrapped: "0xcf664087a5bb0237a0bad6742852ec6c8d69a27a"
172
+ },
173
+ FTM: {
174
+ ...ethDefaults,
175
+ name: "Fantom",
176
+ shortName: "Fantom",
177
+ slither: "ftm",
178
+ symbol: "FTM",
179
+ makeExplorerTxLink: (address) => `https://ftmscan.com/tx/${address}`,
180
+ makeExplorerAddressLink: (address) => `https://ftmscan.com/address/${address}`,
181
+ makeExplorerLink: (address) => `https://ftmscan.com/token/${address}`,
182
+ lockerFactory: "0x269D4d211CBc9845B006128717eE51b0D6524955",
183
+ listed: true,
184
+ chainId: 250,
185
+ rpc: "https://rpc.ankr.com/fantom",
186
+ routerAddress: "0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506",
187
+ wrapped: "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83"
188
+ },
189
+ BLAST: {
190
+ ...ethDefaults,
191
+ name: "Blast",
192
+ shortName: "Blast",
193
+ symbol: "BLAST",
194
+ makeExplorerTxLink: (address) => `https://blastscan.io/tx/${address}`,
195
+ makeExplorerAddressLink: (address) => `https://blastscan.io/address/${address}`,
196
+ makeExplorerLink: (address) => `https://blastscan.io/token/${address}`,
197
+ listed: true,
198
+ rpc: "https://rpc.blast.io",
199
+ chainId: 81457,
200
+ routerAddress: "0xaE32a2f7fF8f3eB9858602F0663391511e4cb9C0",
201
+ onChainAggregatorContract: "0xd6445e06226f0178FE6e4077C26F3Df926FaA656",
202
+ wrapped: "0x4300000000000000000000000000000000000004"
203
+ },
204
+ TELOS: {
205
+ ...ethDefaults,
206
+ name: "Telos",
207
+ shortName: "Telos",
208
+ symbol: "TLOS",
209
+ makeExplorerTxLink: (address) => `https://www.teloscan.io/tx/${address}`,
210
+ makeExplorerAddressLink: (address) => `https://www.teloscan.io/address/${address}`,
211
+ makeExplorerLink: (address) => `https://www.teloscan.io/address/${address}`,
212
+ lockerFactory: "0x269D4d211CBc9845B006128717eE51b0D6524955",
213
+ listed: true,
214
+ chainId: 40,
215
+ rpc: "https://mainnet.telos.net/evm",
216
+ routerAddress: "0xb9667Cf9A495A123b0C43B924f6c2244f42817BE",
217
+ wrapped: "0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E"
218
+ },
219
+ KCC: {
220
+ ...ethDefaults,
221
+ name: "KuCoin",
222
+ shortName: "KuCoin",
223
+ symbol: "KCS",
224
+ makeExplorerTxLink: (address) => `https://explorer.kcc.io/en/tx/${address}`,
225
+ makeExplorerAddressLink: (address) => `https://explorer.kcc.io/en/address/${address}`,
226
+ makeExplorerLink: (address) => `https://explorer.kcc.io/en/token/${address}`,
227
+ listed: true,
228
+ rpc: "https://rpc-mainnet.kcc.network",
229
+ chainId: 321,
230
+ routerAddress: "0xa58350d6dee8441aa42754346860e3545cc83cda",
231
+ wrapped: "0x4446Fc4eb47f2f6586f9fAAb68B3498F86C07521"
232
+ },
233
+ KLAY: {
234
+ ...ethDefaults,
235
+ name: "Klaytn",
236
+ shortName: "Klaytn",
237
+ symbol: "KLAY",
238
+ makeExplorerTxLink: (address) => `https://scope.klaytn.com/tx/${address}`,
239
+ makeExplorerAddressLink: (address) => `https://scope.klaytn.com/account/${address}`,
240
+ makeExplorerLink: (address) => `https://scope.klaytn.com/token/${address}`,
241
+ listed: true,
242
+ rpc: "https://public-en-cypress.klaytn.net",
243
+ chainId: 8217,
244
+ routerAddress: "0xe0fbb27d0e7f3a397a67a9d4864d4f4dd7cf8cb9"
245
+ },
246
+ TRX: {
247
+ name: "Tron",
248
+ shortName: "Tron",
249
+ symbol: "TRX",
250
+ makeExplorerTxLink: (address) => `https://tronscan.org/#/tx/${address}`,
251
+ makeExplorerAddressLink: (address) => `https://tronscan.org/#/address/${address}`,
252
+ makeExplorerLink: (address) => `https://tronscan.org/#/transaction/${address}`,
253
+ placeholder: placeholders.TRX,
254
+ isDeadAddress: () => false,
255
+ normalizeAddress: caseSensitive,
256
+ validator: (value) => {
257
+ if (!value.startsWith("T")) return "TRX address should start with T";
258
+ if (!/^T[a-zA-Z0-9]{33}$/.test(value)) return `TRX address should be like ${placeholders.TRX}`;
259
+ },
260
+ listed: true
261
+ },
262
+ XRP: {
263
+ name: "XRP",
264
+ shortName: "XRP",
265
+ symbol: "XRP",
266
+ makeExplorerTxLink: (address) => `https://xrpscan.com/tx/${address}`,
267
+ makeExplorerAddressLink: (address) => `https://xrpscan.com/account/${address}`,
268
+ makeExplorerLink: (address) => `https://xrpscan.com/account/${address}`,
269
+ placeholder: placeholders.XRP,
270
+ isDeadAddress: () => false,
271
+ normalizeAddress: caseSensitive,
272
+ validator: (value) => {
273
+ if (!value.startsWith("r")) return "XRP address should start with r";
274
+ if (!/^r[a-zA-Z0-9]{25,35}$/.test(value)) return `XRP address should be like ${placeholders.XRP}`;
275
+ },
276
+ listed: true
277
+ },
278
+ SOL: {
279
+ name: "Solana",
280
+ shortName: "Solana",
281
+ symbol: "SOL",
282
+ makeExplorerTxLink: (address) => `https://solscan.io/tx/${address}`,
283
+ makeExplorerAddressLink: (address) => `https://solscan.io/address/${address}`,
284
+ makeExplorerLink: (address) => `https://solscan.io/token/${address}`,
285
+ placeholder: placeholders.SOL,
286
+ normalizeAddress: caseSensitive,
287
+ isDeadAddress: isDeadAddressSol,
288
+ validator: solValidator,
289
+ listed: true
290
+ },
291
+ AME: {
292
+ ...ethDefaults,
293
+ name: "AME Chain",
294
+ shortName: "Ame",
295
+ symbol: "AME",
296
+ makeExplorerTxLink: (address) => `https://amescan.io/tx/${address}`,
297
+ makeExplorerAddressLink: (address) => `https://amescan.io/address/${address}`,
298
+ makeExplorerLink: (address) => `https://amescan.io/token/${address}`,
299
+ placeholder: placeholders.ETH,
300
+ validator: ethValidator,
301
+ listed: true,
302
+ chainId: 180,
303
+ rpc: "https://node1.amechain.io/",
304
+ wrapped: "0xCc9bD40124EfedF6F198B8b5b50697dC635FaaC4"
305
+ },
306
+ VLX: {
307
+ ...ethDefaults,
308
+ name: "Velas",
309
+ shortName: "Velas",
310
+ symbol: "VLX",
311
+ makeExplorerTxLink: (address) => `https://evmexplorer.velas.com/tx/${address}`,
312
+ makeExplorerAddressLink: (address) => `https://evmexplorer.velas.com/address/${address}`,
313
+ makeExplorerLink: (address) => `https://evmexplorer.velas.com/token/${address}`,
314
+ listed: true,
315
+ chainId: 106,
316
+ rpc: "https://explorer.velas.com/rpc",
317
+ routerAddress: "0x5896bfbdc09fcc9deda4c39f27010b91510eecba",
318
+ wrapped: "0xc579d1f3cf86749e05cd06f7ade17856c2ce3126"
319
+ },
320
+ HT: {
321
+ ...ethDefaults,
322
+ name: "Heco Chain",
323
+ shortName: "Heco",
324
+ symbol: "HT",
325
+ makeExplorerTxLink: (address) => `https://hecoinfo.com/tx/${address}`,
326
+ makeExplorerAddressLink: (address) => `https://hecoinfo.com/address/${address}`,
327
+ makeExplorerLink: (address) => `https://hecoinfo.com/token/${address}`,
328
+ listed: true,
329
+ chainId: 128,
330
+ rpc: "https://http-mainnet-node.huobichain.com",
331
+ routerAddress: "0x0f1c2d1fdd202768a4bda7a38eb0377bd58d278e",
332
+ wrapped: "0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f"
333
+ },
334
+ ROSE: {
335
+ ...ethDefaults,
336
+ name: "Oasis Network",
337
+ shortName: "Oasis",
338
+ symbol: "ROSE",
339
+ makeExplorerTxLink: (address) => `https://explorer.emerald.oasis.dev/tx/${address}`,
340
+ makeExplorerAddressLink: (address) => `https://explorer.emerald.oasis.dev/address/${address}`,
341
+ makeExplorerLink: (address) => `https://explorer.emerald.oasis.dev/token/${address}`,
342
+ placeholder: placeholders.ETH,
343
+ validator: () => false,
344
+ listed: true,
345
+ chainId: 42262,
346
+ rpc: "https://emerald.oasis.dev",
347
+ routerAddress: "0x612a405AECBFBd8049333a91141f712Dae37c172",
348
+ wrapped: "0x21C718C22D52d0F3a789b752D4c2fD5908a8A733"
349
+ },
350
+ MOVR: {
351
+ ...ethDefaults,
352
+ name: "Moonriver",
353
+ shortName: "Moonriver",
354
+ symbol: "MOVR",
355
+ makeExplorerTxLink: (address) => `https://moonriver.moonscan.io/tx/${address}`,
356
+ makeExplorerAddressLink: (address) => `https://moonriver.moonscan.io/address/${address}`,
357
+ makeExplorerLink: (address) => `https://moonriver.moonscan.io/token/${address}`,
358
+ listed: true,
359
+ chainId: 1285,
360
+ rpc: "https://rpc.api.moonriver.moonbeam.network",
361
+ routerAddress: "0xAA30eF758139ae4a7f798112902Bf6d65612045f",
362
+ wrapped: "0x98878b06940ae243284ca214f92bb71a2b032b8a"
363
+ },
364
+ GLMR: {
365
+ ...ethDefaults,
366
+ name: "Moonbeam",
367
+ shortName: "Moonbeam",
368
+ symbol: "GLMR",
369
+ makeExplorerTxLink: (address) => `https://moonscan.io/tx/${address}`,
370
+ makeExplorerAddressLink: (address) => `https://moonscan.io/address/${address}`,
371
+ makeExplorerLink: (address) => `https://moonscan.io/token/${address}`,
372
+ listed: true,
373
+ chainId: 1284,
374
+ rpc: "https://rpc.api.moonbeam.network",
375
+ routerAddress: "0x96b244391D98B62D19aE89b1A4dCcf0fc56970C7",
376
+ wrapped: "0xacc15dc74880c9944775448304b263d191c6077f"
377
+ },
378
+ CELO: {
379
+ ...ethDefaults,
380
+ name: "Celo",
381
+ shortName: "Celo",
382
+ symbol: "CELO",
383
+ makeExplorerTxLink: (address) => `https://explorer.celo.org/tx/${address}`,
384
+ makeExplorerAddressLink: (address) => `https://explorer.celo.org/address/${address}`,
385
+ makeExplorerLink: (address) => `https://explorer.celo.org/token/${address}`,
386
+ listed: true,
387
+ chainId: 42220,
388
+ rpc: "https://forno.celo.org",
389
+ routerAddress: "0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121",
390
+ wrapped: "0x471EcE3750Da237f93B8E339c536989b8978a438"
391
+ },
392
+ ETC: {
393
+ ...ethDefaults,
394
+ name: "Ethereum Classic",
395
+ shortName: "ETC",
396
+ symbol: "ETC",
397
+ makeExplorerTxLink: (address) => `https://blockscout.com/etc/mainnet/tx/${address}`,
398
+ makeExplorerAddressLink: (address) => `https://blockscout.com/etc/mainnet/address/${address}`,
399
+ makeExplorerLink: (address) => `https://blockscout.com/etc/mainnet/token/${address}`,
400
+ listed: true,
401
+ chainId: 61,
402
+ rpc: "https://etc.rivet.link",
403
+ routerAddress: "0x79Bf07555C34e68C4Ae93642d1007D7f908d60F5",
404
+ wrapped: "0x82A618305706B14e7bcf2592D4B9324A366b6dAd"
405
+ },
406
+ XDAI: {
407
+ ...ethDefaults,
408
+ name: "Gnosis",
409
+ shortName: "Gnosis",
410
+ symbol: "xDAI",
411
+ makeExplorerTxLink: (address) => `https://blockscout.com/xdai/mainnet/tx/${address}`,
412
+ makeExplorerAddressLink: (address) => `https://blockscout.com/xdai/mainnet/address/${address}`,
413
+ makeExplorerLink: (address) => `https://blockscout.com/xdai/mainnet/token/${address}`,
414
+ listed: true,
415
+ chainId: 100,
416
+ rpc: "https://rpc.gnosischain.com",
417
+ routerAddress: "0xE43e60736b1cb4a75ad25240E2f9a62Bff65c0C0",
418
+ wrapped: "0xe91d153e0b41518a2ce8dd3d7944fa863463a97d"
419
+ },
420
+ ROPSTEN: {
421
+ ...ethDefaults,
422
+ name: "Ropsten Ethereum Testnet",
423
+ shortName: "Ropsten",
424
+ slither: "ropsten",
425
+ symbol: "ETH",
426
+ makeExplorerAddressLink: (address) => `https://ropsten.etherscan.io/address/${address}`,
427
+ makeExplorerLink: (address) => `https://ropsten.etherscan.io/token/${address}`,
428
+ makeExplorerTxLink: (address) => `https://ropsten.etherscan.io/tx/${address}`,
429
+ listed: false,
430
+ chainId: 3,
431
+ rpc: "https://rpc.ankr.com/eth_ropsten",
432
+ deprecated: true
433
+ },
434
+ RINKEBY: {
435
+ ...ethDefaults,
436
+ name: "Rinkeby Ethereum Testnet",
437
+ shortName: "Rinkeby",
438
+ slither: "rinkeby",
439
+ symbol: "ETH",
440
+ lockerFactory: "0x269D4d211CBc9845B006128717eE51b0D6524955",
441
+ makeExplorerAddressLink: (address) => `https://rinkeby.etherscan.io/address/${address}`,
442
+ makeExplorerLink: (address) => `https://rinkeby.etherscan.io/token/${address}`,
443
+ makeExplorerTxLink: (address) => `https://rinkeby.etherscan.io/tx/${address}`,
444
+ listed: false,
445
+ chainId: 4,
446
+ rpc: "https://rpc.ankr.com/eth_rinkeby",
447
+ deprecated: true
448
+ },
449
+ OPTIMISM: {
450
+ ...ethDefaults,
451
+ name: "Optimism",
452
+ shortName: "Optimism",
453
+ symbol: "ETH",
454
+ slither: "optim",
455
+ makeExplorerTxLink: (address) => `https://optimistic.etherscan.io/tx/${address}`,
456
+ makeExplorerAddressLink: (address) => `https://optimistic.etherscan.io/address/${address}`,
457
+ makeExplorerLink: (address) => `https://optimistic.etherscan.io/token/${address}`,
458
+ listed: true,
459
+ chainId: 10,
460
+ rpc: "https://mainnet.optimism.io",
461
+ wrapped: "0x4200000000000000000000000000000000000006"
462
+ },
463
+ BRISE: {
464
+ ...ethDefaults,
465
+ name: "Brise Chain",
466
+ shortName: "Brise",
467
+ symbol: "BRISE",
468
+ makeExplorerAddressLink: (address) => `https://brisescan.com/address/${address}`,
469
+ makeExplorerLink: (address) => `https://brisescan.com/token/${address}`,
470
+ makeExplorerTxLink: (address) => `https://brisescan.com/tx/${address}`,
471
+ listed: true,
472
+ chainId: 32520,
473
+ rpc: "https://mainnet-rpc.brisescan.com",
474
+ routerAddress: "0xBb5e1777A331ED93E07cF043363e48d320eb96c4",
475
+ wrapped: "0x0eb9036cbE0f052386f36170c6b07eF0a0E3f710"
476
+ },
477
+ LOOP: {
478
+ ...ethDefaults,
479
+ name: "Loop Network",
480
+ shortName: "LOOP",
481
+ symbol: "LOOP",
482
+ makeExplorerAddressLink: (address) => `https://explorer.mainnetloop.com/address/${address}`,
483
+ makeExplorerLink: (address) => `https://explorer.mainnetloop.com/token/${address}`,
484
+ makeExplorerTxLink: (address) => `https://explorer.mainnetloop.com/tx/${address}`,
485
+ listed: true,
486
+ chainId: 15551,
487
+ rpc: "https://api.mainnetloop.com"
488
+ },
489
+ ZKSYNC: {
490
+ ...ethDefaults,
491
+ name: "zkSync Era",
492
+ shortName: "zkSync",
493
+ symbol: "ETH",
494
+ makeExplorerAddressLink: (address) => `https://explorer.zksync.io/address/${address}`,
495
+ makeExplorerLink: (address) => `https://explorer.zksync.io/address/${address}`,
496
+ makeExplorerTxLink: (address) => `https://explorer.zksync.io/tx/${address}`,
497
+ chainId: 324,
498
+ listed: true,
499
+ rpc: "https://mainnet.era.zksync.io",
500
+ wrapped: "0x000000000000000000000000000000000000800A"
501
+ },
502
+ BASE: {
503
+ ...ethDefaults,
504
+ name: "Base Mainnet",
505
+ shortName: "Base",
506
+ symbol: "ETH",
507
+ makeExplorerAddressLink: (address) => `https://basescan.org/address/${address}`,
508
+ makeExplorerLink: (address) => `https://basescan.org/token/${address}`,
509
+ makeExplorerTxLink: (address) => `https://basescan.org/tx/${address}`,
510
+ chainId: 8453,
511
+ listed: true,
512
+ rpc: "https://mainnet.base.org",
513
+ routerAddress: "0xd55a4d54f39baf26da2f3ee7be9a6388c15f9831",
514
+ onChainAggregatorContract: "0x25FE1E520fBA14e7B80307de05A37C5B72630B64",
515
+ wrapped: "0x4200000000000000000000000000000000000006"
516
+ },
517
+ AREON: {
518
+ ...ethDefaults,
519
+ name: "Areon Mainnet",
520
+ shortName: "Areon",
521
+ symbol: "AREA",
522
+ makeExplorerAddressLink: (address) => `https://areonscan.com/contracts/${address}`,
523
+ makeExplorerLink: (address) => `https://areonscan.com/tokens/${address}`,
524
+ makeExplorerTxLink: (address) => `https://areonscan.com/transactions/${address}`,
525
+ chainId: 463,
526
+ listed: true,
527
+ rpc: "https://mainnet-rpc.areon.network",
528
+ routerAddress: "0xda0f518d521e0de83fadc8500c2d21b6a6c39bf9",
529
+ wrapped: "0x1d1bc800e71576a59f9ef88bb679fa13c2e10abf"
530
+ },
531
+ LINEA: {
532
+ ...ethDefaults,
533
+ name: "Linea Mainnet",
534
+ shortName: "Linea",
535
+ symbol: "ETH",
536
+ makeExplorerAddressLink: (address) => `https://lineascan.build/address/${address}`,
537
+ makeExplorerLink: (address) => `https://lineascan.build/token/${address}`,
538
+ makeExplorerTxLink: (address) => `https://lineascan.build/tx/${address}`,
539
+ chainId: 59144,
540
+ listed: true,
541
+ rpc: "https://rpc.linea.build",
542
+ routerAddress: "0x610D2f07b7EdC67565160F587F37636194C34E74",
543
+ wrapped: "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f"
544
+ },
545
+ MANTLE: {
546
+ ...ethDefaults,
547
+ name: "Mantle Mainnet",
548
+ shortName: "Mantle",
549
+ symbol: "MNT",
550
+ makeExplorerAddressLink: (address) => `https://mantlescan.xyz/address/${address}`,
551
+ makeExplorerLink: (address) => `https://mantlescan.xyz/token/${address}`,
552
+ makeExplorerTxLink: (address) => `https://mantlescan.xyz/tx/${address}`,
553
+ chainId: 5e3,
554
+ listed: true,
555
+ rpc: "https://rpc.mantle.xyz",
556
+ wrapped: "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000"
557
+ },
558
+ CORE: {
559
+ ...ethDefaults,
560
+ name: "Core Blockchain",
561
+ shortName: "Core",
562
+ symbol: "CORE",
563
+ makeExplorerAddressLink: (address) => `https://scan.coredao.org/address/${address}`,
564
+ makeExplorerLink: (address) => `https://scan.coredao.org/token/${address}`,
565
+ makeExplorerTxLink: (address) => `https://scan.coredao.org/tx/${address}`,
566
+ chainId: 1116,
567
+ listed: true,
568
+ rpc: "https://rpc.coredao.org/",
569
+ routerAddress: "0x74f56a7560ef0c72cf6d677e3f5f51c2d579ff15",
570
+ wrapped: "0x191E94fa59739e188dcE837F7f6978d84727AD01"
571
+ },
572
+ FUSE: {
573
+ ...ethDefaults,
574
+ name: "Fuse Network",
575
+ shortName: "Fuse",
576
+ symbol: "FUSE",
577
+ makeExplorerAddressLink: (address) => `https://explorer.fuse.io/address/${address}`,
578
+ makeExplorerLink: (address) => `https://explorer.fuse.io/token/${address}`,
579
+ makeExplorerTxLink: (address) => `https://explorer.fuse.io/tx/${address}`,
580
+ chainId: 122,
581
+ listed: true,
582
+ rpc: "https://rpc.fuse.io/",
583
+ routerAddress: "0xE3F85aAd0c8DD7337427B9dF5d0fB741d65EEEB5",
584
+ wrapped: "0x0BE9e53fd7EDaC9F859882AfdDa116645287C629"
585
+ },
586
+ SCROLL: {
587
+ ...ethDefaults,
588
+ name: "Scroll",
589
+ shortName: "Scroll",
590
+ symbol: "ETH",
591
+ makeExplorerAddressLink: (address) => `https://scrollscan.com/address/${address}`,
592
+ makeExplorerLink: (address) => `https://scrollscan.com/token/${address}`,
593
+ makeExplorerTxLink: (address) => `https://scrollscan.com/tx/${address}`,
594
+ chainId: 534352,
595
+ listed: true,
596
+ rpc: "https://rpc.scroll.io/",
597
+ routerAddress: "0xAAA45c8F5ef92a000a121d102F4e89278a711Faa",
598
+ wrapped: "0x5300000000000000000000000000000000000004"
599
+ },
600
+ TAIKO: {
601
+ ...ethDefaults,
602
+ name: "Taiko Mainnet",
603
+ shortName: "Taiko",
604
+ symbol: "ETH",
605
+ makeExplorerAddressLink: (address) => `https://taikoscan.io/address/${address}`,
606
+ makeExplorerLink: (address) => `https://taikoscan.io/token/${address}`,
607
+ makeExplorerTxLink: (address) => `https://taikoscan.io/tx/${address}`,
608
+ chainId: 167e3,
609
+ listed: true,
610
+ rpc: "https://rpc.mainnet.taiko.xyz",
611
+ wrapped: "0xA51894664A773981C6C112C43ce576f315d5b1B6"
612
+ },
613
+ WANCHAIN: {
614
+ ...ethDefaults,
615
+ name: "Wanchain",
616
+ shortName: "Wanchain",
617
+ symbol: "WAN",
618
+ makeExplorerAddressLink: (address) => `https://wanscan.org/address/${address}`,
619
+ makeExplorerLink: (address) => `https://wanscan.org/token/${address}`,
620
+ makeExplorerTxLink: (address) => `https://wanscan.org/tx/${address}`,
621
+ chainId: 888,
622
+ listed: true,
623
+ rpc: "https://gwan2-ssl.wandevs.org",
624
+ routerAddress: "0xeA300406FE2eED9CD2bF5c47D01BECa8Ad294Ec1",
625
+ wrapped: "0xdabD997aE5E4799BE47d6E69D9431615CBa28f48"
626
+ },
627
+ OP_BNB: {
628
+ ...ethDefaults,
629
+ name: "opBNB Mainnet",
630
+ shortName: "opBNB",
631
+ symbol: "BNB",
632
+ makeExplorerAddressLink: (address) => `https://opbnb.bscscan.com/address/${address}`,
633
+ makeExplorerLink: (address) => `https://opbnb.bscscan.com/token/${address}`,
634
+ makeExplorerTxLink: (address) => `https://opbnb.bscscan.com/tx/${address}`,
635
+ chainId: 204,
636
+ listed: true,
637
+ rpc: "https://opbnb-mainnet-rpc.bnbchain.org",
638
+ routerAddress: "0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb",
639
+ wrapped: "0x4200000000000000000000000000000000000006"
640
+ },
641
+ XDC: {
642
+ ...ethDefaults,
643
+ name: "XDC",
644
+ shortName: "XDC",
645
+ symbol: "XDC",
646
+ makeExplorerAddressLink: (address) => `https://xdcscan.com/address/${address}`,
647
+ makeExplorerLink: (address) => `https://xdcscan.com/token/${address}`,
648
+ makeExplorerTxLink: (address) => `https://xdcscan.com/tx/${address}`,
649
+ chainId: 50,
650
+ listed: true,
651
+ rpc: "https://erpc.xinfin.network",
652
+ wrapped: "0x951857744785E80e2De051c32EE7b25f9c458C42"
653
+ },
654
+ TON: {
655
+ name: "TON",
656
+ shortName: "TON",
657
+ symbol: "TON",
658
+ makeExplorerAddressLink: (address) => `https://tonscan.org/address/${address}`,
659
+ makeExplorerLink: (address) => `https://tonscan.org/jetton/${address}`,
660
+ makeExplorerTxLink: (address) => `https://tonscan.org/tx/${address}`,
661
+ placeholder: placeholders.TON,
662
+ isDeadAddress: (address) => address === "UQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJKZ",
663
+ normalizeAddress: caseSensitive,
664
+ validator: (value) => {
665
+ if (!value.startsWith("UQ") && !value.startsWith("EQ")) return "TON address should start with UQ or EQ";
666
+ if (!/^(UQ|EQ)[A-Za-z0-9_-]{46}$/.test(value)) return `TON address should be like ${placeholders.TON}`;
667
+ },
668
+ listed: true
669
+ },
670
+ X_LAYER: {
671
+ ...ethDefaults,
672
+ name: "X Layer",
673
+ shortName: "X Layer",
674
+ symbol: "OKB",
675
+ makeExplorerAddressLink: (address) => `https://www.okx.com/web3/explorer/xlayer/address/${address}`,
676
+ makeExplorerLink: (address) => `https://www.okx.com/web3/explorer/xlayer/token/${address}`,
677
+ makeExplorerTxLink: (address) => `https://www.okx.com/web3/explorer/xlayer/tx/${address}`,
678
+ chainId: 196,
679
+ rpc: "https://rpc.xlayer.tech",
680
+ listed: true,
681
+ routerAddress: "0x881fB2f98c13d521009464e7D1CBf16E1b394e8E",
682
+ wrapped: "0xe538905cf8410324e03A5A23C1c177a474D59b2b"
683
+ },
684
+ ROBINHOOD: {
685
+ ...ethDefaults,
686
+ name: "Robinhood",
687
+ shortName: "Robinhood",
688
+ symbol: "ETH",
689
+ makeExplorerAddressLink: (address) => `https://robinhoodchain.blockscout.com/address/${address}`,
690
+ makeExplorerLink: (address) => `https://robinhoodchain.blockscout.com/token/${address}`,
691
+ makeExplorerTxLink: (address) => `https://robinhoodchain.blockscout.com/tx/${address}`,
692
+ chainId: 4663,
693
+ rpc: "https://rpc.mainnet.chain.robinhood.com",
694
+ listed: true,
695
+ routerAddress: "0x89e5db8b5aa49aa85ac63f691524311aeb649eba",
696
+ wrapped: "0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"
697
+ },
698
+ SEPOLIA: {
699
+ ...ethDefaults,
700
+ name: "Sepolia Ethereum Testnet",
701
+ shortName: "Sepolia",
702
+ symbol: "SEP",
703
+ makeExplorerAddressLink: (address) => `https://sepolia.etherscan.io/address/${address}`,
704
+ makeExplorerLink: (address) => `https://sepolia.etherscan.io/token/${address}`,
705
+ makeExplorerTxLink: (address) => `https://sepolia.etherscan.io/tx/${address}`,
706
+ lockerFactory: "0x269D4d211CBc9845B006128717eE51b0D6524955",
707
+ onChainAggregatorContract: "0x71cbBE40CbEBd3026b0bF33Ae9E4728b312be713",
708
+ rpc: "https://sepolia.drpc.org",
709
+ chainId: 11155111,
710
+ listed: false,
711
+ routerAddress: "0xc532a74256d3db42d0bf7a0400fefdbad7694008",
712
+ wrapped: "0x7b79995e5f793a07bc00c21412e50ecae098e7f9"
713
+ },
714
+ GOERLI: {
715
+ ...ethDefaults,
716
+ name: "Goerli Ethereum Testnet",
717
+ shortName: "Goerli",
718
+ slither: "goerli",
719
+ symbol: "ETH",
720
+ makeExplorerTxLink: (address) => `https://goerli.etherscan.io/tx/${address}`,
721
+ makeExplorerAddressLink: (address) => `https://goerli.etherscan.io/address/${address}`,
722
+ makeExplorerLink: (address) => `https://goerli.etherscan.io/token/${address}`,
723
+ lockerFactory: "0x269D4d211CBc9845B006128717eE51b0D6524955",
724
+ listed: false,
725
+ chainId: 5,
726
+ rpc: "https://eth-goerli.public.blastapi.io",
727
+ routerAddress: "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",
728
+ dividentTracker: "0x3401a9EfC55714cdE172B661f40FA398BFE16732",
729
+ wrapped: "0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6"
730
+ },
731
+ BSC_TESTNET: {
732
+ ...ethDefaults,
733
+ name: "Binance Smart Chain Testnet",
734
+ shortName: "BSC Testnet",
735
+ slither: "testnet.bsc",
736
+ symbol: "BNB",
737
+ makeExplorerTxLink: (address) => `https://testnet.bscscan.com/tx/${address}`,
738
+ makeExplorerAddressLink: (address) => `https://testnet.bscscan.com/address/${address}`,
739
+ makeExplorerLink: (address) => `https://testnet.bscscan.com/token/${address}`,
740
+ feesCheckerContract: "0xA127ddf1747adcbE45a15dcadF69a844492424a6",
741
+ lockerFactory: "0x097f5E933306ad0EbB1c0027B223a3dd153520BE",
742
+ onChainAggregatorContract: "0x10C0665E7c22996AdCE01bEa639acbE1C7C54091",
743
+ listed: false,
744
+ chainId: 97,
745
+ rpc: "https://bsc-testnet.public.blastapi.io/",
746
+ routerAddress: "0xD99D1c33F9fC3444f8101754aBC46c52416550D1",
747
+ dividentTracker: "0xcF534A4CF13565F964c515877A08711e21e7F19D",
748
+ wrapped: "0xae13d989dac2f0debff460ac112a837c89baa7cd"
749
+ },
750
+ POLYGON_MUMBAI: {
751
+ ...ethDefaults,
752
+ name: "Polygon Mumbai",
753
+ shortName: "Polygon Mumbai",
754
+ symbol: "MATIC",
755
+ slither: "mumbai",
756
+ makeExplorerAddressLink: (address) => `https://mumbai.polygonscan.com/address/${address}`,
757
+ makeExplorerLink: (address) => `https://mumbai.polygonscan.com/token/${address}`,
758
+ makeExplorerTxLink: (address) => `https://mumbai.polygonscan.com/tx/${address}`,
759
+ lockerFactory: "0x269D4d211CBc9845B006128717eE51b0D6524955",
760
+ listed: false,
761
+ chainId: 80001,
762
+ rpc: "https://polygon-mumbai-infura.wallet.coinbase.com",
763
+ routerAddress: "0xb71c52BA5E0690A7cE3A0214391F4c03F5cbFB0d",
764
+ wrapped: "0x734aef51d427b2f745210ec4bf1062abd48eceb6"
765
+ },
766
+ AVAX_TESTNET: {
767
+ ...ethDefaults,
768
+ name: "Avax Testnet",
769
+ shortName: "Avax Testnet",
770
+ slither: "testnet.avax",
771
+ symbol: "AVAX",
772
+ makeExplorerTxLink: (address) => `https://testnet.snowtrace.io/tx/${address}`,
773
+ makeExplorerAddressLink: (address) => `https://testnet.snowtrace.io/address/${address}`,
774
+ makeExplorerLink: (address) => `https://testnet.snowtrace.io/token/${address}`,
775
+ listed: false,
776
+ chainId: 43113,
777
+ rpc: "https://api.avax-test.network/ext/bc/C/rpc",
778
+ routerAddress: "0x688d21b0b8dc35971af58cff1f7bf65639937860",
779
+ wrapped: "0x1d308089a2d1ced3f1ce36b1fcaf815b07217be3"
780
+ },
781
+ OPTIMISTIC_GOERLI: {
782
+ ...ethDefaults,
783
+ name: "Optimistic Görli",
784
+ shortName: "Optimistic Görli",
785
+ symbol: "ETH",
786
+ makeExplorerAddressLink: (address) => `https://goerli-optimism.etherscan.io/address/${address}`,
787
+ makeExplorerLink: (address) => `https://goerli-optimism.etherscan.io/token/${address}`,
788
+ makeExplorerTxLink: (address) => `https://goerli-optimism.etherscan.io/tx/${address}`,
789
+ listed: false,
790
+ chainId: 420,
791
+ rpc: "https://goerli.optimism.io/",
792
+ wrapped: "0x60a233b9b94c67e94e0a269429fb40004d4ba494"
793
+ },
794
+ ARBITRUM_GOERLI: {
795
+ ...ethDefaults,
796
+ name: "Arbitrum Goerli",
797
+ shortName: "Arbitrum Goerli",
798
+ slither: "testnet.arbi",
799
+ symbol: "ETH",
800
+ makeExplorerAddressLink: (address) => `https://goerli.arbiscan.io/address/${address}`,
801
+ makeExplorerLink: (address) => `https://goerli.arbiscan.io/token/${address}`,
802
+ makeExplorerTxLink: (address) => `https://goerli.arbiscan.io/tx/${address}`,
803
+ listed: false,
804
+ chainId: 421613,
805
+ rpc: "https://goerli-rollup.arbitrum.io/rpc",
806
+ wrapped: "0xee01c0cd76354c383b8c7b4e65ea88d00b06f36f"
807
+ },
808
+ FANTOM_TESTNET: {
809
+ ...ethDefaults,
810
+ name: "Fantom Testnet",
811
+ shortName: "Fantom Testnet",
812
+ symbol: "FTM",
813
+ makeExplorerAddressLink: (address) => `https://testnet.ftmscan.com/address/${address}`,
814
+ makeExplorerLink: (address) => `https://testnet.ftmscan.com/token/${address}`,
815
+ makeExplorerTxLink: (address) => `https://testnet.ftmscan.com/tx/${address}`,
816
+ listed: false,
817
+ chainId: 4002,
818
+ rpc: "https://rpc.ankr.com/fantom_testnet",
819
+ routerAddress: "0xa6AD18C2aC47803E193F75c3677b14BF19B94883",
820
+ wrapped: "0x07b9c47452c41e8e00f98ac4c075f5c443281d2a"
821
+ },
822
+ ZKSYNC_TESTNET: {
823
+ ...ethDefaults,
824
+ name: "zkSync Era Testnet",
825
+ shortName: "zkSync Testnet",
826
+ symbol: "ETH",
827
+ makeExplorerAddressLink: (address) => `https://goerli.explorer.zksync.io/address/${address}`,
828
+ makeExplorerLink: (address) => `https://goerli.explorer.zksync.io/address/${address}`,
829
+ makeExplorerTxLink: (address) => `https://goerli.explorer.zksync.io/tx/${address}`,
830
+ chainId: 280,
831
+ listed: false,
832
+ rpc: "https://testnet.era.zksync.dev",
833
+ wrapped: "0x000000000000000000000000000000000000800A"
834
+ }
835
+ };
836
+ const isNetworkId = (id) => Object.prototype.hasOwnProperty.call(networks, id);
837
+ const getNetwork = (id) => isNetworkId(id) ? networks[id] : void 0;
838
+ const networkById = Object.keys(networks).filter((id) => networks[id].chainId).reduce((acc, id) => ({
839
+ ...acc,
840
+ [networks[id].chainId]: {
841
+ ...networks[id],
842
+ id
843
+ }
844
+ }), {});
845
+ //#endregion
846
+ export { getNetwork, isNetworkId, networkById, networks };