@instadapp/avocado-base 0.0.0-dev.6ff6bcb → 0.0.0-dev.75719e7

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