@instadapp/avocado-base 0.0.0-dev.9853aa2 → 0.0.0-dev.9d4ed5b

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.
Files changed (46) hide show
  1. package/.github/workflows/npm-publish-dev.yml +2 -5
  2. package/abi/multisigAgnosticForwarder.json +1 -0
  3. package/abi/multisigForwarder.json +697 -0
  4. package/app.vue +7 -0
  5. package/assets/images/icons/change-threshold.svg +4 -0
  6. package/assets/images/icons/cross-transfer.svg +7 -0
  7. package/assets/images/icons/dapp.svg +4 -0
  8. package/assets/images/icons/deploy.svg +12 -0
  9. package/assets/images/icons/gas.svg +12 -5
  10. package/assets/images/icons/hammer.svg +5 -0
  11. package/assets/images/icons/info-2.svg +12 -0
  12. package/assets/images/icons/instadapp-pro.svg +4 -0
  13. package/assets/images/icons/multi-send.svg +7 -0
  14. package/assets/images/icons/permit-sign.svg +11 -0
  15. package/assets/images/icons/plus-circle.svg +6 -0
  16. package/assets/images/icons/refresh.svg +4 -4
  17. package/assets/images/icons/reject-proposal.svg +6 -0
  18. package/assets/images/icons/stars.svg +4 -0
  19. package/assets/images/icons/transfer.svg +5 -0
  20. package/assets/images/icons/trash-2.svg +8 -0
  21. package/assets/images/icons/upgrade.svg +4 -0
  22. package/components/ActionLogo.vue +42 -0
  23. package/components/ActionMetadata.vue +46 -17
  24. package/components/AuthorityAvatar.vue +37 -0
  25. package/components/ChainLogo.vue +14 -563
  26. package/components/CopyClipboard.vue +58 -0
  27. package/components/metadata/Bridge.vue +26 -6
  28. package/components/metadata/CrossTransfer.vue +16 -4
  29. package/components/metadata/GasTopup.vue +7 -1
  30. package/components/metadata/Permit2.vue +6 -1
  31. package/components/metadata/Signers.vue +66 -0
  32. package/components/metadata/Swap.vue +25 -25
  33. package/components/metadata/Transfer.vue +6 -2
  34. package/contracts/MultisigAgnosticForwarder.ts +1413 -0
  35. package/contracts/MultisigForwarder.ts +859 -0
  36. package/contracts/factories/MultisigAgnosticForwarder__factory.ts +2051 -0
  37. package/contracts/factories/MultisigForwarder__factory.ts +721 -0
  38. package/contracts/factories/index.ts +2 -0
  39. package/contracts/index.ts +4 -0
  40. package/package.json +14 -9
  41. package/utils/formatter.ts +2 -2
  42. package/utils/helper.ts +8 -0
  43. package/utils/metadata.ts +363 -150
  44. package/utils/network.ts +356 -74
  45. package/utils/services.ts +8 -1
  46. package/utils/utils.d.ts +141 -127
package/utils/metadata.ts CHANGED
@@ -1,11 +1,36 @@
1
1
  import { ethers, utils } from "ethers";
2
- import { Forwarder__factory } from "../contracts";
2
+ import { Forwarder__factory, MultisigForwarder__factory, MultisigAgnosticForwarder__factory } from "../contracts";
3
+ import { toBN } from "./bignumber";
4
+
5
+ export const MetadataEnums = {
6
+ transfer: "transfer",
7
+ bridge: "bridge",
8
+ 'bridge-v2': 'bridge-v2',
9
+ swap: "swap",
10
+ "gas-topup": "gas-topup",
11
+ upgrade: "upgrade",
12
+ dapp: "dapp",
13
+ deploy: "deploy",
14
+ permit2: "permit2",
15
+ "cross-transfer": "cross-transfer",
16
+ 'cross-transfer-v2': 'cross-transfer-v2',
17
+ auth: "auth",
18
+ rejection: "rejection",
19
+ "instadapp-pro": "instadapp-pro",
20
+ "add-signers": "add-signers",
21
+ "remove-signers": "remove-signers",
22
+ "change-threshold": "change-threshold",
23
+ import: "import",
24
+ mass: "mass",
25
+ "tx-builder": "tx-builder",
26
+ "avocado-bridge": "avocado-bridge",
27
+ } as const;
3
28
 
