@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.
- package/abi/multisigForwarder.json +697 -0
- package/assets/images/icons/info-2.svg +12 -0
- package/components/ActionMetadata.vue +4 -0
- package/components/AuthorityAvatar.vue +12 -0
- package/components/ChainLogo.vue +8 -207
- package/components/metadata/Signers.vue +30 -13
- package/contracts/MultisigForwarder.ts +859 -0
- package/contracts/factories/MultisigForwarder__factory.ts +721 -0
- package/contracts/factories/index.ts +1 -0
- package/contracts/index.ts +2 -0
- package/package.json +1 -1
- package/utils/helper.ts +0 -11
- package/utils/metadata.ts +35 -17
- package/utils/network.ts +25 -1
- package/utils/utils.d.ts +1 -0
package/contracts/index.ts
CHANGED
|
@@ -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
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
|
|
382
|
-
"
|
|
394
|
+
const executeDataMultisig = ifaceMultisig.decodeFunctionData(
|
|
395
|
+
"executeV1",
|
|
383
396
|
data
|
|
384
397
|
);
|
|
385
398
|
if (
|
|
386
|
-
|
|
387
|
-
!
|
|
399
|
+
executeDataMultisig.params_.metadata === "0x" ||
|
|
400
|
+
!executeDataMultisig.params_.metadata
|
|
388
401
|
) {
|
|
389
402
|
return null;
|
|
390
403
|
} else {
|
|
391
|
-
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 = [
|
|
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];
|