@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.
- package/abi/multisigForwarder.json +697 -0
- package/assets/images/icons/hammer.svg +5 -0
- package/assets/images/icons/info-2.svg +12 -0
- package/components/ActionLogo.vue +2 -0
- package/components/ActionMetadata.vue +17 -11
- package/components/AuthorityAvatar.vue +38 -0
- package/components/ChainLogo.vue +14 -556
- package/components/metadata/Bridge.vue +26 -6
- package/components/metadata/CrossTransfer.vue +5 -1
- package/components/metadata/GasTopup.vue +7 -1
- package/components/metadata/Permit2.vue +6 -1
- package/components/metadata/Signers.vue +63 -0
- package/components/metadata/Swap.vue +9 -2
- package/components/metadata/Transfer.vue +5 -1
- package/contracts/MultisigForwarder.ts +859 -0
- package/contracts/factories/MultisigForwarder__factory.ts +721 -0
- package/contracts/factories/index.ts +1 -0
- package/contracts/index.ts +2 -0
- package/package.json +5 -3
- package/utils/formatter.ts +1 -4
- package/utils/helper.ts +2 -1
- package/utils/metadata.ts +88 -51
- package/utils/network.ts +160 -92
- package/utils/services.ts +8 -1
- package/utils/utils.d.ts +6 -5
package/contracts/index.ts
CHANGED
|
@@ -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.
|
|
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
|
}
|
package/utils/formatter.ts
CHANGED
|
@@ -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(
|
|
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
package/utils/metadata.ts
CHANGED
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
import { ethers, utils } from "ethers";
|
|
2
|
-
import { Forwarder__factory } from "../contracts";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
|
382
|
-
"
|
|
413
|
+
const executeDataMultisig = ifaceMultisig.decodeFunctionData(
|
|
414
|
+
"executeV1",
|
|
383
415
|
data
|
|
384
416
|
);
|
|
385
417
|
if (
|
|
386
|
-
|
|
387
|
-
!
|
|
418
|
+
executeDataMultisig.params_.metadata === "0x" ||
|
|
419
|
+
!executeDataMultisig.params_.metadata
|
|
388
420
|
) {
|
|
389
421
|
return null;
|
|
390
422
|
} else {
|
|
391
|
-
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
|
-
|
|
471
|
+
dapp: (data, type) => ({
|
|
436
472
|
type,
|
|
437
473
|
name: data.name,
|
|
438
474
|
url: data.url,
|
|
439
475
|
}),
|
|
440
|
-
|
|
476
|
+
deploy: (data, type) => ({
|
|
477
|
+
type,
|
|
478
|
+
}),
|
|
479
|
+
"tx-builder": (data, type) => ({
|
|
441
480
|
type,
|
|
481
|
+
actionCount: utils.parseBytes32String(data.actionCount || ""),
|
|
442
482
|
}),
|
|
443
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 = [
|
|
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: "
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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?.
|
|
145
|
+
return process.env?.POLYGON_ZKEVM_RPC_URL || this.params.rpcUrls[0];
|
|
109
146
|
},
|
|
110
147
|
params: {
|
|
111
|
-
chainName: "
|
|
148
|
+
chainName: "polygon zkEVM",
|
|
149
|
+
rpcUrls: ["https://zkevm-rpc.com"],
|
|
112
150
|
nativeCurrency: {
|
|
113
|
-
name: "
|
|
114
|
-
symbol: "
|
|
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
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
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:
|
|
273
|
-
{ chainId: 10, address:
|
|
274
|
-
{ chainId: 56, address:
|
|
275
|
-
{ chainId: 100, address:
|
|
276
|
-
{ chainId: 137, address:
|
|
277
|
-
{ chainId: 250, address:
|
|
278
|
-
{ chainId: 42161, address:
|
|
279
|
-
{ chainId: 42161, address:
|
|
280
|
-
{ chainId: 43114, address:
|
|
281
|
-
{ chainId: 43114, address:
|
|
282
|
-
{ chainId: 1101, address:
|
|
283
|
-
{
|
|
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,
|