@instadapp/avocado-base 0.1.1 → 0.1.3

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.1.1",
3
+ "version": "0.1.3",
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",
@@ -46,6 +47,16 @@ const actionMetadataTypes: Record<MetadataTypes, string[]> = {
46
47
  "uint256 bridgeFee",
47
48
  "address nativeToken",
48
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
+ ],
49
60
  swap: [
50
61
  "address sellToken",
51
62
  "address buyToken",
@@ -295,7 +306,21 @@ export const encodeBridgeMetadata = (
295
306
  params: BridgeMetadataProps,
296
307
  single = true
297
308
  ) => {
298
- 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(
299
324
  actionMetadataTypes.bridge,
300
325
  [
301
326
  params.amount,
@@ -309,7 +334,7 @@ export const encodeBridgeMetadata = (
309
334
  );
310
335
 
311
336
  const data = encodeMetadata({
312
- type: MetadataEnums.bridge,
337
+ type,
313
338
  encodedData,
314
339
  });
315
340
 
@@ -419,11 +444,21 @@ export const decodeMetadata = (metadata: string) => {
419
444
 
420
445
  const iface = Forwarder__factory.createInterface();
421
446
  const ifaceMultisig = MultisigForwarder__factory.createInterface();
447
+ const ifaceAgnostic = MultisigAgnosticForwarder__factory.createInterface();
422
448
 
423
449
  const getMetadataFromData = (data: string) => {
424
450
  let metadata = "0x";
425
451
 
426
- 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")) {
427
462
  const executeData = iface.decodeFunctionData("execute", data);
428
463
  if (executeData.metadata_ === "0x" || !executeData.metadata_) {
429
464
  return null;
@@ -479,6 +514,16 @@ const typesPayload: IPayload = {
479
514
  toChainId: data.toChainId ? data.toChainId.toString() : null,
480
515
  bridgeFee: toBN(data.bridgeFee).toFixed(),
481
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
+ }),
482
527
  swap: (data, type) => ({
483
528
  type,
484
529
  buyAmount: toBN(data.buyAmount).toFixed(),
@@ -582,7 +627,7 @@ const parseMetadata = (metadata: string) => {
582
627
  decodedMetadata.type
583
628
  ) as keyof typeof actionMetadataTypes;
584
629
 
585
- const decodedData = ethers.utils.defaultAbiCoder.decode(
630
+ const decodedData = decodedMetadata?.data === '0x' ? '' : ethers.utils.defaultAbiCoder.decode(
586
631
  actionMetadataTypes[type],
587
632
  decodedMetadata.data
588
633
  );
@@ -605,6 +650,10 @@ const parseMetadata = (metadata: string) => {
605
650
  * @returns {string} - The modified sentence with hyphens replaced with spaces and the first letter of each word capitalized.
606
651
  */
607
652
  export const formatTxType = (txType: string) => {
653
+ if(txType === 'mass') {
654
+ return 'Chain Agnostic Payments'
655
+ }
656
+
608
657
  const finalSentence = txType
609
658
  .replace("-", " ")
610
659
  .replace(/(^\w{1})|(\s+\w{1})/g, (letter) => letter.toUpperCase());
package/utils/network.ts CHANGED
@@ -15,6 +15,7 @@ import {
15
15
  scroll,
16
16
  opBNB,
17
17
  mode,
18
+ blast
18
19
  } from "viem/chains";
19
20
  import {
20
21
  AVO_PROD_CHAIN_NAME,
@@ -439,6 +440,26 @@ export const networks: Network[] = [
439
440
  },
440
441
  viemChain: mode,
441
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
+ },
442
463
  // {
443
464
  // name: "Manta Pacific",
444
465
  // chainId: 169,
package/utils/utils.d.ts CHANGED
@@ -20,6 +20,7 @@ declare global {
20
20
  | 63400
21
21
  | 169
22
22
  | 34443
23
+ | 81457
23
24
 
24
25
  type ISlackMessageType = "danger" | "error" | "success" | "banner";
25
26
 
@@ -107,6 +108,8 @@ declare global {
107
108
  toChainId: string;
108
109
  bridgeFee: string;
109
110
  nativeToken: string;
111
+ version?: string;
112
+ provider: string;
110
113
  };
111
114
 
112
115
  type SwapMetadataProps = {