4
29
  const multiMetadataTypes = ["bytes[]"];
5
30
 
6
31
  const metadataTypes = ["bytes32 type", "uint8 version", "bytes data"];
7
32
 
8
- const actionMetadataTypes = {
33
+ const actionMetadataTypes: Record<MetadataTypes, string[]> = {
9
34
  transfer: ["address token", "uint256 amount", "address receiver"],
10
35
  "cross-transfer": [
11
36
  "address fromToken",
@@ -14,6 +39,14 @@ const actionMetadataTypes = {
14
39
  "uint256 amount",
15
40
  "address receiver",
16
41
  ],
42
+ "cross-transfer-v2": [
43
+ "address fromToken",
44
+ "address toToken",
45
+ "uint256 toChainId",
46
+ "uint256 amount",
47
+ "address receiver",
48
+ "bytes32 provider",
49
+ ],
17
50
  bridge: [
18
51
  "uint256 amount",
19
52
  "address receiver",
@@ -23,6 +56,16 @@ const actionMetadataTypes = {
23
56
  "uint256 bridgeFee",
24
57
  "address nativeToken",
25
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
+ ],
26
69
  swap: [
27
70
  "address sellToken",
28
71
  "address buyToken",
@@ -34,8 +77,10 @@ const actionMetadataTypes = {
34
77
  "gas-topup": ["uint256 amount", "address token", "address onBehalf"],
35
78
  upgrade: ["bytes32 version", "address walletImpl"],
36
79
  dapp: ["string name", "string url"],
80
+ import: ["bytes32 protocol", "uint256 valueInUsd"],
37
81
  auth: ["address address", "uint256 chainId", "bool remove"],
38
82
  deploy: [],
83
+ "tx-builder": ["bytes32 actionCount"],
39
84
  permit2: [
40
85
  "address token",
41
86
  "address spender",
@@ -43,7 +88,12 @@ const actionMetadataTypes = {
43
88
  "uint48 expiration",
44
89
  ],
45
90
  "instadapp-pro": ["string castDetails"],
46
- reject: ["string reason"],
91
+ "add-signers": ["address[] signers"],
92
+ "remove-signers": ["address[] signers"],
93
+ "change-threshold": ["uint8 count"],
94
+ rejection: ["bytes32 id"],
95
+ "avocado-bridge": ["bytes32 id", "uint256 toChainId"],
96
+ mass: ["bool isMass"],
47
97
  };
48
98
 
49
99
  const encodeMetadata = (props: MetadataProps) => {
@@ -64,7 +114,25 @@ export const encodeDappMetadata = (
64
114
  );
65
115
 
66
116
  const data = encodeMetadata({
67
- type: "dapp",
117
+ type: MetadataEnums.dapp,
118
+ encodedData,
119
+ });
120
+
121
+ return single ? encodeMultipleActions(data) : data;
122
+ };
123
+
124
+ export const encodeAvocadoBridgeMetadata = (
125
+ id: string,
126
+ toChainId: string | number,
127
+ single = true
128
+ ) => {
129
+ const encodedData = ethers.utils.defaultAbiCoder.encode(
130
+ actionMetadataTypes["avocado-bridge"],
131
+ [id, toChainId]
132
+ );
133
+
134
+ const data = encodeMetadata({
135
+ type: MetadataEnums["avocado-bridge"],
68
136
  encodedData,
69
137
  });
70
138
 
@@ -81,21 +149,21 @@ export const encodeTransferMetadata = (
81
149
  );
82
150
 
83
151
  const data = encodeMetadata({
84
- type: "transfer",
152
+ type: MetadataEnums.transfer,
85
153
  encodedData,
86
154
  });
87
155
 
88
156
  return single ? encodeMultipleActions(data) : data;
89
157
  };
90
158
 
91
- export const encodeRejectMetadata = (reason: string, single = true) => {
159
+ export const encodeRejectionMetadata = (id: string, single = true) => {
92
160
  const encodedData = ethers.utils.defaultAbiCoder.encode(
93
- actionMetadataTypes.reject,
94
- [reason]
161
+ actionMetadataTypes.rejection,
162
+ [id]
95
163
  );
96
164
 
97
165
  const data = encodeMetadata({
98
- type: "reject",
166
+ type: MetadataEnums.rejection,
99
167
  encodedData,
100
168
  });
101
169
 
@@ -106,8 +174,21 @@ export const encodeCrossTransferMetadata = (
106
174
  params: CrossSendMetadataProps,
107
175
  single = true
108
176
  ) => {
109
- const encodedData = ethers.utils.defaultAbiCoder.encode(
110
- 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],
111
192
  [
112
193
  params.fromToken,
113
194
  params.toToken,
@@ -118,7 +199,7 @@ export const encodeCrossTransferMetadata = (
118
199
  );
119
200
 
120
201
  const data = encodeMetadata({
121
- type: "cross-transfer",
202
+ type: MetadataEnums[type],
122
203
  encodedData,
123
204
  });
124
205
 
@@ -135,7 +216,7 @@ export const encodeAuthMetadata = (
135
216
  );
136
217
 
137
218
  const data = encodeMetadata({
138
- type: "auth",
219
+ type: MetadataEnums.auth,
139
220
  encodedData,
140
221
  });
141
222
 
@@ -144,13 +225,30 @@ export const encodeAuthMetadata = (
144
225
 
145
226
  export const encodeDeployMetadata = (single = true) => {
146
227
  const data = encodeMetadata({
147
- type: "deploy",
228
+ type: MetadataEnums.deploy,
148
229
  encodedData: "0x",
149
230
  });
150
231
 
151
232
  return single ? encodeMultipleActions(data) : data;
152
233
  };
153
234
 
235
+ export const encodeTransactionBuilderMetadata = (
236
+ actionCount: string,
237
+ single = true
238
+ ) => {
239
+ const encodedData = ethers.utils.defaultAbiCoder.encode(
240
+ actionMetadataTypes["tx-builder"],
241
+ [actionCount]
242
+ );
243
+
244
+ const data = encodeMetadata({
245
+ type: MetadataEnums["tx-builder"],
246
+ encodedData,
247
+ });
248
+
249
+ return single ? encodeMultipleActions(data) : data;
250
+ };
251
+
154
252
  export const encodeWCSignMetadata = (
155
253
  params: SignMetadataProps,
156
254
  single = true
@@ -161,7 +259,7 @@ export const encodeWCSignMetadata = (
161
259
  );
162
260
 
163
261
  const data = encodeMetadata({
164
- type: "permit2",
262
+ type: MetadataEnums.permit2,
165
263
  encodedData,
166
264
  });
167
265
 
@@ -178,7 +276,7 @@ export const encodeUpgradeMetadata = (
178
276
  );
179
277
 
180
278
  const data = encodeMetadata({
181
- type: "upgrade",
279
+ type: MetadataEnums.upgrade,
182
280
  encodedData,
183
281
  });
184
282
 
@@ -202,7 +300,7 @@ export const encodeSwapMetadata = (
202
300
  );
203
301
 
204
302
  const data = encodeMetadata({
205
- type: "swap",
303
+ type: MetadataEnums.swap,
206
304
  encodedData,
207
305
  });
208
306
 
@@ -218,10 +316,8 @@ export const encodeTopupMetadata = (
218
316
  [params.amount, params.token, params.onBehalf]
219
317
  );
220
318
 
221
- console.log(params);
222
-
223
319
  const data = encodeMetadata({
224
- type: "gas-topup",
320
+ type: MetadataEnums["gas-topup"],
225
321
  encodedData,
226
322
  });
227
323
 
@@ -232,7 +328,21 @@ export const encodeBridgeMetadata = (
232
328
  params: BridgeMetadataProps,
233
329
  single = true
234
330
  ) => {
235
- 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(
236
346
  actionMetadataTypes.bridge,
237
347
  [
238
348
  params.amount,
@@ -246,7 +356,85 @@ export const encodeBridgeMetadata = (
246
356
  );
247
357
 
248
358
  const data = encodeMetadata({
249
- type: "bridge",
359
+ type,
360
+ encodedData,
361
+ });
362
+
363
+ return single ? encodeMultipleActions(data) : data;
364
+ };
365
+
366
+ export const encodeChangeThresholdMetadata = (
367
+ threshold: string | number,
368
+ single = true
369
+ ) => {
370
+ const encodedData = ethers.utils.defaultAbiCoder.encode(
371
+ actionMetadataTypes["change-threshold"],
372
+ [toBN(threshold).toNumber()]
373
+ );
374
+
375
+ const data = encodeMetadata({
376
+ type: MetadataEnums["change-threshold"],
377
+ encodedData,
378
+ });
379
+
380
+ return single ? encodeMultipleActions(data) : data;
381
+ };
382
+
383
+ export const encodeRemoveSignersMetadata = (
384
+ addresses: string[],
385
+ single = true
386
+ ) => {
387
+ const encodedData = ethers.utils.defaultAbiCoder.encode(
388
+ actionMetadataTypes["remove-signers"],
389
+ [addresses]
390
+ );
391
+
392
+ const data = encodeMetadata({
393
+ type: MetadataEnums["remove-signers"],
394
+ encodedData,
395
+ });
396
+
397
+ return single ? encodeMultipleActions(data) : data;
398
+ };
399
+
400
+ export const encodeImportMetadata = (
401
+ protocol: string,
402
+ valueInUsd: string,
403
+ single = true
404
+ ) => {
405
+ const encodedData = ethers.utils.defaultAbiCoder.encode(
406
+ actionMetadataTypes["import"],
407
+ [protocol, valueInUsd]
408
+ );
409
+
410
+ const data = encodeMetadata({
411
+ type: MetadataEnums["import"],
412
+ encodedData,
413
+ });
414
+
415
+ return single ? encodeMultipleActions(data) : data;
416
+ };
417
+
418
+ export const encodeMassMetadata = (single = true) => {
419
+ const data = encodeMetadata({
420
+ type: MetadataEnums.mass,
421
+ encodedData: '0x',
422
+ });
423
+
424
+ return single ? encodeMultipleActions(data) : data;
425
+ }
426
+
427
+ export const encodeAddSignersMetadata = (
428
+ addresses: string[],
429
+ single = true
430
+ ) => {
431
+ const encodedData = ethers.utils.defaultAbiCoder.encode(
432
+ actionMetadataTypes["add-signers"],
433
+ [addresses]
434
+ );
435
+
436
+ const data = encodeMetadata({
437
+ type: MetadataEnums["add-signers"],
250
438
  encodedData,
251
439
  });
252
440
 
@@ -276,11 +464,23 @@ export const decodeMetadata = (metadata: string) => {
276
464
  }
277
465
  };
278
466
 
467
+ const iface = Forwarder__factory.createInterface();
468
+ const ifaceMultisig = MultisigForwarder__factory.createInterface();
469
+ const ifaceAgnostic = MultisigAgnosticForwarder__factory.createInterface();
470
+
279
471
  const getMetadataFromData = (data: string) => {
280
- const iface = Forwarder__factory.createInterface();
281
472
  let metadata = "0x";
282
473
 
283
- if (data.startsWith("0x18e7f485")) {
474
+
475
+ if(data.startsWith('0x320036b4')) {
476
+ const executeData = ifaceAgnostic.decodeFunctionData("executeChainAgnosticV1", data);
477
+
478
+ const metadata = executeData?.params_?.params?.metadata
479
+
480
+ return metadata === '0x' || !metadata ? null : metadata
481
+ }
482
+
483
+ else if (data.startsWith("0x18e7f485")) {
284
484
  const executeData = iface.decodeFunctionData("execute", data);
285
485
  if (executeData.metadata_ === "0x" || !executeData.metadata_) {
286
486
  return null;
@@ -297,37 +497,150 @@ const getMetadataFromData = (data: string) => {
297
497
  } else {
298
498
  metadata = executeDataV2.params_.metadata;
299
499
  }
300
- } else if (data.startsWith("0x85114d53")) {
301
- const executeDataV3 = iface.decodeFunctionData("executeV3", data);
302
- if (
303
- executeDataV3.params_.metadata === "0x" ||
304
- !executeDataV3.params_.metadata
305
- ) {
306
- return null;
307
- } else {
308
- metadata = executeDataV3.params_.metadata;
309
- }
310
500
  } else {
311
- const executeDataMultisigV3 = iface.decodeFunctionData(
312
- "executeMultisigV3",
501
+ const executeDataMultisig = ifaceMultisig.decodeFunctionData(
502
+ "executeV1",
313
503
  data
314
504
  );
315
505
  if (
316
- executeDataMultisigV3.params_.metadata === "0x" ||
317
- !executeDataMultisigV3.params_.metadata
506
+ executeDataMultisig.params_.metadata === "0x" ||
507
+ !executeDataMultisig.params_.metadata
318
508
  ) {
319
509
  return null;
320
510
  } else {
321
- metadata = executeDataMultisigV3.params_.metadata;
511
+ metadata = executeDataMultisig.params_.metadata;
322
512
  }
323
513
  }
324
514
 
325
515
  return metadata;
326
516
  };
327
517
 
518
+ const typesPayload: IPayload = {
519
+ import: (data, type) => ({
520
+ type,
521
+ protocol: utils.parseBytes32String(data.protocol || ""),
522
+ valueInUsd: toBN(data.valueInUsd).toFixed(),
523
+ }),
524
+ transfer: (data, type) => ({
525
+ type,
526
+ token: data.token,
527
+ amount: toBN(data.amount).toFixed(),
528
+ receiver: data.receiver,
529
+ }),
530
+ bridge: (data, type) => ({
531
+ type,
532
+ amount: toBN(data.amount).toFixed(),
533
+ receiver: data.receiver,
534
+ toToken: data.toToken,
535
+ fromToken: data.fromToken,
536
+ toChainId: data.toChainId ? data.toChainId.toString() : null,
537
+ bridgeFee: toBN(data.bridgeFee).toFixed(),
538
+ }),
539
+ 'bridge-v2': (data, type) => ({
540
+ type: 'bridge',
541
+ amount: toBN(data.amount).toFixed(),
542
+ receiver: data.receiver,
543
+ toToken: data.toToken,
544
+ fromToken: data.fromToken,
545
+ toChainId: data.toChainId ? data.toChainId.toString() : null,
546
+ bridgeFee: toBN(data.bridgeFee).toFixed(),
547
+ provider: utils.parseBytes32String(data.provider || ""),
548
+ }),
549
+ swap: (data, type) => ({
550
+ type,
551
+ buyAmount: toBN(data.buyAmount).toFixed(),
552
+ sellAmount: toBN(data.sellAmount).toFixed(),
553
+ buyToken: data.buyToken,
554
+ sellToken: data.sellToken,
555
+ receiver: data.receiver,
556
+ protocol: utils.parseBytes32String(data.protocol || ""),
557
+ }),
558
+ upgrade: (data, type) => ({
559
+ type,
560
+ version: utils.parseBytes32String(data.version || ""),
561
+ walletImpl: data.walletImpl,
562
+ }),
563
+ "gas-topup": (data, type) => ({
564
+ type,
565
+ amount: toBN(data.amount).toFixed(),
566
+ token: data.token,
567
+ onBehalf: data.onBehalf,
568
+ }),
569
+ dapp: (data, type) => ({
570
+ type,
571
+ name: data.name,
572
+ url: data.url,
573
+ }),
574
+ deploy: (data, type) => ({
575
+ type,
576
+ }),
577
+ "tx-builder": (data, type) => ({
578
+ type,
579
+ actionCount: utils.parseBytes32String(data.actionCount || ""),
580
+ }),
581
+ permit2: (data, type) => ({
582
+ type,
583
+ token: data.token,
584
+ spender: data.spender,
585
+ amount: toBN(data.amount).toFixed(),
586
+ expiration: data.expiration,
587
+ }),
588
+ "cross-transfer": (data, type) => ({
589
+ type,
590
+ fromToken: data.fromToken,
591
+ toToken: data.toToken,
592
+ toChainId: data.toChainId ? data.toChainId.toString() : null,
593
+ amount: toBN(data.amount).toFixed(),
594
+ receiver: data.receiver,
595
+ }),
596
+ "cross-transfer-v2": (data, type) => ({
597
+ type: 'cross-transfer',
598
+ fromToken: data.fromToken,
599
+ toToken: data.toToken,
600
+ toChainId: data.toChainId ? data.toChainId.toString() : null,
601
+ amount: toBN(data.amount).toFixed(),
602
+ receiver: data.receiver,
603
+ provider: utils.parseBytes32String(data.provider || ""),
604
+ }),
605
+ auth: (data) => ({
606
+ type: data.remove ? "remove-authority" : "add-authority",
607
+ address: data.address,
608
+ chainId: data.chainId ? data.chainId.toString() : null,
609
+ remove: data.remove,
610
+ }),
611
+ "instadapp-pro": (data, type) => ({
612
+ type,
613
+ castDetails: data.castDetails,
614
+ }),
615
+ rejection: (data, type) => ({
616
+ type,
617
+ id: data.id,
618
+ }),
619
+ "add-signers": (data, type) => ({
620
+ type,
621
+ addresses: data.signers,
622
+ }),
623
+ "remove-signers": (data, type) => ({
624
+ type,
625
+ addresses: data.signers,
626
+ }),
627
+ "change-threshold": (data, type) => ({
628
+ type,
629
+ count: data.count,
630
+ }),
631
+ "avocado-bridge": (data, type) => ({
632
+ type,
633
+ id: data.id,
634
+ toChainId: data.toChainId ? data.toChainId.toString() : null,
635
+ }),
636
+ mass: (data, type) => ({
637
+ type,
638
+ data,
639
+ }),
640
+ };
641
+
328
642
  const parseMetadata = (metadata: string) => {
329
643
  const metadataArr = [];
330
- let payload = {};
331
644
 
332
645
  const [decodedMultiMetadata = []] =
333
646
  (ethers.utils.defaultAbiCoder.decode(
@@ -345,121 +658,17 @@ const parseMetadata = (metadata: string) => {
345
658
  decodedMetadata.type
346
659
  ) as keyof typeof actionMetadataTypes;
347
660
 
348
- const decodedData = ethers.utils.defaultAbiCoder.decode(
661
+ const decodedData = decodedMetadata?.data === '0x' ? '' : ethers.utils.defaultAbiCoder.decode(
349
662
  actionMetadataTypes[type],
350
663
  decodedMetadata.data
351
664
  );
352
665
 
353
- switch (type) {
354
- case "transfer":
355
- payload = {
356
- type,
357
- token: decodedData.token,
358
- amount: toBN(decodedData.amount).toFixed(),
359
- receiver: decodedData.receiver,
360
- };
361
- break;
362
- case "bridge":
363
- payload = {
364
- type,
365
- amount: toBN(decodedData.amount).toFixed(),
366
- receiver: decodedData.receiver,
367
- toToken: decodedData.toToken,
368
- fromToken: decodedData.fromToken,
369
- toChainId: decodedData.toChainId
370
- ? decodedData.toChainId.toString()
371
- : null,
372
- bridgeFee: toBN(decodedData.bridgeFee).toFixed(),
373
- };
374
- break;
375
- case "swap":
376
- payload = {
377
- type,
378
- buyAmount: toBN(decodedData.buyAmount).toFixed(),
379
- sellAmount: toBN(decodedData.sellAmount).toFixed(),
380
- buyToken: decodedData.buyToken,
381
- sellToken: decodedData.sellToken,
382
- receiver: decodedData.receiver,
383
- protocol: utils.parseBytes32String(decodedData?.protocol || ""),
384
- };
385
- break;
386
- case "upgrade":
387
- payload = {
388
- type,
389
- version: utils.parseBytes32String(decodedData?.version || ""),
390
- walletImpl: decodedData?.walletImpl,
391
- };
392
- break;
393
- case "gas-topup":
394
- payload = {
395
- type,
396
- amount: toBN(decodedData.amount).toFixed(),
397
- token: decodedData.token,
398
- onBehalf: decodedData.onBehalf,
399
- };
400
- break;
401
- case "dapp":
402
- payload = {
403
- type,
404
- name: decodedData?.name,
405
- url: decodedData?.url,
406
- };
407
- break;
408
- case "deploy":
409
- payload = {
410
- type,
411
- };
412
- break;
413
-
414
- case "permit2":
415
- payload = {
416
- type,
417
- token: decodedData.token,
418
- spender: decodedData.spender,
419
- amount: toBN(decodedData.amount).toFixed(),
420
- expiration: decodedData.expiration,
421
- };
422
- break;
423
-
424
- case "cross-transfer":
425
- payload = {
426
- type,
427
- fromToken: decodedData.fromToken,
428
- toToken: decodedData.toToken,
429
- toChainId: decodedData.toChainId
430
- ? decodedData.toChainId.toString()
431
- : null,
432
- amount: toBN(decodedData.amount).toFixed(),
433
- receiver: decodedData.receiver,
434
- };
435
-
436
- break;
437
- case "auth":
438
- payload = {
439
- type: decodedData.remove ? "remove-authority" : "add-authority",
440
- address: decodedData.address,
441
- chainId: decodedData.chainId ? decodedData.chainId.toString() : null,
442
- remove: decodedData.remove,
443
- };
444
-
445
- break;
446
- case "instadapp-pro":
447
- payload = {
448
- type,
449
- castDetails: decodedData.castDetails,
450
- };
451
-
452
- break;
453
-
454
- case "reject":
455
- payload = {
456
- type,
457
- reason: decodedData.reason,
458
- };
459
- break;
460
- }
666
+ const payloadFunc = typesPayload[type];
461
667
 
462
- metadataArr.push(payload);
668
+ if (payloadFunc) {
669
+ const payload = payloadFunc(decodedData, type);
670
+ metadataArr.push(payload);
671
+ }
463
672
  }
464
673
 
465
674
  return metadataArr;
@@ -472,6 +681,10 @@ const parseMetadata = (metadata: string) => {
472
681
  * @returns {string} - The modified sentence with hyphens replaced with spaces and the first letter of each word capitalized.
473
682
  */
474
683
  export const formatTxType = (txType: string) => {
684
+ if(txType === 'mass') {
685
+ return 'Chain Agnostic Payments'
686
+ }
687
+
475
688
  const finalSentence = txType
476
689
  .replace("-", " ")
477
690
  .replace(/(^\w{1})|(\s+\w{1})/g, (letter) => letter.toUpperCase());