@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.
@@ -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";
@@ -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.66c109d",
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.7.16",
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 encodedData = ethers.utils.defaultAbiCoder.encode(
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: MetadataEnums.bridge,
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
- if (data.startsWith("0x18e7f485")) {
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 = {