@instadapp/avocado-base 0.0.0-dev.d66833c → 0.0.0-dev.d723a21

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 (37) hide show
  1. package/.vscode/settings.json +67 -0
  2. package/abi/avoFactoryProxy.json +1 -1
  3. package/abi/forwarder.json +1 -1
  4. package/abi/multisigAgnosticForwarder.json +937 -0
  5. package/abi/multisigForwarder.json +680 -680
  6. package/app.vue +5 -5
  7. package/assets/images/icons/check.svg +3 -0
  8. package/assets/images/icons/copy.svg +9 -2
  9. package/components/ActionLogo.vue +15 -15
  10. package/components/ActionMetadata.vue +26 -20
  11. package/components/Address.vue +74 -0
  12. package/components/AuthorityAvatar.vue +8 -6
  13. package/components/ChainLogo.vue +19 -15
  14. package/components/CopyClipboard.vue +15 -31
  15. package/components/metadata/Bridge.vue +22 -23
  16. package/components/metadata/CrossTransfer.vue +29 -32
  17. package/components/metadata/GasTopup.vue +14 -15
  18. package/components/metadata/Permit2.vue +12 -13
  19. package/components/metadata/Signers.vue +11 -58
  20. package/components/metadata/Swap.vue +29 -30
  21. package/components/metadata/Transfer.vue +26 -27
  22. package/contracts/MultisigAgnosticForwarder.ts +1423 -0
  23. package/contracts/factories/MultisigAgnosticForwarder__factory.ts +2135 -0
  24. package/contracts/factories/index.ts +1 -0
  25. package/contracts/index.ts +2 -0
  26. package/nuxt.config.ts +8 -13
  27. package/package.json +13 -18
  28. package/server/utils/index.ts +4 -4
  29. package/utils/avocado.ts +17 -17
  30. package/utils/bignumber.ts +47 -36
  31. package/utils/formatter.ts +54 -60
  32. package/utils/helper.ts +33 -30
  33. package/utils/metadata.ts +398 -354
  34. package/utils/network.ts +434 -300
  35. package/utils/services.ts +11 -13
  36. package/utils/utils.d.ts +114 -104
  37. package/components.d.ts +0 -13
package/utils/network.ts CHANGED
@@ -1,443 +1,576 @@
1
- import { ethers } from "ethers";
1
+ import { ethers } from 'ethers'
2
+ import { defineChain } from 'viem'
2
3
  import {
3
- polygon,
4
4
  arbitrum,
5
- mainnet,
5
+ aurora,
6
+ avalanche,
6
7
  base,
7
- optimism,
8
- polygonZkEvm,
8
+ blast,
9
9
  bsc,
10
- avalanche,
11
10
  fantom,
12
- gnosis,
13
- aurora,
14
11
  fuse,
15
- scroll,
16
- opBNB,
12
+ gnosis,
13
+ linea,
14
+ mainnet,
17
15
  mode,
18
- } from "viem/chains";
16
+ opBNB,
17
+ optimism,
18
+ polygon,
19
+ polygonZkEvm,
20
+ scroll,
21
+ ink,
22
+ plasma,
23
+ } from 'viem/chains'
19
24
  import {
20
- AVO_PROD_CHAIN_NAME,
21
25
  AVO_PROD_CHAIN_ID,
22
- AVO_PROD_RPC_URL,
26
+ AVO_PROD_CHAIN_NAME,
23
27
  AVO_PROD_EXPLORER_URL,
24
- AVO_STAGING_CHAIN_NAME,
28
+ AVO_PROD_RPC_URL,
25
29
  AVO_STAGING_CHAIN_ID,
26
- AVO_STAGING_RPC_URL,
30
+ AVO_STAGING_CHAIN_NAME,
27
31
  AVO_STAGING_EXPLORER_URL,
28
- } from "./avocado";
29
- import { defineChain } from "viem";
32
+ AVO_STAGING_RPC_URL,
33
+ } from './avocado'
30
34
 
31
- export const bridgeDisabledNetworks = [];
35
+ export const bridgeDisabledNetworks = []
32
36
 
33
- export const networksSimulationNotSupported = [1313161554, 1101];
37
+ export const networksSimulationNotSupported = [1313161554, 1101]
34
38
 
35
39
  const avocado = defineChain({
36
40
  id: AVO_PROD_CHAIN_ID,
37
41
  name: AVO_PROD_CHAIN_NAME,
38
42
  nativeCurrency: {
39
- name: "Avocado",
40
- symbol: "USDC",
43
+ name: 'Avocado',
44
+ symbol: 'USDC',
41
45
  decimals: 18,
42
46
  },
43
47
  rpcUrls: {
44
48
  default: { http: [AVO_PROD_RPC_URL] },
45
49
  },
46
50
  blockExplorers: {
47
- default: { name: "Avoscan", url: AVO_PROD_EXPLORER_URL },
51
+ default: { name: 'Avoscan', url: AVO_PROD_EXPLORER_URL },
48
52
  },
49
- });
53
+ })
50
54
 
51
55
  const avocadoStaging = defineChain({
52
56
  id: AVO_STAGING_CHAIN_ID,
53
57
  name: AVO_STAGING_CHAIN_NAME,
54
58
  nativeCurrency: {
55
- name: "Avocado",
56
- symbol: "USDC",
59
+ name: 'Avocado',
60
+ symbol: 'USDC',
57
61
  decimals: 18,
58
62
  },
59
63
  rpcUrls: {
60
64
  default: { http: [AVO_STAGING_RPC_URL] },
61
65
  },
62
66
  blockExplorers: {
63
- default: { name: "Avoscan", url: AVO_STAGING_EXPLORER_URL },
67
+ default: { name: 'Avoscan', url: AVO_STAGING_EXPLORER_URL },
64
68
  },
65
- });
69
+
70
+ })
66
71
 
