@instadapp/avocado-base 0.0.0-dev.8dda10f → 0.0.0-dev.8ed8fca

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";
@@ -0,0 +1,19 @@
1
+ // @ts-check
2
+ import antfu from '@antfu/eslint-config'
3
+ import withNuxt from './.nuxt/eslint.config.mjs'
4
+
5
+ export default withNuxt(
6
+ antfu({
7
+ yaml: false,
8
+ rules: {
9
+ 'style/max-statements-per-line': 'off',
10
+ 'max-statements-per-line': 'off',
11
+ '@stylistic/max-statements-per-line': 'off',
12
+ 'vue/return-in-computed-property': 'off',
13
+ 'no-console': 'off',
14
+ 'ts/ban-ts-comment': 'off',
15
+ 'vue/prop-name-casing': 'off',
16
+ 'node/prefer-global/process': 'off',
17
+ },
18
+ }),
19
+ )
package/nuxt.config.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  import ViteComponents from "unplugin-vue-components/vite";
3
3
 
4
4
  export default defineNuxtConfig({
5
- modules: ["@nuxtjs/tailwindcss", "nuxt-svgo", "@vueuse/nuxt"],
5
+ modules: ["@nuxtjs/tailwindcss", "nuxt-svgo", "@vueuse/nuxt", "@nuxt/eslint"],
6
6
  svgo: {
7
7
  defaultImport: "component",
8
8
  autoImportPath: "./assets/images/icons",
@@ -17,4 +17,9 @@ export default defineNuxtConfig({
17
17
  }),
18
18
  ],
19
19
  },
20
- });
20
+ eslint: {
21
+ config: {
22
+ standalone: false,
23
+ },
24
+ },
25
+ });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@instadapp/avocado-base",
3
- "version": "0.0.0-dev.8dda10f",
4
3
  "type": "module",
4
+ "version": "0.0.0-dev.8ed8fca",
5
5
  "main": "./nuxt.config.ts",
6
6
  "types": "global.d.ts",
7
7
  "engines": {
@@ -15,21 +15,23 @@
15
15
  "generate:contracts": "rimraf contracts && typechain --target=ethers-v5 'abi/*.json' --out-dir 'contracts'",
16
16
  "typecheck": "nuxi typecheck"
17
17
  },
18
+ "dependencies": {
19
+ "@antfu/eslint-config": "^2.21.1",
20
+ "@vueuse/nuxt": "^10.2.0",
21
+ "bignumber.js": "^9.1.1",
22
+ "ethers": "^5.7.2",
23
+ "viem": "^2.10.5",
24
+ "xxhashjs": "^0.2.2"
25
+ },
18
26
  "devDependencies": {
27
+ "@nuxt/eslint": "^0.3.13",
19
28
  "@nuxtjs/tailwindcss": "^6.11.3",
20
29
  "@typechain/ethers-v5": "^10.2.0",
21
- "nuxt": "^3.10.1",
30
+ "nuxt": "3.10.1",
22
31
  "nuxt-svgo": "^4.0.0",
23
32
  "rimraf": "^3.0.2",
24
33
  "typechain": "^8.1.1",
25
34
  "unplugin-vue-components": "^0.25.1",
26
35
  "vue-tippy": "^6.0.0"
27
- },
28
- "dependencies": {
29
- "@vueuse/nuxt": "^10.2.0",
30
- "bignumber.js": "^9.1.1",
31
- "ethers": "^5.7.2",
32
- "viem": "^2.7.16",
33
- "xxhashjs": "^0.2.2"
34
36
  }
