@instadapp/avocado-base 0.0.0-dev.fcdcc0f → 0.0.0-dev.fd73c5f
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/assets/images/icons/hammer.svg +5 -0
- package/components/ActionLogo.vue +2 -0
- package/components/ActionMetadata.vue +27 -21
- package/components/metadata/CrossTransfer.vue +11 -3
- package/components/metadata/Signers.vue +2 -1
- package/package.json +1 -1
- package/utils/metadata.ts +79 -34
- package/utils/network.ts +70 -37
- package/utils/utils.d.ts +4 -5
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="18" height="18" viewBox="0 0 18 18" fill="none"
|
|
2
|
+
xmlns="http://www.w3.org/2000/svg">
|
|
3
|
+
<path d="M16.0678 8.64793L17.2102 9.79039C17.4404 10.0205 17.4334 10.4006 17.1947 10.6393L14.169 13.6651C13.9302 13.9038 13.5501 13.9108 13.32 13.6806L12.0532 12.4139C11.8231 12.1837 11.83 11.8036 12.0687 11.5649C12.6078 11.0259 12.9103 10.7041 12.4882 9.98816C12.128 9.37711 10.7867 8.04387 9.9829 8.84766L9.026 9.80457C8.79152 10.0391 8.42065 10.0499 8.18946 9.83216C8.18527 9.82822 8.18113 9.8242 8.17704 9.82011C7.60427 9.24734 6.86936 8.69159 6.39943 8.03122C6.20623 7.75971 6.27917 7.35876 6.56293 7.14058C7.13082 6.70394 7.83604 6.05667 7.51626 5.73688C7.00756 5.22819 6.64232 4.84336 6.00502 4.36291C4.84749 3.49024 2.98873 2.86307 1.68669 2.5009C1.49898 2.44869 1.54877 2.11407 1.74553 2.11091C1.74865 2.11086 1.74938 2.1109 1.7525 2.11067C1.8512 2.10361 5.1158 1.87459 7.10771 2.35491C8.41273 2.66961 9.17363 2.87223 10.3122 3.56383C11.7706 4.44979 12.9611 5.54124 13.3465 6.69684C13.732 7.85244 12.8562 8.45813 13.6146 8.8618C14.0693 9.10386 14.6271 9.08774 15.0305 8.72253C15.3277 8.4534 15.7944 8.37456 16.0678 8.64793Z" fill="currentColor"/>
|
|
4
|
+
<path d="M8.17704 9.82011C8.18113 9.8242 8.18527 9.82822 8.18946 9.83216M8.17704 9.82011L8.18946 9.83216M8.17704 9.82011C7.60427 9.24734 6.86936 8.69159 6.39943 8.03122M8.18946 9.83216C8.42065 10.0499 8.79152 10.0391 9.026 9.80457L9.9829 8.84766C10.7867 8.04387 12.128 9.37711 12.4882 9.98816C12.9103 10.7041 12.6078 11.0259 12.0687 11.5649C11.83 11.8036 11.8231 12.1837 12.0532 12.4139L13.32 13.6806C13.5501 13.9108 13.9302 13.9038 14.169 13.6651L17.1947 10.6393C17.4334 10.4006 17.4404 10.0205 17.2102 9.79039L16.0678 8.64793C15.7944 8.37456 15.3277 8.4534 15.0305 8.72253C14.6271 9.08774 14.0693 9.10386 13.6146 8.8618C12.8562 8.45813 13.732 7.85244 13.3465 6.69684C12.9611 5.54124 11.7706 4.44979 10.3122 3.56383C9.17363 2.87223 8.41273 2.66961 7.10771 2.35492C5.1158 1.87459 1.8512 2.10361 1.7525 2.11067C1.74938 2.1109 1.74865 2.11086 1.74553 2.11091C1.54877 2.11407 1.49898 2.44869 1.68669 2.5009C2.98873 2.86307 4.84749 3.49024 6.00502 4.36291C6.64232 4.84336 7.00756 5.22819 7.51626 5.73688C7.83604 6.05667 7.13082 6.70394 6.56293 7.14058C6.27917 7.35876 6.20623 7.75971 6.39943 8.03122M8.18946 9.83216L2.8021 15.2195C2.47839 15.5432 1.97213 15.6105 1.60516 15.3369C1.46424 15.2318 1.32499 15.1183 1.2164 15.0097C1.1078 14.9011 0.994378 14.7619 0.889279 14.621C0.615587 14.254 0.682904 13.7477 1.00661 13.424L6.39943 8.03122" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
+
</svg>
|
|
@@ -13,6 +13,7 @@ import InstadappProSVG from '~/assets/images/icons/instadapp-pro.svg'
|
|
|
13
13
|
import PermitSignSVG from '~/assets/images/icons/permit-sign.svg'
|
|
14
14
|
import RejectProposalSVG from '~/assets/images/icons/reject-proposal.svg'
|
|
15
15
|
import UpgradeSVG from '~/assets/images/icons/upgrade.svg'
|
|
16
|
+
import HammerSVG from '~/assets/images/icons/hammer.svg'
|
|
16
17
|
|
|
17
18
|
defineProps<{
|
|
18
19
|
action: MetadataTypes
|
|
@@ -35,4 +36,5 @@ defineProps<{
|
|
|
35
36
|
<InstadappProSVG v-else-if="action === 'instadapp-pro'"/>
|
|
36
37
|
<PermitSignSVG v-else-if="action === 'permit2'"/>
|
|
37
38
|
<UpgradeSVG v-else-if="action === 'upgrade'"/>
|
|
39
|
+
<HammerSVG v-else-if="action === 'tx-builder'"/>
|
|
38
40
|
</template>
|
|
@@ -23,12 +23,16 @@ provide('tokens', props.tokens);
|
|
|
23
23
|
<MetadataBridge v-if="metadata.type === 'bridge'" :metadata="metadata" :chain_id="chain_id" />
|
|
24
24
|
<MetadataPermit2 v-if="metadata.type === 'permit2'" :metadata="metadata" :chain_id="chain_id" />
|
|
25
25
|
|
|
26
|
+
<div class="text-left w-fit capitalize" v-if="metadata.type === 'import'">
|
|
27
|
+
Import from {{ metadata.protocol }} ({{ (formatUsd(fromWei(metadata.valueInUsd, 10))) }})
|
|
28
|
+
</div>
|
|
29
|
+
|
|
26
30
|
<div v-if="metadata.type === 'upgrade'" class="self-start">
|
|
27
31
|
Wallet upgraded to {{ metadata?.version }}
|
|
28
32
|
</div>
|
|
29
33
|
<div v-if="metadata.type === 'dapp'" class="self-start flex items-center gap-2 text-primary">
|
|
30
34
|
<a :href="metadata?.url" target="_blank" rel="noopener noreferrer">{{
|
|
31
|
-
metadata?.name
|
|
35
|
+
metadata?.name || metadata?.url
|
|
32
36
|
}}</a>
|
|
33
37
|
<SvgoExternalLink />
|
|
34
38
|
</div>
|
|
@@ -37,36 +41,38 @@ provide('tokens', props.tokens);
|
|
|
37
41
|
</div>
|
|
38
42
|
<div v-if="metadata.type === 'auth'" class="self-start capitalize flex gap-3">
|
|
39
43
|
Authority {{ metadata.remove ? 'Removed' : 'Added' }}:
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
<a class="text-primary break-all" :href="getExplorerUrl(metadata.chainId, `/address/${metadata.address}`)"
|
|
45
|
+
target="_blank">
|
|
46
|
+
{{ shortenHash(metadata.address) }}
|
|
47
|
+
</a>
|
|
48
|
+
<div class="flex gap-3">
|
|
49
|
+
<ChainLogo class="w-5 h-5" :chain="metadata.chainId" />
|
|
50
|
+
{{ chainIdToName(metadata.chainId) }}
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
<div v-if="metadata.type === 'tx-builder'" class="self-start capitalize flex gap-3">
|
|
54
|
+
<span v-if="!compact">
|
|
55
|
+
Transaction Builder
|
|
56
|
+
</span> ({{ metadata?.actionCount }} {{ toBN(metadata?.actionCount).lt(2) ? 'action' : 'actions' }})
|
|
51
57
|
</div>
|
|
52
58
|
<div v-if="metadata.type === 'instadapp-pro'" class="self-start capitalize flex gap-3">
|
|
53
59
|
Instadapp Pro |
|
|
54
60
|
{{ metadata?.castDetails }}
|
|
55
61
|
</div>
|
|
56
62
|
|
|
57
|
-
<MetadataSigners v-if="metadata.type === 'add-signers' || metadata.type === 'remove-signers'" :metadata="metadata"
|
|
63
|
+
<MetadataSigners v-if="metadata.type === 'add-signers' || metadata.type === 'remove-signers'" :metadata="metadata"
|
|
64
|
+
:compact="compact" />
|
|
58
65
|
|
|
59
|
-
|
|
60
|
-
|
|
66
|
+
<div v-if="metadata.type === 'change-threshold'" class="text-left w-fit">
|
|
67
|
+
Change Threshold to {{ metadata.count }}
|
|
61
68
|
</div>
|
|
62
69
|
|
|
63
70
|
<div v-tippy="{
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
{{ shortenHash(metadata.id) }}
|
|
71
|
+
content: metadata.id,
|
|
72
|
+
maxWidth: 'none',
|
|
73
|
+
interactive: true,
|
|
74
|
+
}" v-if="metadata.type === 'rejection'" class="text-left w-fit">
|
|
75
|
+
{{ shortenHash(metadata.id) }}
|
|
70
76
|
</div>
|
|
71
77
|
</div>
|
|
72
78
|
</template>
|
|
@@ -20,9 +20,17 @@ const fromToken = asyncComputed(() => {
|
|
|
20
20
|
);
|
|
21
21
|
});
|
|
22
22
|
|
|
23
|
-
const
|
|
23
|
+
const toToken = asyncComputed(() => {
|
|
24
|
+
if (!props?.metadata?.toChainId) return null;
|
|
25
|
+
|
|
26
|
+
if (Array.isArray(tokens) && !tokens.length) return null;
|
|
27
|
+
|
|
28
|
+
return fetchTokenByAddress(props.metadata?.toToken, props?.metadata?.toChainId, tokens);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
const formattedToAmount = computed(() =>
|
|
24
32
|
formatDecimal(
|
|
25
|
-
fromWei(props.metadata?.amount,
|
|
33
|
+
fromWei(props.metadata?.amount, toToken?.value?.decimals).toFixed()
|
|
26
34
|
)
|
|
27
35
|
);
|
|
28
36
|
</script>
|
|
@@ -36,7 +44,7 @@ const formattedFromAmount = computed(() =>
|
|
|
36
44
|
<span v-if="!compact" class="capitalize text-xs sm:text-sm">Cross-chain send</span>
|
|
37
45
|
<span class="inline-flex gap-2.5 items-center">
|
|
38
46
|
<img width="20" height="20" class="w-5 h-5" :src="fromToken?.logo_url" />
|
|
39
|
-
{{
|
|
47
|
+
{{ formattedToAmount }}
|
|
40
48
|
<span class="uppercase">{{ fromToken?.symbol }}</span>
|
|
41
49
|
</span>
|
|
42
50
|
</div>
|
|
@@ -13,7 +13,8 @@ defineProps<{
|
|
|
13
13
|
|
|
14
14
|
<template>
|
|
15
15
|
<div class="font-medium">
|
|
16
|
-
<div v-if="!compact || metadata.addresses.length < 3" class="flex gap-[14px] flex-wrap">
|
|
16
|
+
<div v-if="!compact || metadata.addresses.length < 3" class="flex gap-[14px] flex-wrap items-end">
|
|
17
|
+
<p v-if="!compact" class="text-xs"> {{ formatTxType(metadata.type) }} </p>
|
|
17
18
|
<div v-for="address of metadata.addresses" :key="address" class="flex gap-2 rounded-full bg-slate-100 dark:bg-slate-800 justify-start items-center px-2 py-1.5">
|
|
18
19
|
<AuthorityAvatar :address="address" class="w-[18px] h-[18px]" />
|
|
19
20
|
<Tippy max-width="none" interactive>
|
package/package.json
CHANGED
package/utils/metadata.ts
CHANGED
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
import { ethers, utils } from "ethers";
|
|
2
2
|
import { Forwarder__factory, MultisigForwarder__factory } from "../contracts";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
|
@@ -387,8 +427,12 @@ const getMetadataFromData = (data: string) => {
|
|
|
387
427
|
return metadata;
|
|
388
428
|
};
|
|
389
429
|
|
|
390
|
-
|
|
391
430
|
const typesPayload: IPayload = {
|
|
431
|
+
import: (data, type) => ({
|
|
432
|
+
type,
|
|
433
|
+
protocol: utils.parseBytes32String(data.protocol || ""),
|
|
434
|
+
valueInUsd: toBN(data.valueInUsd).toFixed(),
|
|
435
|
+
}),
|
|
392
436
|
transfer: (data, type) => ({
|
|
393
437
|
type,
|
|
394
438
|
token: data.token,
|
|
@@ -424,15 +468,19 @@ const typesPayload: IPayload = {
|
|
|
424
468
|
token: data.token,
|
|
425
469
|
onBehalf: data.onBehalf,
|
|
426
470
|
}),
|
|
427
|
-
|
|
471
|
+
dapp: (data, type) => ({
|
|
428
472
|
type,
|
|
429
473
|
name: data.name,
|
|
430
474
|
url: data.url,
|
|
431
475
|
}),
|
|
432
|
-
|
|
476
|
+
deploy: (data, type) => ({
|
|
477
|
+
type,
|
|
478
|
+
}),
|
|
479
|
+
"tx-builder": (data, type) => ({
|
|
433
480
|
type,
|
|
481
|
+
actionCount: utils.parseBytes32String(data.actionCount || ""),
|
|
434
482
|
}),
|
|
435
|
-
|
|
483
|
+
permit2: (data, type) => ({
|
|
436
484
|
type,
|
|
437
485
|
token: data.token,
|
|
438
486
|
spender: data.spender,
|
|
@@ -447,7 +495,7 @@ const typesPayload: IPayload = {
|
|
|
447
495
|
amount: toBN(data.amount).toFixed(),
|
|
448
496
|
receiver: data.receiver,
|
|
449
497
|
}),
|
|
450
|
-
|
|
498
|
+
auth: (data) => ({
|
|
451
499
|
type: data.remove ? "remove-authority" : "add-authority",
|
|
452
500
|
address: data.address,
|
|
453
501
|
chainId: data.chainId ? data.chainId.toString() : null,
|
|
@@ -457,7 +505,7 @@ const typesPayload: IPayload = {
|
|
|
457
505
|
type,
|
|
458
506
|
castDetails: data.castDetails,
|
|
459
507
|
}),
|
|
460
|
-
|
|
508
|
+
rejection: (data, type) => ({
|
|
461
509
|
type,
|
|
462
510
|
id: data.id,
|
|
463
511
|
}),
|
|
@@ -499,20 +547,17 @@ const parseMetadata = (metadata: string) => {
|
|
|
499
547
|
decodedMetadata.data
|
|
500
548
|
);
|
|
501
549
|
|
|
502
|
-
const payloadFunc = typesPayload[type]
|
|
503
|
-
|
|
550
|
+
const payloadFunc = typesPayload[type];
|
|
551
|
+
|
|
504
552
|
if (payloadFunc) {
|
|
505
|
-
const payload = payloadFunc(decodedData, type)
|
|
553
|
+
const payload = payloadFunc(decodedData, type);
|
|
506
554
|
metadataArr.push(payload);
|
|
507
555
|
}
|
|
508
|
-
|
|
509
556
|
}
|
|
510
557
|
|
|
511
558
|
return metadataArr;
|
|
512
559
|
};
|
|
513
560
|
|
|
514
|
-
|
|
515
|
-
|
|
516
561
|
/**
|
|
517
562
|
* Replaces hyphens with spaces and capitalizes the first letter of each word in a sentence.
|
|
518
563
|
* @param {string} txType - The input sentence to modify
|
package/utils/network.ts
CHANGED
|
@@ -8,9 +8,11 @@ import {
|
|
|
8
8
|
AVO_STAGING_CHAIN_ID,
|
|
9
9
|
AVO_STAGING_RPC_URL,
|
|
10
10
|
AVO_STAGING_EXPLORER_URL,
|
|
11
|
-
} from
|
|
11
|
+
} from "./avocado";
|
|
12
12
|
|
|
13
|
-
export const bridgeDisabledNetworks = [
|
|
13
|
+
export const bridgeDisabledNetworks = [];
|
|
14
|
+
|
|
15
|
+
export const networksSimulationNotSupported = [1313161554, 1101];
|
|
14
16
|
|
|
15
17
|
export const networks: Network[] = [
|
|
16
18
|
{
|
|
@@ -23,7 +25,7 @@ export const networks: Network[] = [
|
|
|
23
25
|
balanceResolverAddress: "0x58632D23120b20650262b8A629a14e4F4043E0D9",
|
|
24
26
|
usdcAddress: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
|
|
25
27
|
explorerUrl: "https://polygonscan.com",
|
|
26
|
-
apiURL:
|
|
28
|
+
apiURL: "https://api.polygonscan.com",
|
|
27
29
|
get serverRpcUrl() {
|
|
28
30
|
return process.env?.POLYGON_RPC_URL || this.params.rpcUrls[0];
|
|
29
31
|
},
|
|
@@ -47,7 +49,7 @@ export const networks: Network[] = [
|
|
|
47
49
|
usdcAddress: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8",
|
|
48
50
|
balanceResolverAddress: "0xca5f37e6D8bB24c5A7958d5eccE7Bd9Aacc944f2",
|
|
49
51
|
explorerUrl: "https://arbiscan.io",
|
|
50
|
-
apiURL:
|
|
52
|
+
apiURL: "https://api.arbiscan.io",
|
|
51
53
|
get serverRpcUrl() {
|
|
52
54
|
return process.env?.ARBITRUM_RPC_URL || this.params.rpcUrls[0];
|
|
53
55
|
},
|
|
@@ -68,7 +70,7 @@ export const networks: Network[] = [
|
|
|
68
70
|
zerionName: "ethereum",
|
|
69
71
|
chainId: 1,
|
|
70
72
|
explorerUrl: "https://etherscan.io",
|
|
71
|
-
apiURL:
|
|
73
|
+
apiURL: "https://api.etherscan.io",
|
|
72
74
|
color: "#5D5FEF",
|
|
73
75
|
get serverRpcUrl() {
|
|
74
76
|
return process.env?.MAINNET_RPC_URL || this.params.rpcUrls[0];
|
|
@@ -83,27 +85,28 @@ export const networks: Network[] = [
|
|
|
83
85
|
decimals: 18,
|
|
84
86
|
},
|
|
85
87
|
},
|
|
86
|
-
},
|
|
88
|
+
},
|
|
87
89
|
{
|
|
88
|
-
name:
|
|
90
|
+
name: "Base",
|
|
89
91
|
chainId: 8453,
|
|
90
|
-
color:
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
color: "#1E2024",
|
|
93
|
+
ankrName: "base",
|
|
94
|
+
explorerUrl: "https://basescan.org",
|
|
95
|
+
apiURL: "https://api.basescan.org",
|
|
93
96
|
get serverRpcUrl() {
|
|
94
97
|
return process.env?.BASE_RPC_URL || this.params.rpcUrls[0];
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
rpcUrls: [
|
|
98
|
+
},
|
|
99
|
+
usdcAddress: "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA",
|
|
100
|
+
balanceResolverAddress: "0x23c8EAb8a4373dD16b0947Ebe8bf76Ff7A49d13C",
|
|
101
|
+
params: {
|
|
102
|
+
rpcUrls: ["https://rpc.ankr.com/base"],
|
|
100
103
|
chainName: "Base",
|
|
101
104
|
nativeCurrency: {
|
|
102
105
|
name: "Ethereum",
|
|
103
106
|
symbol: "ETH",
|
|
104
107
|
decimals: 18,
|
|
105
108
|
},
|
|
106
|
-
}
|
|
109
|
+
},
|
|
107
110
|
},
|
|
108
111
|
{
|
|
109
112
|
name: "Optimism",
|
|
@@ -112,7 +115,7 @@ export const networks: Network[] = [
|
|
|
112
115
|
zerionName: "optimism",
|
|
113
116
|
color: "#FF0420",
|
|
114
117
|
chainId: 10,
|
|
115
|
-
apiURL:
|
|
118
|
+
apiURL: "https://api-optimistic.etherscan.io",
|
|
116
119
|
usdcAddress: "0x7f5c764cbc14f9669b88837ca1490cca17c31607",
|
|
117
120
|
balanceResolverAddress: "0xca5f37e6D8bB24c5A7958d5eccE7Bd9Aacc944f2",
|
|
118
121
|
explorerUrl: "https://optimistic.etherscan.io",
|
|
@@ -133,8 +136,9 @@ export const networks: Network[] = [
|
|
|
133
136
|
name: "Polygon zkEVM",
|
|
134
137
|
chainId: 1101,
|
|
135
138
|
color: "#8544f6",
|
|
139
|
+
ankrName: "polygon_zkevm",
|
|
136
140
|
explorerUrl: "https://zkevm.polygonscan.com",
|
|
137
|
-
apiURL:
|
|
141
|
+
apiURL: "https://api-zkevm.polygonscan.com",
|
|
138
142
|
balanceResolverAddress: "0x48D1Fa5Ee6691a1E0B45d2B515650997BEA27a01",
|
|
139
143
|
usdcAddress: "0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035",
|
|
140
144
|
get serverRpcUrl() {
|
|
@@ -158,7 +162,7 @@ export const networks: Network[] = [
|
|
|
158
162
|
color: "#F3BA2F",
|
|
159
163
|
chainId: 56,
|
|
160
164
|
explorerUrl: "https://bscscan.com",
|
|
161
|
-
apiURL:
|
|
165
|
+
apiURL: "https://api.bscscan.com",
|
|
162
166
|
usdcAddress: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
|
|
163
167
|
balanceResolverAddress: "0xb808cff38706e267067b0af427726aa099f69f89",
|
|
164
168
|
get serverRpcUrl() {
|
|
@@ -184,7 +188,7 @@ export const networks: Network[] = [
|
|
|
184
188
|
usdcAddress: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
|
|
185
189
|
balanceResolverAddress: "0x63009f31D054E0ac9F321Cf0D642375236A4Bf1E",
|
|
186
190
|
explorerUrl: "https://snowtrace.io",
|
|
187
|
-
apiURL:
|
|
191
|
+
apiURL: "https://api.snowtrace.io",
|
|
188
192
|
get serverRpcUrl() {
|
|
189
193
|
return process.env?.AVALANCHE_RPC_URL || this.params.rpcUrls[0];
|
|
190
194
|
},
|
|
@@ -225,10 +229,11 @@ export const networks: Network[] = [
|
|
|
225
229
|
debankName: "xdai",
|
|
226
230
|
zerionName: "xdai",
|
|
227
231
|
color: "#04795C",
|
|
232
|
+
ankrName: "gnosis",
|
|
228
233
|
chainId: 100,
|
|
229
234
|
balanceResolverAddress: "0xfaa244e276b1597f663975ed007ee4ff70d27849",
|
|
230
235
|
explorerUrl: "https://gnosisscan.io",
|
|
231
|
-
apiURL:
|
|
236
|
+
apiURL: "https://api.gnosisscan.io",
|
|
232
237
|
usdcAddress: "0xddafbb505ad214d7b80b1f830fccc89b60fb7a83",
|
|
233
238
|
get serverRpcUrl() {
|
|
234
239
|
return process.env?.GNOSIS_RPC_URL || this.params.rpcUrls[0];
|
|
@@ -264,6 +269,27 @@ export const networks: Network[] = [
|
|
|
264
269
|
},
|
|
265
270
|
},
|
|
266
271
|
},
|
|
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
|
+
// },
|
|
267
293
|
{
|
|
268
294
|
name: AVO_PROD_CHAIN_NAME,
|
|
269
295
|
chainId: AVO_PROD_CHAIN_ID,
|
|
@@ -307,19 +333,22 @@ export const networks: Network[] = [
|
|
|
307
333
|
];
|
|
308
334
|
|
|
309
335
|
export const chainUsdcAddresses = [
|
|
310
|
-
{ chainId: 1, address:
|
|
311
|
-
{ chainId: 10, address:
|
|
312
|
-
{ chainId: 56, address:
|
|
313
|
-
{ chainId: 100, address:
|
|
314
|
-
{ chainId: 137, address:
|
|
315
|
-
{ chainId: 250, address:
|
|
316
|
-
{ chainId: 42161, address:
|
|
317
|
-
{ chainId: 42161, address:
|
|
318
|
-
{ chainId: 43114, address:
|
|
319
|
-
{ chainId: 43114, address:
|
|
320
|
-
{ chainId: 1101, address:
|
|
321
|
-
{
|
|
322
|
-
|
|
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" },
|
|
323
352
|
];
|
|
324
353
|
|
|
325
354
|
export const getNetworkByChainId = (
|
|
@@ -334,12 +363,16 @@ export const availableNetworks = networks.filter(
|
|
|
334
363
|
|
|
335
364
|
export const chainIdToName = (chainId: ChainId | number | string) => {
|
|
336
365
|
const network = getNetworkByChainId(chainId);
|
|
337
|
-
return network
|
|
366
|
+
return network?.name;
|
|
338
367
|
};
|
|
339
368
|
|
|
340
369
|
export const getRpcURLByChainId = (chainId: ChainId | number | string) => {
|
|
341
|
-
|
|
342
|
-
|
|
370
|
+
try {
|
|
371
|
+
const network = getNetworkByChainId(chainId);
|
|
372
|
+
return network.params.rpcUrls[0];
|
|
373
|
+
} catch (e) {
|
|
374
|
+
return "";
|
|
375
|
+
}
|
|
343
376
|
};
|
|
344
377
|
|
|
345
378
|
export const RPCMap = networks.reduce((acc, network) => {
|
package/utils/utils.d.ts
CHANGED
|
@@ -12,8 +12,9 @@ declare global {
|
|
|
12
12
|
| 634
|
|
13
13
|
| 1313161554
|
|
14
14
|
| 8453
|
|
15
|
+
| 122
|
|
15
16
|
| 63400;
|
|
16
|
-
|
|
17
|
+
|
|
17
18
|
type ISlackMessageType = "danger" | "error" | "success" | "banner";
|
|
18
19
|
|
|
19
20
|
type MetadataTypes = keyof typeof MetadataEnums;
|
|
@@ -110,7 +111,7 @@ declare global {
|
|
|
110
111
|
};
|
|
111
112
|
|
|
112
113
|
type MetadataProps = {
|
|
113
|
-
type: MetadataTypes
|
|
114
|
+
type: MetadataTypes;
|
|
114
115
|
encodedData: string;
|
|
115
116
|
version?: string;
|
|
116
117
|
};
|
|
@@ -126,8 +127,6 @@ declare global {
|
|
|
126
127
|
coingecko_id: string;
|
|
127
128
|
sparkline_price_7d: number[];
|
|
128
129
|
}
|
|
129
|
-
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
-
export {
|
|
133
|
-
|
|
132
|
+
export {};
|