@instadapp/avocado-base 0.0.97 → 0.0.99

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.
@@ -1,19 +1,19 @@
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 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'
17
17
 
18
18
  defineProps<{
19
19
  action: MetadataTypes
@@ -22,19 +22,19 @@ defineProps<{
22
22
  </script>
23
23
 
24
24
  <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'"/>
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'" />
40
40
  </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
+ Mass Transfer
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,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,10 +1,10 @@
1
1
  {
2
2
  "name": "@instadapp/avocado-base",
3
- "version": "0.0.97",
3
+ "version": "0.0.99",
4
4
  "type": "module",
5
5
  "main": "./nuxt.config.ts",
6
6
  "types": "global.d.ts",
7
- "engines": {
7
+ "engines": {
8
8
  "node": ">=v18.18.0"
9
9
  },
10
10
  "scripts": {
@@ -29,6 +29,7 @@
29
29
  "@vueuse/nuxt": "^10.2.0",
30
30
  "bignumber.js": "^9.1.1",
31
31
  "ethers": "^5.7.2",
32
+ "viem": "^2.7.16",
32
33
  "xxhashjs": "^0.2.2"
33
34
  }
34
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,9 @@ 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,
562
+ }),
549
563
  };
550
564
 
551
565
  const parseMetadata = (metadata: string) => {
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() {
@@ -355,6 +420,26 @@ export const networks: Network[] = [
355
420
  },
356
421
  },
357
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
+ // {
358
443
  // name: "Manta Pacific",
359
444
  // chainId: 169,
360
445
  // explorerUrl: "https://pacific-explorer.manta.network",
@@ -379,6 +464,7 @@ export const networks: Network[] = [
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;