35
37
  }
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",
@@ -12,6 +13,7 @@ export const MetadataEnums = {
12
13
  deploy: "deploy",
13
14
  permit2: "permit2",
14
15
  "cross-transfer": "cross-transfer",
16
+ 'cross-transfer-v2': 'cross-transfer-v2',
15
17
  auth: "auth",
16
18
  rejection: "rejection",
17
19
  "instadapp-pro": "instadapp-pro",
@@ -37,6 +39,14 @@ const actionMetadataTypes: Record<MetadataTypes, string[]> = {
37
39
  "uint256 amount",
38
40
  "address receiver",
39
41
  ],
42
+ "cross-transfer-v2": [
43
+ "address fromToken",
44
+ "address toToken",
45
+ "uint256 toChainId",
46
+ "uint256 amount",
47
+ "address receiver",
48
+ "bytes32 provider",
49
+ ],
40
50
  bridge: [
41
51
  "uint256 amount",
42
52
  "address receiver",
@@ -46,6 +56,16 @@ const actionMetadataTypes: Record<MetadataTypes, string[]> = {
46
56
  "uint256 bridgeFee",
47
57
  "address nativeToken",
48
58
  ],
59
+ 'bridge-v2': [
60
+ "uint256 amount",
61
+ "address receiver",
62
+ "address fromToken",
63
+ "address toToken",
64
+ "uint256 toChainId",
65
+ "uint256 bridgeFee",
66
+ "address nativeToken",
67
+ "bytes32 provider",
68
+ ],
49
69
  swap: [
50
70
  "address sellToken",
51
71
  "address buyToken",
@@ -154,8 +174,21 @@ export const encodeCrossTransferMetadata = (
154
174
  params: CrossSendMetadataProps,
155
175
  single = true
156
176
  ) => {
157
- const encodedData = ethers.utils.defaultAbiCoder.encode(
158
- actionMetadataTypes["cross-transfer"],
177
+
178
+ const type = params.provider ? MetadataEnums["cross-transfer-v2"] : MetadataEnums["cross-transfer"]
179
+
180
+ const encodedData = params.provider ? ethers.utils.defaultAbiCoder.encode(
181
+ actionMetadataTypes[type],
182
+ [
183
+ params.fromToken,
184
+ params.toToken,
185
+ params.toChainId,
186
+ params.amount,
187
+ params.receiver,
188
+ params.provider
189
+ ]
190
+ ) : ethers.utils.defaultAbiCoder.encode(
191
+ actionMetadataTypes[type],
159
192
  [
160
193
  params.fromToken,
161
194
  params.toToken,
@@ -166,7 +199,7 @@ export const encodeCrossTransferMetadata = (
166
199
  );
167
200
 
168
201
  const data = encodeMetadata({
169
- type: MetadataEnums["cross-transfer"],
202
+ type: MetadataEnums[type],
170
203
  encodedData,
171
204
  });
172
205
 
@@ -295,7 +328,21 @@ export const encodeBridgeMetadata = (
295
328
  params: BridgeMetadataProps,
296
329
  single = true
297
330
  ) => {
298
- const encodedData = ethers.utils.defaultAbiCoder.encode(
331
+ const type = params.version === '2' ? MetadataEnums["bridge-v2"] : MetadataEnums.bridge
332
+
333
+ const encodedData = params.version === '2' ? ethers.utils.defaultAbiCoder.encode(
334
+ actionMetadataTypes["bridge-v2"],
335
+ [
336
+ params.amount,
337
+ params.receiver,
338
+ params.fromToken,
339
+ params.toToken,
340
+ params.toChainId,
341
+ params.bridgeFee,
342
+ params.nativeToken,
343
+ params.provider
344
+ ]
345
+ ): ethers.utils.defaultAbiCoder.encode(
299
346
  actionMetadataTypes.bridge,
300
347
  [
301
348
  params.amount,
@@ -309,7 +356,7 @@ export const encodeBridgeMetadata = (
309
356
  );
310
357
 
311
358
  const data = encodeMetadata({
312
- type: MetadataEnums.bridge,
359
+ type,
313
360
  encodedData,
314
361
  });
315
362
 
@@ -419,11 +466,22 @@ export const decodeMetadata = (metadata: string) => {
419
466
 
420
467
  const iface = Forwarder__factory.createInterface();
421
468
  const ifaceMultisig = MultisigForwarder__factory.createInterface();
469
+ const ifaceAgnostic = MultisigAgnosticForwarder__factory.createInterface();
422
470
 
423
471
  const getMetadataFromData = (data: string) => {
424
472
  let metadata = "0x";
425
473
 
426
- if (data.startsWith("0x18e7f485")) {
474
+ if(data.startsWith('0xc5e15557')) {
475
+
476
+ const executeData = ifaceAgnostic.decodeFunctionData("executeChainAgnosticV1", data);
477
+
478
+
479
+ const metadata = executeData?.params_?.params?.metadata
480
+
481
+ return metadata === '0x' || !metadata ? null : metadata
482
+ }
483
+
484
+ else if (data.startsWith("0x18e7f485")) {
427
485
  const executeData = iface.decodeFunctionData("execute", data);
428
486
  if (executeData.metadata_ === "0x" || !executeData.metadata_) {
429
487
  return null;
@@ -479,6 +537,16 @@ const typesPayload: IPayload = {
479
537
  toChainId: data.toChainId ? data.toChainId.toString() : null,
480
538
  bridgeFee: toBN(data.bridgeFee).toFixed(),
481
539
  }),
540
+ 'bridge-v2': (data, type) => ({
541
+ type: 'bridge',
542
+ amount: toBN(data.amount).toFixed(),
543
+ receiver: data.receiver,
544
+ toToken: data.toToken,
545
+ fromToken: data.fromToken,
546
+ toChainId: data.toChainId ? data.toChainId.toString() : null,
547
+ bridgeFee: toBN(data.bridgeFee).toFixed(),
548
+ provider: utils.parseBytes32String(data.provider || ""),
549
+ }),
482
550
  swap: (data, type) => ({
483
551
  type,
484
552
  buyAmount: toBN(data.buyAmount).toFixed(),
@@ -526,6 +594,15 @@ const typesPayload: IPayload = {
526
594
  amount: toBN(data.amount).toFixed(),
527
595
  receiver: data.receiver,
528
596
  }),
597
+ "cross-transfer-v2": (data, type) => ({
598
+ type: 'cross-transfer',
599
+ fromToken: data.fromToken,
600
+ toToken: data.toToken,
601
+ toChainId: data.toChainId ? data.toChainId.toString() : null,
602
+ amount: toBN(data.amount).toFixed(),
603
+ receiver: data.receiver,
604
+ provider: utils.parseBytes32String(data.provider || ""),
605
+ }),
529
606
  auth: (data) => ({
530
607
  type: data.remove ? "remove-authority" : "add-authority",
531
608
  address: data.address,