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