@instadapp/avocado-base 0.0.0-dev.0e696bd → 0.0.0-dev.10012b3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,9 +6,11 @@ export type { BalanceResolver } from "./BalanceResolver";
6
6
  export type { Erc20 } from "./Erc20";
7
7
  export type { Forwarder } from "./Forwarder";
8
8
  export type { GaslessWallet } from "./GaslessWallet";
9
+ export type { MultisigForwarder } from "./MultisigForwarder";
9
10
  export * as factories from "./factories";
10
11
  export { AvoFactoryProxy__factory } from "./factories/AvoFactoryProxy__factory";
11
12
  export { BalanceResolver__factory } from "./factories/BalanceResolver__factory";
12
13
  export { Erc20__factory } from "./factories/Erc20__factory";
13
14
  export { Forwarder__factory } from "./factories/Forwarder__factory";
14
15
  export { GaslessWallet__factory } from "./factories/GaslessWallet__factory";
16
+ export { MultisigForwarder__factory } from "./factories/MultisigForwarder__factory";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instadapp/avocado-base",
3
- "version": "0.0.0-dev.0e696bd",
3
+ "version": "0.0.0-dev.10012b3",
4
4
  "type": "module",
5
5
  "main": "./nuxt.config.ts",
6
6
  "types": "global.d.ts",
