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

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.
@@ -3,7 +3,7 @@ name: NPM Publish(Dev)
3
3
  on:
4
4
  push:
5
5
  branches:
6
- - 'main'
6
+ - "main"
7
7
 
8
8
  jobs:
9
9
  dev-npm-publish:
@@ -18,7 +18,7 @@ jobs:
18
18
 
19
19
  - uses: actions/setup-node@v3
20
20
  with:
21
- node-version: 16
21
+ node-version: ">=v18.18.0"
22
22
 
23
23
  - uses: actions/cache@v3
24
24
  with:
@@ -48,6 +48,3 @@ jobs:
48
48
  token: ${{ secrets.NPM_AUTH_TOKEN }}
49
49
  tag: dev
50
50
  access: public
51
-
52
-
53
-
@@ -0,0 +1,4 @@
1
+ <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M11.3112 1.14526L12.8087 5.19216L16.8556 6.68965L12.8087 8.18714L11.3112 12.234L9.8137 8.18714L5.76681 6.68965L9.8137 5.19216L11.3112 1.14526Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3
+ <path d="M4.38071 10.3859L5.68884 12.312L7.61493 13.6201L5.68884 14.9283L4.38071 16.8544L3.07258 14.9283L1.14648 13.6201L3.07258 12.312L4.38071 10.3859Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
@@ -1,19 +1,20 @@
1
1
  <script setup lang="ts">
2
- import RefreshSVG from '~/assets/images/icons/refresh.svg'
3
- import BridgeSVG from '~/assets/images/icons/bridge.svg'
4
- import CrossTransferSVG from '~/assets/images/icons/cross-transfer.svg'
5
- import TransferSVG from '~/assets/images/icons/transfer.svg'
6
- import PlusCircleSVG from '~/assets/images/icons/plus-circle.svg'
7
- import Trash2SVG from '~/assets/images/icons/trash-2.svg'
8
- import ChangeThresholdSVG from '~/assets/images/icons/change-threshold.svg'
9
- import DappSVG from '~/assets/images/icons/dapp.svg'
10
- import DeploySVG from '~/assets/images/icons/deploy.svg'
11
- import GasSVG from '~/assets/images/icons/gas.svg'
12
- import InstadappProSVG from '~/assets/images/icons/instadapp-pro.svg'
13
- import PermitSignSVG from '~/assets/images/icons/permit-sign.svg'
14
- import RejectProposalSVG from '~/assets/images/icons/reject-proposal.svg'
15
- import UpgradeSVG from '~/assets/images/icons/upgrade.svg'
16
- import HammerSVG from '~/assets/images/icons/hammer.svg'
2
+ import RefreshSVG from '../assets/images/icons/refresh.svg'
3
+ import BridgeSVG from '../assets/images/icons/bridge.svg'
4
+ import CrossTransferSVG from '../assets/images/icons/cross-transfer.svg'
5
+ import TransferSVG from '../assets/images/icons/transfer.svg'
6
+ import PlusCircleSVG from '../assets/images/icons/plus-circle.svg'
7
+ import StarsSVG from '../assets/images/icons/stars.svg'
8
+ import Trash2SVG from '../assets/images/icons/trash-2.svg'
9
+ import ChangeThresholdSVG from '../assets/images/icons/change-threshold.svg'
10
+ import DappSVG from '../assets/images/icons/dapp.svg'
11
+ import DeploySVG from '../assets/images/icons/deploy.svg'
12
+ import GasSVG from '../assets/images/icons/gas.svg'
13
+ import InstadappProSVG from '../assets/images/icons/instadapp-pro.svg'
14
+ import PermitSignSVG from '../assets/images/icons/permit-sign.svg'
15
+ import RejectProposalSVG from '../assets/images/icons/reject-proposal.svg'
16
+ import UpgradeSVG from '../assets/images/icons/upgrade.svg'
17
+ import HammerSVG from '../assets/images/icons/hammer.svg'
17
18
 
