@instadapp/avocado-base 0.0.0-dev.d66833c → 0.0.0-dev.d723a21

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