@instadapp/avocado-base 0.0.0-dev.c3dc65c → 0.0.0-dev.c8dd0df

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.
@@ -6,9 +6,11 @@ export type { BalanceResolver } from "./BalanceResolver";
6
6
  export type { Erc20 } from "./Erc20";
7
7
  export type { Forwarder } from "./Forwarder";
8
8
  export type { GaslessWallet } from "./GaslessWallet";
9
+ export type { MultisigForwarder } from "./MultisigForwarder";
9
10
  export * as factories from "./factories";
10
11
  export { AvoFactoryProxy__factory } from "./factories/AvoFactoryProxy__factory";
11
12
  export { BalanceResolver__factory } from "./factories/BalanceResolver__factory";
12
13
  export { Erc20__factory } from "./factories/Erc20__factory";
13
14
  export { Forwarder__factory } from "./factories/Forwarder__factory";
14
15
  export { GaslessWallet__factory } from "./factories/GaslessWallet__factory";
16
+ export { MultisigForwarder__factory } from "./factories/MultisigForwarder__factory";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instadapp/avocado-base",
3
- "version": "0.0.0-dev.c3dc65c",
3
+ "version": "0.0.0-dev.c8dd0df",
4
4
  "type": "module",
5
5
  "main": "./nuxt.config.ts",
6
6
  "types": "global.d.ts",
@@ -20,11 +20,13 @@
20
20
  "nuxt-svgo": "^3.1.0",
21
21
  "rimraf": "^3.0.2",
22
22
  "typechain": "^8.1.1",
23
- "unplugin-vue-components": "^0.25.1"
23
+ "unplugin-vue-components": "^0.25.1",
24
+ "vue-tippy": "^6.0.0"
24
25
  },
25
26
  "dependencies": {
26
27
  "@vueuse/nuxt": "^10.2.0",
27
28
  "bignumber.js": "^9.1.1",
28
- "ethers": "^5.7.2"
29
+ "ethers": "^5.7.2",
30
+ "xxhashjs": "^0.2.2"
29
31
  }
30
32
  }