18
19
  defineProps<{
19
20
  action: MetadataTypes
@@ -22,19 +23,20 @@ defineProps<{
22
23
  </script>
23
24
 
24
25
  <template>
25
- <RefreshSVG class="text-primary" v-if="action === 'swap'"/>
26
- <BridgeSVG class="text-primary" v-else-if="action === 'bridge'"/>
27
- <CrossTransferSVG class="text-primary" v-else-if="action === 'cross-transfer'"/>
28
- <TransferSVG class="text-primary" v-else-if="action === 'transfer'"/>
29
- <PlusCircleSVG class="text-primary" v-else-if="action === 'add-signers' || (action === 'auth' && !remove)"/>
30
- <Trash2SVG class="text-[#EB5757]" v-else-if="action === 'remove-signers' || (action === 'auth' && remove)"/>
31
- <RejectProposalSVG class="text-[#EB5757]" v-else-if="action === 'rejection'"/>
32
- <ChangeThresholdSVG v-else-if="action === 'change-threshold'"/>
33
- <DappSVG v-else-if="action === 'dapp'"/>
34
- <DeploySVG v-else-if="action === 'deploy'"/>
35
- <GasSVG v-else-if="action === 'gas-topup'"/>
36
- <InstadappProSVG v-else-if="action === 'instadapp-pro'"/>
37
- <PermitSignSVG v-else-if="action === 'permit2'"/>
38
- <UpgradeSVG v-else-if="action === 'upgrade'"/>
39
- <HammerSVG v-else-if="action === 'tx-builder'"/>
26
+ <RefreshSVG class="text-primary" v-if="action === 'swap'" />
27
+ <BridgeSVG class="text-primary" v-else-if="action === 'bridge'" />
28
+ <CrossTransferSVG class="text-primary" v-else-if="action === 'cross-transfer'" />
29
+ <TransferSVG class="text-primary" v-else-if="action === 'transfer'" />
30
+ <PlusCircleSVG class="text-primary" v-else-if="action === 'add-signers' || (action === 'auth' && !remove)" />
31
+ <Trash2SVG class="text-[#EB5757]" v-else-if="action === 'remove-signers' || (action === 'auth' && remove)" />
32
+ <RejectProposalSVG class="text-[#EB5757]" v-else-if="action === 'rejection'" />
33
+ <ChangeThresholdSVG v-else-if="action === 'change-threshold'" />
34
+ <DappSVG v-else-if="action === 'dapp'" />
35
+ <DeploySVG v-else-if="action === 'deploy'" />
36
+ <GasSVG v-else-if="action === 'gas-topup'" />
37
+ <InstadappProSVG v-else-if="action === 'instadapp-pro'" />
38
+ <PermitSignSVG v-else-if="action === 'permit2'" />
39
+ <UpgradeSVG v-else-if="action === 'upgrade'" />
40
+ <HammerSVG v-else-if="action === 'tx-builder'" />
41
+ <StarsSVG v-else-if="action === 'mass'" />
40
42
  </template>
@@ -23,6 +23,10 @@ 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 v-if="metadata.type === 'mass'">
27
+ Chain Agnostic Payments
28
+ </div>
29
+
26
30
  <div class="text-left w-fit capitalize" v-if="metadata.type === 'import'">
27
31
  Import from {{ metadata.protocol }} ({{ (formatUsd(fromWei(metadata.valueInUsd, 10))) }})
28
32
  </div>
@@ -1,4 +1,5 @@
1
1
  <script setup lang="ts">
2
+ // @ts-expect-error
2
3
  import * as XXH from 'xxhashjs';
3
4
 
4
5
  defineProps<{
@@ -19,11 +20,9 @@ function generateColor(address: string): string {
19
20
  </script>
20
21
 
21
22
  <template>
22
- <svg
23
- :style="{
24
- color: generateColor(address),
25
- }" width="30" height="30" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 30 30"
26
- >
23
+ <svg :style="{
24
+ color: generateColor(address),
25
+ }" width="30" height="30" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 30 30">
27
26
  <g fill="currentColor" :clip-path="`url(#${randomId})`">
28
27
  <rect width="30" height="30" fill-opacity=".4" rx="15" />
29
28
  <ellipse cx="15.004" cy="26.399" rx="11.4" ry="6.6" />
@@ -1,22 +1,15 @@
1
1
  <template>
2
- <template v-if="isNetworkNotAvailable">
3
- <svg v-bind="$attrs" class="dark:hidden block" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20">
4
- <rect width="20" height="20" fill="#CBD5E1" rx="10" />
5
- <path fill="#fff" fill-rule="evenodd"
6
- d="M10 3.999A6 6 0 1 0 10 16a6 6 0 0 0 0-12.001Zm0 10.8a4.8 4.8 0 1 1 0-9.6 4.8 4.8 0 0 1 0 9.6ZM6.399 9.67A3.6 3.6 0 0 1 9.68 6.4a.3.3 0 0 1 .318.318v.6a.294.294 0 0 1-.264.282A2.4 2.4 0 0 0 7.6 9.735a.294.294 0 0 1-.3.264h-.6a.312.312 0 0 1-.222-.096.336.336 0 0 1-.078-.234Z"
7
- clip-rule="evenodd" />
8
- </svg>
9
- <svg v-bind="$attrs" class="dark:block hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20">
10
- <rect width="20" height="20" fill="#334155" rx="10" />
11
- <path fill="#97A2B7" fill-rule="evenodd"
12
- d="M10 3.999A6 6 0 1 0 10 16a6 6 0 0 0 0-12.001Zm0 10.8a4.8 4.8 0 1 1 0-9.6 4.8 4.8 0 0 1 0 9.6ZM6.399 9.67A3.6 3.6 0 0 1 9.68 6.4a.3.3 0 0 1 .318.318v.6a.294.294 0 0 1-.264.282A2.4 2.4 0 0 0 7.6 9.735a.294.294 0 0 1-.3.264h-.6a.312.312 0 0 1-.222-.096.336.336 0 0 1-.078-.234Z"
13
- clip-rule="evenodd" />
14
- </svg>
15
- </template>
16
- <span v-else-if="stroke" class="outline stroke-color dark:outline-[#161E2D] outline-[#F8FAFC] outline-2 shrink-0 outline outline-offset-[-1.5px] rounded-full">
17
- <img class="w-full h-full" :src="`https://cdn.instadapp.io/avocado/networks/${chain}.svg`"/>
2
+ <svg v-if="isNetworkNotAvailable" v-bind="$attrs" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20">
3
+ <rect width="20" height="20" fill="#334155" rx="10" />
4
+ <path fill="#97A2B7" fill-rule="evenodd"
5
+ d="M10 3.999A6 6 0 1 0 10 16a6 6 0 0 0 0-12.001Zm0 10.8a4.8 4.8 0 1 1 0-9.6 4.8 4.8 0 0 1 0 9.6ZM6.399 9.67A3.6 3.6 0 0 1 9.68 6.4a.3.3 0 0 1 .318.318v.6a.294.294 0 0 1-.264.282A2.4 2.4 0 0 0 7.6 9.735a.294.294 0 0 1-.3.264h-.6a.312.312 0 0 1-.222-.096.336.336 0 0 1-.078-.234Z"
6
+ clip-rule="evenodd" />
7
+ </svg>
8
+ <span v-else-if="stroke"
9
+ class="outline stroke-color outline-[#161E2D] outline-2 shrink-0 outline outline-offset-[-1.5px] rounded-full">
10
+ <img class="w-full h-full" :src="`https://cdn.instadapp.io/avocado/networks/${chain}.svg`" />
18
11
  </span>
19
- <img v-else :src="`https://cdn.instadapp.io/avocado/networks/${chain}.svg`"/>
12
+ <img v-else :src="`https://cdn.instadapp.io/avocado/networks/${chain}.svg`" />
20
13
  </template>
21
14
 
22
15
  <script lang="ts" setup>
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
- import CopySVG from '~/assets/images/icons/copy.svg'
3
- import CheckCircle from '~/assets/images/icons/check-circle.svg'
2
+ import CopySVG from '../assets/images/icons/copy.svg'
3
+ import CheckCircle from '../assets/images/icons/check-circle.svg'
4
4
 
5
5
  defineProps<{
6
6
  text: string
@@ -12,22 +12,16 @@ const slots = useSlots()
12
12
  </script>
13
13
 
14
14
  <template>
15
- <button
16
- class="text-slate-400 font-semibold inline-flex items-center gap-2.5"
17
- @click.stop="copy(text)"
18
- >
15
+ <button class="text-slate-400 font-semibold inline-flex items-center gap-2.5" @click.stop="copy(text)">
19
16
  <Transition mode="out-in" name="slide-left">
20
- <span v-if="copied && !iconOnly"> {{ successText || 'Copied' }} </span>
17
+ <span v-if="copied && !iconOnly"> {{ successText || 'Copied' }} </span>
21
18
  <span v-else-if="slots.content">
22
19
  <slot name="content" />
23
20
  </span>
24
21
  </Transition>
25
22
 
26
23
  <Transition mode="out-in" name="slide">
27
- <CheckCircle
28
- v-if="copied"
29
- class="w-4 h-4 shrink-0 dark:text-slate-900 text-white svg-circle"
30
- />
24
+ <CheckCircle v-if="copied" class="w-4 h-4 shrink-0 dark:text-slate-900 text-white svg-circle" />
31
25
  <slot v-else-if="slots.copy" name="copy" />
32
26
  <slot v-else name="copy-icon">
33
27
  <CopySVG />
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { Tippy } from 'vue-tippy'
3
- import Info2 from '~/assets/images/icons/info-2.svg'
3
+ import Info2 from '../../assets/images/icons/info-2.svg'
4
4
 
5
5
  defineProps<{
6
6
  metadata: {
@@ -14,44 +14,47 @@ defineProps<{
14
14
  <template>
15
15
  <div class="font-medium">
16
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>
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">
19
- <AuthorityAvatar :address="address" class="w-[18px] h-[18px]" />
20
- <Tippy max-width="none" interactive>
21
- <template #default>
22
- <p class="text-xs leading-5 text-slate-500 dark:text-slate-400">
17
+ <p v-if="!compact" class="text-xs"> {{ formatTxType(metadata.type) }} </p>
18
+ <div v-for="address of metadata.addresses" :key="address"
19
+ class="flex gap-2 rounded-full bg-slate-100 dark:bg-slate-800 justify-start items-center px-2 py-1.5">
20
+ <AuthorityAvatar :address="address" class="w-[18px] h-[18px]" />
21
+ <Tippy max-width="none" interactive>
22
+ <template #default>
23
+ <p class="text-xs leading-5 text-slate-500 dark:text-slate-400">
23
24
  {{ shortenHash(address, compact ? 2 : 4) }}
24
25
  </p>
25
- </template>
26
- <template #content>
26
+ </template>
27
+ <template #content>
27
28
  {{ address }}
28
- </template>
29
- </Tippy>
30
- </div>
29
+ </template>
30
+ </Tippy>
31
+ </div>
31
32
  </div>
32
33
  <div v-else class="flex gap-2 flex-wrap items-center">
33
- <div v-for="address of [metadata.addresses[0], metadata.addresses[1]].filter(Boolean)" :key="address" class="flex gap-2 rounded-full bg-slate-100 dark:bg-slate-800 justify-start items-center px-2 py-1.5">
34
+ <div v-for="address of [metadata.addresses[0], metadata.addresses[1]].filter(Boolean)" :key="address"
35
+ class="flex gap-2 rounded-full bg-slate-100 dark:bg-slate-800 justify-start items-center px-2 py-1.5">
34
36
  <AuthorityAvatar :address="address" class="w-[18px] h-[18px]" />
35
37
 
36
38
  <Tippy max-width="none" interactive>
37
- <template #default>
38
- <p class="text-xs leading-5 text-slate-400">
39
- {{ shortenHash(address, 2) }}
40
- </p>
41
- </template>
42
- <template #content>
39
+ <template #default>
40
+ <p class="text-xs leading-5 text-slate-400">
41
+ {{ shortenHash(address, 2) }}
42
+ </p>
43
+ </template>
44
+ <template #content>
43
45
  {{ address }}
44
- </template>
45
- </Tippy>
46
+ </template>
47
+ </Tippy>
46
48
  </div>
47
-
49
+
48
50
  <Tippy max-width="none" interactive tag="button" content-tag="div" content-class="content-wrapper">
49
51
  <template #default>
50
52
  <Info2 class="w-[16px] h-[16px] text-slate-500 rounded-full" />
51
53
  </template>
52
54
  <template #content>
53
55
  <ul class="flex flex-col gap-2.5">
54
- <li v-for="address in metadata.addresses" :key="address" class="flex text-xs text-slate-400 items-center gap-2.5">
56
+ <li v-for="address in metadata.addresses" :key="address"
57
+ class="flex text-xs text-slate-400 items-center gap-2.5">
55
58
  <AuthorityAvatar class="shrink-0 w-5 h-5" :address="address" />
56
59
  {{ address }}
57
60
  </li>
package/package.json CHANGED
@@ -1,23 +1,25 @@
1
1
  {
2
2
  "name": "@instadapp/avocado-base",
3
- "version": "0.0.0-dev.d4500cb",
3
+ "version": "0.0.0-dev.d66833c",
4
4
  "type": "module",
5
5
  "main": "./nuxt.config.ts",
6
6
  "types": "global.d.ts",
7
+ "engines": {
8
+ "node": ">=v18.18.0"
9
+ },
7
10
  "scripts": {
8
11
  "build": "nuxt build",
9
12
  "dev": "nuxt dev",
10
13
  "generate": "nuxt generate",
11
14
  "preview": "nuxt preview",
12
- "generate:contracts": "rimraf contracts && typechain --target=ethers-v5 'abi/*.json' --out-dir 'contracts'"
15
+ "generate:contracts": "rimraf contracts && typechain --target=ethers-v5 'abi/*.json' --out-dir 'contracts'",
16
+ "typecheck": "nuxi typecheck"
13
17
  },
14
18
  "devDependencies": {
15
- "@instadapp/avocado": "^0.1.10",
16
- "@instadapp/avocado-dev": "npm:@instadapp/avocado@dev",
17
- "@nuxtjs/tailwindcss": "^6.6.5",
19
+ "@nuxtjs/tailwindcss": "^6.11.3",
18
20
  "@typechain/ethers-v5": "^10.2.0",
19
- "nuxt": "^3.6.1",
20
- "nuxt-svgo": "^3.1.0",
21
+ "nuxt": "^3.10.1",
22
+ "nuxt-svgo": "^4.0.0",
21
23
  "rimraf": "^3.0.2",
22
24
  "typechain": "^8.1.1",
23
25
  "unplugin-vue-components": "^0.25.1",
@@ -27,6 +29,7 @@
27
29
  "@vueuse/nuxt": "^10.2.0",
28
30
  "bignumber.js": "^9.1.1",
29
31
  "ethers": "^5.7.2",
32
+ "viem": "^2.7.16",
30
33
  "xxhashjs": "^0.2.2"
31
34
  }
32
35
  }
@@ -19,7 +19,7 @@ export function formatPercent(
19
19
  return formatter.format(valueAsNumber);
20
20
  }
21
21
 
22
- export function shortenHash(hash: string, length: number = 4) {
22
+ export function shortenHash(hash: string | `0x${string}`, length: number = 4) {
23
23
  if (!hash) return;
24
24
  if (hash.length < 12) return hash;
25
25
  const beginningChars = hash.startsWith("0x") ? length + 2 : length;
package/utils/metadata.ts CHANGED
@@ -19,6 +19,7 @@ export const MetadataEnums = {
19
19
  "remove-signers": "remove-signers",
20
20
  "change-threshold": "change-threshold",
21
21
  import: "import",
22
+ mass: "mass",
22
23
  "tx-builder": "tx-builder",
23
24
  "avocado-bridge": "avocado-bridge",
24
25
  } as const;
@@ -72,6 +73,7 @@ const actionMetadataTypes: Record<MetadataTypes, string[]> = {
72
73
  "change-threshold": ["uint8 count"],
73
74
  rejection: ["bytes32 id"],
74
75
  "avocado-bridge": ["bytes32 id", "uint256 toChainId"],
76
+ mass: ["bool isMass"],
75
77
  };
76
78
 
77
79
  const encodeMetadata = (props: MetadataProps) => {
@@ -366,6 +368,15 @@ export const encodeImportMetadata = (
366
368
  return single ? encodeMultipleActions(data) : data;
367
369
  };
368
370
 
371
+ export const encodeMassMetadata = (single = true) => {
372
+ const data = encodeMetadata({
373
+ type: MetadataEnums.mass,
374
+ encodedData: '0x',
375
+ });
376
+
377
+ return single ? encodeMultipleActions(data) : data;
378
+ }
379
+
369
380
  export const encodeAddSignersMetadata = (
370
381
  addresses: string[],
371
382
  single = true
@@ -546,6 +557,10 @@ const typesPayload: IPayload = {
546
557
  id: data.id,
547
558
  toChainId: data.toChainId ? data.toChainId.toString() : null,
548
559
  }),
560
+ mass: (data, type) => ({
561
+ type: 'Chain Agnostic Payments',
562
+ data,
563
+ }),
549
564
  };
550
565
 
551
566
  const parseMetadata = (metadata: string) => {
@@ -567,7 +582,7 @@ const parseMetadata = (metadata: string) => {
567
582
  decodedMetadata.type
568
583
  ) as keyof typeof actionMetadataTypes;
569
584
 
570
- const decodedData = ethers.utils.defaultAbiCoder.decode(
585
+ const decodedData = decodedMetadata?.data === '0x' ? '' : ethers.utils.defaultAbiCoder.decode(
571
586
  actionMetadataTypes[type],
572
587
  decodedMetadata.data
573
588
  );
package/utils/network.ts CHANGED
@@ -1,4 +1,21 @@
1
1
  import { ethers } from "ethers";
2
+ import {
3
+ polygon,
4
+ arbitrum,
5
+ mainnet,
6
+ base,
7
+ optimism,
8
+ polygonZkEvm,
9
+ bsc,
10
+ avalanche,
11
+ fantom,
12
+ gnosis,
13
+ aurora,
14
+ fuse,
15
+ scroll,
16
+ opBNB,
17
+ mode,
18
+ } from "viem/chains";
2
19
  import {
3
20
  AVO_PROD_CHAIN_NAME,
4
21
  AVO_PROD_CHAIN_ID,
@@ -9,11 +26,44 @@ import {
9
26
  AVO_STAGING_RPC_URL,
10
27
  AVO_STAGING_EXPLORER_URL,
11
28
  } from "./avocado";
29
+ import { defineChain } from "viem";
12
30
 
13
31
  export const bridgeDisabledNetworks = [];
14
32
 
15
33
  export const networksSimulationNotSupported = [1313161554, 1101];
16
34
 
35
+ const avocado = defineChain({
36
+ id: AVO_PROD_CHAIN_ID,
37
+ name: AVO_PROD_CHAIN_NAME,
38
+ nativeCurrency: {
39
+ name: "Avocado",
40
+ symbol: "USDC",
41
+ decimals: 18,
42
+ },
43
+ rpcUrls: {
44
+ default: { http: [AVO_PROD_RPC_URL] },
45
+ },
46
+ blockExplorers: {
47
+ default: { name: "Avoscan", url: AVO_PROD_EXPLORER_URL },
48
+ },
49
+ });
50
+
51
+ const avocadoStaging = defineChain({
52
+ id: AVO_STAGING_CHAIN_ID,
53
+ name: AVO_STAGING_CHAIN_NAME,
54
+ nativeCurrency: {
55
+ name: "Avocado",
56
+ symbol: "USDC",
57
+ decimals: 18,
58
+ },
59
+ rpcUrls: {
60
+ default: { http: [AVO_STAGING_RPC_URL] },
61
+ },
62
+ blockExplorers: {
63
+ default: { name: "Avoscan", url: AVO_STAGING_EXPLORER_URL },
64
+ },
65
+ });
66
+
17
67
  export const networks: Network[] = [
18
68
  {
19
69
  name: "Polygon",
@@ -22,6 +72,7 @@ export const networks: Network[] = [
22
72
  zerionName: "polygon",
23
73
  color: "#7A4ADD",
24
74
  chainId: 137,
75
+ viemChain: polygon,
25
76
  balanceResolverAddress: "0x58632D23120b20650262b8A629a14e4F4043E0D9",
26
77
  usdcAddress: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
27
78
  explorerUrl: "https://polygonscan.com",
@@ -46,6 +97,7 @@ export const networks: Network[] = [
46
97
  debankName: "arb",
47
98
  ankrName: "arbitrum",
48
99
  zerionName: "arbitrum",
100
+ viemChain: arbitrum,
49
101
  color: "#2D374B",
50
102
  chainId: 42161,
51
103
  usdcAddress: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8",
@@ -72,6 +124,7 @@ export const networks: Network[] = [
72
124
  debankName: "eth",
73
125
  ankrName: "eth",
74
126
  zerionName: "ethereum",
127
+ viemChain: mainnet,
75
128
  chainId: 1,
76
129
  explorerUrl: "https://etherscan.io",
77
130
  fakeTransactionHash:
@@ -97,6 +150,7 @@ export const networks: Network[] = [
97
150
  chainId: 8453,
98
151
  color: "#1E2024",
99
152
  ankrName: "base",
153
+ viemChain: base,
100
154
  explorerUrl: "https://basescan.org",
101
155
  fakeTransactionHash:
102
156
  "0xf7833d80da33730c4fc5d4c64151f0eaa64c0c0535be022af0228a44cc4e9c8e",
@@ -122,6 +176,7 @@ export const networks: Network[] = [
122
176
  ankrName: "optimism",
123
177
  zerionName: "optimism",
124
178
  color: "#FF0420",
179
+ viemChain: optimism,
125
180
  chainId: 10,
126
181
  apiURL: "https://api-optimistic.etherscan.io",
127
182
  usdcAddress: "0x7f5c764cbc14f9669b88837ca1490cca17c31607",
@@ -147,6 +202,7 @@ export const networks: Network[] = [
147
202
  chainId: 1101,
148
203
  color: "#8544f6",
149
204
  ankrName: "polygon_zkevm",
205
+ viemChain: polygonZkEvm,
150
206
  explorerUrl: "https://zkevm.polygonscan.com",
151
207
  apiURL: "https://api-zkevm.polygonscan.com",
152
208
  balanceResolverAddress: "0x48D1Fa5Ee6691a1E0B45d2B515650997BEA27a01",
@@ -174,6 +230,7 @@ export const networks: Network[] = [
174
230
  color: "#F3BA2F",
175
231
  chainId: 56,
176
232
  explorerUrl: "https://bscscan.com",
233
+ viemChain: bsc,
177
234
  fakeTransactionHash:
178
235
  "0x897d54bf8e492f840bd4d8f1e743bfcab8226ab4d5a899e47ee433dcd6d6abf7",
179
236
  apiURL: "https://api.bscscan.com",
@@ -198,6 +255,7 @@ export const networks: Network[] = [
198
255
  ankrName: "avalanche",
199
256
  zerionName: "avalanche",
200
257
  color: "#EB5757",
258
+ viemChain: avalanche,
201
259
  chainId: 43114,
202
260
  usdcAddress: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
203
261
  balanceResolverAddress: "0x63009f31D054E0ac9F321Cf0D642375236A4Bf1E",
@@ -225,6 +283,7 @@ export const networks: Network[] = [
225
283
  explorerUrl: "https://ftmscan.com",
226
284
  ankrName: "fantom",
227
285
  color: "#1969ff",
286
+ viemChain: fantom,
228
287
  get serverRpcUrl() {
229
288
  return process.env?.FANTOM_RPC_URL || this.params.rpcUrls[0];
230
289
  },
@@ -248,6 +307,7 @@ export const networks: Network[] = [
248
307
  zerionName: "xdai",
249
308
  color: "#04795C",
250
309
  ankrName: "gnosis",
310
+ viemChain: gnosis,
251
311
  chainId: 100,
252
312
  balanceResolverAddress: "0xfaa244e276b1597f663975ed007ee4ff70d27849",
253
313
  explorerUrl: "https://gnosisscan.io",
@@ -273,6 +333,7 @@ export const networks: Network[] = [
273
333
  chainId: 1313161554,
274
334
  zerionName: "aurora",
275
335
  color: "#78d64b",
336
+ viemChain: aurora,
276
337
  explorerUrl: "https://explorer.mainnet.aurora.dev",
277
338
  fakeTransactionHash:
278
339
  "0x0923401c5a80c39a5cd57c098a6c4729edbefd0db6894def7d349493f4ff3ec6",
@@ -297,6 +358,7 @@ export const networks: Network[] = [
297
358
  zerionName: "fuse",
298
359
  color: "#78d64b",
299
360
  explorerUrl: "https://explorer.fuse.io",
361
+ viemChain: fuse,
300
362
  fakeTransactionHash:
301
363
  "0xf22a8031de9b978a57c728e18c6b54633356c39db4d0466e53b9b7c3ee7f8def",
302
364
  get serverRpcUrl() {
@@ -318,7 +380,9 @@ export const networks: Network[] = [
318
380
  name: "Scroll",
319
381
  chainId: 534352,
320
382
  color: "#78d64b",
383
+ ankrName: 'scroll',
321
384
  explorerUrl: "https://scrollscan.com",
385
+ viemChain: scroll,
322
386
  fakeTransactionHash:
323
387
  "0x6bf297c414264fc8cddd47224632b4426a02138df2f50fe891eca87f6aefea01",
324
388
  get serverRpcUrl() {
@@ -339,6 +403,7 @@ export const networks: Network[] = [
339
403
  chainId: 204,
340
404
  color: "#78d64b",
341
405
  explorerUrl: "https://opbnbscan.com",
406
+ viemChain: opBNB,
342
407
  fakeTransactionHash:
343
408
  "0xb9438a3eae61442bc7d419d79930370ce09ac0f46e0695025751e3bfe1a931e7",
344
409
  get serverRpcUrl() {
@@ -354,31 +419,52 @@ export const networks: Network[] = [
354
419
  },
355
420
  },
356
421
  },
357
- {
358
- name: "Manta Pacific",
359
- chainId: 169,
360
- explorerUrl: "https://manta-pacific.l2scan.co",
361
- params: {
362
- rpcUrls: ["https://pacific-rpc.manta.network/http"],
363
- chainName: "Manta Pacific",
364
- nativeCurrency: {
365
- name: "Ethereum",
366
- symbol: "ETH",
367
- decimals: 18,
368
- },
369
- },
370
- color: "#78d64b",
371
- fakeTransactionHash: "0x3fB128aA5AC254C8539996B11C587E521AE0d3ab",
372
- get serverRpcUrl() {
373
- return process.env?.MANTA_RPC_URL || this.params.rpcUrls[0];
374
- },
375
- },
422
+ // {
423
+ // chainId: 34443,
424
+ // name: "Mode",
425
+ // color: "#d7ff00",
426
+ // explorerUrl: 'https://explorer.mode.network',
427
+ // fakeTransactionHash: '0xb58002db3481f2c51855a91280ec940d0bebec075c4b362b9f90c21a2b14edbe',
428
+ // params: {
429
+ // rpcUrls: ["https://1rpc.io/mode"],
430
+ // chainName: "Mode",
431
+ // nativeCurrency: {
432
+ // name: "Ethereum",
433
+ // symbol: "ETH",
434
+ // decimals: 18,
435
+ // }
436
+ // },
437
+ // get serverRpcUrl() {
438
+ // return process.env?.MODE_RPC_URL || this.params.rpcUrls[0];
439
+ // },
440
+ // viemChain: mode,
441
+ // },
442
+ // {
443
+ // name: "Manta Pacific",
444
+ // chainId: 169,
445
+ // explorerUrl: "https://pacific-explorer.manta.network",
446
+ // params: {
447
+ // rpcUrls: ["https://pacific-rpc.manta.network/http"],
448
+ // chainName: "Manta Pacific",
449
+ // nativeCurrency: {
450
+ // name: "Ethereum",
451
+ // symbol: "ETH",
452
+ // decimals: 18,
453
+ // },
454
+ // },
455
+ // color: "#78d64b",
456
+ // fakeTransactionHash: "0x3fB128aA5AC254C8539996B11C587E521AE0d3ab",
457
+ // get serverRpcUrl() {
458
+ // return process.env?.MANTA_RPC_URL || this.params.rpcUrls[0];
459
+ // },
460
+ // },
376
461
  {
377
462
  name: AVO_PROD_CHAIN_NAME,
378
463
  chainId: AVO_PROD_CHAIN_ID,
379
464
  isAvocado: true,
380
465
  balanceResolverAddress: "",
381
466
  fakeTransactionHash: "",
467
+ viemChain: avocado,
382
468
  color: "#16A34A",
383
469
  usdcAddress: "",
384
470
  serverRpcUrl: AVO_PROD_RPC_URL,
@@ -400,6 +486,7 @@ export const networks: Network[] = [
400
486
  serverRpcUrl: AVO_STAGING_RPC_URL,
401
487
  color: "#16A34A",
402
488
  explorerUrl: AVO_STAGING_EXPLORER_URL,
489
+ viemChain: avocadoStaging,
403
490
  fakeTransactionHash: "",
404
491
  isAvocado: true,
405
492
  balanceResolverAddress: "",
package/utils/utils.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import type { Chain } from "viem";
2
+
1
3
  declare global {
2
4
  type ChainId =
3
5
  | 1
@@ -16,7 +18,8 @@ declare global {
16
18
  | 534352
17
19
  | 204
18
20
  | 63400
19
- | 169;
21
+ | 169
22
+ | 34443
20
23
 
21
24
  type ISlackMessageType = "danger" | "error" | "success" | "banner";
22
25
 
@@ -39,6 +42,7 @@ declare global {
39
42
  usdcAddress?: string;
40
43
  explorerUrl: string;
41
44
  fakeTransactionHash: string;
45
+ viemChain: Chain;
42
46
  apiURL?: string;
43
47
  params: {
44
48
  chainName?: string;