67
72
  export const networks: Network[] = [
68
73
  {
69
- name: "Polygon",
70
- debankName: "matic",
71
- ankrName: "polygon",
72
- zerionName: "polygon",
73
- color: "#7A4ADD",
74
+ name: 'Polygon',
75
+ debankName: 'matic',
76
+ ankrName: 'polygon',
77
+ zerionName: 'polygon',
78
+ color: '#7A4ADD',
74
79
  chainId: 137,
80
+ legacySupported: true,
75
81
  viemChain: polygon,
76
- balanceResolverAddress: "0x58632D23120b20650262b8A629a14e4F4043E0D9",
77
- usdcAddress: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
78
- explorerUrl: "https://polygonscan.com",
79
- apiURL: "https://api.polygonscan.com",
82
+ balanceResolverAddress: '0x58632D23120b20650262b8A629a14e4F4043E0D9',
83
+ usdcAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',
84
+ explorerUrl: 'https://polygonscan.com',
85
+ apiURL: 'https://api.polygonscan.com/api',
80
86
  fakeTransactionHash:
81
- "0x906c551abd5873a428505b6530ac14d91367820706c7ee525f6d7313265d1c92",
87
+ '0x906c551abd5873a428505b6530ac14d91367820706c7ee525f6d7313265d1c92',
82
88
  get serverRpcUrl() {
83
- return process.env?.POLYGON_RPC_URL || this.params.rpcUrls[0];
89
+ return process.env?.POLYGON_RPC_URL || this.params.rpcUrls[0]
84
90
  },
85
91
  params: {
86
- chainName: "Matic(Polygon) Mainnet",
92
+ chainName: 'Matic(Polygon) Mainnet',
87
93
  nativeCurrency: {
88
- name: "Matic",
89
- symbol: "MATIC",
94
+ name: 'POL (ex-MATIC)',
95
+ symbol: 'POL',
90
96
  decimals: 18,
91
97
  },
92
- rpcUrls: ["https://polygon-rpc.com"],
98
+ rpcUrls: ['https://polygon-rpc.com'],
93
99
  },
94
100
  },
95
101
  {
96
- name: "Arbitrum",
97
- debankName: "arb",
98
- ankrName: "arbitrum",
99
- zerionName: "arbitrum",
102
+ name: 'Arbitrum',
103
+ debankName: 'arb',
104
+ ankrName: 'arbitrum',
105
+ zerionName: 'arbitrum',
106
+ legacySupported: true,
100
107
  viemChain: arbitrum,
101
- color: "#2D374B",
108
+ color: '#2D374B',
102
109
  chainId: 42161,
103
- usdcAddress: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8",
104
- balanceResolverAddress: "0xca5f37e6D8bB24c5A7958d5eccE7Bd9Aacc944f2",
110
+ usdcAddress: '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8',
111
+ balanceResolverAddress: '0xca5f37e6D8bB24c5A7958d5eccE7Bd9Aacc944f2',
105
112
  fakeTransactionHash:
106
- "0x9fa291c3b09d31f19b1fa5dd05f30169d1364036d5f7c14b026410bc07bd8843",
107
- explorerUrl: "https://arbiscan.io",
108
- apiURL: "https://api.arbiscan.io",
113
+ '0x9fa291c3b09d31f19b1fa5dd05f30169d1364036d5f7c14b026410bc07bd8843',
114
+ explorerUrl: 'https://arbiscan.io',
115
+ apiURL: 'https://api.arbiscan.io/api',
109
116
  get serverRpcUrl() {
110
- return process.env?.ARBITRUM_RPC_URL || this.params.rpcUrls[0];
117
+ return process.env?.ARBITRUM_RPC_URL || this.params.rpcUrls[0]
111
118
  },
112
119
  params: {
113
- chainName: "Arbitrum One",
120
+ chainName: 'Arbitrum One',
114
121
  nativeCurrency: {
115
- name: "Ethereum",
116
- symbol: "ETH",
122
+ name: 'Ethereum',
123
+ symbol: 'ETH',
117
124
  decimals: 18,
118
125
  },
119
- rpcUrls: ["https://arb1.arbitrum.io/rpc"],
126
+ rpcUrls: ['https://arb1.arbitrum.io/rpc'],
120
127
  },
121
128
  },
122
129
  {
123
- name: "Ethereum",
124
- debankName: "eth",
125
- ankrName: "eth",
126
- zerionName: "ethereum",
130
+ name: 'Ethereum',
131
+ debankName: 'eth',
132
+ ankrName: 'eth',
133
+ zerionName: 'ethereum',
127
134
  viemChain: mainnet,
128
135
  chainId: 1,
129
- explorerUrl: "https://etherscan.io",
136
+ explorerUrl: 'https://etherscan.io',
137
+ legacySupported: true,
130
138
  fakeTransactionHash:
131
- "0x13232dd32cef2f641ead890a507710c96560c8c9c3d5fab6facb5ec563c49433",
132
- apiURL: "https://api.etherscan.io",
133
- color: "#5D5FEF",
139
+ '0x13232dd32cef2f641ead890a507710c96560c8c9c3d5fab6facb5ec563c49433',
140
+ apiURL: 'https://api.etherscan.io/api',
141
+ color: '#5D5FEF',
134
142
  get serverRpcUrl() {
135
- return process.env?.MAINNET_RPC_URL || this.params.rpcUrls[0];
143
+ return process.env?.MAINNET_RPC_URL || this.params.rpcUrls[0]
136
144
  },
137
- balanceResolverAddress: "0x5b7D61b389D12e1f5873d0cCEe7E675915AB5F43",
138
- usdcAddress: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
145
+ balanceResolverAddress: '0x5b7D61b389D12e1f5873d0cCEe7E675915AB5F43',
146
+ usdcAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
139
147
  params: {
140
- rpcUrls: ["https://rpc.ankr.com/eth"],
148
+ rpcUrls: ['https://rpc.ankr.com/eth'],
141
149
  nativeCurrency: {
142
- name: "Ethereum",
143
- symbol: "ETH",
150
+ name: 'Ethereum',
151
+ symbol: 'ETH',
144
152
  decimals: 18,
145
153
  },
146
154
  },
147
155
  },
148
156
  {
149
- name: "Base",
157
+ name: 'Base',
150
158
  chainId: 8453,
151
- color: "#1E2024",
152
- ankrName: "base",
159
+ color: '#1E2024',
160
+ ankrName: 'base',
153
161
  viemChain: base,
154
- explorerUrl: "https://basescan.org",
162
+ explorerUrl: 'https://basescan.org',
163
+ legacySupported: true,
155
164
  fakeTransactionHash:
156
- "0xf7833d80da33730c4fc5d4c64151f0eaa64c0c0535be022af0228a44cc4e9c8e",
157
- apiURL: "https://api.basescan.org",
165
+ '0xf7833d80da33730c4fc5d4c64151f0eaa64c0c0535be022af0228a44cc4e9c8e',
166
+ apiURL: 'https://api.basescan.org/api',
158
167
  get serverRpcUrl() {
159
- return process.env?.BASE_RPC_URL || this.params.rpcUrls[0];
168
+ return process.env?.BASE_RPC_URL || this.params.rpcUrls[0]
160
169
  },
161
- usdcAddress: "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA",
162
- balanceResolverAddress: "0x23c8EAb8a4373dD16b0947Ebe8bf76Ff7A49d13C",
170
+ usdcAddress: '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA',
171
+ balanceResolverAddress: '0x23c8EAb8a4373dD16b0947Ebe8bf76Ff7A49d13C',
163
172
  params: {
164
- rpcUrls: ["https://rpc.ankr.com/base"],
165
- chainName: "Base",
173
+ rpcUrls: ['https://rpc.ankr.com/base'],
174
+ chainName: 'Base',
166
175
  nativeCurrency: {
167
- name: "Ethereum",
168
- symbol: "ETH",
176
+ name: 'Ethereum',
177
+ symbol: 'ETH',
169
178
  decimals: 18,
170
179
  },
171
180
  },
172
181
  },
173
182
  {
174
- name: "Optimism",
175
- debankName: "op",
176
- ankrName: "optimism",
177
- zerionName: "optimism",
178
- color: "#FF0420",
183
+ name: 'Optimism',
184
+ debankName: 'op',
185
+ ankrName: 'optimism',
186
+ zerionName: 'optimism',
187
+ color: '#FF0420',
188
+ legacySupported: true,
179
189
  viemChain: optimism,
180
190
  chainId: 10,
181
- apiURL: "https://api-optimistic.etherscan.io",
182
- usdcAddress: "0x7f5c764cbc14f9669b88837ca1490cca17c31607",
183
- balanceResolverAddress: "0xca5f37e6D8bB24c5A7958d5eccE7Bd9Aacc944f2",
191
+ apiURL: 'https://api-optimistic.etherscan.io/api',
192
+ usdcAddress: '0x7f5c764cbc14f9669b88837ca1490cca17c31607',
193
+ balanceResolverAddress: '0xca5f37e6D8bB24c5A7958d5eccE7Bd9Aacc944f2',
184
194
  fakeTransactionHash:
185
- "0xee7311d68059732b05088f2144dfec6c7a4f5fd0433eb85306afcd6bdf17cebc",
186
- explorerUrl: "https://optimistic.etherscan.io",
195
+ '0xee7311d68059732b05088f2144dfec6c7a4f5fd0433eb85306afcd6bdf17cebc',
196
+ explorerUrl: 'https://optimistic.etherscan.io',
187
197
  get serverRpcUrl() {
188
- return process.env?.OPTIMISM_RPC_URL || this.params.rpcUrls[0];
198
+ return process.env?.OPTIMISM_RPC_URL || this.params.rpcUrls[0]
189
199
  },
190
200
  params: {
191
- chainName: "Optimistic Ethereum",
201
+ chainName: 'Optimistic Ethereum',
192
202
  nativeCurrency: {
193
- name: "Ethereum",
194
- symbol: "ETH",
203
+ name: 'Ethereum',
204
+ symbol: 'ETH',
195
205
  decimals: 18,
196
206
  },
197
- rpcUrls: ["https://rpc.ankr.com/optimism"],
207
+ rpcUrls: ['https://rpc.ankr.com/optimism'],
198
208
  },
199
209
  },
200
210
  {
201
- name: "Polygon zkEVM",
211
+ name: 'Polygon zkEVM',
202
212
  chainId: 1101,
203
- color: "#8544f6",
204
- ankrName: "polygon_zkevm",
213
+ color: '#8544f6',
214
+ ankrName: 'polygon_zkevm',
205
215
  viemChain: polygonZkEvm,
206
- explorerUrl: "https://zkevm.polygonscan.com",
207
- apiURL: "https://api-zkevm.polygonscan.com",
208
- balanceResolverAddress: "0x48D1Fa5Ee6691a1E0B45d2B515650997BEA27a01",
216
+ legacySupported: true,
217
+ explorerUrl: 'https://zkevm.polygonscan.com',
218
+ apiURL: 'https://api-zkevm.polygonscan.com/api',
219
+ balanceResolverAddress: '0x48D1Fa5Ee6691a1E0B45d2B515650997BEA27a01',
209
220
  fakeTransactionHash:
210
- "0x1077130463ade91ad4e9c43c3195298e26a99970975238128912490eea12bf41",
211
- usdcAddress: "0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035",
221
+ '0x1077130463ade91ad4e9c43c3195298e26a99970975238128912490eea12bf41',
222
+ usdcAddress: '0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035',
212
223
  get serverRpcUrl() {
213
- return process.env?.POLYGON_ZKEVM_RPC_URL || this.params.rpcUrls[0];
224
+ return process.env?.POLYGON_ZKEVM_RPC_URL || this.params.rpcUrls[0]
214
225
  },
215
226
  params: {
216
- chainName: "polygon zkEVM",
217
- rpcUrls: ["https://zkevm-rpc.com"],
227
+ chainName: 'polygon zkEVM',
228
+ rpcUrls: ['https://zkevm-rpc.com'],
218
229
  nativeCurrency: {
219
- name: "Ethereum",
220
- symbol: "ETH",
230
+ name: 'Ethereum',
231
+ symbol: 'ETH',
221
232
  decimals: 18,
222
233
  },
223
234
  },
224
235
  },
225
236
  {
226
- name: "BSC",
227
- debankName: "bsc",
228
- ankrName: "bsc",
229
- zerionName: "binance-smart-chain",
230
- color: "#F3BA2F",
237
+ name: 'BSC',
238
+ debankName: 'bsc',
239
+ ankrName: 'bsc',
240
+ zerionName: 'binance-smart-chain',
241
+ color: '#F3BA2F',
231
242
  chainId: 56,
232
- explorerUrl: "https://bscscan.com",
243
+ legacySupported: true,
244
+ explorerUrl: 'https://bscscan.com',
233
245
  viemChain: bsc,
234
246
  fakeTransactionHash:
235
- "0x897d54bf8e492f840bd4d8f1e743bfcab8226ab4d5a899e47ee433dcd6d6abf7",
236
- apiURL: "https://api.bscscan.com",
237
- usdcAddress: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
238
- balanceResolverAddress: "0xb808cff38706e267067b0af427726aa099f69f89",
247
+ '0x897d54bf8e492f840bd4d8f1e743bfcab8226ab4d5a899e47ee433dcd6d6abf7',
248
+ apiURL: 'https://api.bscscan.com/api',
249
+ usdcAddress: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d',
250
+ balanceResolverAddress: '0xb808cff38706e267067b0af427726aa099f69f89',
239
251
  get serverRpcUrl() {
240
- return process.env?.BSC_RPC_URL || this.params.rpcUrls[0];
252
+ return process.env?.BSC_RPC_URL || this.params.rpcUrls[0]
241
253
  },
242
254
  params: {
243
- chainName: "Binance Smart Chain",
244
- rpcUrls: ["https://rpc.ankr.com/bsc"],
255
+ chainName: 'Binance Smart Chain',
256
+ rpcUrls: ['https://rpc.ankr.com/bsc'],
245
257
  nativeCurrency: {
246
- name: "Binance Coin",
247
- symbol: "BNB",
258
+ name: 'Binance Coin',
259
+ symbol: 'BNB',
248
260
  decimals: 18,
249
261
  },
250
262
  },
251
263
  },
252
264
  {
253
- name: "Avalanche",
254
- debankName: "avax",
255
- ankrName: "avalanche",
256
- zerionName: "avalanche",
257
- color: "#EB5757",
265
+ name: 'Avalanche',
266
+ debankName: 'avax',
267
+ ankrName: 'avalanche',
268
+ zerionName: 'avalanche',
269
+ color: '#EB5757',
258
270
  viemChain: avalanche,
271
+ legacySupported: true,
259
272
  chainId: 43114,
260
- usdcAddress: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
261
- balanceResolverAddress: "0x63009f31D054E0ac9F321Cf0D642375236A4Bf1E",
262
- explorerUrl: "https://snowtrace.io",
273
+ usdcAddress: '0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e',
274
+ balanceResolverAddress: '0x63009f31D054E0ac9F321Cf0D642375236A4Bf1E',
275
+ explorerUrl: 'https://snowtrace.io',
263
276
  fakeTransactionHash:
264
- "0x233aac7402558dd4e23f938a50f983e67f5c9604233981c7ac74e63737b8294e",
265
- apiURL: "https://api.snowtrace.io",
277
+ '0x233aac7402558dd4e23f938a50f983e67f5c9604233981c7ac74e63737b8294e',
278
+ apiURL: 'https://api.routescan.io/v2/network/mainnet/evm/43114/etherscan/api',
266
279
  get serverRpcUrl() {
267
- return process.env?.AVALANCHE_RPC_URL || this.params.rpcUrls[0];
280
+ return process.env?.AVALANCHE_RPC_URL || this.params.rpcUrls[0]
268
281
  },
269
282
  params: {
270
- chainName: "Avalanche Network",
283
+ chainName: 'Avalanche Network',
271
284
  nativeCurrency: {
272
- name: "Avalanche",
273
- symbol: "AVAX",
285
+ name: 'Avalanche',
286
+ symbol: 'AVAX',
274
287
  decimals: 18,
275
288
  },
276
- rpcUrls: ["https://rpc.ankr.com/avalanche"],
289
+ rpcUrls: ['https://rpc.ankr.com/avalanche'],
277
290
  },
278
291
  },
279
292
  {
280
- name: "Fantom",
293
+ name: 'Fantom',
281
294
  chainId: 250,
282
- zerionName: "fantom",
283
- explorerUrl: "https://ftmscan.com",
284
- ankrName: "fantom",
285
- color: "#1969ff",
295
+ zerionName: 'fantom',
296
+ explorerUrl: 'https://ftmscan.com',
297
+ apiURL: 'https://api.ftmscan.com/api',
298
+ ankrName: 'fantom',
299
+ color: '#1969ff',
300
+ legacySupported: true,
286
301
  viemChain: fantom,
287
302
  get serverRpcUrl() {
288
- return process.env?.FANTOM_RPC_URL || this.params.rpcUrls[0];
303
+ return process.env?.FANTOM_RPC_URL || this.params.rpcUrls[0]
289
304
  },
290
- usdcAddress: "0x04068da6c83afcfa0e13ba15a6696662335d5b75",
291
- balanceResolverAddress: "0x929376c77a2fb8152375a089a4fccf84ff481479",
305
+ usdcAddress: '0x04068da6c83afcfa0e13ba15a6696662335d5b75',
306
+ balanceResolverAddress: '0x929376c77a2fb8152375a089a4fccf84ff481479',
292
307
  fakeTransactionHash:
293
- "0x1e9a8405d660172314124e06896212c0786d7fb1550b89410d4bc87e9e8054e4",
308
+ '0x1e9a8405d660172314124e06896212c0786d7fb1550b89410d4bc87e9e8054e4',
294
309
  params: {
295
- rpcUrls: ["https://rpc.ankr.com/fantom"],
296
- chainName: "Fantom",
310
+ rpcUrls: ['https://rpc.ankr.com/fantom'],
311
+ chainName: 'Fantom',
297
312
  nativeCurrency: {
298
- name: "Fantom",
299
- symbol: "FTM",
313
+ name: 'Fantom',
314
+ symbol: 'FTM',
300
315
  decimals: 18,
301
316
  },
302
317
  },
303
318
  },
304
319
  {
305
- name: "Gnosis",
306
- debankName: "xdai",
307
- zerionName: "xdai",
308
- color: "#04795C",
309
- ankrName: "gnosis",
320
+ name: 'Gnosis',
321
+ debankName: 'xdai',
322
+ zerionName: 'xdai',
323
+ color: '#04795C',
324
+ ankrName: 'gnosis',
310
325
  viemChain: gnosis,
326
+ legacySupported: true,
311
327
  chainId: 100,
312
- balanceResolverAddress: "0xfaa244e276b1597f663975ed007ee4ff70d27849",
313
- explorerUrl: "https://gnosisscan.io",
328
+ balanceResolverAddress: '0xfaa244e276b1597f663975ed007ee4ff70d27849',
329
+ explorerUrl: 'https://gnosisscan.io',
314
330
  fakeTransactionHash:
315
- "0x1513033806310a2c3b29f2276f8aa7388461b0ef9f8499c297e68c12187c179b",
316
- apiURL: "https://api.gnosisscan.io",
317
- usdcAddress: "0xddafbb505ad214d7b80b1f830fccc89b60fb7a83",
331
+ '0x1513033806310a2c3b29f2276f8aa7388461b0ef9f8499c297e68c12187c179b',
332
+ apiURL: 'https://api.gnosisscan.io/api',
333
+ usdcAddress: '0xddafbb505ad214d7b80b1f830fccc89b60fb7a83',
318
334
  get serverRpcUrl() {
319
- return process.env?.GNOSIS_RPC_URL || this.params.rpcUrls[0];
335
+ return process.env?.GNOSIS_RPC_URL || this.params.rpcUrls[0]
320
336
  },
321
337
  params: {
322
- chainName: "Gnosis Safe",
323
- rpcUrls: ["https://rpc.ankr.com/gnosis"],
338
+ chainName: 'Gnosis Safe',
339
+ rpcUrls: ['https://rpc.ankr.com/gnosis'],
324
340
  nativeCurrency: {
325
- name: "xdaistable",
326
- symbol: "xDAI",
341
+ name: 'xdaistable',
342
+ symbol: 'xDAI',
327
343
  decimals: 18,
328
344
  },
329
345
  },
330
346
  },
331
347
  {
332
- name: "Aurora",
348
+ name: 'Aurora',
333
349
  chainId: 1313161554,
334
- zerionName: "aurora",
335
- color: "#78d64b",
350
+ zerionName: 'aurora',
351
+ color: '#78d64b',
336
352
  viemChain: aurora,
337
- explorerUrl: "https://explorer.mainnet.aurora.dev",
353
+ legacySupported: true,
354
+ explorerUrl: 'https://explorer.mainnet.aurora.dev',
355
+ apiURL: 'https://explorer.mainnet.aurora.dev/api/v2',
338
356
  fakeTransactionHash:
339
- "0x0923401c5a80c39a5cd57c098a6c4729edbefd0db6894def7d349493f4ff3ec6",
357
+ '0x0923401c5a80c39a5cd57c098a6c4729edbefd0db6894def7d349493f4ff3ec6',
340
358
  get serverRpcUrl() {
341
- return process.env?.AURORA_RPC_URL || this.params.rpcUrls[0];
359
+ return process.env?.AURORA_RPC_URL || this.params.rpcUrls[0]
342
360
  },
343
- usdcAddress: "0xB12BFcA5A55806AaF64E99521918A4bf0fC40802",
344
- balanceResolverAddress: "0xdF19Da523DA64bBE82eE0E4DFf00d676A8386474",
361
+ usdcAddress: '0xB12BFcA5A55806AaF64E99521918A4bf0fC40802',
362
+ balanceResolverAddress: '0xdF19Da523DA64bBE82eE0E4DFf00d676A8386474',
345
363
  params: {
346
- rpcUrls: ["https://mainnet.aurora.dev"],
347
- chainName: "Aurora",
364
+ rpcUrls: ['https://mainnet.aurora.dev'],
365
+ chainName: 'Aurora',
348
366
  nativeCurrency: {
349
367
  decimals: 18,
350
- name: "Aurora ETH",
351
- symbol: "AETH",
368
+ name: 'Aurora ETH',
369
+ symbol: 'AETH',
352
370
  },
353
371
  },
354
372
  },
355
373
  {
356
- name: "Fuse",
374
+ name: 'Fuse',
357
375
  chainId: 122,
358
- zerionName: "fuse",
359
- color: "#78d64b",
360
- explorerUrl: "https://explorer.fuse.io",
376
+ zerionName: 'fuse',
377
+ color: '#78d64b',
378
+ explorerUrl: 'https://explorer.fuse.io',
379
+ apiURL: 'https://explorer.fuse.io/api/v2',
361
380
  viemChain: fuse,
381
+ legacySupported: false,
362
382
  fakeTransactionHash:
363
- "0xf22a8031de9b978a57c728e18c6b54633356c39db4d0466e53b9b7c3ee7f8def",
383
+ '0xf22a8031de9b978a57c728e18c6b54633356c39db4d0466e53b9b7c3ee7f8def',
364
384
  get serverRpcUrl() {
365
- return process.env?.FUSE_RPC_URL || this.params.rpcUrls[0];
385
+ return process.env?.FUSE_RPC_URL || this.params.rpcUrls[0]
366
386
  },
367
- usdcAddress: "",
368
- balanceResolverAddress: "0xdF19Da523DA64bBE82eE0E4DFf00d676A8386474",
387
+ usdcAddress: '',
388
+ balanceResolverAddress: '0xdF19Da523DA64bBE82eE0E4DFf00d676A8386474',
369
389
  params: {
370
- rpcUrls: ["https://fuse-mainnet.chainstacklabs.com"],
371
- chainName: "Fuse",
390
+ rpcUrls: ['https://fuse-mainnet.chainstacklabs.com'],
391
+ chainName: 'Fuse',
372
392
  nativeCurrency: {
373
393
  decimals: 18,
374
- name: "Fuse",
375
- symbol: "fuse",
394
+ name: 'Fuse',
395
+ symbol: 'fuse',
376
396
  },
377
397
  },
378
398
  },
379
399
  {
380
- name: "Scroll",
400
+ name: 'Scroll',
381
401
  chainId: 534352,
382
- color: "#78d64b",
402
+ color: '#78d64b',
383
403
  ankrName: 'scroll',
384
- explorerUrl: "https://scrollscan.com",
404
+ legacySupported: false,
405
+ explorerUrl: 'https://scrollscan.com',
406
+ apiURL: 'https://api.scrollscan.com/api',
385
407
  viemChain: scroll,
386
408
  fakeTransactionHash:
387
- "0x6bf297c414264fc8cddd47224632b4426a02138df2f50fe891eca87f6aefea01",
409
+ '0x6bf297c414264fc8cddd47224632b4426a02138df2f50fe891eca87f6aefea01',
388
410
  get serverRpcUrl() {
389
- return process.env?.SCROLL_RPC_URL || this.params.rpcUrls[0];
411
+ return process.env?.SCROLL_RPC_URL || this.params.rpcUrls[0]
390
412
  },
391
413
  params: {
392
- rpcUrls: ["https://rpc.scroll.io"],
393
- chainName: "Scroll",
414
+ rpcUrls: ['https://rpc.scroll.io'],
415
+ chainName: 'Scroll',
394
416
  nativeCurrency: {
395
- name: "Ethereum",
396
- symbol: "ETH",
417
+ name: 'Ethereum',
418
+ symbol: 'ETH',
397
419
  decimals: 18,
398
420
  },
399
421
  },
400
422
  },
401
423
  {
402
- name: "opBNB",
424
+ name: 'opBNB',
403
425
  chainId: 204,
404
- color: "#78d64b",
405
- explorerUrl: "https://opbnbscan.com",
426
+ color: '#78d64b',
427
+ explorerUrl: 'https://opbnbscan.com',
428
+ apiURL: null,
406
429
  viemChain: opBNB,
430
+ legacySupported: false,
407
431
  fakeTransactionHash:
408
- "0xb9438a3eae61442bc7d419d79930370ce09ac0f46e0695025751e3bfe1a931e7",
432
+ '0xb9438a3eae61442bc7d419d79930370ce09ac0f46e0695025751e3bfe1a931e7',
409
433
  get serverRpcUrl() {
410
- return process.env?.OPBNB_RPC_URL || this.params.rpcUrls[0];
434
+ return process.env?.OPBNB_RPC_URL || this.params.rpcUrls[0]
435
+ },
436
+ params: {
437
+ rpcUrls: ['https://opbnb-mainnet-rpc.bnbchain.org'],
438
+ chainName: 'opBNB',
439
+ nativeCurrency: {
440
+ name: 'BNB',
441
+ symbol: 'BNB',
442
+ decimals: 18,
443
+ },
411
444
  },
445
+ },
446
+ {
447
+ chainId: 34443,
448
+ name: 'Mode',
449
+ color: '#d7ff00',
450
+ explorerUrl: 'https://explorer.mode.network',
451
+ legacySupported: false,
452
+ fakeTransactionHash: '0xb58002db3481f2c51855a91280ec940d0bebec075c4b362b9f90c21a2b14edbe',
453
+ apiURL: 'https://explorer.mode.network/api/v2',
412
454
  params: {
413
- rpcUrls: ["https://opbnb-mainnet-rpc.bnbchain.org"],
414
- chainName: "opBNB",
455
+ rpcUrls: ['https://1rpc.io/mode'],
456
+ chainName: 'Mode',
415
457
  nativeCurrency: {
416
- name: "BNB",
417
- symbol: "BNB",
458
+ name: 'Ethereum',
459
+ symbol: 'ETH',
418
460
  decimals: 18,
419
461
  },
420
462
  },
463
+ get serverRpcUrl() {
464
+ return process.env?.MODE_RPC_URL || this.params.rpcUrls[0]
465
+ },
466
+ viemChain: mode,
467
+ },
468
+ {
469
+ chainId: 81457,
470
+ name: 'Blast',
471
+ color: '#78d64b',
472
+ explorerUrl: 'https://blastscan.io',
473
+ apiURL: 'https://api.blastscan.io/api',
474
+ legacySupported: false,
475
+ fakeTransactionHash: '0x934ed8516242f8c08bb9e0e90bb1f989d92ceb6b0333e86ac2d555f25ac27e58',
476
+ params: {
477
+ rpcUrls: ['https://rpc.ankr.com/blast'],
478
+ chainName: 'Blast',
479
+ nativeCurrency: {
480
+ name: 'Ethereum',
481
+ symbol: 'ETH',
482
+ decimals: 18,
483
+ },
484
+ },
485
+ get serverRpcUrl() {
486
+ return process.env?.BLAST_RPC_URL || this.params.rpcUrls[0]
487
+ },
488
+ viemChain: blast,
489
+ },
490
+ {
491
+ chainId: 59144,
492
+ name: 'Linea',
493
+ apiURL: 'https://api.lineascan.build/api',
494
+ color: '#78d64b',
495
+ explorerUrl: 'https://lineascan.build',
496
+ legacySupported: false,
497
+ params: {
498
+ rpcUrls: ['https://linea-mainnet.public.blastapi.io'],
499
+ chainName: 'Linea',
500
+ nativeCurrency: {
501
+ name: 'Linea Ether',
502
+ symbol: 'ETH',
503
+ decimals: 18,
504
+ },
505
+ },
506
+ fakeTransactionHash: '0x62d068a66eb1515a09e993200e8a495c7fead512689ba78e50523c8e83bbf5b5',
507
+ get serverRpcUrl() {
508
+ return process.env?.LINEA_RPC_URL || this.params.rpcUrls[0]
509
+ },
510
+ viemChain: linea,
511
+ ankrName: 'linea',
512
+ },
513
+ {
514
+ chainId: plasma.id,
515
+ name: plasma.name,
516
+ apiURL: null,
517
+ color: '#78d64b',
518
+ explorerUrl: plasma.blockExplorers.default.url,
519
+ fakeTransactionHash: '0x3523aad6a790c81ef57e1afd4320760b7cea6dd3424ccd582e00ffc9bdc316e6',
520
+ legacySupported: false,
521
+ get serverRpcUrl() {
522
+ return process.env?.PLASMA_RPC_URL || this.params.rpcUrls[0]
523
+ },
524
+ viemChain: plasma,
525
+ params: {
526
+ rpcUrls: plasma.rpcUrls.default.http,
527
+ chainName: plasma.name,
528
+ nativeCurrency: {
529
+ name: plasma.nativeCurrency.name,
530
+ symbol: plasma.nativeCurrency.symbol,
531
+ decimals: plasma.nativeCurrency.decimals,
532
+ },
533
+ },
534
+ },
535
+ {
536
+ chainId: ink.id,
537
+ name: ink.name,
538
+ apiURL: null,
539
+ color: '#78d64b',
540
+ explorerUrl: 'https://inkonscan.xyz',
541
+ fakeTransactionHash: '0x3523aad6a790c81ef57e1afd4320760b7cea6dd3424ccd582e00ffc9bdc316e6',
542
+ legacySupported: false,
543
+ get serverRpcUrl() {
544
+ return process.env?.INK_RPC_URL || this.params.rpcUrls[0]
545
+ },
546
+ viemChain: ink,
547
+ params: {
548
+ rpcUrls: ink.rpcUrls.default.http,
549
+ chainName: ink.name,
550
+ nativeCurrency: {
551
+ name: ink.nativeCurrency.name,
552
+ symbol: ink.nativeCurrency.symbol,
553
+ decimals: ink.nativeCurrency.decimals,
554
+ },
555
+ },
421
556
  },
422
557
  // {
423
- // chainId: 34443,
424
- // name: "Mode",
425
- // color: "#d7ff00",
426
- // explorerUrl: 'https://explorer.mode.network',
427
- // fakeTransactionHash: '0xb58002db3481f2c51855a91280ec940d0bebec075c4b362b9f90c21a2b14edbe',
428
- // params: {
429
- // rpcUrls: ["https://1rpc.io/mode"],
430
- // chainName: "Mode",
431
- // nativeCurrency: {
432
- // name: "Ethereum",
433
- // symbol: "ETH",
434
- // decimals: 18,
435
- // }
436
- // },
558
+ // name: sonic.name,
559
+ // chainId: sonic.id,
560
+ // explorerUrl: sonic.blockExplorers.default.url,
561
+ // legacySupported: false,
562
+ // viemChain: sonic,
563
+ // color: '#78d64b',
564
+ // apiURL: null,
565
+ // fakeTransactionHash: '0xc8fe01a980987295c36e898b4681fa8c937eb8dfd48a3ae080956b36a66195ee',
437
566
  // get serverRpcUrl() {
438
- // return process.env?.MODE_RPC_URL || this.params.rpcUrls[0];
567
+ // return process.env?.SONIC_RPC_URL || this.params.rpcUrls[0]
568
+ // },
569
+ // params: {
570
+ // rpcUrls: sonic.rpcUrls.default.http as any,
571
+ // chainName: sonic.name,
572
+ // nativeCurrency: sonic.nativeCurrency,
439
573
  // },
440
- // viemChain: mode,
441
574
  // },
442
575
  // {
443
576
  // name: "Manta Pacific",
@@ -461,132 +594,133 @@ export const networks: Network[] = [
461
594
  {
462
595
  name: AVO_PROD_CHAIN_NAME,
463
596
  chainId: AVO_PROD_CHAIN_ID,
597
+ apiURL: null,
464
598
  isAvocado: true,
465
- balanceResolverAddress: "",
466
- fakeTransactionHash: "",
599
+ balanceResolverAddress: '',
600
+ fakeTransactionHash: '',
601
+ legacySupported: false,
467
602
  viemChain: avocado,
468
- color: "#16A34A",
469
- usdcAddress: "",
603
+ color: '#16A34A',
604
+ usdcAddress: '',
470
605
  serverRpcUrl: AVO_PROD_RPC_URL,
471
606
  explorerUrl: AVO_PROD_EXPLORER_URL,
472
607
  params: {
473
608
  chainName: AVO_PROD_CHAIN_NAME,
474
609
  nativeCurrency: {
475
- name: "Avocado",
476
- symbol: "USDC",
610
+ name: 'Avocado',
611
+ symbol: 'USDC',
477
612
  decimals: 18,
478
613
  },
479
- iconUrls: ["https://avocado.instadapp.io/logo.svg"],
614
+ iconUrls: ['https://avocado.instadapp.io/logo.svg'],
480
615
  rpcUrls: [AVO_PROD_RPC_URL],
481
616
  },
482
617
  },
483
618
  {
484
619
  name: AVO_STAGING_CHAIN_NAME,
620
+ apiURL: null,
485
621
  chainId: AVO_STAGING_CHAIN_ID,
486
622
  serverRpcUrl: AVO_STAGING_RPC_URL,
487
- color: "#16A34A",
623
+ color: '#16A34A',
488
624
  explorerUrl: AVO_STAGING_EXPLORER_URL,
625
+ legacySupported: false,
489
626
  viemChain: avocadoStaging,
490
- fakeTransactionHash: "",
627
+ fakeTransactionHash: '',
491
628
  isAvocado: true,
492
- balanceResolverAddress: "",
493
- usdcAddress: "",
629
+ balanceResolverAddress: '',
630
+ usdcAddress: '',
494
631
  params: {
495
632
  chainName: AVO_STAGING_CHAIN_NAME,
496
633
  nativeCurrency: {
497
- name: "Avocado",
498
- symbol: "USDC",
634
+ name: 'Avocado',
635
+ symbol: 'USDC',
499
636
  decimals: 18,
500
637
  },
501
- iconUrls: ["https://avocado.instadapp.io/logo.svg"],
638
+ iconUrls: ['https://avocado.instadapp.io/logo.svg'],
502
639
  rpcUrls: [AVO_STAGING_RPC_URL],
503
640
  },
504
641
  },
505
- ];
642
+ ]
506
643
 
