@instadapp/avocado-base 0.0.0-dev.66c109d → 0.0.0-dev.6939444
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/multisigAgnosticForwarder.json +1 -0
- package/assets/images/icons/stars.svg +4 -0
- package/components/ActionLogo.vue +2 -0
- package/components/ActionMetadata.vue +5 -1
- package/contracts/MultisigAgnosticForwarder.ts +1413 -0
- package/contracts/factories/MultisigAgnosticForwarder__factory.ts +2051 -0
- package/contracts/factories/index.ts +1 -0
- package/contracts/index.ts +2 -0
- package/package.json +2 -2
- package/utils/metadata.ts +69 -5
- package/utils/network.ts +42 -0
- package/utils/utils.d.ts +5 -1
|
@@ -6,4 +6,5 @@ export { BalanceResolver__factory } from "./BalanceResolver__factory";
|
|
|
6
6
|
export { Erc20__factory } from "./Erc20__factory";
|
|
7
7
|
export { Forwarder__factory } from "./Forwarder__factory";
|
|
8
8
|
export { GaslessWallet__factory } from "./GaslessWallet__factory";
|
|
9
|
+
export { MultisigAgnosticForwarder__factory } from "./MultisigAgnosticForwarder__factory";
|
|
9
10
|
export { MultisigForwarder__factory } from "./MultisigForwarder__factory";
|
package/contracts/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ 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 { MultisigAgnosticForwarder } from "./MultisigAgnosticForwarder";
|
|
9
10
|
export type { MultisigForwarder } from "./MultisigForwarder";
|
|
10
11
|
export * as factories from "./factories";
|
|
11
12
|
export { AvoFactoryProxy__factory } from "./factories/AvoFactoryProxy__factory";
|
|
@@ -13,4 +14,5 @@ export { BalanceResolver__factory } from "./factories/BalanceResolver__factory";
|
|
|
13
14
|
export { Erc20__factory } from "./factories/Erc20__factory";
|
|
14
15
|
export { Forwarder__factory } from "./factories/Forwarder__factory";
|
|
15
16
|
export { GaslessWallet__factory } from "./factories/GaslessWallet__factory";
|
|
17
|
+
export { MultisigAgnosticForwarder__factory } from "./factories/MultisigAgnosticForwarder__factory";
|
|
16
18
|
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.
|
|
3
|
+
"version": "0.0.0-dev.6939444",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./nuxt.config.ts",
|
|
6
6
|
"types": "global.d.ts",
|
|
@@ -29,7 +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.
|
|
32
|
+
"viem": "^2.10.5",
|
|
33
33
|
"xxhashjs": "^0.2.2"
|
|
34
34
|
}
|
|
35
35
|
}
|
package/utils/metadata.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { ethers, utils } from "ethers";
|
|
2
|
-
import { Forwarder__factory, MultisigForwarder__factory } from "../contracts";
|
|
2
|
+
import { Forwarder__factory, MultisigForwarder__factory, MultisigAgnosticForwarder__factory } from "../contracts";
|
|
3
3
|
import { toBN } from "./bignumber";
|
|
4
4
|
|
|
5
5
|
export const MetadataEnums = {
|
|
6
6
|
transfer: "transfer",
|
|
7
7
|
bridge: "bridge",
|
|
8
|
+
'bridge-v2': 'bridge-v2',
|
|
8
9
|
swap: "swap",
|
|
9
10
|
"gas-topup": "gas-topup",
|
|
10
11
|
upgrade: "upgrade",
|
|
@@ -19,6 +20,7 @@ export const MetadataEnums = {
|
|
|
19
20
|
"remove-signers": "remove-signers",
|
|
20
21
|
"change-threshold": "change-threshold",
|
|
21
22
|
import: "import",
|
|
23
|
+
mass: "mass",
|
|
22
24
|
"tx-builder": "tx-builder",
|
|
23
25
|
"avocado-bridge": "avocado-bridge",
|
|
24
26
|
} as const;
|
|
@@ -45,6 +47,16 @@ const actionMetadataTypes: Record<MetadataTypes, string[]> = {
|
|
|
45
47
|
"uint256 bridgeFee",
|
|
46
48
|
"address nativeToken",
|
|
47
49
|
],
|
|
50
|
+
'bridge-v2': [
|
|
51
|
+
"uint256 amount",
|
|
52
|
+
"address receiver",
|
|
53
|
+
"address fromToken",
|
|
54
|
+
"address toToken",
|
|
55
|
+
"uint256 toChainId",
|
|
56
|
+
"uint256 bridgeFee",
|
|
57
|
+
"address nativeToken",
|
|
58
|
+
"bytes32 provider",
|
|
59
|
+
],
|
|
48
60
|
swap: [
|
|
49
61
|
"address sellToken",
|
|
50
62
|
"address buyToken",
|
|
@@ -72,6 +84,7 @@ const actionMetadataTypes: Record<MetadataTypes, string[]> = {
|
|
|
72
84
|
"change-threshold": ["uint8 count"],
|
|
73
85
|
rejection: ["bytes32 id"],
|
|
74
86
|
"avocado-bridge": ["bytes32 id", "uint256 toChainId"],
|
|
87
|
+
mass: ["bool isMass"],
|
|
75
88
|
};
|
|
76
89
|
|
|
77
90
|
const encodeMetadata = (props: MetadataProps) => {
|
|
@@ -293,7 +306,21 @@ export const encodeBridgeMetadata = (
|
|
|
293
306
|
params: BridgeMetadataProps,
|
|
294
307
|
single = true
|
|
295
308
|
) => {
|
|
296
|
-
const
|
|
309
|
+
const type = params.version === '2' ? MetadataEnums["bridge-v2"] : MetadataEnums.bridge
|
|
310
|
+
|
|
311
|
+
const encodedData = params.version === '2' ? ethers.utils.defaultAbiCoder.encode(
|
|
312
|
+
actionMetadataTypes["bridge-v2"],
|
|
313
|
+
[
|
|
314
|
+
params.amount,
|
|
315
|
+
params.receiver,
|
|
316
|
+
params.fromToken,
|
|
317
|
+
params.toToken,
|
|
318
|
+
params.toChainId,
|
|
319
|
+
params.bridgeFee,
|
|
320
|
+
params.nativeToken,
|
|
321
|
+
params.provider
|
|
322
|
+
]
|
|
323
|
+
): ethers.utils.defaultAbiCoder.encode(
|
|
297
324
|
actionMetadataTypes.bridge,
|
|
298
325
|
[
|
|
299
326
|
params.amount,
|
|
@@ -307,7 +334,7 @@ export const encodeBridgeMetadata = (
|
|
|
307
334
|
);
|
|
308
335
|
|
|
309
336
|
const data = encodeMetadata({
|
|
310
|
-
type
|
|
337
|
+
type,
|
|
311
338
|
encodedData,
|
|
312
339
|
});
|
|
313
340
|
|
|
@@ -366,6 +393,15 @@ export const encodeImportMetadata = (
|
|
|
366
393
|
return single ? encodeMultipleActions(data) : data;
|
|
367
394
|
};
|
|
368
395
|
|
|
396
|
+
export const encodeMassMetadata = (single = true) => {
|
|
397
|
+
const data = encodeMetadata({
|
|
398
|
+
type: MetadataEnums.mass,
|
|
399
|
+
encodedData: '0x',
|
|
400
|
+
});
|
|
401
|
+
|
|
402
|
+
return single ? encodeMultipleActions(data) : data;
|
|
403
|
+
}
|
|
404
|
+
|
|
369
405
|
export const encodeAddSignersMetadata = (
|
|
370
406
|
addresses: string[],
|
|
371
407
|
single = true
|
|
@@ -408,11 +444,21 @@ export const decodeMetadata = (metadata: string) => {
|
|
|
408
444
|
|
|
409
445
|
const iface = Forwarder__factory.createInterface();
|
|
410
446
|
const ifaceMultisig = MultisigForwarder__factory.createInterface();
|
|
447
|
+
const ifaceAgnostic = MultisigAgnosticForwarder__factory.createInterface();
|
|
411
448
|
|
|
412
449
|
const getMetadataFromData = (data: string) => {
|
|
413
450
|
let metadata = "0x";
|
|
414
451
|
|
|
415
|
-
|
|
452
|
+
|
|
453
|
+
if(data.startsWith('0x320036b4')) {
|
|
454
|
+
const executeData = ifaceAgnostic.decodeFunctionData("executeChainAgnosticV1", data);
|
|
455
|
+
|
|
456
|
+
const metadata = executeData?.params_?.params?.metadata
|
|
457
|
+
|
|
458
|
+
return metadata === '0x' || !metadata ? null : metadata
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
else if (data.startsWith("0x18e7f485")) {
|
|
416
462
|
const executeData = iface.decodeFunctionData("execute", data);
|
|
417
463
|
if (executeData.metadata_ === "0x" || !executeData.metadata_) {
|
|
418
464
|
return null;
|
|
@@ -468,6 +514,16 @@ const typesPayload: IPayload = {
|
|
|
468
514
|
toChainId: data.toChainId ? data.toChainId.toString() : null,
|
|
469
515
|
bridgeFee: toBN(data.bridgeFee).toFixed(),
|
|
470
516
|
}),
|
|
517
|
+
'bridge-v2': (data, type) => ({
|
|
518
|
+
type: 'bridge',
|
|
519
|
+
amount: toBN(data.amount).toFixed(),
|
|
520
|
+
receiver: data.receiver,
|
|
521
|
+
toToken: data.toToken,
|
|
522
|
+
fromToken: data.fromToken,
|
|
523
|
+
toChainId: data.toChainId ? data.toChainId.toString() : null,
|
|
524
|
+
bridgeFee: toBN(data.bridgeFee).toFixed(),
|
|
525
|
+
provider: utils.parseBytes32String(data.provider || ""),
|
|
526
|
+
}),
|
|
471
527
|
swap: (data, type) => ({
|
|
472
528
|
type,
|
|
473
529
|
buyAmount: toBN(data.buyAmount).toFixed(),
|
|
@@ -546,6 +602,10 @@ const typesPayload: IPayload = {
|
|
|
546
602
|
id: data.id,
|
|
547
603
|
toChainId: data.toChainId ? data.toChainId.toString() : null,
|
|
548
604
|
}),
|
|
605
|
+
mass: (data, type) => ({
|
|
606
|
+
type,
|
|
607
|
+
data,
|
|
608
|
+
}),
|
|
549
609
|
};
|
|
550
610
|
|
|
551
611
|
const parseMetadata = (metadata: string) => {
|
|
@@ -567,7 +627,7 @@ const parseMetadata = (metadata: string) => {
|
|
|
567
627
|
decodedMetadata.type
|
|
568
628
|
) as keyof typeof actionMetadataTypes;
|
|
569
629
|
|
|
570
|
-
const decodedData = ethers.utils.defaultAbiCoder.decode(
|
|
630
|
+
const decodedData = decodedMetadata?.data === '0x' ? '' : ethers.utils.defaultAbiCoder.decode(
|
|
571
631
|
actionMetadataTypes[type],
|
|
572
632
|
decodedMetadata.data
|
|
573
633
|
);
|
|
@@ -590,6 +650,10 @@ const parseMetadata = (metadata: string) => {
|
|
|
590
650
|
* @returns {string} - The modified sentence with hyphens replaced with spaces and the first letter of each word capitalized.
|
|
591
651
|
*/
|
|
592
652
|
export const formatTxType = (txType: string) => {
|
|
653
|
+
if(txType === 'mass') {
|
|
654
|
+
return 'Chain Agnostic Payments'
|
|
655
|
+
}
|
|
656
|
+
|
|
593
657
|
const finalSentence = txType
|
|
594
658
|
.replace("-", " ")
|
|
595
659
|
.replace(/(^\w{1})|(\s+\w{1})/g, (letter) => letter.toUpperCase());
|
package/utils/network.ts
CHANGED
|
@@ -14,6 +14,8 @@ import {
|
|
|
14
14
|
fuse,
|
|
15
15
|
scroll,
|
|
16
16
|
opBNB,
|
|
17
|
+
mode,
|
|
18
|
+
blast
|
|
17
19
|
} from "viem/chains";
|
|
18
20
|
import {
|
|
19
21
|
AVO_PROD_CHAIN_NAME,
|
|
@@ -418,6 +420,46 @@ export const networks: Network[] = [
|
|
|
418
420
|
},
|
|
419
421
|
},
|
|
420
422
|
},
|
|
423
|
+
{
|
|
424
|
+
chainId: 34443,
|
|
425
|
+
name: "Mode",
|
|
426
|
+
color: "#d7ff00",
|
|
427
|
+
explorerUrl: 'https://explorer.mode.network',
|
|
428
|
+
fakeTransactionHash: '0xb58002db3481f2c51855a91280ec940d0bebec075c4b362b9f90c21a2b14edbe',
|
|
429
|
+
params: {
|
|
430
|
+
rpcUrls: ["https://1rpc.io/mode"],
|
|
431
|
+
chainName: "Mode",
|
|
432
|
+
nativeCurrency: {
|
|
433
|
+
name: "Ethereum",
|
|
434
|
+
symbol: "ETH",
|
|
435
|
+
decimals: 18,
|
|
436
|
+
}
|
|
437
|
+
},
|
|
438
|
+
get serverRpcUrl() {
|
|
439
|
+
return process.env?.MODE_RPC_URL || this.params.rpcUrls[0];
|
|
440
|
+
},
|
|
441
|
+
viemChain: mode,
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
chainId: 81457,
|
|
445
|
+
name: "Blast",
|
|
446
|
+
color: "#78d64b",
|
|
447
|
+
explorerUrl: 'https://blastscan.io',
|
|
448
|
+
fakeTransactionHash: '0x934ed8516242f8c08bb9e0e90bb1f989d92ceb6b0333e86ac2d555f25ac27e58',
|
|
449
|
+
params: {
|
|
450
|
+
rpcUrls: ['https://rpc.ankr.com/blast'],
|
|
451
|
+
chainName: "Blast",
|
|
452
|
+
nativeCurrency: {
|
|
453
|
+
name: "Ethereum",
|
|
454
|
+
symbol: "ETH",
|
|
455
|
+
decimals: 18,
|
|
456
|
+
}
|
|
457
|
+
},
|
|
458
|
+
get serverRpcUrl() {
|
|
459
|
+
return process.env?.BLAST_RPC_URL || this.params.rpcUrls[0];
|
|
460
|
+
},
|
|
461
|
+
viemChain: blast,
|
|
462
|
+
},
|
|
421
463
|
// {
|
|
422
464
|
// name: "Manta Pacific",
|
|
423
465
|
// chainId: 169,
|
package/utils/utils.d.ts
CHANGED
|
@@ -18,7 +18,9 @@ declare global {
|
|
|
18
18
|
| 534352
|
|
19
19
|
| 204
|
|
20
20
|
| 63400
|
|
21
|
-
| 169
|
|
21
|
+
| 169
|
|
22
|
+
| 34443
|
|
23
|
+
| 81457
|
|
22
24
|
|
|
23
25
|
type ISlackMessageType = "danger" | "error" | "success" | "banner";
|
|
24
26
|
|
|
@@ -106,6 +108,8 @@ declare global {
|
|
|
106
108
|
toChainId: string;
|
|
107
109
|
bridgeFee: string;
|
|
108
110
|
nativeToken: string;
|
|
111
|
+
version?: string;
|
|
112
|
+
provider: string;
|
|
109
113
|
};
|
|
110
114
|
|
|
111
115
|
type SwapMetadataProps = {
|