@instadapp/avocado-base 0.0.0-dev.f0b0c4f → 0.0.0-dev.f307ae7

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