@@ -71,11 +71,8 @@ export function formatDecimal(value: string | number, fractionDigits?: number) {
71
71
  const num = toBN(value);
72
72
  let decimals;
73
73
 
74
- if (num.lt(0.01)) {
74
+ if (num.lt(1)) {
75
75
  decimals = 4;
76
- }
77
- else if (num.lt(1)) {
78
- decimals = 8;
79
76
  } else if (num.lt(10)) {
80
77
  decimals = 6;
81
78
  } else if (num.lt(100)) {
package/utils/helper.ts CHANGED
@@ -58,4 +58,5 @@ export function formatMultipleAddresses(addresses: string[], shorten = true) {
58
58
  const formattedString = formatter.format(addresses.map(i => shorten ? shortenHash(i) || '' : i))
59
59
 
60
60
  return formattedString
61
- }
61
+ }
62
+
package/utils/metadata.ts CHANGED
@@ -1,23 +1,26 @@
1
1
  import { ethers, utils } from "ethers";
2
- import { Forwarder__factory } from "../contracts";
3
-
4
- export const MetadataEnums = {
5
- "transfer": "transfer",
6
- "bridge": "bridge",
7
- "swap": "swap",
8
- "gas-topup": "gas-topup",
9
- "upgrade": "upgrade",
10
- "dapp": "dapp",
11
- "deploy": "deploy",
12
- "permit2": "permit2",
13
- "cross-transfer": "cross-transfer",
14
- "auth": "auth",
15
- "rejection": "rejection",
16
- "instadapp-pro": "instadapp-pro",
17
- "add-signers": "add-signers",
18
- "remove-signers": "remove-signers",
19
- "change-threshold": "change-threshold",
20
- } as const;
2
+ import { Forwarder__factory, MultisigForwarder__factory } from "../contracts";
3
+ import { toBN } from "./bignumber";
4
+
5
+ export const MetadataEnums = {
6
+ transfer: "transfer",
7
+ bridge: "bridge",
8
+ swap: "swap",
9
+ "gas-topup": "gas-topup",
10
+ upgrade: "upgrade",
11
+ dapp: "dapp",
12
+ deploy: "deploy",
13
+ permit2: "permit2",
14
+ "cross-transfer": "cross-transfer",
15
+ auth: "auth",
16
+ rejection: "rejection",
17
+ "instadapp-pro": "instadapp-pro",
18
+ "add-signers": "add-signers",
19
+ "remove-signers": "remove-signers",
20
+ "change-threshold": "change-threshold",
21
+ import: "import",
22
+ "tx-builder": "tx-builder",
23
+ } as const;
21
24
 
22
25
  const multiMetadataTypes = ["bytes[]"];
23
26
 
@@ -52,8 +55,10 @@ const actionMetadataTypes: Record<MetadataTypes, string[]> = {
52
55
  "gas-topup": ["uint256 amount", "address token", "address onBehalf"],
53
56
  upgrade: ["bytes32 version", "address walletImpl"],
54
57
  dapp: ["string name", "string url"],
58
+ import: ["bytes32 protocol", "uint256 valueInUsd"],
55
59
  auth: ["address address", "uint256 chainId", "bool remove"],
56
60
  deploy: [],
61
+ "tx-builder": ["bytes32 actionCount"],
57
62
  permit2: [
58
63
  "address token",
59
64
  "address spender",
@@ -61,10 +66,10 @@ const actionMetadataTypes: Record<MetadataTypes, string[]> = {
61
66
  "uint48 expiration",
62
67
  ],
63
68
  "instadapp-pro": ["string castDetails"],
64
- 'add-signers': ['address[] signers'],
65
- 'remove-signers': ['address[] signers'],
66
- 'change-threshold': ['uint8 count'],
67
- 'rejection': ['bytes32 id'],
69
+ "add-signers": ["address[] signers"],
70
+ "remove-signers": ["address[] signers"],
71
+ "change-threshold": ["uint8 count"],
72
+ rejection: ["bytes32 id"],
68
73
  };
69
74
 
70
75
  const encodeMetadata = (props: MetadataProps) => {
@@ -172,6 +177,23 @@ export const encodeDeployMetadata = (single = true) => {
172
177
  return single ? encodeMultipleActions(data) : data;
173
178
  };
174
179
 
180
+ export const encodeTransactionBuilderMetadata = (
181
+ actionCount: string,
182
+ single = true
183
+ ) => {
184
+ const encodedData = ethers.utils.defaultAbiCoder.encode(
185
+ actionMetadataTypes["tx-builder"],
186
+ [actionCount]
187
+ );
188
+
189
+ const data = encodeMetadata({
190
+ type: MetadataEnums["tx-builder"],
191
+ encodedData,
192
+ });
193
+
194
+ return single ? encodeMultipleActions(data) : data;
195
+ };
196
+
175
197
  export const encodeWCSignMetadata = (
176
198
  params: SignMetadataProps,
177
199
  single = true
@@ -306,6 +328,24 @@ export const encodeRemoveSignersMetadata = (
306
328
  return single ? encodeMultipleActions(data) : data;
307
329
  };
308
330
 
331
+ export const encodeImportMetadata = (
332
+ protocol: string,
333
+ valueInUsd: string,
334
+ single = true
335
+ ) => {
336
+ const encodedData = ethers.utils.defaultAbiCoder.encode(
337
+ actionMetadataTypes["import"],
338
+ [protocol, valueInUsd]
339
+ );
340
+
341
+ const data = encodeMetadata({
342
+ type: MetadataEnums["import"],
343
+ encodedData,
344
+ });
345
+
346
+ return single ? encodeMultipleActions(data) : data;
347
+ };
348
+
309
349
  export const encodeAddSignersMetadata = (
310
350
  addresses: string[],
311
351
  single = true
@@ -346,8 +386,10 @@ export const decodeMetadata = (metadata: string) => {
346
386
  }
347
387
  };
348
388
 
389
+ const iface = Forwarder__factory.createInterface();
390
+ const ifaceMultisig = MultisigForwarder__factory.createInterface();
391
+
349
392
  const getMetadataFromData = (data: string) => {
350
- const iface = Forwarder__factory.createInterface();
351
393
  let metadata = "0x";
352
394
 
353
395
  if (data.startsWith("0x18e7f485")) {
@@ -367,36 +409,30 @@ const getMetadataFromData = (data: string) => {
367
409
  } else {
368
410
  metadata = executeDataV2.params_.metadata;
369
411
  }
370
- } else if (data.startsWith("0x85114d53")) {
371
- const executeDataV3 = iface.decodeFunctionData("executeV3", data);
372
- if (
373
- executeDataV3.params_.metadata === "0x" ||
374
- !executeDataV3.params_.metadata
375
- ) {
376
- return null;
377
- } else {
378
- metadata = executeDataV3.params_.metadata;
379
- }
380
412
  } else {
381
- const executeDataMultisigV3 = iface.decodeFunctionData(
382
- "executeMultisigV3",
413
+ const executeDataMultisig = ifaceMultisig.decodeFunctionData(
414
+ "executeV1",
383
415
  data
384
416
  );
385
417
  if (
386
- executeDataMultisigV3.params_.metadata === "0x" ||
387
- !executeDataMultisigV3.params_.metadata
418
+ executeDataMultisig.params_.metadata === "0x" ||
419
+ !executeDataMultisig.params_.metadata
388
420
  ) {
389
421
  return null;
390
422
  } else {
391
- metadata = executeDataMultisigV3.params_.metadata;
423
+ metadata = executeDataMultisig.params_.metadata;
392
424
  }
393
425
  }
394
426
 
395
427
  return metadata;
396
428
  };
397
429
 
398
-
399
430
  const typesPayload: IPayload = {
431
+ import: (data, type) => ({
432
+ type,
433
+ protocol: utils.parseBytes32String(data.protocol || ""),
434
+ valueInUsd: toBN(data.valueInUsd).toFixed(),
435
+ }),
400
436
  transfer: (data, type) => ({
401
437
  type,
402
438
  token: data.token,
@@ -432,15 +468,19 @@ const typesPayload: IPayload = {
432
468
  token: data.token,
433
469
  onBehalf: data.onBehalf,
434
470
  }),
435
- "dapp": (data, type) => ({
471
+ dapp: (data, type) => ({
436
472
  type,
437
473
  name: data.name,
438
474
  url: data.url,
439
475
  }),
440
- "deploy": (data, type) => ({
476
+ deploy: (data, type) => ({
477
+ type,
478
+ }),
479
+ "tx-builder": (data, type) => ({
441
480
  type,
481
+ actionCount: utils.parseBytes32String(data.actionCount || ""),
442
482
  }),
443
- "permit2": (data, type) => ({
483
+ permit2: (data, type) => ({
444
484
  type,
445
485
  token: data.token,
446
486
  spender: data.spender,
@@ -455,7 +495,7 @@ const typesPayload: IPayload = {
455
495
  amount: toBN(data.amount).toFixed(),
456
496
  receiver: data.receiver,
457
497
  }),
458
- "auth": (data) => ({
498
+ auth: (data) => ({
459
499
  type: data.remove ? "remove-authority" : "add-authority",
460
500
  address: data.address,
461
501
  chainId: data.chainId ? data.chainId.toString() : null,
@@ -465,7 +505,7 @@ const typesPayload: IPayload = {
465
505
  type,
466
506
  castDetails: data.castDetails,
467
507
  }),
468
- "rejection": (data, type) => ({
508
+ rejection: (data, type) => ({
469
509
  type,
470
510
  id: data.id,
471
511
  }),
@@ -507,20 +547,17 @@ const parseMetadata = (metadata: string) => {
507
547
  decodedMetadata.data
508
548
  );
509
549
 
510
- const payloadFunc = typesPayload[type]
511
-
550
+ const payloadFunc = typesPayload[type];
551
+
512
552
  if (payloadFunc) {
513
- const payload = payloadFunc(decodedData, type)
553
+ const payload = payloadFunc(decodedData, type);
514
554
  metadataArr.push(payload);
515
555
  }
516
-
517
556
  }
518
557
 
519
558
  return metadataArr;
520
559
  };
521
560
 
522
-
523
-
524
561
  /**
525
562
  * Replaces hyphens with spaces and capitalizes the first letter of each word in a sentence.
526
563
  * @param {string} txType - The input sentence to modify
package/utils/network.ts CHANGED
@@ -1,30 +1,20 @@
1
1
  import { ethers } from "ethers";
2
+ import {
3
+ AVO_PROD_CHAIN_NAME,
4
+ AVO_PROD_CHAIN_ID,
5
+ AVO_PROD_RPC_URL,
6
+ AVO_PROD_EXPLORER_URL,
7
+ AVO_STAGING_CHAIN_NAME,
8
+ AVO_STAGING_CHAIN_ID,
9
+ AVO_STAGING_RPC_URL,
10
+ AVO_STAGING_EXPLORER_URL,
11
+ } from "./avocado";
2
12
 
3
- export const bridgeDisabledNetworks = [1101];
13
+ export const bridgeDisabledNetworks = [];
14
+
15
+ export const networksSimulationNotSupported = [1313161554, 1101];
4
16
 
5
17
  export const networks: Network[] = [
6
- {
7
- name: "Ethereum",
8
- debankName: "eth",
9
- ankrName: "eth",
10
- zerionName: "ethereum",
11
- chainId: 1,
12
- explorerUrl: "https://etherscan.io",
13
- color: "#5D5FEF",
14
- get serverRpcUrl() {
15
- return process.env?.MAINNET_RPC_URL || this.params.rpcUrls[0];
16
- },
17
- balanceResolverAddress: "0x5b7D61b389D12e1f5873d0cCEe7E675915AB5F43",
18
- usdcAddress: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
19
- params: {
20
- rpcUrls: ["https://rpc.ankr.com/eth"],
21
- nativeCurrency: {
22
- name: "Ethereum",
23
- symbol: "ETH",
24
- decimals: 18,
25
- },
26
- },
27
- },
28
18
  {
29
19
  name: "Polygon",
30
20
  debankName: "matic",
@@ -35,6 +25,7 @@ export const networks: Network[] = [
35
25
  balanceResolverAddress: "0x58632D23120b20650262b8A629a14e4F4043E0D9",
36
26
  usdcAddress: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
37
27
  explorerUrl: "https://polygonscan.com",
28
+ apiURL: "https://api.polygonscan.com",
38
29
  get serverRpcUrl() {
39
30
  return process.env?.POLYGON_RPC_URL || this.params.rpcUrls[0];
40
31
  },
@@ -58,6 +49,7 @@ export const networks: Network[] = [
58
49
  usdcAddress: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8",
59
50
  balanceResolverAddress: "0xca5f37e6D8bB24c5A7958d5eccE7Bd9Aacc944f2",
60
51
  explorerUrl: "https://arbiscan.io",
52
+ apiURL: "https://api.arbiscan.io",
61
53
  get serverRpcUrl() {
62
54
  return process.env?.ARBITRUM_RPC_URL || this.params.rpcUrls[0];
63
55
  },
@@ -71,6 +63,51 @@ export const networks: Network[] = [
71
63
  rpcUrls: ["https://arb1.arbitrum.io/rpc"],
72
64
  },
73
65
  },
66
+ {
67
+ name: "Ethereum",
68
+ debankName: "eth",
69
+ ankrName: "eth",
70
+ zerionName: "ethereum",
71
+ chainId: 1,
72
+ explorerUrl: "https://etherscan.io",
73
+ apiURL: "https://api.etherscan.io",
74
+ color: "#5D5FEF",
75
+ get serverRpcUrl() {
76
+ return process.env?.MAINNET_RPC_URL || this.params.rpcUrls[0];
77
+ },
78
+ balanceResolverAddress: "0x5b7D61b389D12e1f5873d0cCEe7E675915AB5F43",
79
+ usdcAddress: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
80
+ params: {
81
+ rpcUrls: ["https://rpc.ankr.com/eth"],
82
+ nativeCurrency: {
83
+ name: "Ethereum",
84
+ symbol: "ETH",
85
+ decimals: 18,
86
+ },
87
+ },
88
+ },
89
+ {
90
+ name: "Base",
91
+ chainId: 8453,
92
+ color: "#1E2024",
93
+ ankrName: "base",
94
+ explorerUrl: "https://basescan.org",
95
+ apiURL: "https://api.basescan.org",
96
+ get serverRpcUrl() {
97
+ return process.env?.BASE_RPC_URL || this.params.rpcUrls[0];
98
+ },
99
+ usdcAddress: "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA",
100
+ balanceResolverAddress: "0x23c8EAb8a4373dD16b0947Ebe8bf76Ff7A49d13C",
101
+ params: {
102
+ rpcUrls: ["https://rpc.ankr.com/base"],
103
+ chainName: "Base",
104
+ nativeCurrency: {
105
+ name: "Ethereum",
106
+ symbol: "ETH",
107
+ decimals: 18,
108
+ },
109
+ },
110
+ },
74
111
  {
75
112
  name: "Optimism",
76
113
  debankName: "op",
@@ -78,6 +115,7 @@ export const networks: Network[] = [
78
115
  zerionName: "optimism",
79
116
  color: "#FF0420",
80
117
  chainId: 10,
118
+ apiURL: "https://api-optimistic.etherscan.io",
81
119
  usdcAddress: "0x7f5c764cbc14f9669b88837ca1490cca17c31607",
82
120
  balanceResolverAddress: "0xca5f37e6D8bB24c5A7958d5eccE7Bd9Aacc944f2",
83
121
  explorerUrl: "https://optimistic.etherscan.io",
@@ -95,26 +133,25 @@ export const networks: Network[] = [
95
133
  },
96
134
  },
97
135
  {
98
- name: "Avalanche",
99
- debankName: "avax",
100
- ankrName: "avalanche",
101
- zerionName: "avalanche",
102
- color: "#EB5757",
103
- chainId: 43114,
104
- usdcAddress: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
105
- balanceResolverAddress: "0x63009f31D054E0ac9F321Cf0D642375236A4Bf1E",
106
- explorerUrl: "https://snowtrace.io",
136
+ name: "Polygon zkEVM",
137
+ chainId: 1101,
138
+ color: "#8544f6",
139
+ ankrName: "polygon_zkevm",
140
+ explorerUrl: "https://zkevm.polygonscan.com",
141
+ apiURL: "https://api-zkevm.polygonscan.com",
142
+ balanceResolverAddress: "0x48D1Fa5Ee6691a1E0B45d2B515650997BEA27a01",
143
+ usdcAddress: "0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035",
107
144
  get serverRpcUrl() {
108
- return process.env?.AVALANCHE_RPC_URL || this.params.rpcUrls[0];
145
+ return process.env?.POLYGON_ZKEVM_RPC_URL || this.params.rpcUrls[0];
109
146
  },
110
147
  params: {
111
- chainName: "Avalanche Network",
148
+ chainName: "polygon zkEVM",
149
+ rpcUrls: ["https://zkevm-rpc.com"],
112
150
  nativeCurrency: {
113
- name: "Avalanche",
114
- symbol: "AVAX",
151
+ name: "Ethereum",
152
+ symbol: "ETH",
115
153
  decimals: 18,
116
154
  },
117
- rpcUrls: ["https://rpc.ankr.com/avalanche"],
118
155
  },
119
156
  },
120
157
  {
@@ -125,6 +162,7 @@ export const networks: Network[] = [
125
162
  color: "#F3BA2F",
126
163
  chainId: 56,
127
164
  explorerUrl: "https://bscscan.com",
165
+ apiURL: "https://api.bscscan.com",
128
166
  usdcAddress: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
129
167
  balanceResolverAddress: "0xb808cff38706e267067b0af427726aa099f69f89",
130
168
  get serverRpcUrl() {
@@ -140,14 +178,62 @@ export const networks: Network[] = [
140
178
  },
141
179
  },
142
180
  },
181
+ {
182
+ name: "Avalanche",
183
+ debankName: "avax",
184
+ ankrName: "avalanche",
185
+ zerionName: "avalanche",
186
+ color: "#EB5757",
187
+ chainId: 43114,
188
+ usdcAddress: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
189
+ balanceResolverAddress: "0x63009f31D054E0ac9F321Cf0D642375236A4Bf1E",
190
+ explorerUrl: "https://snowtrace.io",
191
+ apiURL: "https://api.snowtrace.io",
192
+ get serverRpcUrl() {
193
+ return process.env?.AVALANCHE_RPC_URL || this.params.rpcUrls[0];
194
+ },
195
+ params: {
196
+ chainName: "Avalanche Network",
197
+ nativeCurrency: {
198
+ name: "Avalanche",
199
+ symbol: "AVAX",
200
+ decimals: 18,
201
+ },
202
+ rpcUrls: ["https://rpc.ankr.com/avalanche"],
203
+ },
204
+ },
205
+ {
206
+ name: "Fantom",
207
+ chainId: 250,
208
+ zerionName: "fantom",
209
+ explorerUrl: "https://ftmscan.com",
210
+ ankrName: "fantom",
211
+ color: "#1969ff",
212
+ get serverRpcUrl() {
213
+ return process.env?.FANTOM_RPC_URL || this.params.rpcUrls[0];
214
+ },
215
+ usdcAddress: "0x04068da6c83afcfa0e13ba15a6696662335d5b75",
216
+ balanceResolverAddress: "0x929376c77a2fb8152375a089a4fccf84ff481479",
217
+ params: {
218
+ rpcUrls: ["https://rpc.ankr.com/fantom"],
219
+ chainName: "Fantom",
220
+ nativeCurrency: {
221
+ name: "Fantom",
222
+ symbol: "FTM",
223
+ decimals: 18,
224
+ },
225
+ },
226
+ },
143
227
  {
144
228
  name: "Gnosis",
145
229
  debankName: "xdai",
146
230
  zerionName: "xdai",
147
231
  color: "#04795C",
232
+ ankrName: "gnosis",
148
233
  chainId: 100,
149
234
  balanceResolverAddress: "0xfaa244e276b1597f663975ed007ee4ff70d27849",
150
235
  explorerUrl: "https://gnosisscan.io",
236
+ apiURL: "https://api.gnosisscan.io",
151
237
  usdcAddress: "0xddafbb505ad214d7b80b1f830fccc89b60fb7a83",
152
238
  get serverRpcUrl() {
153
239
  return process.env?.GNOSIS_RPC_URL || this.params.rpcUrls[0];
@@ -162,27 +248,6 @@ export const networks: Network[] = [
162
248
  },
163
249
  },
164
250
  },
165
- {
166
- name: "Polygon zkEVM",
167
- chainId: 1101,
168
- color: "#8544f6",
169
- explorerUrl: "https://zkevm.polygonscan.com",
170
- balanceResolverAddress: "0x48D1Fa5Ee6691a1E0B45d2B515650997BEA27a01",
171
- usdcAddress: "0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035",
172
- get serverRpcUrl() {
173
- return process.env?.POLYGON_ZKEVM_RPC_URL || this.params.rpcUrls[0];
174
- },
175
- params: {
176
- chainName: "polygon zkEVM",
177
- rpcUrls: ["https://zkevm-rpc.com"],
178
-
179
- nativeCurrency: {
180
- name: "Ethereum",
181
- symbol: "ETH",
182
- decimals: 18,
183
- },
184
- },
185
- },
186
251
  {
187
252
  name: "Aurora",
188
253
  chainId: 1313161554,
@@ -204,28 +269,27 @@ export const networks: Network[] = [
204
269
  },
205
270
  },
206
271
  },
207
- {
208
- name: "Fantom",
209
- chainId: 250,
210
- zerionName: "fantom",
211
- explorerUrl: "https://ftmscan.com",
212
- ankrName: "fantom",
213
- color: "#1969ff",
214
- get serverRpcUrl() {
215
- return process.env?.FANTOM_RPC_URL || this.params.rpcUrls[0];
216
- },
217
- usdcAddress: "0x04068da6c83afcfa0e13ba15a6696662335d5b75",
218
- balanceResolverAddress: "0x929376c77a2fb8152375a089a4fccf84ff481479",
219
- params: {
220
- rpcUrls: ["https://rpc.ankr.com/fantom"],
221
- chainName: "Fantom",
222
- nativeCurrency: {
223
- name: "Fantom",
224
- symbol: "FTM",
225
- decimals: 18,
226
- },
227
- },
228
- },
272
+ // {
273
+ // name: "Fuse",
274
+ // chainId: 122,
275
+ // zerionName: "fuse",
276
+ // color: "#78d64b",
277
+ // explorerUrl: "https://explorer.fuse.io",
278
+ // get serverRpcUrl() {
279
+ // return process.env?.FUSE_RPC_URL || this.params.rpcUrls[0];
280
+ // },
281
+ // usdcAddress: "",
282
+ // balanceResolverAddress: "0xdF19Da523DA64bBE82eE0E4DFf00d676A8386474",
283
+ // params: {
284
+ // rpcUrls: ["https://fuse-mainnet.chainstacklabs.com"],
285
+ // chainName: "Fuse",
286
+ // nativeCurrency: {
287
+ // decimals: 18,
288
+ // name: "Fuse",
289
+ // symbol: "fuse",
290
+ // },
291
+ // },
292
+ // },
229
293
  {
230
294
  name: AVO_PROD_CHAIN_NAME,
231
295
  chainId: AVO_PROD_CHAIN_ID,
@@ -269,18 +333,22 @@ export const networks: Network[] = [
269
333
  ];
270
334
 
271
335
  export const chainUsdcAddresses = [
272
- { chainId: 1, address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' },
273
- { chainId: 10, address: '0x7f5c764cbc14f9669b88837ca1490cca17c31607' },
274
- { chainId: 56, address: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d' },
275
- { chainId: 100, address: '0xddafbb505ad214d7b80b1f830fccc89b60fb7a83' },
276
- { chainId: 137, address: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' },
277
- { chainId: 250, address: '0x04068da6c83afcfa0e13ba15a6696662335d5b75' },
278
- { chainId: 42161, address: '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8' },
279
- { chainId: 42161, address: '0xaf88d065e77c8cc2239327c5edb3a432268e5831' },
280
- { chainId: 43114, address: '0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e' },
281
- { chainId: 43114, address: '0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664' },
282
- { chainId: 1101, address: '0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035' },
283
- { chainId: 1313161554, address: '0xB12BFcA5A55806AaF64E99521918A4bf0fC40802' },
336
+ { chainId: 1, address: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" },
337
+ { chainId: 10, address: "0x7f5c764cbc14f9669b88837ca1490cca17c31607" },
338
+ { chainId: 56, address: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d" },
339
+ { chainId: 100, address: "0xddafbb505ad214d7b80b1f830fccc89b60fb7a83" },
340
+ { chainId: 137, address: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" },
341
+ { chainId: 250, address: "0x04068da6c83afcfa0e13ba15a6696662335d5b75" },
342
+ { chainId: 42161, address: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8" },
343
+ { chainId: 42161, address: "0xaf88d065e77c8cc2239327c5edb3a432268e5831" },
344
+ { chainId: 43114, address: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e" },
345
+ { chainId: 43114, address: "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664" },
346
+ { chainId: 1101, address: "0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035" },
347
+ {
348
+ chainId: 1313161554,
349
+ address: "0xB12BFcA5A55806AaF64E99521918A4bf0fC40802",
350
+ },
351
+ { chainId: 8453, address: "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA" },
284
352
  ];
285
353
 
286
354
  export const getNetworkByChainId = (
package/utils/services.ts CHANGED
@@ -1,8 +1,15 @@
1
1
  export const fetchTokenByAddress = async (
2
2
  address: string,
3
- chainId: string | number
3
+ chainId: string | number,
4
+ tokens?: ITokenPrice[]
4
5
  ) => {
5
6
  if (!address || !chainId) return null;
7
+
8
+ if (tokens?.length) {
9
+ const token = tokens.find((token) => token.address?.toLocaleLowerCase() === address?.toLocaleLowerCase() && token.chain_id == chainId);
10
+ if (token) return token;
11
+ }
12
+
6
13
  const [token] = (await $fetch(`${blockQueryURL}/${chainId}/tokens`, {
7
14
  params: {
8
15
  sparkline: false,