@instadapp/avocado-base 0.0.0-dev.fd1507c → 0.0.0-dev.ff927bc
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.
- package/.github/workflows/npm-publish-dev.yml +2 -5
- package/abi/multisigForwarder.json +697 -0
- package/app.vue +7 -0
- package/assets/images/icons/change-threshold.svg +4 -0
- package/assets/images/icons/cross-transfer.svg +7 -0
- package/assets/images/icons/dapp.svg +4 -0
- package/assets/images/icons/deploy.svg +12 -0
- package/assets/images/icons/gas.svg +12 -5
- package/assets/images/icons/hammer.svg +5 -0
- package/assets/images/icons/info-2.svg +12 -0
- package/assets/images/icons/instadapp-pro.svg +4 -0
- package/assets/images/icons/multi-send.svg +7 -0
- package/assets/images/icons/permit-sign.svg +11 -0
- package/assets/images/icons/plus-circle.svg +6 -0
- package/assets/images/icons/refresh.svg +4 -4
- package/assets/images/icons/reject-proposal.svg +6 -0
- package/assets/images/icons/transfer.svg +5 -0
- package/assets/images/icons/trash-2.svg +8 -0
- package/assets/images/icons/upgrade.svg +4 -0
- package/components/ActionLogo.vue +40 -0
- package/components/ActionMetadata.vue +45 -17
- package/components/AuthorityAvatar.vue +37 -0
- package/components/ChainLogo.vue +14 -563
- package/components/CopyClipboard.vue +58 -0
- package/components/metadata/Bridge.vue +30 -8
- package/components/metadata/CrossTransfer.vue +19 -5
- package/components/metadata/GasTopup.vue +10 -2
- package/components/metadata/Permit2.vue +6 -1
- package/components/metadata/Signers.vue +66 -0
- package/components/metadata/Swap.vue +26 -25
- package/components/metadata/Transfer.vue +14 -7
- package/contracts/MultisigForwarder.ts +859 -0
- package/contracts/factories/MultisigForwarder__factory.ts +721 -0
- package/contracts/factories/index.ts +1 -0
- package/contracts/index.ts +2 -0
- package/package.json +14 -9
- package/utils/formatter.ts +2 -2
- package/utils/helper.ts +8 -0
- package/utils/metadata.ts +345 -191
- package/utils/network.ts +335 -74
- package/utils/services.ts +8 -1
- package/utils/utils.d.ts +136 -126
package/utils/metadata.ts
CHANGED
|
@@ -1,11 +1,33 @@
|
|
|
1
1
|
import { ethers, utils } from "ethers";
|
|
2
|
-
import { Forwarder__factory } from "../contracts";
|
|
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
|
+
"tx-builder": "tx-builder",
|
|
23
|
+
"avocado-bridge": "avocado-bridge",
|
|
24
|
+
} as const;
|
|
3
25
|
|
|
4
26
|
const multiMetadataTypes = ["bytes[]"];
|
|
5
27
|
|
|
6
28
|
const metadataTypes = ["bytes32 type", "uint8 version", "bytes data"];
|
|
7
29
|
|
|
8
|
-
const actionMetadataTypes = {
|
|
30
|
+
const actionMetadataTypes: Record<MetadataTypes, string[]> = {
|
|
9
31
|
transfer: ["address token", "uint256 amount", "address receiver"],
|
|
10
32
|
"cross-transfer": [
|
|
11
33
|
"address fromToken",
|
|
@@ -34,8 +56,10 @@ const actionMetadataTypes = {
|
|
|
34
56
|
"gas-topup": ["uint256 amount", "address token", "address onBehalf"],
|
|
35
57
|
upgrade: ["bytes32 version", "address walletImpl"],
|
|
36
58
|
dapp: ["string name", "string url"],
|
|
59
|
+
import: ["bytes32 protocol", "uint256 valueInUsd"],
|
|
37
60
|
auth: ["address address", "uint256 chainId", "bool remove"],
|
|
38
61
|
deploy: [],
|
|
62
|
+
"tx-builder": ["bytes32 actionCount"],
|
|
39
63
|
permit2: [
|
|
40
64
|
"address token",
|
|
41
65
|
"address spender",
|
|
@@ -43,6 +67,11 @@ const actionMetadataTypes = {
|
|
|
43
67
|
"uint48 expiration",
|
|
44
68
|
],
|
|
45
69
|
"instadapp-pro": ["string castDetails"],
|
|
70
|
+
"add-signers": ["address[] signers"],
|
|
71
|
+
"remove-signers": ["address[] signers"],
|
|
72
|
+
"change-threshold": ["uint8 count"],
|
|
73
|
+
rejection: ["bytes32 id"],
|
|
74
|
+
"avocado-bridge": ["bytes32 id", "uint256 toChainId"],
|
|
46
75
|
};
|
|
47
76
|
|
|
48
77
|
const encodeMetadata = (props: MetadataProps) => {
|
|
@@ -63,7 +92,25 @@ export const encodeDappMetadata = (
|
|
|
63
92
|
);
|
|
64
93
|
|
|
65
94
|
const data = encodeMetadata({
|
|
66
|
-
type:
|
|
95
|
+
type: MetadataEnums.dapp,
|
|
96
|
+
encodedData,
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
return single ? encodeMultipleActions(data) : data;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
export const encodeAvocadoBridgeMetadata = (
|
|
103
|
+
id: string,
|
|
104
|
+
toChainId: string | number,
|
|
105
|
+
single = true
|
|
106
|
+
) => {
|
|
107
|
+
const encodedData = ethers.utils.defaultAbiCoder.encode(
|
|
108
|
+
actionMetadataTypes["avocado-bridge"],
|
|
109
|
+
[id, toChainId]
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
const data = encodeMetadata({
|
|
113
|
+
type: MetadataEnums["avocado-bridge"],
|
|
67
114
|
encodedData,
|
|
68
115
|
});
|
|
69
116
|
|
|
@@ -80,7 +127,21 @@ export const encodeTransferMetadata = (
|
|
|
80
127
|
);
|
|
81
128
|
|
|
82
129
|
const data = encodeMetadata({
|
|
83
|
-
type:
|
|
130
|
+
type: MetadataEnums.transfer,
|
|
131
|
+
encodedData,
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
return single ? encodeMultipleActions(data) : data;
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
export const encodeRejectionMetadata = (id: string, single = true) => {
|
|
138
|
+
const encodedData = ethers.utils.defaultAbiCoder.encode(
|
|
139
|
+
actionMetadataTypes.rejection,
|
|
140
|
+
[id]
|
|
141
|
+
);
|
|
142
|
+
|
|
143
|
+
const data = encodeMetadata({
|
|
144
|
+
type: MetadataEnums.rejection,
|
|
84
145
|
encodedData,
|
|
85
146
|
});
|
|
86
147
|
|
|
@@ -103,7 +164,7 @@ export const encodeCrossTransferMetadata = (
|
|
|
103
164
|
);
|
|
104
165
|
|
|
105
166
|
const data = encodeMetadata({
|
|
106
|
-
type: "cross-transfer",
|
|
167
|
+
type: MetadataEnums["cross-transfer"],
|
|
107
168
|
encodedData,
|
|
108
169
|
});
|
|
109
170
|
|
|
@@ -120,7 +181,7 @@ export const encodeAuthMetadata = (
|
|
|
120
181
|
);
|
|
121
182
|
|
|
122
183
|
const data = encodeMetadata({
|
|
123
|
-
type:
|
|
184
|
+
type: MetadataEnums.auth,
|
|
124
185
|
encodedData,
|
|
125
186
|
});
|
|
126
187
|
|
|
@@ -129,13 +190,30 @@ export const encodeAuthMetadata = (
|
|
|
129
190
|
|
|
130
191
|
export const encodeDeployMetadata = (single = true) => {
|
|
131
192
|
const data = encodeMetadata({
|
|
132
|
-
type:
|
|
193
|
+
type: MetadataEnums.deploy,
|
|
133
194
|
encodedData: "0x",
|
|
134
195
|
});
|
|
135
196
|
|
|
136
197
|
return single ? encodeMultipleActions(data) : data;
|
|
137
198
|
};
|
|
138
199
|
|
|
200
|
+
export const encodeTransactionBuilderMetadata = (
|
|
201
|
+
actionCount: string,
|
|
202
|
+
single = true
|
|
203
|
+
) => {
|
|
204
|
+
const encodedData = ethers.utils.defaultAbiCoder.encode(
|
|
205
|
+
actionMetadataTypes["tx-builder"],
|
|
206
|
+
[actionCount]
|
|
207
|
+
);
|
|
208
|
+
|
|
209
|
+
const data = encodeMetadata({
|
|
210
|
+
type: MetadataEnums["tx-builder"],
|
|
211
|
+
encodedData,
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
return single ? encodeMultipleActions(data) : data;
|
|
215
|
+
};
|
|
216
|
+
|
|
139
217
|
export const encodeWCSignMetadata = (
|
|
140
218
|
params: SignMetadataProps,
|
|
141
219
|
single = true
|
|
@@ -146,7 +224,7 @@ export const encodeWCSignMetadata = (
|
|
|
146
224
|
);
|
|
147
225
|
|
|
148
226
|
const data = encodeMetadata({
|
|
149
|
-
type:
|
|
227
|
+
type: MetadataEnums.permit2,
|
|
150
228
|
encodedData,
|
|
151
229
|
});
|
|
152
230
|
|
|
@@ -163,7 +241,7 @@ export const encodeUpgradeMetadata = (
|
|
|
163
241
|
);
|
|
164
242
|
|
|
165
243
|
const data = encodeMetadata({
|
|
166
|
-
type:
|
|
244
|
+
type: MetadataEnums.upgrade,
|
|
167
245
|
encodedData,
|
|
168
246
|
});
|
|
169
247
|
|
|
@@ -187,7 +265,7 @@ export const encodeSwapMetadata = (
|
|
|
187
265
|
);
|
|
188
266
|
|
|
189
267
|
const data = encodeMetadata({
|
|
190
|
-
type:
|
|
268
|
+
type: MetadataEnums.swap,
|
|
191
269
|
encodedData,
|
|
192
270
|
});
|
|
193
271
|
|
|
@@ -203,10 +281,8 @@ export const encodeTopupMetadata = (
|
|
|
203
281
|
[params.amount, params.token, params.onBehalf]
|
|
204
282
|
);
|
|
205
283
|
|
|
206
|
-
console.log(params);
|
|
207
|
-
|
|
208
284
|
const data = encodeMetadata({
|
|
209
|
-
type: "gas-topup",
|
|
285
|
+
type: MetadataEnums["gas-topup"],
|
|
210
286
|
encodedData,
|
|
211
287
|
});
|
|
212
288
|
|
|
@@ -231,7 +307,76 @@ export const encodeBridgeMetadata = (
|
|
|
231
307
|
);
|
|
232
308
|
|
|
233
309
|
const data = encodeMetadata({
|
|
234
|
-
type:
|
|
310
|
+
type: MetadataEnums.bridge,
|
|
311
|
+
encodedData,
|
|
312
|
+
});
|
|
313
|
+
|
|
314
|
+
return single ? encodeMultipleActions(data) : data;
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
export const encodeChangeThresholdMetadata = (
|
|
318
|
+
threshold: string | number,
|
|
319
|
+
single = true
|
|
320
|
+
) => {
|
|
321
|
+
const encodedData = ethers.utils.defaultAbiCoder.encode(
|
|
322
|
+
actionMetadataTypes["change-threshold"],
|
|
323
|
+
[toBN(threshold).toNumber()]
|
|
324
|
+
);
|
|
325
|
+
|
|
326
|
+
const data = encodeMetadata({
|
|
327
|
+
type: MetadataEnums["change-threshold"],
|
|
328
|
+
encodedData,
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
return single ? encodeMultipleActions(data) : data;
|
|
332
|
+
};
|
|
333
|
+
|
|
334
|
+
export const encodeRemoveSignersMetadata = (
|
|
335
|
+
addresses: string[],
|
|
336
|
+
single = true
|
|
337
|
+
) => {
|
|
338
|
+
const encodedData = ethers.utils.defaultAbiCoder.encode(
|
|
339
|
+
actionMetadataTypes["remove-signers"],
|
|
340
|
+
[addresses]
|
|
341
|
+
);
|
|
342
|
+
|
|
343
|
+
const data = encodeMetadata({
|
|
344
|
+
type: MetadataEnums["remove-signers"],
|
|
345
|
+
encodedData,
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
return single ? encodeMultipleActions(data) : data;
|
|
349
|
+
};
|
|
350
|
+
|
|
351
|
+
export const encodeImportMetadata = (
|
|
352
|
+
protocol: string,
|
|
353
|
+
valueInUsd: string,
|
|
354
|
+
single = true
|
|
355
|
+
) => {
|
|
356
|
+
const encodedData = ethers.utils.defaultAbiCoder.encode(
|
|
357
|
+
actionMetadataTypes["import"],
|
|
358
|
+
[protocol, valueInUsd]
|
|
359
|
+
);
|
|
360
|
+
|
|
361
|
+
const data = encodeMetadata({
|
|
362
|
+
type: MetadataEnums["import"],
|
|
363
|
+
encodedData,
|
|
364
|
+
});
|
|
365
|
+
|
|
366
|
+
return single ? encodeMultipleActions(data) : data;
|
|
367
|
+
};
|
|
368
|
+
|
|
369
|
+
export const encodeAddSignersMetadata = (
|
|
370
|
+
addresses: string[],
|
|
371
|
+
single = true
|
|
372
|
+
) => {
|
|
373
|
+
const encodedData = ethers.utils.defaultAbiCoder.encode(
|
|
374
|
+
actionMetadataTypes["add-signers"],
|
|
375
|
+
[addresses]
|
|
376
|
+
);
|
|
377
|
+
|
|
378
|
+
const data = encodeMetadata({
|
|
379
|
+
type: MetadataEnums["add-signers"],
|
|
235
380
|
encodedData,
|
|
236
381
|
});
|
|
237
382
|
|
|
@@ -242,191 +387,200 @@ export const encodeMultipleActions = (...actionData: string[]) => {
|
|
|
242
387
|
return ethers.utils.defaultAbiCoder.encode(multiMetadataTypes, [actionData]);
|
|
243
388
|
};
|
|
244
389
|
|
|
245
|
-
export const
|
|
390
|
+
export const decodeData = (data: string) => {
|
|
391
|
+
try {
|
|
392
|
+
const metadata = getMetadataFromData(data) || "0x";
|
|
393
|
+
|
|
394
|
+
return parseMetadata(metadata);
|
|
395
|
+
} catch (e) {
|
|
396
|
+
// console.log(e);
|
|
397
|
+
return null;
|
|
398
|
+
}
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
export const decodeMetadata = (metadata: string) => {
|
|
246
402
|
try {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
executeDataV3.params_.metadata === "0x" ||
|
|
274
|
-
!executeDataV3.params_.metadata
|
|
275
|
-
) {
|
|
276
|
-
return null;
|
|
277
|
-
} else {
|
|
278
|
-
metadata = executeDataV3.params_.metadata;
|
|
279
|
-
}
|
|
403
|
+
return parseMetadata(metadata);
|
|
404
|
+
} catch (e) {
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
};
|
|
408
|
+
|
|
409
|
+
const iface = Forwarder__factory.createInterface();
|
|
410
|
+
const ifaceMultisig = MultisigForwarder__factory.createInterface();
|
|
411
|
+
|
|
412
|
+
const getMetadataFromData = (data: string) => {
|
|
413
|
+
let metadata = "0x";
|
|
414
|
+
|
|
415
|
+
if (data.startsWith("0x18e7f485")) {
|
|
416
|
+
const executeData = iface.decodeFunctionData("execute", data);
|
|
417
|
+
if (executeData.metadata_ === "0x" || !executeData.metadata_) {
|
|
418
|
+
return null;
|
|
419
|
+
} else {
|
|
420
|
+
metadata = executeData.metadata_;
|
|
421
|
+
}
|
|
422
|
+
} else if (data.startsWith("0x14f80a8d")) {
|
|
423
|
+
const executeDataV2 = iface.decodeFunctionData("executeV2", data);
|
|
424
|
+
if (
|
|
425
|
+
executeDataV2.params_.metadata === "0x" ||
|
|
426
|
+
!executeDataV2.params_.metadata
|
|
427
|
+
) {
|
|
428
|
+
return null;
|
|
280
429
|
} else {
|
|
281
|
-
|
|
282
|
-
"executeMultisigV3",
|
|
283
|
-
data
|
|
284
|
-
);
|
|
285
|
-
if (
|
|
286
|
-
executeDataMultisigV3.params_.metadata === "0x" ||
|
|
287
|
-
!executeDataMultisigV3.params_.metadata
|
|
288
|
-
) {
|
|
289
|
-
return null;
|
|
290
|
-
} else {
|
|
291
|
-
metadata = executeDataMultisigV3.params_.metadata;
|
|
292
|
-
}
|
|
430
|
+
metadata = executeDataV2.params_.metadata;
|
|
293
431
|
}
|
|
432
|
+
} else {
|
|
433
|
+
const executeDataMultisig = ifaceMultisig.decodeFunctionData(
|
|
434
|
+
"executeV1",
|
|
435
|
+
data
|
|
436
|
+
);
|
|
437
|
+
if (
|
|
438
|
+
executeDataMultisig.params_.metadata === "0x" ||
|
|
439
|
+
!executeDataMultisig.params_.metadata
|
|
440
|
+
) {
|
|
441
|
+
return null;
|
|
442
|
+
} else {
|
|
443
|
+
metadata = executeDataMultisig.params_.metadata;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
294
446
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
};
|
|
418
|
-
|
|
419
|
-
break;
|
|
420
|
-
}
|
|
447
|
+
return metadata;
|
|
448
|
+
};
|
|
449
|
+
|
|
450
|
+
const typesPayload: IPayload = {
|
|
451
|
+
import: (data, type) => ({
|
|
452
|
+
type,
|
|
453
|
+
protocol: utils.parseBytes32String(data.protocol || ""),
|
|
454
|
+
valueInUsd: toBN(data.valueInUsd).toFixed(),
|
|
455
|
+
}),
|
|
456
|
+
transfer: (data, type) => ({
|
|
457
|
+
type,
|
|
458
|
+
token: data.token,
|
|
459
|
+
amount: toBN(data.amount).toFixed(),
|
|
460
|
+
receiver: data.receiver,
|
|
461
|
+
}),
|
|
462
|
+
bridge: (data, type) => ({
|
|
463
|
+
type,
|
|
464
|
+
amount: toBN(data.amount).toFixed(),
|
|
465
|
+
receiver: data.receiver,
|
|
466
|
+
toToken: data.toToken,
|
|
467
|
+
fromToken: data.fromToken,
|
|
468
|
+
toChainId: data.toChainId ? data.toChainId.toString() : null,
|
|
469
|
+
bridgeFee: toBN(data.bridgeFee).toFixed(),
|
|
470
|
+
}),
|
|
471
|
+
swap: (data, type) => ({
|
|
472
|
+
type,
|
|
473
|
+
buyAmount: toBN(data.buyAmount).toFixed(),
|
|
474
|
+
sellAmount: toBN(data.sellAmount).toFixed(),
|
|
475
|
+
buyToken: data.buyToken,
|
|
476
|
+
sellToken: data.sellToken,
|
|
477
|
+
receiver: data.receiver,
|
|
478
|
+
protocol: utils.parseBytes32String(data.protocol || ""),
|
|
479
|
+
}),
|
|
480
|
+
upgrade: (data, type) => ({
|
|
481
|
+
type,
|
|
482
|
+
version: utils.parseBytes32String(data.version || ""),
|
|
483
|
+
walletImpl: data.walletImpl,
|
|
484
|
+
}),
|
|
485
|
+
"gas-topup": (data, type) => ({
|
|
486
|
+
type,
|
|
487
|
+
amount: toBN(data.amount).toFixed(),
|
|
488
|
+
token: data.token,
|
|
489
|
+
onBehalf: data.onBehalf,
|
|
490
|
+
}),
|
|
491
|
+
dapp: (data, type) => ({
|
|
492
|
+
type,
|
|
493
|
+
name: data.name,
|
|
494
|
+
url: data.url,
|
|
495
|
+
}),
|
|
496
|
+
deploy: (data, type) => ({
|
|
497
|
+
type,
|
|
498
|
+
}),
|
|
499
|
+
"tx-builder": (data, type) => ({
|
|
500
|
+
type,
|
|
501
|
+
actionCount: utils.parseBytes32String(data.actionCount || ""),
|
|
502
|
+
}),
|
|
503
|
+
permit2: (data, type) => ({
|
|
504
|
+
type,
|
|
505
|
+
token: data.token,
|
|
506
|
+
spender: data.spender,
|
|
507
|
+
amount: toBN(data.amount).toFixed(),
|
|
508
|
+
expiration: data.expiration,
|
|
509
|
+
}),
|
|
510
|
+
"cross-transfer": (data, type) => ({
|
|
511
|
+
type,
|
|
512
|
+
fromToken: data.fromToken,
|
|
513
|
+
toToken: data.toToken,
|
|
514
|
+
toChainId: data.toChainId ? data.toChainId.toString() : null,
|
|
515
|
+
amount: toBN(data.amount).toFixed(),
|
|
516
|
+
receiver: data.receiver,
|
|
517
|
+
}),
|
|
518
|
+
auth: (data) => ({
|
|
519
|
+
type: data.remove ? "remove-authority" : "add-authority",
|
|
520
|
+
address: data.address,
|
|
521
|
+
chainId: data.chainId ? data.chainId.toString() : null,
|
|
522
|
+
remove: data.remove,
|
|
523
|
+
}),
|
|
524
|
+
"instadapp-pro": (data, type) => ({
|
|
525
|
+
type,
|
|
526
|
+
castDetails: data.castDetails,
|
|
527
|
+
}),
|
|
528
|
+
rejection: (data, type) => ({
|
|
529
|
+
type,
|
|
530
|
+
id: data.id,
|
|
531
|
+
}),
|
|
532
|
+
"add-signers": (data, type) => ({
|
|
533
|
+
type,
|
|
534
|
+
addresses: data.signers,
|
|
535
|
+
}),
|
|
536
|
+
"remove-signers": (data, type) => ({
|
|
537
|
+
type,
|
|
538
|
+
addresses: data.signers,
|
|
539
|
+
}),
|
|
540
|
+
"change-threshold": (data, type) => ({
|
|
541
|
+
type,
|
|
542
|
+
count: data.count,
|
|
543
|
+
}),
|
|
544
|
+
"avocado-bridge": (data, type) => ({
|
|
545
|
+
type,
|
|
546
|
+
id: data.id,
|
|
547
|
+
toChainId: data.toChainId ? data.toChainId.toString() : null,
|
|
548
|
+
}),
|
|
549
|
+
};
|
|
550
|
+
|
|
551
|
+
const parseMetadata = (metadata: string) => {
|
|
552
|
+
const metadataArr = [];
|
|
553
|
+
|
|
554
|
+
const [decodedMultiMetadata = []] =
|
|
555
|
+
(ethers.utils.defaultAbiCoder.decode(
|
|
556
|
+
multiMetadataTypes,
|
|
557
|
+
metadata
|
|
558
|
+
) as string[]) || [];
|
|
559
|
+
|
|
560
|
+
for (let metadata of decodedMultiMetadata) {
|
|
561
|
+
const decodedMetadata = ethers.utils.defaultAbiCoder.decode(
|
|
562
|
+
metadataTypes,
|
|
563
|
+
metadata
|
|
564
|
+
);
|
|
565
|
+
|
|
566
|
+
const type = ethers.utils.parseBytes32String(
|
|
567
|
+
decodedMetadata.type
|
|
568
|
+
) as keyof typeof actionMetadataTypes;
|
|
421
569
|
|
|
570
|
+
const decodedData = ethers.utils.defaultAbiCoder.decode(
|
|
571
|
+
actionMetadataTypes[type],
|
|
572
|
+
decodedMetadata.data
|
|
573
|
+
);
|
|
574
|
+
|
|
575
|
+
const payloadFunc = typesPayload[type];
|
|
576
|
+
|
|
577
|
+
if (payloadFunc) {
|
|
578
|
+
const payload = payloadFunc(decodedData, type);
|
|
422
579
|
metadataArr.push(payload);
|
|
423
580
|
}
|
|
424
|
-
|
|
425
|
-
return metadataArr;
|
|
426
|
-
} catch (e) {
|
|
427
|
-
// console.log(e);
|
|
428
|
-
return null;
|
|
429
581
|
}
|
|
582
|
+
|
|
583
|
+
return metadataArr;
|
|
430
584
|
};
|
|
431
585
|
|
|
432
586
|
/**
|