@instadapp/avocado-base 0.0.0-dev.55b5da9 → 0.0.0-dev.608fae8

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.55b5da9",
3
+ "version": "0.0.0-dev.608fae8",
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/helper.ts CHANGED
@@ -58,4 +58,5 @@ export function formatMultipleAddresses(addresses: string[], shorten = true) {
58
58
  const formattedString = formatter.format(addresses.map(i => shorten ? shortenHash(i) || '' : i))
59
59
 
60
60
  return formattedString
61
- }
61
+ }
62
+
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,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 = [1101];
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: "Avalanche",
99
- debankName: "avax",
100
- ankrName: "avalanche",
101
- zerionName: "avalanche",
102
- color: "#EB5757",
103
- chainId: 43114,
104
- usdcAddress: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
105
- balanceResolverAddress: "0x63009f31D054E0ac9F321Cf0D642375236A4Bf1E",
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?.AVALANCHE_RPC_URL || this.params.rpcUrls[0];
145
+ return process.env?.POLYGON_ZKEVM_RPC_URL || this.params.rpcUrls[0];
109
146
  },
110
147
  params: {
111
- chainName: "Avalanche Network",
148
+ chainName: "polygon zkEVM",
149
+ rpcUrls: ["https://zkevm-rpc.com"],
112
150
  nativeCurrency: {
113
- name: "Avalanche",
114
- symbol: "AVAX",
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,
@@ -205,24 +270,23 @@ export const networks: Network[] = [
205
270
  },
206
271
  },
207
272
  {
208
- name: "Fantom",
209
- chainId: 250,
210
- zerionName: "fantom",
211
- explorerUrl: "https://ftmscan.com",
212
- ankrName: "fantom",
213
- color: "#1969ff",
273
+ name: "Fuse",
274
+ chainId: 122,
275
+ zerionName: "fuse",
276
+ color: "#78d64b",
277
+ explorerUrl: "https://explorer.fuse.io",
214
278
  get serverRpcUrl() {
215
- return process.env?.FANTOM_RPC_URL || this.params.rpcUrls[0];
279
+ return process.env?.FUSE_RPC_URL || this.params.rpcUrls[0];
216
280
  },
217
- usdcAddress: "0x04068da6c83afcfa0e13ba15a6696662335d5b75",
218
- balanceResolverAddress: "0x929376c77a2fb8152375a089a4fccf84ff481479",
281
+ usdcAddress: "",
282
+ balanceResolverAddress: "0xdF19Da523DA64bBE82eE0E4DFf00d676A8386474",
219
283
  params: {
220
- rpcUrls: ["https://rpc.ankr.com/fantom"],
221
- chainName: "Fantom",
284
+ rpcUrls: ["https://fuse-mainnet.chainstacklabs.com"],
285
+ chainName: "Fuse",
222
286
  nativeCurrency: {
223
- name: "Fantom",
224
- symbol: "FTM",
225
287
  decimals: 18,
288
+ name: "Fuse",
289
+ symbol: "fuse",
226
290
  },
227
291
  },
228
292
  },
@@ -269,18 +333,22 @@ export const networks: Network[] = [
269
333
  ];
270
334
 
271
335
  export const chainUsdcAddresses = [
272
- { chainId: 1, address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' },
273
- { chainId: 10, address: '0x7f5c764cbc14f9669b88837ca1490cca17c31607' },
274
- { chainId: 56, address: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d' },
275
- { chainId: 100, address: '0xddafbb505ad214d7b80b1f830fccc89b60fb7a83' },
276
- { chainId: 137, address: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' },
277
- { chainId: 250, address: '0x04068da6c83afcfa0e13ba15a6696662335d5b75' },
278
- { chainId: 42161, address: '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8' },
279
- { chainId: 42161, address: '0xaf88d065e77c8cc2239327c5edb3a432268e5831' },
280
- { chainId: 43114, address: '0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e' },
281
- { chainId: 43114, address: '0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664' },
282
- { chainId: 1101, address: '0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035' },
283
- { chainId: 1313161554, address: '0xB12BFcA5A55806AaF64E99521918A4bf0fC40802' },
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/utils.d.ts CHANGED
@@ -11,8 +11,10 @@ declare global {
11
11
  | 250
12
12
  | 634
13
13
  | 1313161554
14
+ | 8453
15
+ | 122
14
16
  | 63400;
15
-
17
+
16
18
  type ISlackMessageType = "danger" | "error" | "success" | "banner";
17
19
 
18
20
  type MetadataTypes = keyof typeof MetadataEnums;
@@ -33,6 +35,7 @@ declare global {
33
35
  balanceResolverAddress?: string;
34
36
  usdcAddress: string;
35
37
  explorerUrl: string;
38
+ apiURL?: string;
36
39
  params: {
37
40
  chainName?: string;
38
41
  iconUrls?: string[];
@@ -108,7 +111,7 @@ declare global {
108
111
  };
109
112
 
110
113
  type MetadataProps = {
111
- type: MetadataTypes,
114
+ type: MetadataTypes;
112
115
  encodedData: string;
113
116
  version?: string;
114
117
  };
@@ -124,8 +127,6 @@ declare global {
124
127
  coingecko_id: string;
125
128
  sparkline_price_7d: number[];
126
129
  }
127
-
128
130
  }
129
131
 
130
- export { }
131
-
132
+ export {};