@instadapp/avocado-base 0.0.0-dev.ebef45a → 0.0.0-dev.f0b0c4f
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/components/metadata/Signers.vue +23 -8
- 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/metadata.ts +35 -17
- package/utils/network.ts +6 -1
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/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
|
@@ -10,7 +10,9 @@ import {
|
|
|
10
10
|
AVO_STAGING_EXPLORER_URL,
|
|
11
11
|
} from './avocado'
|
|
12
12
|
|
|
13
|
-
export const bridgeDisabledNetworks = [
|
|
13
|
+
export const bridgeDisabledNetworks = [];
|
|
14
|
+
|
|
15
|
+
export const networksSimulationNotSupported = [1313161554, 1101]
|
|
14
16
|
|
|
15
17
|
export const networks: Network[] = [
|
|
16
18
|
{
|
|
@@ -88,6 +90,7 @@ export const networks: Network[] = [
|
|
|
88
90
|
name: 'Base',
|
|
89
91
|
chainId: 8453,
|
|
90
92
|
color: '#1E2024',
|
|
93
|
+
ankrName:'base',
|
|
91
94
|
explorerUrl: 'https://basescan.org',
|
|
92
95
|
apiURL: 'https://api.basescan.org',
|
|
93
96
|
get serverRpcUrl() {
|
|
@@ -133,6 +136,7 @@ export const networks: Network[] = [
|
|
|
133
136
|
name: "Polygon zkEVM",
|
|
134
137
|
chainId: 1101,
|
|
135
138
|
color: "#8544f6",
|
|
139
|
+
ankrName: 'polygon_zkevm',
|
|
136
140
|
explorerUrl: "https://zkevm.polygonscan.com",
|
|
137
141
|
apiURL: 'https://api-zkevm.polygonscan.com',
|
|
138
142
|
balanceResolverAddress: "0x48D1Fa5Ee6691a1E0B45d2B515650997BEA27a01",
|
|
@@ -225,6 +229,7 @@ export const networks: Network[] = [
|
|
|
225
229
|
debankName: "xdai",
|
|
226
230
|
zerionName: "xdai",
|
|
227
231
|
color: "#04795C",
|
|
232
|
+
ankrName: 'gnosis',
|
|
228
233
|
chainId: 100,
|
|
229
234
|
balanceResolverAddress: "0xfaa244e276b1597f663975ed007ee4ff70d27849",
|
|
230
235
|
explorerUrl: "https://gnosisscan.io",
|