@instadapp/avocado-base 0.0.0-dev.e90081b → 0.0.0-dev.eda2183
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/assets/images/icons/arrow-left.svg +5 -0
- package/assets/images/icons/arrow-right.svg +5 -0
- package/assets/images/icons/avocado.svg +4 -0
- package/assets/images/icons/bridge-2.svg +3 -0
- package/assets/images/icons/bridge.svg +7 -0
- package/assets/images/icons/calendar.svg +8 -0
- package/assets/images/icons/check-circle.svg +4 -0
- package/assets/images/icons/chevron-down.svg +4 -0
- package/assets/images/icons/clipboard.svg +7 -0
- package/assets/images/icons/clock-circle.svg +5 -0
- package/assets/images/icons/copy.svg +5 -0
- package/assets/images/icons/error-circle.svg +6 -0
- package/assets/images/icons/exclamation-circle.svg +13 -0
- package/assets/images/icons/exclamation-octagon.svg +13 -0
- package/assets/images/icons/exclamation-triangle.svg +5 -0
- package/assets/images/icons/external-link.svg +6 -0
- package/assets/images/icons/eye.svg +4 -0
- package/assets/images/icons/flowers.svg +8 -0
- package/assets/images/icons/gas-emoji.svg +193 -0
- package/assets/images/icons/gas.svg +7 -0
- package/assets/images/icons/gift.svg +153 -0
- package/assets/images/icons/globe.svg +110 -0
- package/assets/images/icons/hamburger.svg +6 -0
- package/assets/images/icons/logout.svg +3 -0
- package/assets/images/icons/moon.svg +3 -0
- package/assets/images/icons/network.svg +13 -0
- package/assets/images/icons/options.svg +5 -0
- package/assets/images/icons/plus.svg +5 -0
- package/assets/images/icons/power-off-bg.svg +24 -0
- package/assets/images/icons/power-off.svg +19 -0
- package/assets/images/icons/power-on.svg +19 -0
- package/assets/images/icons/qr.svg +20 -0
- package/assets/images/icons/question-circle.svg +14 -0
- package/assets/images/icons/refresh.svg +6 -0
- package/assets/images/icons/search.svg +12 -0
- package/assets/images/icons/sun.svg +3 -0
- package/assets/images/icons/wave.svg +214 -0
- package/assets/images/icons/x.svg +5 -0
- package/components/ActionMetadata.vue +50 -0
- package/components/ChainLogo.vue +1 -1
- package/components/metadata/Bridge.vue +37 -0
- package/components/metadata/CrossTransfer.vue +65 -0
- package/components/metadata/GasTopup.vue +31 -0
- package/components/metadata/Permit2.vue +37 -0
- package/components/metadata/Swap.vue +66 -0
- package/components/metadata/Transfer.vue +43 -0
- package/components.d.ts +13 -0
- package/nuxt.config.ts +17 -1
- package/package.json +6 -3
- package/utils/avocado.ts +2 -0
- package/utils/bignumber.ts +20 -0
- package/utils/metadata.ts +206 -175
- package/utils/services.ts +14 -0
- package/utils/utils.d.ts +12 -0
package/utils/metadata.ts
CHANGED
|
@@ -242,186 +242,217 @@ export const encodeMultipleActions = (...actionData: string[]) => {
|
|
|
242
242
|
return ethers.utils.defaultAbiCoder.encode(multiMetadataTypes, [actionData]);
|
|
243
243
|
};
|
|
244
244
|
|
|
245
|
-
export const
|
|
245
|
+
export const decodeData = (data: string) => {
|
|
246
246
|
try {
|
|
247
|
-
const
|
|
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
|
-
if (
|
|
273
|
-
executeDataV3.params_.metadata === "0x" ||
|
|
274
|
-
!executeDataV3.params_.metadata
|
|
275
|
-
) {
|
|
276
|
-
return null;
|
|
277
|
-
} else {
|
|
278
|
-
metadata = executeDataV3.params_.metadata;
|
|
279
|
-
}
|
|
247
|
+
const metadata = getMetadataFromData(data) || "0x";
|
|
248
|
+
|
|
249
|
+
return parseMetadata(metadata);
|
|
250
|
+
} catch (e) {
|
|
251
|
+
// console.log(e);
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
export const decodeMetadata = (metadata: string) => {
|
|
257
|
+
try {
|
|
258
|
+
return parseMetadata(metadata);
|
|
259
|
+
} catch (e) {
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
const getMetadataFromData = (data: string) => {
|
|
265
|
+
const iface = Forwarder__factory.createInterface();
|
|
266
|
+
let metadata = "0x";
|
|
267
|
+
|
|
268
|
+
if (data.startsWith("0x18e7f485")) {
|
|
269
|
+
const executeData = iface.decodeFunctionData("execute", data);
|
|
270
|
+
if (executeData.metadata_ === "0x" || !executeData.metadata_) {
|
|
271
|
+
return null;
|
|
280
272
|
} else {
|
|
281
|
-
|
|
282
|
-
if (
|
|
283
|
-
executeDataMultisigV3.params_.metadata === "0x" ||
|
|
284
|
-
!executeDataMultisigV3.params_.metadata
|
|
285
|
-
) {
|
|
286
|
-
return null;
|
|
287
|
-
} else {
|
|
288
|
-
metadata = executeDataMultisigV3.params_.metadata;
|
|
289
|
-
}
|
|
273
|
+
metadata = executeData.metadata_;
|
|
290
274
|
}
|
|
275
|
+
} else if (data.startsWith("0x14f80a8d")) {
|
|
276
|
+
const executeDataV2 = iface.decodeFunctionData("executeV2", data);
|
|
277
|
+
if (
|
|
278
|
+
executeDataV2.params_.metadata === "0x" ||
|
|
279
|
+
!executeDataV2.params_.metadata
|
|
280
|
+
) {
|
|
281
|
+
return null;
|
|
282
|
+
} else {
|
|
283
|
+
metadata = executeDataV2.params_.metadata;
|
|
284
|
+
}
|
|
285
|
+
} else if (data.startsWith("0x85114d53")) {
|
|
286
|
+
const executeDataV3 = iface.decodeFunctionData("executeV3", data);
|
|
287
|
+
if (
|
|
288
|
+
executeDataV3.params_.metadata === "0x" ||
|
|
289
|
+
!executeDataV3.params_.metadata
|
|
290
|
+
) {
|
|
291
|
+
return null;
|
|
292
|
+
} else {
|
|
293
|
+
metadata = executeDataV3.params_.metadata;
|
|
294
|
+
}
|
|
295
|
+
} else {
|
|
296
|
+
const executeDataMultisigV3 = iface.decodeFunctionData(
|
|
297
|
+
"executeMultisigV3",
|
|
298
|
+
data
|
|
299
|
+
);
|
|
300
|
+
if (
|
|
301
|
+
executeDataMultisigV3.params_.metadata === "0x" ||
|
|
302
|
+
!executeDataMultisigV3.params_.metadata
|
|
303
|
+
) {
|
|
304
|
+
return null;
|
|
305
|
+
} else {
|
|
306
|
+
metadata = executeDataMultisigV3.params_.metadata;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
291
309
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
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
|
-
|
|
310
|
+
return metadata;
|
|
311
|
+
};
|
|
312
|
+
|
|
313
|
+
const parseMetadata = (metadata: string) => {
|
|
314
|
+
const metadataArr = [];
|
|
315
|
+
let payload = {};
|
|
316
|
+
|
|
317
|
+
const [decodedMultiMetadata = []] =
|
|
318
|
+
(ethers.utils.defaultAbiCoder.decode(
|
|
319
|
+
multiMetadataTypes,
|
|
320
|
+
metadata
|
|
321
|
+
) as string[]) || [];
|
|
322
|
+
|
|
323
|
+
for (let metadata of decodedMultiMetadata) {
|
|
324
|
+
const decodedMetadata = ethers.utils.defaultAbiCoder.decode(
|
|
325
|
+
metadataTypes,
|
|
326
|
+
metadata
|
|
327
|
+
);
|
|
328
|
+
|
|
329
|
+
const type = ethers.utils.parseBytes32String(
|
|
330
|
+
decodedMetadata.type
|
|
331
|
+
) as keyof typeof actionMetadataTypes;
|
|
332
|
+
|
|
333
|
+
const decodedData = ethers.utils.defaultAbiCoder.decode(
|
|
334
|
+
actionMetadataTypes[type],
|
|
335
|
+
decodedMetadata.data
|
|
336
|
+
);
|
|
337
|
+
|
|
338
|
+
switch (type) {
|
|
339
|
+
case "transfer":
|
|
340
|
+
payload = {
|
|
341
|
+
type,
|
|
342
|
+
token: decodedData.token,
|
|
343
|
+
amount: toBN(decodedData.amount).toFixed(),
|
|
344
|
+
receiver: decodedData.receiver,
|
|
345
|
+
};
|
|
346
|
+
break;
|
|
347
|
+
case "bridge":
|
|
348
|
+
payload = {
|
|
349
|
+
type,
|
|
350
|
+
amount: toBN(decodedData.amount).toFixed(),
|
|
351
|
+
receiver: decodedData.receiver,
|
|
352
|
+
toToken: decodedData.toToken,
|
|
353
|
+
fromToken: decodedData.fromToken,
|
|
354
|
+
toChainId: decodedData.toChainId
|
|
355
|
+
? decodedData.toChainId.toString()
|
|
356
|
+
: null,
|
|
357
|
+
bridgeFee: toBN(decodedData.bridgeFee).toFixed(),
|
|
358
|
+
};
|
|
359
|
+
break;
|
|
360
|
+
case "swap":
|
|
361
|
+
payload = {
|
|
362
|
+
type,
|
|
363
|
+
buyAmount: toBN(decodedData.buyAmount).toFixed(),
|
|
364
|
+
sellAmount: toBN(decodedData.sellAmount).toFixed(),
|
|
365
|
+
buyToken: decodedData.buyToken,
|
|
366
|
+
sellToken: decodedData.sellToken,
|
|
367
|
+
receiver: decodedData.receiver,
|
|
368
|
+
protocol: utils.parseBytes32String(decodedData?.protocol || ""),
|
|
369
|
+
};
|
|
370
|
+
break;
|
|
371
|
+
case "upgrade":
|
|
372
|
+
payload = {
|
|
373
|
+
type,
|
|
374
|
+
version: utils.parseBytes32String(decodedData?.version || ""),
|
|
375
|
+
walletImpl: decodedData?.walletImpl,
|
|
376
|
+
};
|
|
377
|
+
break;
|
|
378
|
+
case "gas-topup":
|
|
379
|
+
payload = {
|
|
380
|
+
type,
|
|
381
|
+
amount: toBN(decodedData.amount).toFixed(),
|
|
382
|
+
token: decodedData.token,
|
|
383
|
+
onBehalf: decodedData.onBehalf,
|
|
384
|
+
};
|
|
385
|
+
break;
|
|
386
|
+
case "dapp":
|
|
387
|
+
payload = {
|
|
388
|
+
type,
|
|
389
|
+
name: decodedData?.name,
|
|
390
|
+
url: decodedData?.url,
|
|
391
|
+
};
|
|
392
|
+
break;
|
|
393
|
+
case "deploy":
|
|
394
|
+
payload = {
|
|
395
|
+
type,
|
|
396
|
+
};
|
|
397
|
+
break;
|
|
398
|
+
|
|
399
|
+
case "permit2":
|
|
400
|
+
payload = {
|
|
401
|
+
type,
|
|
402
|
+
token: decodedData.token,
|
|
403
|
+
spender: decodedData.spender,
|
|
404
|
+
amount: toBN(decodedData.amount).toFixed(),
|
|
405
|
+
expiration: decodedData.expiration,
|
|
406
|
+
};
|
|
407
|
+
break;
|
|
408
|
+
|
|
409
|
+
case "cross-transfer":
|
|
410
|
+
payload = {
|
|
411
|
+
type,
|
|
412
|
+
fromToken: decodedData.fromToken,
|
|
413
|
+
toToken: decodedData.toToken,
|
|
414
|
+
toChainId: decodedData.toChainId
|
|
415
|
+
? decodedData.toChainId.toString()
|
|
416
|
+
: null,
|
|
417
|
+
amount: toBN(decodedData.amount).toFixed(),
|
|
418
|
+
receiver: decodedData.receiver,
|
|
419
|
+
};
|
|
420
|
+
|
|
421
|
+
break;
|
|
422
|
+
case "auth":
|
|
423
|
+
payload = {
|
|
424
|
+
type: decodedData.remove ? "remove-authority" : "add-authority",
|
|
425
|
+
address: decodedData.address,
|
|
426
|
+
chainId: decodedData.chainId ? decodedData.chainId.toString() : null,
|
|
427
|
+
remove: decodedData.remove,
|
|
428
|
+
};
|
|
429
|
+
|
|
430
|
+
break;
|
|
431
|
+
case "instadapp-pro":
|
|
432
|
+
payload = {
|
|
433
|
+
type,
|
|
434
|
+
castDetails: decodedData.castDetails,
|
|
435
|
+
};
|
|
436
|
+
|
|
437
|
+
break;
|
|
420
438
|
}
|
|
421
439
|
|
|
422
|
-
|
|
423
|
-
} catch (e) {
|
|
424
|
-
console.log(e);
|
|
425
|
-
return null;
|
|
440
|
+
metadataArr.push(payload);
|
|
426
441
|
}
|
|
442
|
+
|
|
443
|
+
return metadataArr;
|
|
444
|
+
};
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* Replaces hyphens with spaces and capitalizes the first letter of each word in a sentence.
|
|
448
|
+
* @param {string} txType - The input sentence to modify
|
|
449
|
+
*
|
|
450
|
+
* @returns {string} - The modified sentence with hyphens replaced with spaces and the first letter of each word capitalized.
|
|
451
|
+
*/
|
|
452
|
+
export const formatTxType = (txType: string) => {
|
|
453
|
+
const finalSentence = txType
|
|
454
|
+
.replace("-", " ")
|
|
455
|
+
.replace(/(^\w{1})|(\s+\w{1})/g, (letter) => letter.toUpperCase());
|
|
456
|
+
|
|
457
|
+
return finalSentence;
|
|
427
458
|
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const fetchTokenByAddress = async (
|
|
2
|
+
address: string,
|
|
3
|
+
chainId: string | number
|
|
4
|
+
) => {
|
|
5
|
+
if (!address || !chainId) return null;
|
|
6
|
+
const [token] = (await $fetch(`${blockQueryURL}/${chainId}/tokens`, {
|
|
7
|
+
params: {
|
|
8
|
+
sparkline: false,
|
|
9
|
+
"addresses[]": [address],
|
|
10
|
+
},
|
|
11
|
+
})) as ITokenPrice[];
|
|
12
|
+
|
|
13
|
+
return token;
|
|
14
|
+
};
|
package/utils/utils.d.ts
CHANGED
|
@@ -116,3 +116,15 @@ type MetadataProps = {
|
|
|
116
116
|
encodedData: string;
|
|
117
117
|
version?: string;
|
|
118
118
|
};
|
|
119
|
+
|
|
120
|
+
interface ITokenPrice {
|
|
121
|
+
address: string;
|
|
122
|
+
chain_id: string;
|
|
123
|
+
name: string;
|
|
124
|
+
symbol: string;
|
|
125
|
+
decimals: number;
|
|
126
|
+
logo_url: string;
|
|
127
|
+
price: string;
|
|
128
|
+
coingecko_id: string;
|
|
129
|
+
sparkline_price_7d: number[];
|
|
130
|
+
}
|