507
644
  export const chainUsdcAddresses = [
508
- { chainId: 1, address: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" },
509
- { chainId: 10, address: "0x7f5c764cbc14f9669b88837ca1490cca17c31607" },
510
- { chainId: 56, address: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d" },
511
- { chainId: 100, address: "0xddafbb505ad214d7b80b1f830fccc89b60fb7a83" },
512
- { chainId: 137, address: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" },
513
- { chainId: 137, address: "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359" },
514
- { chainId: 250, address: "0x04068da6c83afcfa0e13ba15a6696662335d5b75" },
515
- { chainId: 42161, address: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8" },
516
- { chainId: 42161, address: "0xaf88d065e77c8cc2239327c5edb3a432268e5831" },
517
- { chainId: 43114, address: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e" },
518
- { chainId: 43114, address: "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664" },
519
- { chainId: 1101, address: "0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035" },
645
+ { chainId: 1, address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' },
646
+ { chainId: 10, address: '0x7f5c764cbc14f9669b88837ca1490cca17c31607' },
647
+ { chainId: 56, address: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d' },
648
+ { chainId: 100, address: '0xddafbb505ad214d7b80b1f830fccc89b60fb7a83' },
649
+ { chainId: 137, address: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' },
650
+ { chainId: 137, address: '0x3c499c542cef5e3811e1192ce70d8cc03d5c3359' },
651
+ { chainId: 250, address: '0x04068da6c83afcfa0e13ba15a6696662335d5b75' },
652
+ { chainId: 42161, address: '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8' },
653
+ { chainId: 42161, address: '0xaf88d065e77c8cc2239327c5edb3a432268e5831' },
654
+ { chainId: 43114, address: '0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e' },
655
+ { chainId: 43114, address: '0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664' },
656
+ { chainId: 1101, address: '0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035' },
520
657
  {
521
658
  chainId: 1313161554,
522
- address: "0xB12BFcA5A55806AaF64E99521918A4bf0fC40802",
659
+ address: '0xB12BFcA5A55806AaF64E99521918A4bf0fC40802',
523
660
  },
524
- { chainId: 8453, address: "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA" },
525
- ];
661
+ { chainId: 8453, address: '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA' },
662
+ ]
526
663
 
527
- export const getNetworkByChainId = (
528
- chainId: ChainId | number | string
529
- ): Network => {
530
- return networks.find((i) => i.chainId == chainId)!;
531
- };
664
+ export function getNetworkByChainId(chainId: ChainId | number | string): Network {
665
+ return networks.find(i => i.chainId == chainId)!
666
+ }
532
667
 
533
668
  export const availableNetworks = networks.filter(
534
- (network) => !network.isAvocado
535
- );
669
+ network => !network.isAvocado,
670
+ )
536
671
 
537
- export const chainIdToName = (chainId: ChainId | number | string) => {
538
- const network = getNetworkByChainId(chainId);
539
- return network?.name;
540
- };
672
+ export function chainIdToName(chainId: ChainId | number | string) {
673
+ const network = getNetworkByChainId(chainId)
674
+ return network?.name
675
+ }
541
676
 
542
- export const getRpcURLByChainId = (chainId: ChainId | number | string) => {
677
+ export function getRpcURLByChainId(chainId: ChainId | number | string) {
543
678
  try {
544
- const network = getNetworkByChainId(chainId);
545
- return network.params.rpcUrls[0];
546
- } catch (e) {
547
- return "";
679
+ const network = getNetworkByChainId(chainId)
680
+ return network.params.rpcUrls[0]
681
+ }
682
+ catch {
683
+ return ''
548
684
  }
549
- };
685
+ }
550
686
 
551
687
  export const RPCMap = networks.reduce((acc, network) => {
552
- acc[network.chainId] = network.params.rpcUrls[0];
553
- return acc;
554
- }, {} as Record<number, string>);
688
+ acc[network.chainId] = network.params.rpcUrls[0]
689
+ return acc
690
+ }, {} as Record<number, string>)
555
691
 
556
- export const networkIds = networks.map((network) => network.chainId);
692
+ export const networkIds = networks.map(network => network.chainId)
557
693
 
558
- const rpcInstances: Record<string, ethers.providers.StaticJsonRpcProvider> = {};
694
+ const rpcInstances: Record<string, ethers.providers.StaticJsonRpcProvider> = {}
559
695
  const serverRpcInstances: Record<
560
696
  string,
561
697
  ethers.providers.StaticJsonRpcProvider
562
- > = {};
698
+ > = {}
563
699
 
564
- export const getServerRpcProvider = (chainId: number | string) => {
700
+ export function getServerRpcProvider(chainId: number | string) {
565
701
  if (!rpcInstances[chainId]) {
566
- const network = networks.find((n) => n.chainId == chainId);
702
+ const network = networks.find(n => n.chainId == chainId)
567
703
  serverRpcInstances[chainId] = new ethers.providers.StaticJsonRpcProvider(
568
- network?.serverRpcUrl
569
- );
704
+ network?.serverRpcUrl,
705
+ )
570
706
  }
571
707
 
572
- return serverRpcInstances[chainId];
573
- };
708
+ return serverRpcInstances[chainId]
709
+ }
574
710
 
575
- export const getRpcProvider = (chainId: number | string) => {
711
+ export function getRpcProvider(chainId: number | string) {
576
712
  if (!rpcInstances[chainId]) {
577
713
  rpcInstances[chainId] = new ethers.providers.StaticJsonRpcProvider(
578
- getRpcURLByChainId(Number(chainId))
579
- );
714
+ getRpcURLByChainId(Number(chainId)),
715
+ )
580
716
  }
581
717
 
582
- return rpcInstances[chainId];
583
- };
718
+ return rpcInstances[chainId]
719
+ }
584
720
 
585
- export const getExplorerUrl = (
586
- chainId: ChainId | number | string,
587
- suffix: `/${string}` = "/"
588
- ) => {
589
- const network = getNetworkByChainId(chainId);
590
- if (!network) return "";
591
- return `${network.explorerUrl}${suffix}`;
592
- };
721
+ export function getExplorerUrl(chainId: ChainId | number | string, suffix: `/${string}` = '/') {
722
+ const network = getNetworkByChainId(chainId)
723
+ if (!network)
724
+ return ''
725
+ return `${network.explorerUrl}${suffix}`
726
+ }