@instadapp/avocado-base 0.1.2 → 0.1.3
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/abi/multisigAgnosticForwarder.json +1 -0
- package/assets/images/icons/stars.svg +4 -0
- package/components/ActionLogo.vue +2 -0
- package/components/ActionMetadata.vue +2 -2
- package/contracts/MultisigAgnosticForwarder.ts +1413 -0
- package/contracts/factories/MultisigAgnosticForwarder__factory.ts +2051 -0
- package/contracts/factories/index.ts +1 -0
- package/contracts/index.ts +2 -0
- package/package.json +2 -2
- package/utils/metadata.ts +53 -4
- package/utils/network.ts +21 -0
- package/utils/utils.d.ts +3 -0
|
@@ -6,4 +6,5 @@ export { BalanceResolver__factory } from "./BalanceResolver__factory";
|
|
|
6
6
|
export { Erc20__factory } from "./Erc20__factory";
|
|
7
7
|
export { Forwarder__factory } from "./Forwarder__factory";
|
|
8
8
|
export { GaslessWallet__factory } from "./GaslessWallet__factory";
|
|
9
|
+
export { MultisigAgnosticForwarder__factory } from "./MultisigAgnosticForwarder__factory";
|
|
9
10
|
export { MultisigForwarder__factory } from "./MultisigForwarder__factory";
|
package/contracts/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ export type { BalanceResolver } from "./BalanceResolver";
|
|
|
6
6
|
export type { Erc20 } from "./Erc20";
|
|
7
7
|
export type { Forwarder } from "./Forwarder";
|
|
8
8
|
export type { GaslessWallet } from "./GaslessWallet";
|
|
9
|
+
export type { MultisigAgnosticForwarder } from "./MultisigAgnosticForwarder";
|
|
9
10
|
export type { MultisigForwarder } from "./MultisigForwarder";
|
|
10
11
|
export * as factories from "./factories";
|
|
11
12
|
export { AvoFactoryProxy__factory } from "./factories/AvoFactoryProxy__factory";
|
|
@@ -13,4 +14,5 @@ export { BalanceResolver__factory } from "./factories/BalanceResolver__factory";
|
|
|
13
14
|
export { Erc20__factory } from "./factories/Erc20__factory";
|
|
14
15
|
export { Forwarder__factory } from "./factories/Forwarder__factory";
|
|
15
16
|
export { GaslessWallet__factory } from "./factories/GaslessWallet__factory";
|
|
17
|
+
export { MultisigAgnosticForwarder__factory } from "./factories/MultisigAgnosticForwarder__factory";
|
|
16
18
|
export { MultisigForwarder__factory } from "./factories/MultisigForwarder__factory";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@instadapp/avocado-base",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./nuxt.config.ts",
|
|
6
6
|
"types": "global.d.ts",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"@vueuse/nuxt": "^10.2.0",
|
|
30
30
|
"bignumber.js": "^9.1.1",
|
|
31
31
|
"ethers": "^5.7.2",
|
|
32
|
-
"viem": "^2.
|
|
32
|
+
"viem": "^2.10.5",
|
|
33
33
|
"xxhashjs": "^0.2.2"
|
|
34
34
|
}
|
|
35
35
|
}
|
package/utils/metadata.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { ethers, utils } from "ethers";
|
|
2
|
-
import { Forwarder__factory, MultisigForwarder__factory } from "../contracts";
|
|
2
|
+
import { Forwarder__factory, MultisigForwarder__factory, MultisigAgnosticForwarder__factory } from "../contracts";
|
|
3
3
|
import { toBN } from "./bignumber";
|
|
4
4
|
|
|
5
5
|
export const MetadataEnums = {
|
|
6
6
|
transfer: "transfer",
|
|
7
7
|
bridge: "bridge",
|
|
8
|
+
'bridge-v2': 'bridge-v2',
|
|
8
9
|
swap: "swap",
|
|
9
10
|
"gas-topup": "gas-topup",
|
|
10
11
|
upgrade: "upgrade",
|
|
@@ -46,6 +47,16 @@ const actionMetadataTypes: Record<MetadataTypes, string[]> = {
|
|
|
46
47
|
"uint256 bridgeFee",
|
|
47
48
|
"address nativeToken",
|
|
48
49
|
],
|
|
50
|
+
'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",
|
|
59
|
+
],
|
|
49
60
|
swap: [
|
|
50
61
|
"address sellToken",
|
|
51
62
|
"address buyToken",
|
|
@@ -295,7 +306,21 @@ export const encodeBridgeMetadata = (
|
|
|
295
306
|
params: BridgeMetadataProps,
|
|
296
307
|
single = true
|
|
297
308
|
) => {
|
|
298
|
-
const
|
|
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(
|
|
299
324
|
actionMetadataTypes.bridge,
|
|
300
325
|
[
|
|
301
326
|
params.amount,
|
|
@@ -309,7 +334,7 @@ export const encodeBridgeMetadata = (
|
|
|
309
334
|
);
|
|
310
335
|
|
|
311
336
|
const data = encodeMetadata({
|
|
312
|
-
type
|
|
337
|
+
type,
|
|
313
338
|
encodedData,
|
|
314
339
|
});
|
|
315
340
|
|
|
@@ -419,11 +444,21 @@ export const decodeMetadata = (metadata: string) => {
|
|
|
419
444
|
|
|
420
445
|
const iface = Forwarder__factory.createInterface();
|
|
421
446
|
const ifaceMultisig = MultisigForwarder__factory.createInterface();
|
|
447
|
+
const ifaceAgnostic = MultisigAgnosticForwarder__factory.createInterface();
|
|
422
448
|
|
|
423
449
|
const getMetadataFromData = (data: string) => {
|
|
424
450
|
let metadata = "0x";
|
|
425
451
|
|
|
426
|
-
|
|
452
|
+
|
|
453
|
+
if(data.startsWith('0x320036b4')) {
|
|
454
|
+
const executeData = ifaceAgnostic.decodeFunctionData("executeChainAgnosticV1", data);
|
|
455
|
+
|
|
456
|
+
const metadata = executeData?.params_?.params?.metadata
|
|
457
|
+
|
|
458
|
+
return metadata === '0x' || !metadata ? null : metadata
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
else if (data.startsWith("0x18e7f485")) {
|
|
427
462
|
const executeData = iface.decodeFunctionData("execute", data);
|
|
428
463
|
if (executeData.metadata_ === "0x" || !executeData.metadata_) {
|
|
429
464
|
return null;
|
|
@@ -479,6 +514,16 @@ const typesPayload: IPayload = {
|
|
|
479
514
|
toChainId: data.toChainId ? data.toChainId.toString() : null,
|
|
480
515
|
bridgeFee: toBN(data.bridgeFee).toFixed(),
|
|
481
516
|
}),
|
|
517
|
+
'bridge-v2': (data, type) => ({
|
|
518
|
+
type: 'bridge',
|
|
519
|
+
amount: toBN(data.amount).toFixed(),
|
|
520
|
+
receiver: data.receiver,
|
|
521
|
+
toToken: data.toToken,
|
|
522
|
+
fromToken: data.fromToken,
|
|
523
|
+
toChainId: data.toChainId ? data.toChainId.toString() : null,
|
|
524
|
+
bridgeFee: toBN(data.bridgeFee).toFixed(),
|
|
525
|
+
provider: utils.parseBytes32String(data.provider || ""),
|
|
526
|
+
}),
|
|
482
527
|
swap: (data, type) => ({
|
|
483
528
|
type,
|
|
484
529
|
buyAmount: toBN(data.buyAmount).toFixed(),
|
|
@@ -605,6 +650,10 @@ const parseMetadata = (metadata: string) => {
|
|
|
605
650
|
* @returns {string} - The modified sentence with hyphens replaced with spaces and the first letter of each word capitalized.
|
|
606
651
|
*/
|
|
607
652
|
export const formatTxType = (txType: string) => {
|
|
653
|
+
if(txType === 'mass') {
|
|
654
|
+
return 'Chain Agnostic Payments'
|
|
655
|
+
}
|
|
656
|
+
|
|
608
657
|
const finalSentence = txType
|
|
609
658
|
.replace("-", " ")
|
|
610
659
|
.replace(/(^\w{1})|(\s+\w{1})/g, (letter) => letter.toUpperCase());
|
package/utils/network.ts
CHANGED
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
scroll,
|
|
16
16
|
opBNB,
|
|
17
17
|
mode,
|
|
18
|
+
blast
|
|
18
19
|
} from "viem/chains";
|
|
19
20
|
import {
|
|
20
21
|
AVO_PROD_CHAIN_NAME,
|
|
@@ -439,6 +440,26 @@ export const networks: Network[] = [
|
|
|
439
440
|
},
|
|
440
441
|
viemChain: mode,
|
|
441
442
|
},
|
|
443
|
+
{
|
|
444
|
+
chainId: 81457,
|
|
445
|
+
name: "Blast",
|
|
446
|
+
color: "#78d64b",
|
|
447
|
+
explorerUrl: 'https://blastscan.io',
|
|
448
|
+
fakeTransactionHash: '0x934ed8516242f8c08bb9e0e90bb1f989d92ceb6b0333e86ac2d555f25ac27e58',
|
|
449
|
+
params: {
|
|
450
|
+
rpcUrls: ['https://rpc.ankr.com/blast'],
|
|
451
|
+
chainName: "Blast",
|
|
452
|
+
nativeCurrency: {
|
|
453
|
+
name: "Ethereum",
|
|
454
|
+
symbol: "ETH",
|
|
455
|
+
decimals: 18,
|
|
456
|
+
}
|
|
457
|
+
},
|
|
458
|
+
get serverRpcUrl() {
|
|
459
|
+
return process.env?.BLAST_RPC_URL || this.params.rpcUrls[0];
|
|
460
|
+
},
|
|
461
|
+
viemChain: blast,
|
|
462
|
+
},
|
|
442
463
|
// {
|
|
443
464
|
// name: "Manta Pacific",
|
|
444
465
|
// chainId: 169,
|
package/utils/utils.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ declare global {
|
|
|
20
20
|
| 63400
|
|
21
21
|
| 169
|
|
22
22
|
| 34443
|
|
23
|
+
| 81457
|
|
23
24
|
|
|
24
25
|
type ISlackMessageType = "danger" | "error" | "success" | "banner";
|
|
25
26
|
|
|
@@ -107,6 +108,8 @@ declare global {
|
|
|
107
108
|
toChainId: string;
|
|
108
109
|
bridgeFee: string;
|
|
109
110
|
nativeToken: string;
|
|
111
|
+
version?: string;
|
|
112
|
+
provider: string;
|
|
110
113
|
};
|
|
111
114
|
|
|
112
115
|
type SwapMetadataProps = {
|