package/utils/helper.ts CHANGED
@@ -1,5 +1,3 @@
1
- import * as XXH from 'xxhashjs';
2
-
3
1
  export const indexSorter = (aIndex: number, bIndex: number) => {
4
2
  if (aIndex === -1 && bIndex === -1) {
5
3
  return 0; // fallback to other sorting criteria
@@ -62,12 +60,3 @@ export function formatMultipleAddresses(addresses: string[], shorten = true) {
62
60
  return formattedString
63
61
  }
64
62
 
65
- export function generateColor(address: string): string {
66
- const hash = XXH.h32(address, 0xABCD).toNumber()
67
-
68
- const hue = hash % 360
69
- const saturation = 80 + (hash % 30)
70
- const lightness = 70 + (hash % 20)
71
-
72
- return `hsl(${hue}, ${saturation}%, ${lightness}%)`
73
- }
package/utils/metadata.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { ethers, utils } from "ethers";
2
- import { Forwarder__factory } from "../contracts";
2
+ import { Forwarder__factory, MultisigForwarder__factory } from "../contracts";
3
+ import { toBN } from "./bignumber";
3
4
 
4
5
  export const MetadataEnums = {
5
6
  "transfer": "transfer",
@@ -17,6 +18,7 @@ import { Forwarder__factory } from "../contracts";
17
18
  "add-signers": "add-signers",
18
19
  "remove-signers": "remove-signers",
19
20
  "change-threshold": "change-threshold",
21
+ "import": "import",
20
22
  } as const;
21
23
 
22
24
  const multiMetadataTypes = ["bytes[]"];
@@ -52,6 +54,7 @@ const actionMetadataTypes: Record<MetadataTypes, string[]> = {
52
54
  "gas-topup": ["uint256 amount", "address token", "address onBehalf"],
53
55
  upgrade: ["bytes32 version", "address walletImpl"],
54
56
  dapp: ["string name", "string url"],
57
+ "import": ["bytes32 protocol", "uint256 valueInUsd"],
55
58
  auth: ["address address", "uint256 chainId", "bool remove"],
56
59
  deploy: [],
57
60
  permit2: [
@@ -306,6 +309,24 @@ export const encodeRemoveSignersMetadata = (
306
309
  return single ? encodeMultipleActions(data) : data;
307
310
  };
308
311
 
312
+ export const encodeImportMetadata = (
313
+ protocol: string,
314
+ valueInUsd: string,
315
+ single = true
316
+ ) => {
317
+ const encodedData = ethers.utils.defaultAbiCoder.encode(
318
+ actionMetadataTypes["import"],
319
+ [protocol, valueInUsd]
320
+ );
321
+
322
+ const data = encodeMetadata({
323
+ type: MetadataEnums["import"],
324
+ encodedData,
325
+ });
326
+
327
+ return single ? encodeMultipleActions(data) : data;
328
+ };
329
+
309
330
  export const encodeAddSignersMetadata = (
310
331
  addresses: string[],
311
332
  single = true
@@ -346,8 +367,10 @@ export const decodeMetadata = (metadata: string) => {
346
367
  }
347
368
  };
348
369
 
370
+ const iface = Forwarder__factory.createInterface();
371
+ const ifaceMultisig = MultisigForwarder__factory.createInterface();
372
+
349
373
  const getMetadataFromData = (data: string) => {
350
- const iface = Forwarder__factory.createInterface();
351
374
  let metadata = "0x";
352
375
 
353
376
  if (data.startsWith("0x18e7f485")) {
@@ -367,28 +390,18 @@ const getMetadataFromData = (data: string) => {
367
390
  } else {
368
391
  metadata = executeDataV2.params_.metadata;
369
392
  }
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
393
  } else {
381
- const executeDataMultisigV3 = iface.decodeFunctionData(
382
- "executeMultisigV3",
394
+ const executeDataMultisig = ifaceMultisig.decodeFunctionData(
395
+ "executeV1",
383
396
  data
384
397
  );
385
398
  if (
386
- executeDataMultisigV3.params_.metadata === "0x" ||
387
- !executeDataMultisigV3.params_.metadata
399
+ executeDataMultisig.params_.metadata === "0x" ||
400
+ !executeDataMultisig.params_.metadata
388
401
  ) {
389
402
  return null;
390
403
  } else {
391
- metadata = executeDataMultisigV3.params_.metadata;
404
+ metadata = executeDataMultisig.params_.metadata;
392
405
  }
393
406
  }
394
407
 
@@ -397,6 +410,11 @@ const getMetadataFromData = (data: string) => {
397
410
 
398
411
 
399
412
  const typesPayload: IPayload = {
413
+ import: (data, type) => ({
414
+ type,
415
+ protocol: utils.parseBytes32String(data.protocol || ""),
416
+ valueInUsd: toBN(data.valueInUsd).toFixed(),
417
+ }),
400
418
  transfer: (data, type) => ({
401
419
  type,
402
420
  token: data.token,
package/utils/network.ts CHANGED
@@ -1,6 +1,18 @@
1
1
  import { ethers } from "ethers";
2
+ import {
3
+ AVO_PROD_CHAIN_NAME,
4
+ AVO_PROD_CHAIN_ID,
5
+ AVO_PROD_RPC_URL,
6
+ AVO_PROD_EXPLORER_URL,
7
+ AVO_STAGING_CHAIN_NAME,
8
+ AVO_STAGING_CHAIN_ID,
9
+ AVO_STAGING_RPC_URL,
10
+ AVO_STAGING_EXPLORER_URL,
11
+ } from './avocado'
2
12
 
3
- export const bridgeDisabledNetworks = [1101];
13
+ export const bridgeDisabledNetworks = [];
14
+
15
+ export const networksSimulationNotSupported = [1313161554, 1101]
4
16
 
5
17
  export const networks: Network[] = [
6
18
  {
@@ -13,6 +25,7 @@ export const networks: Network[] = [
13
25
  balanceResolverAddress: "0x58632D23120b20650262b8A629a14e4F4043E0D9",
14
26
  usdcAddress: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
15
27
  explorerUrl: "https://polygonscan.com",
28
+ apiURL: 'https://api.polygonscan.com',
16
29
  get serverRpcUrl() {
17
30
  return process.env?.POLYGON_RPC_URL || this.params.rpcUrls[0];
18
31
  },
@@ -36,6 +49,7 @@ export const networks: Network[] = [
36
49
  usdcAddress: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8",
37
50
  balanceResolverAddress: "0xca5f37e6D8bB24c5A7958d5eccE7Bd9Aacc944f2",
38
51
  explorerUrl: "https://arbiscan.io",
52
+ apiURL: 'https://api.arbiscan.io',
39
53
  get serverRpcUrl() {
40
54
  return process.env?.ARBITRUM_RPC_URL || this.params.rpcUrls[0];
41
55
  },
@@ -56,6 +70,7 @@ export const networks: Network[] = [
56
70
  zerionName: "ethereum",
57
71
  chainId: 1,
58
72
  explorerUrl: "https://etherscan.io",
73
+ apiURL: 'https://api.etherscan.io',
59
74
  color: "#5D5FEF",
60
75
  get serverRpcUrl() {
61
76
  return process.env?.MAINNET_RPC_URL || this.params.rpcUrls[0];
@@ -75,7 +90,9 @@ export const networks: Network[] = [
75
90
  name: 'Base',
76
91
  chainId: 8453,
77
92
  color: '#1E2024',
93
+ ankrName:'base',
78
94
  explorerUrl: 'https://basescan.org',
95
+ apiURL: 'https://api.basescan.org',
79
96
  get serverRpcUrl() {
80
97
  return process.env?.BASE_RPC_URL || this.params.rpcUrls[0];
81
98
  },
@@ -98,6 +115,7 @@ export const networks: Network[] = [
98
115
  zerionName: "optimism",
99
116
  color: "#FF0420",
100
117
  chainId: 10,
118
+ apiURL: 'https://api-optimistic.etherscan.io',
101
119
  usdcAddress: "0x7f5c764cbc14f9669b88837ca1490cca17c31607",
102
120
  balanceResolverAddress: "0xca5f37e6D8bB24c5A7958d5eccE7Bd9Aacc944f2",
103
121
  explorerUrl: "https://optimistic.etherscan.io",
@@ -118,7 +136,9 @@ export const networks: Network[] = [
118
136
  name: "Polygon zkEVM",
119
137
  chainId: 1101,
120
138
  color: "#8544f6",
139
+ ankrName: 'polygon_zkevm',
121
140
  explorerUrl: "https://zkevm.polygonscan.com",
141
+ apiURL: 'https://api-zkevm.polygonscan.com',
122
142
  balanceResolverAddress: "0x48D1Fa5Ee6691a1E0B45d2B515650997BEA27a01",
123
143
  usdcAddress: "0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035",
124
144
  get serverRpcUrl() {
@@ -142,6 +162,7 @@ export const networks: Network[] = [
142
162
  color: "#F3BA2F",
143
163
  chainId: 56,
144
164
  explorerUrl: "https://bscscan.com",
165
+ apiURL: 'https://api.bscscan.com',
145
166
  usdcAddress: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
146
167
  balanceResolverAddress: "0xb808cff38706e267067b0af427726aa099f69f89",
147
168
  get serverRpcUrl() {
@@ -167,6 +188,7 @@ export const networks: Network[] = [
167
188
  usdcAddress: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
168
189
  balanceResolverAddress: "0x63009f31D054E0ac9F321Cf0D642375236A4Bf1E",
169
190
  explorerUrl: "https://snowtrace.io",
191
+ apiURL: 'https://api.snowtrace.io',
170
192
  get serverRpcUrl() {
171
193
  return process.env?.AVALANCHE_RPC_URL || this.params.rpcUrls[0];
172
194
  },
@@ -207,9 +229,11 @@ export const networks: Network[] = [
207
229
  debankName: "xdai",
208
230
  zerionName: "xdai",
209
231
  color: "#04795C",
232
+ ankrName: 'gnosis',
210
233
  chainId: 100,
211
234
  balanceResolverAddress: "0xfaa244e276b1597f663975ed007ee4ff70d27849",
212
235
  explorerUrl: "https://gnosisscan.io",
236
+ apiURL:'https://api.gnosisscan.io',
213
237
  usdcAddress: "0xddafbb505ad214d7b80b1f830fccc89b60fb7a83",
214
238
  get serverRpcUrl() {
215
239
  return process.env?.GNOSIS_RPC_URL || this.params.rpcUrls[0];
package/utils/utils.d.ts CHANGED
@@ -34,6 +34,7 @@ declare global {
34
34
  balanceResolverAddress?: string;
35
35
  usdcAddress: string;
36
36
  explorerUrl: string;
37
+ apiURL?: string;
37
38
  params: {
38
39
  chainName?: string;
39
40
  iconUrls?: string[];