@rabby-wallet/rabby-swap 0.0.18 → 0.0.19

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.
@@ -1,338 +1,338 @@
1
- import { decodeCalldata, DecodeCalldataResult } from "../src/quote";
2
- import { DEX_ENUM } from "../src/consts";
3
- import { CHAINS_ENUM, CHAINS } from "@debank/common";
4
-
5
- // describe("1inch calldata decode", () => {
6
- // it("swap from ERC20 to ERC20", () => {
7
- // const res = decodeCalldata(DEX_ENUM.ONEINCH, {
8
- // from: "",
9
- // to: "",
10
- // data: "0x12aa3caf0000000000000000000000003b17056cc4439c61cea41fe1c9f517af75a978f7000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000002217e5921b7edfb4bb193a6228459974010d2198000000000000000000000000e7b0ce0526fbe3969035a145c9e9691d4d9d216c00000000000000000000000026f16667830dc45a21517c5b25476463bbbe820c000000000000000000000000000000000000000000000000000000001dcd6500000000000000000000000000000000000000000000000052b500875885d59b5b000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003298cdc6a5396d1f141a696999b5db4f7761d250a70403f995c8bff480cbe5ebda120958e57bdc6398587f2f8f2c3ff329565e9a1e867b2ddefb93409d4a942b18d0000000000000000000000000000000000000000000002cb00029d00025300a007e5c0d200000000000000000000000000000000000000000000022f0001b400019a4020e7b0ce0526fbe3969035a145c9e9691d4d9d216c2b651a6c000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000001dcd6500000000000000000000000000000000000000000000000000056ccab0f536ec400000000005f5dbaf0000001dc688b6a000b1a2bc2ec5000001310064638875680000000000000000000000003b17056cc4439c61cea41fe1c9f517af75a978f7000000000000000000000000000000000000000000000000000000000000001c3c9039f4693fb481f2782bc4707baeaf7fe47db91611369900e40f4f0cd152e42f1bb96f25e9f2598b0900a2b0245fc47d93bd2cf854fef0b1d6767b4fc85ccb0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000002031494e43480000000000000000000000000000000000000000000000000000000020d6bdbf78c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20c20c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2b34716031c7196ac4a8914b164119e74d921a7fb6ae4071198002dc6c0b34716031c7196ac4a8914b164119e74d921a7fb0000000000000000000000000000000000000000000000524abe91645a03ad90c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200a0f2fa6b662217e5921b7edfb4bb193a6228459974010d21980000000000000000000000000000000000000000000000531f6628d47711db2c0000000000000000000000000000000280a06c4eca272217e5921b7edfb4bb193a6228459974010d21981111111254eeb25477b68fb85ed929f73a9605820000000000000000000000000000000000000000000000e26b9977",
11
- // value: "0x0",
12
- // chainId: 1,
13
- // });
14
- // const expectResult: DecodeCalldataResult = {
15
- // fromToken: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
16
- // toToken: "0x2217e5921B7edfB4BB193a6228459974010D2198",
17
- // toTokenReceiver: "0x26f16667830dC45A21517C5b25476463BbBe820C",
18
- // fromTokenAmount: "500000000",
19
- // minReceiveToTokenAmount: "1525675587379320429403",
20
- // };
21
- // expect(res).toEqual(expectResult);
22
- // });
23
-
24
- // it("swap from ETH to ERC20", () => {
25
- // const res = decodeCalldata(DEX_ENUM.ONEINCH, {
26
- // from: "",
27
- // to: "",
28
- // data: "0x12aa3caf0000000000000000000000003b17056cc4439c61cea41fe1c9f517af75a978f7000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca0000000000000000000000003b17056cc4439c61cea41fe1c9f517af75a978f7000000000000000000000000865281fba7f14511d77674a02c2f01c019d1982600000000000000000000000000000000000000000000000002c407558fa2638d000000000000000000000000000000000000000000000001d310ee9609e826bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bfe8e79c86075ff746e3b7269d19ff413e264a6b21fa4e1fe1e5567384a0e8f463ede4e28b0454b1f784c9d6fec8756abca4a358b82d2f96e08707a2f188a7758500000000000000000000000000000000000000000000026100023300001a4041c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2d0e30db000a0860a32ec00000000000000000000000000000000000000000000000002c4bceac38840000001f051201111111254fb6c44bac0bed2854e76f90643097dc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20124d0a3b6650000000000000000000000000000000000000000638876110000000000120288000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000b3c839dbde6b96d37c56ee4f9dad3390d49310aa0000000000000000000000003b17056cc4439c61cea41fe1c9f517af75a978f7000000000000000000000000000000000000000000000001d64a0c8f6227500000000000000000000000000000000000000000000000000002c4bceac388400000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000451b75168be6e0076bfedb343f2f1ef1000e981b90253e7aab860d4452240583b16717a125a192edad04758e804d45ffadc94744e2f1c964c8445410798a2ad0e2966388759900000000000000000000000000000000000000000000000000000080a06c4eca27514910771af9ca656af840dff83e8264ecf986ca1111111254eeb25477b68fb85ed929f73a96058200e26b9977",
29
- // value: "0x0",
30
- // chainId: 1,
31
- // });
32
- // const expectResult: DecodeCalldataResult = {
33
- // fromToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
34
- // toToken: "0x514910771AF9Ca656af840dff83E8264EcF986CA",
35
- // toTokenReceiver: "0x865281fba7F14511D77674A02C2f01C019d19826",
36
- // fromTokenAmount: "199292347574543245",
37
- // minReceiveToTokenAmount: "33655662343518430908",
38
- // };
39
- // expect(res).toEqual(expectResult);
40
- // });
41
-
42
- // it("swap from ERC20 to ETH", () => {
43
- // const res = decodeCalldata(DEX_ENUM.ONEINCH, {
44
- // from: "",
45
- // to: "",
46
- // data: "0x12aa3caf00000000000000000000000053222470cdcfb8081c0e3a50fd106f0d69e63f20000000000000000000000000cc578f173851cfad2fc124e1499bd492849b2b6d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000a22a7e23966fcc6f4877699b6b0be655fbd861620000000000000000000000000502e9c06602b25d0812fb3662d16662d96004210000000000000000000000000000000000000000000000000000156aeb10ab6700000000000000000000000000000000000000000000000001b953b69086c144000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c30000000000000000000000000000000000000000000000a500008f00005300206ae4071198002dc6c0a22a7e23966fcc6f4877699b6b0be655fbd861620000000000000000000000000000000000000000000000000000000000000001cc578f173851cfad2fc124e1499bd492849b2b6d4101c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200042e1a7d4d0000000000000000000000000000000000000000000000000000000000000000c0601111111254eeb25477b68fb85ed929f73a9605820000000000000000000000000000000000000000000000000000000000e26b9977",
47
- // value: "0x0",
48
- // chainId: 1,
49
- // });
50
- // const expectResult: DecodeCalldataResult = {
51
- // fromToken: "0xcC578F173851CFaD2FC124E1499bD492849B2B6D",
52
- // toToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
53
- // toTokenReceiver: "0x0502E9c06602b25d0812fB3662D16662D9600421",
54
- // fromTokenAmount: "23548954454887",
55
- // minReceiveToTokenAmount: "124222508303302980",
56
- // };
57
- // expect(res).toEqual(expectResult);
58
- // });
59
- // });
60
-
61
- describe("0x calldata decode", () => {
62
- it("swap from ERC20 to ERC20", () => {
63
- const res = decodeCalldata(DEX_ENUM.ZEROXAPI, {
64
- from: "0x856565db827588a88780454863f98a4a323e13aa",
65
- to: "",
66
- data: "0x415565b00000000000000000000000004a527d8fc13c5203ab24ba0944f4cb14658d1db6000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000006ab9db1484a11c5400000000000000000000000000000000000000000000000000000000000060533c00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004a527d8fc13c5203ab24ba0944f4cb14658d1db6000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000006ab9db1484a11c5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000002556e697377617056320000000000000000000000000000000000000000000000000000000000006ab9db1484a11c5400000000000000000000000000000000000000000000000000000000000060ce87000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000f164fc0ec4e93095b804a4795bbe1e041497b92a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000030000000000000000000000004a527d8fc13c5203ab24ba0944f4cb14658d1db6000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000007b4b0000000000000000000000004a183b7ed67b9e14b3f45abfb2cf44ed22c29e54000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000004a527d8fc13c5203ab24ba0944f4cb14658d1db6000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000000869584cd0000000000000000000000007cba0eb7a94068324583be7771c5ecda25e4c4d10000000000000000000000000000000000000000000000c6b15b2af363884abb",
67
- value: "0x0",
68
- chainId: 1,
69
- });
70
- const expectResult: DecodeCalldataResult = {
71
- fromToken: "0x4a527d8fc13C5203AB24BA0944F4Cb14658D1Db6",
72
- toToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
73
- toTokenReceiver: "0x856565db827588a88780454863f98a4a323e13aa",
74
- fromTokenAmount: "1968747192290000000000",
75
- minReceiveToTokenAmount: "6312764",
76
- };
77
- expect(res).toEqual(expectResult);
78
- });
79
-
80
- it("swap from ETH to ERC20", () => {
81
- const res = decodeCalldata(DEX_ENUM.ZEROXAPI, {
82
- from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
83
- to: "",
84
- data: "0x415565b0000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000003accd90d29548000000000000000000000000000000000000000000000000000000000013852da7f00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000005c0000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000003accd90d29548000000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000003accd90d29548000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000012556e69737761705633000000000000000000000000000000000000000000000000000000000000003accd90d29548000000000000000000000000000000000000000000000000000000000014021b98e000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000e592427a0aece92de3edee1f18e0157c058615640000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000007cedf0f000000000000000000000000249347381eb6909c5b5854733251a7678212ac3f000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000000869584cd000000000000000000000000100000000000000000000000000000000000001100000000000000000000000000000000000000000000003ed2babba5638840c1",
85
- value: "0x0",
86
- chainId: 1,
87
- });
88
- const expectResult: DecodeCalldataResult = {
89
- fromToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
90
- toToken: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
91
- toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
92
- fromTokenAmount: "4237000000000000000",
93
- minReceiveToTokenAmount: "5239921279",
94
- };
95
- expect(res).toEqual(expectResult);
96
- });
97
-
98
- it("swap from ERC20 to ETH", () => {
99
- const res = decodeCalldata(DEX_ENUM.ZEROXAPI, {
100
- from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
101
- to: "",
102
- data: "0x415565b000000000000000000000000016cc8367055ae7e9157dbcb9d86fd6ce82522b31000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000e7fd2024d181b7c00000000000000000000000000000000000000000000000000000b8e9d35eecad71d00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004a0000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016cc8367055ae7e9157dbcb9d86fd6ce82522b31000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000e7fd2024d181b7c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000253686962615377617000000000000000000000000000000000000000000000000000000000000e7fd2024d181b7c00000000000000000000000000000000000000000000000000000b8e9d35eecad71d000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000003f7724180aa6b939894b5ca4314783b0b36b3290000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000016cc8367055ae7e9157dbcb9d86fd6ce82522b31000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000016cc8367055ae7e9157dbcb9d86fd6ce82522b310000000000000000000000000000000000000000000000000000000000000000869584cd00000000000000000000000086003b044f70dac0abc80ac8957305b6370893ed000000000000000000000000000000000000000000000042a5bdf16663883b7f",
103
- value: "0x0",
104
- chainId: 1,
105
- });
106
- const expectResult: DecodeCalldataResult = {
107
- fromToken: "0x16CC8367055aE7e9157DBcB9d86Fd6CE82522b31",
108
- toToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
109
- toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
110
- fromTokenAmount: "68471000000000000000000",
111
- minReceiveToTokenAmount: "832775836075218717",
112
- };
113
- expect(res).toEqual(expectResult);
114
- });
115
- });
116
-
117
- describe("paraswap calldata decode", () => {
118
- it("[simpleSawp] swap from ERC20 to ERC20", () => {
119
- const res = decodeCalldata(DEX_ENUM.PARASWAP, {
120
- from: "0x7fb610713c8404e21676c01c271bb662df6eb63c",
121
- to: "",
122
- data: "0x54e3f31b0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000006b175474e89094c44da98b954eedeac495271d0f00000000000000000000000000000000000000000000000000000004a817c80000000000000000000000000000000000000000000000043b251cda18dc4ab30c00000000000000000000000000000000000000000000043c3aace5973840862000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec01000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000006388c6e3cb9e34238c7d43c6b749e7e45e3e7cd2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a356867fdcea8e71aeaf87805808803806231fdc0000000000000000000000000000000000000000000000000000000000000144f87dc1b7000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000006b175474e89094c44da98b954eedeac495271d0f00000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000010000000000000000000000003058ef90929cb8180174d74c507176cca6835d7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000144000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
123
- value: "0x0",
124
- chainId: 1,
125
- });
126
- const expectResult: DecodeCalldataResult = {
127
- fromToken: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
128
- toToken: "0x6B175474E89094C44Da98b954EedeAC495271d0F",
129
- toTokenReceiver: "0x7fb610713c8404e21676c01c271bb662df6eb63c",
130
- fromTokenAmount: "20000000000",
131
- minReceiveToTokenAmount: "19980498083906505585420",
132
- };
133
- expect(res).toEqual(expectResult);
134
- });
135
-
136
- it("[simpleSawp] swap from ETH to ERC20", () => {
137
- const res = decodeCalldata(DEX_ENUM.PARASWAP, {
138
- from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
139
- to: "",
140
- data: "0x54e3f31b0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000007d1afa7b718fb893db30a3abc0cfc608aacfebb00000000000000000000000000000000000000000000000000745321598ee80000000000000000000000000000000000000000000000000278a3a0f3888dfc321000000000000000000000000000000000000000000000027bd179e175f1c100300000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000046000000000000000000000000000000000000000000000000000000000000004e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000558247e365be655f9144e1a0140d793984372ef3010000000000000000000000000000000000000000000000000000000000405f000000000000000000000000000000000000000000000000000000000000054000000000000000000000000000000000000000000000000000000000638874f88be580ae64fa477bb44c5b82d51f15a5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff00000000000000000000000000000000000000000000000000000000000001e8d0e30db0aa77476c0000000000000000000000007d1afa7b718fb893db30a3abc0cfc608aacfebb0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000028212637b9e24bf5190000000000000000000000000000000000000000000000000757cebec5fb200000000000000000000000000056178a0d5f301baf6cf3e1cd53d9863437345bf9000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee57000000000000000000000000843ffc230f59d3fb2bfbb6a41d4693eb747aa397000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000638874f801ffffffffffffffffffffffffffffffffffffff0ac0da086388749e0000002b0000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000001b1559a8625f6611e49f5e3f6290c8fe84f60e1e66676071276c28be12200a7f2e22b8b00e540ab944adff5257d45b59d708db22456275f51bf4b5f44316ddee180000000000000000000000000000000000000000000000000745321598ee800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001e800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000745321598ee800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
141
- value: "0x0",
142
- chainId: 1,
143
- });
144
- const expectResult: DecodeCalldataResult = {
145
- fromToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
146
- toToken: "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0",
147
- toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
148
- fromTokenAmount: "523880000000000000",
149
- minReceiveToTokenAmount: "729383309136044737313",
150
- };
151
- expect(res).toEqual(expectResult);
152
- });
153
-
154
- it("[simpleSawp] swap from ERC20 to ETH", () => {
155
- const res = decodeCalldata(DEX_ENUM.PARASWAP, {
156
- from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
157
- to: "",
158
- data: "0x54e3f31b000000000000000000000000000000000000000000000000000000000000002000000000000000000000000092d6c1e31e14520e676a687f0a93788b716beff5000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000002fe03f05072b20d960000000000000000000000000000000000000000000000000104e34bb63cf134000000000000000000000000000000000000000000000000010632e9097c489c00000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004a0000000000000000000000000000000000000000000000000000000006388c836d7e7fd88cb884efc9083b3cbd38e6eea000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee570000000000000000000000000000000000000000000000000000000000000148c04b8d59000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee5700000000000000000000000000000000000000000000000000000000638881e6000000000000000000000000000000000000000000000002fe03f05072b20d960000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002b92d6c1e31e14520e676a687f0a93788b716beff5002710c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000e1829cfe000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012400000000000000000000000000000000000000000000000000000000000001480000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
159
- value: "0x0",
160
- chainId: 1,
161
- });
162
- const expectResult: DecodeCalldataResult = {
163
- fromToken: "0x92D6C1e31e14520e676a687F0a93788B716BEff5",
164
- toToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
165
- toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
166
- fromTokenAmount: "55197225686295252374",
167
- minReceiveToTokenAmount: "73433408264270132",
168
- };
169
- expect(res).toEqual(expectResult);
170
- });
171
-
172
- it("[megaSwap] swap from ERC20 to ERC20", () => {
173
- const res = decodeCalldata(DEX_ENUM.PARASWAP, {
174
- from: "0x7fb610713c8404e21676c01c271bb662df6eb63c",
175
- to: "",
176
- data: "0x46c67b6d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000006fc23ac0000000000000000000000000000000000000000000000014954ae2bce9bb8f34400000000000000000000000000000000000000000000014afc5791a7c46266fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec01000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000e40000000000000000000000000000000000000000000000000000000006388d4da98962f95dc4e4688b7b99254babe88330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000068000000000000000000000000000000000000000000000000000000000000004b00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063888e8a000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb480001f4c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f9234cb08edb93c0d4a4d4c70cc3ffd070e78e07000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000004de561eb53ee427ab4e007d78a9134aacb3101a2dc2300000000000000000000000000000000000000000000000000000000000022600000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000853d955acef822db058eb8505911ed77f175b99e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063888e8a000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064853d955acef822db058eb8505911ed77f175b99e0000000000000000000000000000000000000000000000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f9234cb08edb93c0d4a4d4c70cc3ffd070e78e07000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000004de5e1573b9d29e2183b1af0e743dc2754979a40d23700000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000988e886b14a58dffa124230a489ad83f64008854000000000000000000000000216b4b4ba9f3e719726886d34a177484278bfcae00000000000000000000000000000000000000000000000000000006fc23ac0000000000000000000000000000000000000000000000000000000000638c74da000000000000000000000000000000000000000000000000000000000000001b68d4c2dd2e3d25487bfc8b42f41bc3ef7e49102f682fb7611eb901dd68d1fd9b2db27a175c4a87cf33c3f2e364ce0ede26a608b6498eeb120a01824ade547021",
177
- value: "0x0",
178
- chainId: 1,
179
- });
180
- const expectResult: DecodeCalldataResult = {
181
- fromToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
182
- toToken: "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0",
183
- toTokenReceiver: "0x7fb610713c8404e21676c01c271bb662df6eb63c",
184
- fromTokenAmount: "30000000000",
185
- minReceiveToTokenAmount: "6075080662961951929156",
186
- };
187
- expect(res).toEqual(expectResult);
188
- });
189
-
190
- it("[megaSwap] swap from ETH to ERC20", () => {
191
- const res = decodeCalldata(DEX_ENUM.PARASWAP, {
192
- from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
193
- to: "",
194
- data: "0x46c67b6d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000021a6940ffb60a600a000000000000000000000000000000000000000000000a7c2ca415bc11540b78000000000000000000000000000000000000000000000a89a9a6322536b8cf1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec01000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000d40000000000000000000000000000000000000000000000000000000006388a6d6d286efd8f8d047a8bcf3122ffbf7b5210000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000023f000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004c0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000248400000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063886085000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000028c00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063886085000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000064a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000004fabb145d64652a948d72533023f6e7a623c7c5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063886085000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000644fabb145d64652a948d72533023f6e7a623c7c5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000004fabb145d64652a948d72533023f6e7a623c7c5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000638860850000000000000000000000000000000000000000000000000000000000000042c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f46b175474e89094c44da98b954eedeac495271d0f0000644fabb145d64652a948d72533023f6e7a623c7c530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
195
- value: "0x0",
196
- chainId: 1,
197
- });
198
- const expectResult: DecodeCalldataResult = {
199
- fromToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
200
- toToken: "0x4Fabb145d64652a948d72533023f6E7A623C7C53",
201
- toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
202
- fromTokenAmount: "38796611931974819850",
203
- minReceiveToTokenAmount: "49514277813767774669688",
204
- };
205
- expect(res).toEqual(expectResult);
206
- });
207
-
208
- it("[megaSwap] swap from ERC20 to ETH", () => {
209
- const res = decodeCalldata(DEX_ENUM.PARASWAP, {
210
- from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
211
- to: "",
212
- data: "0x46c67b6d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe8400000000000000000000000000000000000000000000000036109247a153aa63000000000000000000000000000000000000000000000000353550e19ffc3d2b0000000000000000000000000000000000000000000000003579c3c7be608fcf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec01000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000740000000000000000000000000000000000000000000000000000000006388a3e7160580eb58464545b3bcf80e6c2afa680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002600000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000079359292ffd5c3307084084b5b7c3e81d733ee9800000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063885d96000000000000000000000000000000000000000000000000000000000000002b7f39c581f595b53c5cb19bd0b3f8da6c935e2ca00001f4c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
213
- value: "0x0",
214
- chainId: 1,
215
- });
216
- const expectResult: DecodeCalldataResult = {
217
- fromToken: "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84",
218
- toToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
219
- toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
220
- fromTokenAmount: "3895774514022427235",
221
- minReceiveToTokenAmount: "3834059587757817131",
222
- };
223
- expect(res).toEqual(expectResult);
224
- });
225
-
226
- it("[multiSwap] swap from ERC20 to ERC20", () => {
227
- const res = decodeCalldata(DEX_ENUM.PARASWAP, {
228
- from: "0x7fb610713c8404e21676c01c271bb662df6eb63c",
229
- to: "",
230
- data: "0xa94e78ef0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000004fb100400000000000000000000000000000000000000000000002f9fa190b7a21f263bd0000000000000000000000000000000000000000000002fdce5458b87ebd93d700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007600000000000000000000000000000000000000000000000000000000063889507bdb92db4a163409698763a2d253cce6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063884eb6000000000000000000000000000000000000000000000000000000000000002bdac17f958d2ee523a2206206994597c13d831ec70001f4c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000006b1a8f210ec6b7b6643cea3583fb0c079f36789800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f9234cb08edb93c0d4a4d4c70cc3ffd070e78e07000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000004de591204649a5c9ab2cadfc2089fd22ed0fbfe170ed0000000000000000000000000000000000000000000000000000000000000000",
231
- value: "0x0",
232
- chainId: 1,
233
- });
234
- const expectResult: DecodeCalldataResult = {
235
- fromToken: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
236
- toToken: "0x6b1a8f210Ec6b7B6643cea3583Fb0c079f367898",
237
- toTokenReceiver: "0x7fb610713c8404e21676c01c271bb662df6eb63c",
238
- fromTokenAmount: "1337000000",
239
- minReceiveToTokenAmount: "14055993688096051979197",
240
- };
241
- expect(res).toEqual(expectResult);
242
- });
243
-
244
- it("[multiSwap] swap from ETH to ERC20", () => {
245
- const res = decodeCalldata(DEX_ENUM.PARASWAP, {
246
- from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
247
- to: "",
248
- data: "0xa94e78ef0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000dc4f546401538000000000000000000000000000000000000000000000000446aa2ed9b0143ccec400000000000000000000000000000000000000000000044c2a651dad1ac5799d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec01000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000638875de53bbb98d926645e3ad805a406e5ed672000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000005c0000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff00000000000000000000000000000000000000000000000000000000000024b800000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000047d94c44c600000000000000000000000000000000000000000000000d15f11b5fa4488000000000000000000000000000b3c839dbde6b96d37c56ee4f9dad3390d49310aa000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee570000000000000000000000008eb634b824b2d4342108d68f8bb63d341c9cb266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000638875de00000000000000000000000000000000000000000000000000000184cd0c6b300000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000001c614dd024bd26e4106c294de92961023bba6458b5a1be487d79316378f53319db66b0bb737d5f0d968ec9d0745942d482bfd6ef9b34847f9d6f5289edefad3e340000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063888376000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000fc2ba6e830a04c25e207b8214b26d8c713f6881f000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000a356867fdcea8e71aeaf87805808803806231fdc000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000003058ef90929cb8180174d74c507176cca6835d730000000000000000000000000000000000000000000000000000000000000000",
249
- value: "0x0",
250
- chainId: 1,
251
- });
252
- const expectResult: DecodeCalldataResult = {
253
- fromToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
254
- toToken: "0x6B175474E89094C44Da98b954EedeAC495271d0F",
255
- toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
256
- fromTokenAmount: "254000000000000000000",
257
- minReceiveToTokenAmount: "323088015917182446529600",
258
- };
259
- expect(res).toEqual(expectResult);
260
- });
261
-
262
- it("[multiSwap] swap from ERC20 to ETH", () => {
263
- const res = decodeCalldata(DEX_ENUM.PARASWAP, {
264
- from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
265
- to: "",
266
- data: "0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000057ab1ec28d129707052df4df418d58a2d46d5f5100000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000236528165d5156e00000000000000000000000000000000000000000000000002392b0a68eabcc700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000008200000000000000000000000000000000000000000000000000000000063882690da913b5d828049ea87c27cad1cdd1720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000005e74c9036fb86bd7ecdcb084a0673efc32ea31cb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000050000000000000000000000006317c5e82a06e1d8bf200d21f4510ac2c038ac81000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000028e598846febb750effc384853fbce82988eaaa2000000000000000000000000000000000000000000000007ce66c50e284000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000003029c3763d4b61b255b5eea5a506cb2f080487a70000000000000000000000000000000000000000000000030927f74c9de000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000006387e03f000000000000000000000000000000000000000000000000000000000000002b5e74c9036fb86bd7ecdcb084a0673efc32ea31cb0001f4c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
267
- value: "0x0",
268
- chainId: 1,
269
- });
270
- const expectResult: DecodeCalldataResult = {
271
- fromToken: "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51",
272
- toToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
273
- toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
274
- fromTokenAmount: "200000000000000000000",
275
- minReceiveToTokenAmount: "159405552530953582",
276
- };
277
- expect(res).toEqual(expectResult);
278
- });
279
- });
280
-
281
- describe("openOcean calldata decode", () => {
282
- it("swap from ERC20 to ERC20", () => {
283
- const res = decodeCalldata(DEX_ENUM.OPENOCEAN, {
284
- from: "0xf08c90c7f470b640a21dd9b3744eca3d1d16a044",
285
- to: "",
286
- data: "0x90411a3200000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c74700000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad000000000000000000000000f08c90c7f470b640a21dd9b3744eca3d1d16a044000000000000000000000000000000000000314dc6448d9338c15b0a000000000000000000000000000000000000000000000000000005fd730f430c82f5045100000000000000000000000000000000000000000000064e2845f5bc53f470550000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000046000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007e00000000000000000000000000000000000000000000000000000000000000a400000000000000000000000000000000000000000000000000000000000000b600000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ee000000000000000000000000000000000000000000000000000000000000011e000000000000000000000000000000000000000000000000000000000000014e00000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f86542200000000000000000000000055d398326f99059ff775485246999027b3197955000000000000000000000000000000010000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010457618804000000000000000000000000de49eec134fe9ab82e8d1e92215dbfa7868525490000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de055d398326f99059ff775485246999027b31979550007d060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f86542200000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000000000087000000000000000000000000000000b40000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f9900000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000016b9a82891338f9ba80e2d6970fdda79d1eb0dae0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064cac460ee00000000000000003b74a46016b9a82891338f9ba80e2d6970fdda79d1eb0dae00000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f86542200000000000000000000000055d398326f99059ff775485246999027b3197955000000000000000000000000000000090000000000000000000000000000002d0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f9900000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000009cb618bf5ef305fadfd2c8fc0c26eecf8c6d5fd0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064cac460ee00000000000000003b7c458009cb618bf5ef305fadfd2c8fc0c26eecf8c6d5fd00000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f86542200000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000000000024000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f9900000000000000000000000055d398326f99059ff775485246999027b31979550000000000000000000000008840c6252e2e86e545defb6da98b2a0e26d8c1ba0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064cac460ee00000000000000003b7c45808840c6252e2e86e545defb6da98b2a0e26d8c1ba00000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f865422000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00000000000000000000000000000001000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000104576188040000000000000000000000007aaf1f85425b1226718d6772a4c3d6d99fd8001f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de0bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00006460d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f865422000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0000000000000000000000000000001300000000000000000000000000000013000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010457618804000000000000000000000000f5167d362fcb54eb2a40ff5296e468042f3670f50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de0bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0007d060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000648a6a1e8500000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000353c1f0bc78fbbc245b3c93ef77b1dcc5b77d2a027100000000000000000000000000000000000000000064e2845f5bc53f4705500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f86542200000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c74700000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f9900000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000f08c90c7f470b640a21dd9b3744eca3d1d16a04400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
287
- value: "0x0",
288
- chainId: 56,
289
- });
290
-
291
- const expectResult: DecodeCalldataResult = {
292
- fromToken: "0x55d398326f99059fF775485246999027B3197955",
293
- fromTokenAmount: "1000000000000000000000000000000000",
294
- minReceiveToTokenAmount: "28287149584156770763857",
295
- toToken: "0x60D01EC2D5E98Ac51C8B4cF84DfCCE98D527c747",
296
- toTokenReceiver: "0xf08c90c7f470b640a21dd9b3744eca3d1d16a044",
297
- };
298
- expect(res).toEqual(expectResult);
299
- });
300
-
301
- it("swap from NativeToken to ERC20", () => {
302
- const res = decodeCalldata(DEX_ENUM.OPENOCEAN, {
303
- from: "0xf08c90c7f470b640a21dd9b3744eca3d1d16a044",
304
- to: "",
305
- data: "0x90411a3200000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c74700000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad000000000000000000000000f08c90c7f470b640a21dd9b3744eca3d1d16a044000000000000000000000000000000000000314dc6448d9338c15b0a0000000000000000000000000000000000000000000000000000039736b55b8ae4ec90270000000000000000000000000000000000000000000003c797e752e30beb8a430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000046000000000000000000000000000000000000000000000000000000000000007600000000000000000000000000000000000000000000000000000000000000880000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000314dc6448d9338c15b0a0000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000004d0e30db000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f865422000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00000000000000000000000000000001000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000104576188040000000000000000000000007aaf1f85425b1226718d6772a4c3d6d99fd8001f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de0bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00006460d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f865422000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0000000000000000000000000000001300000000000000000000000000000013000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010457618804000000000000000000000000f5167d362fcb54eb2a40ff5296e468042f3670f50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de0bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0007d060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000648a6a1e8500000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000353c1f0bc78fbbc245b3c93ef77b1dcc5b77d2a02710000000000000000000000000000000000000000003c797e752e30beb8a4300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f86542200000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c74700000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f9900000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000f08c90c7f470b640a21dd9b3744eca3d1d16a04400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
306
- value: "0x314dc6448d933800000000000000",
307
- chainId: 56,
308
- });
309
-
310
- const expectResult: DecodeCalldataResult = {
311
- fromToken: CHAINS[CHAINS_ENUM.BSC].nativeTokenAddress,
312
- fromTokenAmount: "1000000000000000000000000000000000",
313
- minReceiveToTokenAmount: "16956499961440014995495",
314
- toToken: "0x60D01EC2D5E98Ac51C8B4cF84DfCCE98D527c747",
315
- toTokenReceiver: "0xf08c90c7f470b640a21dd9b3744eca3d1d16a044",
316
- };
317
- expect(res).toEqual(expectResult);
318
- });
319
-
320
- it("swap from ERC20 to NativeToken", () => {
321
- const res = decodeCalldata(DEX_ENUM.OPENOCEAN, {
322
- from: "0xf08c90c7f470b640a21dd9b3744eca3d1d16a044",
323
- to: "",
324
- data: "0x90411a3200000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad000000000000000000000000f08c90c7f470b640a21dd9b3744eca3d1d16a044000000000000000000000000000000000000314dc6448d9338c15b0a00000000000000000000000000000000000000000000000000000000017d8097dde91a0e000000000000000000000000000000000000000000000000019194d5c12b43d80000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000de00000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000146000000000000000000000000000000000000000000000000000000000000015800000000000000000000000000000000000000000000000000000000000001a200000000000000000000000000000000000000000000000000000000000001d200000000000000000000000000000000000000000000000000000000000001e4000000000000000000000000000000000000000000000000000000000000022e00000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f86542200000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000000000010000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010457618804000000000000000000000000de49eec134fe9ab82e8d1e92215dbfa7868525490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de060d01ec2d5e98ac51c8b4cf84dfcce98d527c7470007d055d398326f99059ff775485246999027b3197955000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003e451a7431600000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f9900000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000059de3b49314bf5067719364a2cb43e8525ab93fa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000059de3b49314bf5067719364a2cb43e8525ab93fa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c47dc2038200000000000000000000000055d398326f99059ff775485246999027b3197955000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad000000000000000000000000353c1f0bc78fbbc245b3c93ef77b1dcc5b77d2a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001649f865422000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c000000000000000000000000000000010000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000004000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000242e1a7d4d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f86542200000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c74700000000000000000000000000000098000000000000000000000000000000b40000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f9900000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000c0155abc2cdfd3b041cc3ed103a1fb40fe8347390000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064cac460ee00000000000000003b74a460c0155abc2cdfd3b041cc3ed103a1fb40fe83473900000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c74700000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f86542200000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000000000080000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000104576188040000000000000000000000008a8d11ece5225c03df3a71a844fd490824a1b3d60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000190bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f865422000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f99000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0000000000000000000000004b56ee85949164519bba2e454269de156930a4c80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064cac460ee80000000000000003b6d03404b56ee85949164519bba2e454269de156930a4c8000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003e451a743160000000000000000000000008ac76a51cc950d9822d68b83fe1ad97b32cd580d00000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064eb5625d90000000000000000000000008ac76a51cc950d9822d68b83fe1ad97b32cd580d0000000000000000000000002ef6ced7713c4c8e60690cb5d5180a38951cee820000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000002ef6ced7713c4c8e60690cb5d5180a38951cee8200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c4e331d0390000000000000000000000008ac76a51cc950d9822d68b83fe1ad97b32cd580d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f86542200000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c74700000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000104576188040000000000000000000000001968fcbc9738a26df18f423f503c4557c953ae66000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000ed8e0a2d99643e1e65cca22ed4424090b8b745800000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000064e9e7cea3dedca5984780bafc599bd69add087d5600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064cac460ee80000000000000003b7c45800ed8e0a2d99643e1e65cca22ed4424090b8b7458000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d5600000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003e451a743160000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce8200000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064eb5625d90000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce8200000000000000000000000037f56df34529edfba81e270003b599df0ff94f3c00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000037f56df34529edfba81e270003b599df0ff94f3c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c4e331d0390000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce82000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000648a6a1e85000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000353c1f0bc78fbbc245b3c93ef77b1dcc5b77d2a0271000000000000000000000000000000000000000000000019194d5c12b43d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f865422000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f99000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000f08c90c7f470b640a21dd9b3744eca3d1d16a04400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
325
- value: "0x0",
326
- chainId: 56,
327
- });
328
-
329
- const expectResult: DecodeCalldataResult = {
330
- fromToken: "0x60D01EC2D5E98Ac51C8B4cF84DfCCE98D527c747",
331
- fromTokenAmount: "1000000000000000000000000000000000",
332
- minReceiveToTokenAmount: "107383355878218254",
333
- toToken: CHAINS[CHAINS_ENUM.BSC].nativeTokenAddress,
334
- toTokenReceiver: "0xf08c90c7f470b640a21dd9b3744eca3d1d16a044",
335
- };
336
- expect(res).toEqual(expectResult);
337
- });
338
- });
1
+ import { decodeCalldata, DecodeCalldataResult } from "../src/quote";
2
+ import { DEX_ENUM } from "../src/consts";
3
+ import { CHAINS_ENUM, CHAINS } from "@debank/common";
4
+
5
+ // describe("1inch calldata decode", () => {
6
+ // it("swap from ERC20 to ERC20", () => {
7
+ // const res = decodeCalldata(DEX_ENUM.ONEINCH, {
8
+ // from: "",
9
+ // to: "",
10
+ // data: "0x12aa3caf0000000000000000000000003b17056cc4439c61cea41fe1c9f517af75a978f7000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000002217e5921b7edfb4bb193a6228459974010d2198000000000000000000000000e7b0ce0526fbe3969035a145c9e9691d4d9d216c00000000000000000000000026f16667830dc45a21517c5b25476463bbbe820c000000000000000000000000000000000000000000000000000000001dcd6500000000000000000000000000000000000000000000000052b500875885d59b5b000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003298cdc6a5396d1f141a696999b5db4f7761d250a70403f995c8bff480cbe5ebda120958e57bdc6398587f2f8f2c3ff329565e9a1e867b2ddefb93409d4a942b18d0000000000000000000000000000000000000000000002cb00029d00025300a007e5c0d200000000000000000000000000000000000000000000022f0001b400019a4020e7b0ce0526fbe3969035a145c9e9691d4d9d216c2b651a6c000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000001dcd6500000000000000000000000000000000000000000000000000056ccab0f536ec400000000005f5dbaf0000001dc688b6a000b1a2bc2ec5000001310064638875680000000000000000000000003b17056cc4439c61cea41fe1c9f517af75a978f7000000000000000000000000000000000000000000000000000000000000001c3c9039f4693fb481f2782bc4707baeaf7fe47db91611369900e40f4f0cd152e42f1bb96f25e9f2598b0900a2b0245fc47d93bd2cf854fef0b1d6767b4fc85ccb0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000002031494e43480000000000000000000000000000000000000000000000000000000020d6bdbf78c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20c20c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2b34716031c7196ac4a8914b164119e74d921a7fb6ae4071198002dc6c0b34716031c7196ac4a8914b164119e74d921a7fb0000000000000000000000000000000000000000000000524abe91645a03ad90c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200a0f2fa6b662217e5921b7edfb4bb193a6228459974010d21980000000000000000000000000000000000000000000000531f6628d47711db2c0000000000000000000000000000000280a06c4eca272217e5921b7edfb4bb193a6228459974010d21981111111254eeb25477b68fb85ed929f73a9605820000000000000000000000000000000000000000000000e26b9977",
11
+ // value: "0x0",
12
+ // chainId: 1,
13
+ // });
14
+ // const expectResult: DecodeCalldataResult = {
15
+ // fromToken: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
16
+ // toToken: "0x2217e5921B7edfB4BB193a6228459974010D2198",
17
+ // toTokenReceiver: "0x26f16667830dC45A21517C5b25476463BbBe820C",
18
+ // fromTokenAmount: "500000000",
19
+ // minReceiveToTokenAmount: "1525675587379320429403",
20
+ // };
21
+ // expect(res).toEqual(expectResult);
22
+ // });
23
+
24
+ // it("swap from ETH to ERC20", () => {
25
+ // const res = decodeCalldata(DEX_ENUM.ONEINCH, {
26
+ // from: "",
27
+ // to: "",
28
+ // data: "0x12aa3caf0000000000000000000000003b17056cc4439c61cea41fe1c9f517af75a978f7000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca0000000000000000000000003b17056cc4439c61cea41fe1c9f517af75a978f7000000000000000000000000865281fba7f14511d77674a02c2f01c019d1982600000000000000000000000000000000000000000000000002c407558fa2638d000000000000000000000000000000000000000000000001d310ee9609e826bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bfe8e79c86075ff746e3b7269d19ff413e264a6b21fa4e1fe1e5567384a0e8f463ede4e28b0454b1f784c9d6fec8756abca4a358b82d2f96e08707a2f188a7758500000000000000000000000000000000000000000000026100023300001a4041c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2d0e30db000a0860a32ec00000000000000000000000000000000000000000000000002c4bceac38840000001f051201111111254fb6c44bac0bed2854e76f90643097dc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20124d0a3b6650000000000000000000000000000000000000000638876110000000000120288000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000b3c839dbde6b96d37c56ee4f9dad3390d49310aa0000000000000000000000003b17056cc4439c61cea41fe1c9f517af75a978f7000000000000000000000000000000000000000000000001d64a0c8f6227500000000000000000000000000000000000000000000000000002c4bceac388400000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000451b75168be6e0076bfedb343f2f1ef1000e981b90253e7aab860d4452240583b16717a125a192edad04758e804d45ffadc94744e2f1c964c8445410798a2ad0e2966388759900000000000000000000000000000000000000000000000000000080a06c4eca27514910771af9ca656af840dff83e8264ecf986ca1111111254eeb25477b68fb85ed929f73a96058200e26b9977",
29
+ // value: "0x0",
30
+ // chainId: 1,
31
+ // });
32
+ // const expectResult: DecodeCalldataResult = {
33
+ // fromToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
34
+ // toToken: "0x514910771AF9Ca656af840dff83E8264EcF986CA",
35
+ // toTokenReceiver: "0x865281fba7F14511D77674A02C2f01C019d19826",
36
+ // fromTokenAmount: "199292347574543245",
37
+ // minReceiveToTokenAmount: "33655662343518430908",
38
+ // };
39
+ // expect(res).toEqual(expectResult);
40
+ // });
41
+
42
+ // it("swap from ERC20 to ETH", () => {
43
+ // const res = decodeCalldata(DEX_ENUM.ONEINCH, {
44
+ // from: "",
45
+ // to: "",
46
+ // data: "0x12aa3caf00000000000000000000000053222470cdcfb8081c0e3a50fd106f0d69e63f20000000000000000000000000cc578f173851cfad2fc124e1499bd492849b2b6d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000a22a7e23966fcc6f4877699b6b0be655fbd861620000000000000000000000000502e9c06602b25d0812fb3662d16662d96004210000000000000000000000000000000000000000000000000000156aeb10ab6700000000000000000000000000000000000000000000000001b953b69086c144000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c30000000000000000000000000000000000000000000000a500008f00005300206ae4071198002dc6c0a22a7e23966fcc6f4877699b6b0be655fbd861620000000000000000000000000000000000000000000000000000000000000001cc578f173851cfad2fc124e1499bd492849b2b6d4101c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200042e1a7d4d0000000000000000000000000000000000000000000000000000000000000000c0601111111254eeb25477b68fb85ed929f73a9605820000000000000000000000000000000000000000000000000000000000e26b9977",
47
+ // value: "0x0",
48
+ // chainId: 1,
49
+ // });
50
+ // const expectResult: DecodeCalldataResult = {
51
+ // fromToken: "0xcC578F173851CFaD2FC124E1499bD492849B2B6D",
52
+ // toToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
53
+ // toTokenReceiver: "0x0502E9c06602b25d0812fB3662D16662D9600421",
54
+ // fromTokenAmount: "23548954454887",
55
+ // minReceiveToTokenAmount: "124222508303302980",
56
+ // };
57
+ // expect(res).toEqual(expectResult);
58
+ // });
59
+ // });
60
+
61
+ describe("0x calldata decode", () => {
62
+ it("swap from ERC20 to ERC20", () => {
63
+ const res = decodeCalldata(DEX_ENUM.ZEROXAPI, {
64
+ from: "0x856565db827588a88780454863f98a4a323e13aa",
65
+ to: "",
66
+ data: "0x415565b00000000000000000000000004a527d8fc13c5203ab24ba0944f4cb14658d1db6000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000006ab9db1484a11c5400000000000000000000000000000000000000000000000000000000000060533c00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004a527d8fc13c5203ab24ba0944f4cb14658d1db6000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000006ab9db1484a11c5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000002556e697377617056320000000000000000000000000000000000000000000000000000000000006ab9db1484a11c5400000000000000000000000000000000000000000000000000000000000060ce87000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000f164fc0ec4e93095b804a4795bbe1e041497b92a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000030000000000000000000000004a527d8fc13c5203ab24ba0944f4cb14658d1db6000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000007b4b0000000000000000000000004a183b7ed67b9e14b3f45abfb2cf44ed22c29e54000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000004a527d8fc13c5203ab24ba0944f4cb14658d1db6000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000000869584cd0000000000000000000000007cba0eb7a94068324583be7771c5ecda25e4c4d10000000000000000000000000000000000000000000000c6b15b2af363884abb",
67
+ value: "0x0",
68
+ chainId: 1,
69
+ });
70
+ const expectResult: DecodeCalldataResult = {
71
+ fromToken: "0x4a527d8fc13C5203AB24BA0944F4Cb14658D1Db6",
72
+ toToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
73
+ toTokenReceiver: "0x856565db827588a88780454863f98a4a323e13aa",
74
+ fromTokenAmount: "1968747192290000000000",
75
+ minReceiveToTokenAmount: "6312764",
76
+ };
77
+ expect(res).toEqual(expectResult);
78
+ });
79
+
80
+ it("swap from ETH to ERC20", () => {
81
+ const res = decodeCalldata(DEX_ENUM.ZEROXAPI, {
82
+ from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
83
+ to: "",
84
+ data: "0x415565b0000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000003accd90d29548000000000000000000000000000000000000000000000000000000000013852da7f00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000005c0000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000003accd90d29548000000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000003accd90d29548000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000012556e69737761705633000000000000000000000000000000000000000000000000000000000000003accd90d29548000000000000000000000000000000000000000000000000000000000014021b98e000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000e592427a0aece92de3edee1f18e0157c058615640000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000007cedf0f000000000000000000000000249347381eb6909c5b5854733251a7678212ac3f000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000000869584cd000000000000000000000000100000000000000000000000000000000000001100000000000000000000000000000000000000000000003ed2babba5638840c1",
85
+ value: "0x0",
86
+ chainId: 1,
87
+ });
88
+ const expectResult: DecodeCalldataResult = {
89
+ fromToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
90
+ toToken: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
91
+ toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
92
+ fromTokenAmount: "4237000000000000000",
93
+ minReceiveToTokenAmount: "5239921279",
94
+ };
95
+ expect(res).toEqual(expectResult);
96
+ });
97
+
98
+ it("swap from ERC20 to ETH", () => {
99
+ const res = decodeCalldata(DEX_ENUM.ZEROXAPI, {
100
+ from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
101
+ to: "",
102
+ data: "0x415565b000000000000000000000000016cc8367055ae7e9157dbcb9d86fd6ce82522b31000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000e7fd2024d181b7c00000000000000000000000000000000000000000000000000000b8e9d35eecad71d00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004a0000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016cc8367055ae7e9157dbcb9d86fd6ce82522b31000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000e7fd2024d181b7c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000253686962615377617000000000000000000000000000000000000000000000000000000000000e7fd2024d181b7c00000000000000000000000000000000000000000000000000000b8e9d35eecad71d000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000003f7724180aa6b939894b5ca4314783b0b36b3290000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000016cc8367055ae7e9157dbcb9d86fd6ce82522b31000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000016cc8367055ae7e9157dbcb9d86fd6ce82522b310000000000000000000000000000000000000000000000000000000000000000869584cd00000000000000000000000086003b044f70dac0abc80ac8957305b6370893ed000000000000000000000000000000000000000000000042a5bdf16663883b7f",
103
+ value: "0x0",
104
+ chainId: 1,
105
+ });
106
+ const expectResult: DecodeCalldataResult = {
107
+ fromToken: "0x16CC8367055aE7e9157DBcB9d86Fd6CE82522b31",
108
+ toToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
109
+ toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
110
+ fromTokenAmount: "68471000000000000000000",
111
+ minReceiveToTokenAmount: "832775836075218717",
112
+ };
113
+ expect(res).toEqual(expectResult);
114
+ });
115
+ });
116
+
117
+ describe("paraswap calldata decode", () => {
118
+ it("[simpleSawp] swap from ERC20 to ERC20", () => {
119
+ const res = decodeCalldata(DEX_ENUM.PARASWAP, {
120
+ from: "0x7fb610713c8404e21676c01c271bb662df6eb63c",
121
+ to: "",
122
+ data: "0x54e3f31b0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000006b175474e89094c44da98b954eedeac495271d0f00000000000000000000000000000000000000000000000000000004a817c80000000000000000000000000000000000000000000000043b251cda18dc4ab30c00000000000000000000000000000000000000000000043c3aace5973840862000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec01000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000006388c6e3cb9e34238c7d43c6b749e7e45e3e7cd2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a356867fdcea8e71aeaf87805808803806231fdc0000000000000000000000000000000000000000000000000000000000000144f87dc1b7000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000006b175474e89094c44da98b954eedeac495271d0f00000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000010000000000000000000000003058ef90929cb8180174d74c507176cca6835d7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000144000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
123
+ value: "0x0",
124
+ chainId: 1,
125
+ });
126
+ const expectResult: DecodeCalldataResult = {
127
+ fromToken: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
128
+ toToken: "0x6B175474E89094C44Da98b954EedeAC495271d0F",
129
+ toTokenReceiver: "0x7fb610713c8404e21676c01c271bb662df6eb63c",
130
+ fromTokenAmount: "20000000000",
131
+ minReceiveToTokenAmount: "19980498083906505585420",
132
+ };
133
+ expect(res).toEqual(expectResult);
134
+ });
135
+
136
+ it("[simpleSawp] swap from ETH to ERC20", () => {
137
+ const res = decodeCalldata(DEX_ENUM.PARASWAP, {
138
+ from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
139
+ to: "",
140
+ data: "0x54e3f31b0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000007d1afa7b718fb893db30a3abc0cfc608aacfebb00000000000000000000000000000000000000000000000000745321598ee80000000000000000000000000000000000000000000000000278a3a0f3888dfc321000000000000000000000000000000000000000000000027bd179e175f1c100300000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000046000000000000000000000000000000000000000000000000000000000000004e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000558247e365be655f9144e1a0140d793984372ef3010000000000000000000000000000000000000000000000000000000000405f000000000000000000000000000000000000000000000000000000000000054000000000000000000000000000000000000000000000000000000000638874f88be580ae64fa477bb44c5b82d51f15a5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff00000000000000000000000000000000000000000000000000000000000001e8d0e30db0aa77476c0000000000000000000000007d1afa7b718fb893db30a3abc0cfc608aacfebb0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000028212637b9e24bf5190000000000000000000000000000000000000000000000000757cebec5fb200000000000000000000000000056178a0d5f301baf6cf3e1cd53d9863437345bf9000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee57000000000000000000000000843ffc230f59d3fb2bfbb6a41d4693eb747aa397000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000638874f801ffffffffffffffffffffffffffffffffffffff0ac0da086388749e0000002b0000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000001b1559a8625f6611e49f5e3f6290c8fe84f60e1e66676071276c28be12200a7f2e22b8b00e540ab944adff5257d45b59d708db22456275f51bf4b5f44316ddee180000000000000000000000000000000000000000000000000745321598ee800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001e800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000745321598ee800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
141
+ value: "0x0",
142
+ chainId: 1,
143
+ });
144
+ const expectResult: DecodeCalldataResult = {
145
+ fromToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
146
+ toToken: "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0",
147
+ toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
148
+ fromTokenAmount: "523880000000000000",
149
+ minReceiveToTokenAmount: "729383309136044737313",
150
+ };
151
+ expect(res).toEqual(expectResult);
152
+ });
153
+
154
+ it("[simpleSawp] swap from ERC20 to ETH", () => {
155
+ const res = decodeCalldata(DEX_ENUM.PARASWAP, {
156
+ from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
157
+ to: "",
158
+ data: "0x54e3f31b000000000000000000000000000000000000000000000000000000000000002000000000000000000000000092d6c1e31e14520e676a687f0a93788b716beff5000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000002fe03f05072b20d960000000000000000000000000000000000000000000000000104e34bb63cf134000000000000000000000000000000000000000000000000010632e9097c489c00000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004a0000000000000000000000000000000000000000000000000000000006388c836d7e7fd88cb884efc9083b3cbd38e6eea000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee570000000000000000000000000000000000000000000000000000000000000148c04b8d59000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee5700000000000000000000000000000000000000000000000000000000638881e6000000000000000000000000000000000000000000000002fe03f05072b20d960000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002b92d6c1e31e14520e676a687f0a93788b716beff5002710c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000e1829cfe000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012400000000000000000000000000000000000000000000000000000000000001480000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
159
+ value: "0x0",
160
+ chainId: 1,
161
+ });
162
+ const expectResult: DecodeCalldataResult = {
163
+ fromToken: "0x92D6C1e31e14520e676a687F0a93788B716BEff5",
164
+ toToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
165
+ toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
166
+ fromTokenAmount: "55197225686295252374",
167
+ minReceiveToTokenAmount: "73433408264270132",
168
+ };
169
+ expect(res).toEqual(expectResult);
170
+ });
171
+
172
+ it("[megaSwap] swap from ERC20 to ERC20", () => {
173
+ const res = decodeCalldata(DEX_ENUM.PARASWAP, {
174
+ from: "0x7fb610713c8404e21676c01c271bb662df6eb63c",
175
+ to: "",
176
+ data: "0x46c67b6d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000006fc23ac0000000000000000000000000000000000000000000000014954ae2bce9bb8f34400000000000000000000000000000000000000000000014afc5791a7c46266fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec01000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000e40000000000000000000000000000000000000000000000000000000006388d4da98962f95dc4e4688b7b99254babe88330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000068000000000000000000000000000000000000000000000000000000000000004b00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063888e8a000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb480001f4c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f9234cb08edb93c0d4a4d4c70cc3ffd070e78e07000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000004de561eb53ee427ab4e007d78a9134aacb3101a2dc2300000000000000000000000000000000000000000000000000000000000022600000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000853d955acef822db058eb8505911ed77f175b99e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063888e8a000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064853d955acef822db058eb8505911ed77f175b99e0000000000000000000000000000000000000000000000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f9234cb08edb93c0d4a4d4c70cc3ffd070e78e07000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000004de5e1573b9d29e2183b1af0e743dc2754979a40d23700000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000988e886b14a58dffa124230a489ad83f64008854000000000000000000000000216b4b4ba9f3e719726886d34a177484278bfcae00000000000000000000000000000000000000000000000000000006fc23ac0000000000000000000000000000000000000000000000000000000000638c74da000000000000000000000000000000000000000000000000000000000000001b68d4c2dd2e3d25487bfc8b42f41bc3ef7e49102f682fb7611eb901dd68d1fd9b2db27a175c4a87cf33c3f2e364ce0ede26a608b6498eeb120a01824ade547021",
177
+ value: "0x0",
178
+ chainId: 1,
179
+ });
180
+ const expectResult: DecodeCalldataResult = {
181
+ fromToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
182
+ toToken: "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0",
183
+ toTokenReceiver: "0x7fb610713c8404e21676c01c271bb662df6eb63c",
184
+ fromTokenAmount: "30000000000",
185
+ minReceiveToTokenAmount: "6075080662961951929156",
186
+ };
187
+ expect(res).toEqual(expectResult);
188
+ });
189
+
190
+ it("[megaSwap] swap from ETH to ERC20", () => {
191
+ const res = decodeCalldata(DEX_ENUM.PARASWAP, {
192
+ from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
193
+ to: "",
194
+ data: "0x46c67b6d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000021a6940ffb60a600a000000000000000000000000000000000000000000000a7c2ca415bc11540b78000000000000000000000000000000000000000000000a89a9a6322536b8cf1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec01000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000d40000000000000000000000000000000000000000000000000000000006388a6d6d286efd8f8d047a8bcf3122ffbf7b5210000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000023f000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004c0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000248400000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063886085000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000028c00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063886085000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000064a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000004fabb145d64652a948d72533023f6e7a623c7c5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063886085000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000644fabb145d64652a948d72533023f6e7a623c7c5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000004fabb145d64652a948d72533023f6e7a623c7c5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000638860850000000000000000000000000000000000000000000000000000000000000042c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f46b175474e89094c44da98b954eedeac495271d0f0000644fabb145d64652a948d72533023f6e7a623c7c530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
195
+ value: "0x0",
196
+ chainId: 1,
197
+ });
198
+ const expectResult: DecodeCalldataResult = {
199
+ fromToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
200
+ toToken: "0x4Fabb145d64652a948d72533023f6E7A623C7C53",
201
+ toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
202
+ fromTokenAmount: "38796611931974819850",
203
+ minReceiveToTokenAmount: "49514277813767774669688",
204
+ };
205
+ expect(res).toEqual(expectResult);
206
+ });
207
+
208
+ it("[megaSwap] swap from ERC20 to ETH", () => {
209
+ const res = decodeCalldata(DEX_ENUM.PARASWAP, {
210
+ from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
211
+ to: "",
212
+ data: "0x46c67b6d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe8400000000000000000000000000000000000000000000000036109247a153aa63000000000000000000000000000000000000000000000000353550e19ffc3d2b0000000000000000000000000000000000000000000000003579c3c7be608fcf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec01000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000740000000000000000000000000000000000000000000000000000000006388a3e7160580eb58464545b3bcf80e6c2afa680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002600000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000079359292ffd5c3307084084b5b7c3e81d733ee9800000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063885d96000000000000000000000000000000000000000000000000000000000000002b7f39c581f595b53c5cb19bd0b3f8da6c935e2ca00001f4c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
213
+ value: "0x0",
214
+ chainId: 1,
215
+ });
216
+ const expectResult: DecodeCalldataResult = {
217
+ fromToken: "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84",
218
+ toToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
219
+ toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
220
+ fromTokenAmount: "3895774514022427235",
221
+ minReceiveToTokenAmount: "3834059587757817131",
222
+ };
223
+ expect(res).toEqual(expectResult);
224
+ });
225
+
226
+ it("[multiSwap] swap from ERC20 to ERC20", () => {
227
+ const res = decodeCalldata(DEX_ENUM.PARASWAP, {
228
+ from: "0x7fb610713c8404e21676c01c271bb662df6eb63c",
229
+ to: "",
230
+ data: "0xa94e78ef0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000004fb100400000000000000000000000000000000000000000000002f9fa190b7a21f263bd0000000000000000000000000000000000000000000002fdce5458b87ebd93d700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007600000000000000000000000000000000000000000000000000000000063889507bdb92db4a163409698763a2d253cce6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063884eb6000000000000000000000000000000000000000000000000000000000000002bdac17f958d2ee523a2206206994597c13d831ec70001f4c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000006b1a8f210ec6b7b6643cea3583fb0c079f36789800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f9234cb08edb93c0d4a4d4c70cc3ffd070e78e07000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000004de591204649a5c9ab2cadfc2089fd22ed0fbfe170ed0000000000000000000000000000000000000000000000000000000000000000",
231
+ value: "0x0",
232
+ chainId: 1,
233
+ });
234
+ const expectResult: DecodeCalldataResult = {
235
+ fromToken: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
236
+ toToken: "0x6b1a8f210Ec6b7B6643cea3583Fb0c079f367898",
237
+ toTokenReceiver: "0x7fb610713c8404e21676c01c271bb662df6eb63c",
238
+ fromTokenAmount: "1337000000",
239
+ minReceiveToTokenAmount: "14055993688096051979197",
240
+ };
241
+ expect(res).toEqual(expectResult);
242
+ });
243
+
244
+ it("[multiSwap] swap from ETH to ERC20", () => {
245
+ const res = decodeCalldata(DEX_ENUM.PARASWAP, {
246
+ from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
247
+ to: "",
248
+ data: "0xa94e78ef0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000dc4f546401538000000000000000000000000000000000000000000000000446aa2ed9b0143ccec400000000000000000000000000000000000000000000044c2a651dad1ac5799d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec01000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000638875de53bbb98d926645e3ad805a406e5ed672000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000005c0000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff00000000000000000000000000000000000000000000000000000000000024b800000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000047d94c44c600000000000000000000000000000000000000000000000d15f11b5fa4488000000000000000000000000000b3c839dbde6b96d37c56ee4f9dad3390d49310aa000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee570000000000000000000000008eb634b824b2d4342108d68f8bb63d341c9cb266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000638875de00000000000000000000000000000000000000000000000000000184cd0c6b300000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000001c614dd024bd26e4106c294de92961023bba6458b5a1be487d79316378f53319db66b0bb737d5f0d968ec9d0745942d482bfd6ef9b34847f9d6f5289edefad3e340000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000063888376000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000fc2ba6e830a04c25e207b8214b26d8c713f6881f000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000a356867fdcea8e71aeaf87805808803806231fdc000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000003058ef90929cb8180174d74c507176cca6835d730000000000000000000000000000000000000000000000000000000000000000",
249
+ value: "0x0",
250
+ chainId: 1,
251
+ });
252
+ const expectResult: DecodeCalldataResult = {
253
+ fromToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
254
+ toToken: "0x6B175474E89094C44Da98b954EedeAC495271d0F",
255
+ toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
256
+ fromTokenAmount: "254000000000000000000",
257
+ minReceiveToTokenAmount: "323088015917182446529600",
258
+ };
259
+ expect(res).toEqual(expectResult);
260
+ });
261
+
262
+ it("[multiSwap] swap from ERC20 to ETH", () => {
263
+ const res = decodeCalldata(DEX_ENUM.PARASWAP, {
264
+ from: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
265
+ to: "",
266
+ data: "0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000057ab1ec28d129707052df4df418d58a2d46d5f5100000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000236528165d5156e00000000000000000000000000000000000000000000000002392b0a68eabcc700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000e4d12a78a24f63f856b7192beaacc9875d387fec010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000008200000000000000000000000000000000000000000000000000000000063882690da913b5d828049ea87c27cad1cdd1720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000005e74c9036fb86bd7ecdcb084a0673efc32ea31cb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000050000000000000000000000006317c5e82a06e1d8bf200d21f4510ac2c038ac81000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000028e598846febb750effc384853fbce82988eaaa2000000000000000000000000000000000000000000000007ce66c50e284000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000003029c3763d4b61b255b5eea5a506cb2f080487a70000000000000000000000000000000000000000000000030927f74c9de000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000006387e03f000000000000000000000000000000000000000000000000000000000000002b5e74c9036fb86bd7ecdcb084a0673efc32ea31cb0001f4c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
267
+ value: "0x0",
268
+ chainId: 1,
269
+ });
270
+ const expectResult: DecodeCalldataResult = {
271
+ fromToken: "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51",
272
+ toToken: CHAINS[CHAINS_ENUM.ETH].nativeTokenAddress,
273
+ toTokenReceiver: "0x74d9599350f1d37c805bc3a46d7d4a81232b3176",
274
+ fromTokenAmount: "200000000000000000000",
275
+ minReceiveToTokenAmount: "159405552530953582",
276
+ };
277
+ expect(res).toEqual(expectResult);
278
+ });
279
+ });
280
+
281
+ describe("openOcean calldata decode", () => {
282
+ it("swap from ERC20 to ERC20", () => {
283
+ const res = decodeCalldata(DEX_ENUM.OPENOCEAN, {
284
+ from: "0xf08c90c7f470b640a21dd9b3744eca3d1d16a044",
285
+ to: "",
286
+ data: "0x90411a3200000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c74700000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad000000000000000000000000f08c90c7f470b640a21dd9b3744eca3d1d16a044000000000000000000000000000000000000314dc6448d9338c15b0a000000000000000000000000000000000000000000000000000005fd730f430c82f5045100000000000000000000000000000000000000000000064e2845f5bc53f470550000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000046000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007e00000000000000000000000000000000000000000000000000000000000000a400000000000000000000000000000000000000000000000000000000000000b600000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ee000000000000000000000000000000000000000000000000000000000000011e000000000000000000000000000000000000000000000000000000000000014e00000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f86542200000000000000000000000055d398326f99059ff775485246999027b3197955000000000000000000000000000000010000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010457618804000000000000000000000000de49eec134fe9ab82e8d1e92215dbfa7868525490000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de055d398326f99059ff775485246999027b31979550007d060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f86542200000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000000000087000000000000000000000000000000b40000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f9900000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000016b9a82891338f9ba80e2d6970fdda79d1eb0dae0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064cac460ee00000000000000003b74a46016b9a82891338f9ba80e2d6970fdda79d1eb0dae00000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f86542200000000000000000000000055d398326f99059ff775485246999027b3197955000000000000000000000000000000090000000000000000000000000000002d0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f9900000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000009cb618bf5ef305fadfd2c8fc0c26eecf8c6d5fd0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064cac460ee00000000000000003b7c458009cb618bf5ef305fadfd2c8fc0c26eecf8c6d5fd00000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f86542200000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000000000024000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f9900000000000000000000000055d398326f99059ff775485246999027b31979550000000000000000000000008840c6252e2e86e545defb6da98b2a0e26d8c1ba0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064cac460ee00000000000000003b7c45808840c6252e2e86e545defb6da98b2a0e26d8c1ba00000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f865422000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00000000000000000000000000000001000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000104576188040000000000000000000000007aaf1f85425b1226718d6772a4c3d6d99fd8001f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de0bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00006460d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f865422000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0000000000000000000000000000001300000000000000000000000000000013000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010457618804000000000000000000000000f5167d362fcb54eb2a40ff5296e468042f3670f50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de0bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0007d060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000648a6a1e8500000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000353c1f0bc78fbbc245b3c93ef77b1dcc5b77d2a027100000000000000000000000000000000000000000064e2845f5bc53f4705500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f86542200000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c74700000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f9900000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000f08c90c7f470b640a21dd9b3744eca3d1d16a04400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
287
+ value: "0x0",
288
+ chainId: 56,
289
+ });
290
+
291
+ const expectResult: DecodeCalldataResult = {
292
+ fromToken: "0x55d398326f99059fF775485246999027B3197955",
293
+ fromTokenAmount: "1000000000000000000000000000000000",
294
+ minReceiveToTokenAmount: "28287149584156770763857",
295
+ toToken: "0x60D01EC2D5E98Ac51C8B4cF84DfCCE98D527c747",
296
+ toTokenReceiver: "0xf08c90c7f470b640a21dd9b3744eca3d1d16a044",
297
+ };
298
+ expect(res).toEqual(expectResult);
299
+ });
300
+
301
+ it("swap from NativeToken to ERC20", () => {
302
+ const res = decodeCalldata(DEX_ENUM.OPENOCEAN, {
303
+ from: "0xf08c90c7f470b640a21dd9b3744eca3d1d16a044",
304
+ to: "",
305
+ data: "0x90411a3200000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c74700000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad000000000000000000000000f08c90c7f470b640a21dd9b3744eca3d1d16a044000000000000000000000000000000000000314dc6448d9338c15b0a0000000000000000000000000000000000000000000000000000039736b55b8ae4ec90270000000000000000000000000000000000000000000003c797e752e30beb8a430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000046000000000000000000000000000000000000000000000000000000000000007600000000000000000000000000000000000000000000000000000000000000880000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000314dc6448d9338c15b0a0000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000004d0e30db000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f865422000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00000000000000000000000000000001000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000104576188040000000000000000000000007aaf1f85425b1226718d6772a4c3d6d99fd8001f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de0bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00006460d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f865422000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0000000000000000000000000000001300000000000000000000000000000013000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010457618804000000000000000000000000f5167d362fcb54eb2a40ff5296e468042f3670f50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de0bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0007d060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000648a6a1e8500000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000353c1f0bc78fbbc245b3c93ef77b1dcc5b77d2a02710000000000000000000000000000000000000000003c797e752e30beb8a4300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f86542200000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c74700000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f9900000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000f08c90c7f470b640a21dd9b3744eca3d1d16a04400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
306
+ value: "0x314dc6448d933800000000000000",
307
+ chainId: 56,
308
+ });
309
+
310
+ const expectResult: DecodeCalldataResult = {
311
+ fromToken: CHAINS[CHAINS_ENUM.BSC].nativeTokenAddress,
312
+ fromTokenAmount: "1000000000000000000000000000000000",
313
+ minReceiveToTokenAmount: "16956499961440014995495",
314
+ toToken: "0x60D01EC2D5E98Ac51C8B4cF84DfCCE98D527c747",
315
+ toTokenReceiver: "0xf08c90c7f470b640a21dd9b3744eca3d1d16a044",
316
+ };
317
+ expect(res).toEqual(expectResult);
318
+ });
319
+
320
+ it("swap from ERC20 to NativeToken", () => {
321
+ const res = decodeCalldata(DEX_ENUM.OPENOCEAN, {
322
+ from: "0xf08c90c7f470b640a21dd9b3744eca3d1d16a044",
323
+ to: "",
324
+ data: "0x90411a3200000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad000000000000000000000000f08c90c7f470b640a21dd9b3744eca3d1d16a044000000000000000000000000000000000000314dc6448d9338c15b0a00000000000000000000000000000000000000000000000000000000017d8097dde91a0e000000000000000000000000000000000000000000000000019194d5c12b43d80000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000de00000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000146000000000000000000000000000000000000000000000000000000000000015800000000000000000000000000000000000000000000000000000000000001a200000000000000000000000000000000000000000000000000000000000001d200000000000000000000000000000000000000000000000000000000000001e4000000000000000000000000000000000000000000000000000000000000022e00000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f86542200000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000000000010000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010457618804000000000000000000000000de49eec134fe9ab82e8d1e92215dbfa7868525490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de060d01ec2d5e98ac51c8b4cf84dfcce98d527c7470007d055d398326f99059ff775485246999027b3197955000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003e451a7431600000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f9900000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000059de3b49314bf5067719364a2cb43e8525ab93fa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000059de3b49314bf5067719364a2cb43e8525ab93fa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c47dc2038200000000000000000000000055d398326f99059ff775485246999027b3197955000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad000000000000000000000000353c1f0bc78fbbc245b3c93ef77b1dcc5b77d2a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001649f865422000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c000000000000000000000000000000010000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000004000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000242e1a7d4d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f86542200000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c74700000000000000000000000000000098000000000000000000000000000000b40000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f9900000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000c0155abc2cdfd3b041cc3ed103a1fb40fe8347390000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064cac460ee00000000000000003b74a460c0155abc2cdfd3b041cc3ed103a1fb40fe83473900000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c74700000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f86542200000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000000000000000000000000000000080000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000104576188040000000000000000000000008a8d11ece5225c03df3a71a844fd490824a1b3d60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000190bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f865422000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f99000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0000000000000000000000004b56ee85949164519bba2e454269de156930a4c80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064cac460ee80000000000000003b6d03404b56ee85949164519bba2e454269de156930a4c8000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003e451a743160000000000000000000000008ac76a51cc950d9822d68b83fe1ad97b32cd580d00000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064eb5625d90000000000000000000000008ac76a51cc950d9822d68b83fe1ad97b32cd580d0000000000000000000000002ef6ced7713c4c8e60690cb5d5180a38951cee820000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000002ef6ced7713c4c8e60690cb5d5180a38951cee8200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c4e331d0390000000000000000000000008ac76a51cc950d9822d68b83fe1ad97b32cd580d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f86542200000000000000000000000060d01ec2d5e98ac51c8b4cf84dfcce98d527c74700000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000104576188040000000000000000000000001968fcbc9738a26df18f423f503c4557c953ae66000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000ed8e0a2d99643e1e65cca22ed4424090b8b745800000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003fd7de110bd452aab96608ac3750c3730a17993de060d01ec2d5e98ac51c8b4cf84dfcce98d527c747000064e9e7cea3dedca5984780bafc599bd69add087d5600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064cac460ee80000000000000003b7c45800ed8e0a2d99643e1e65cca22ed4424090b8b7458000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d5600000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003e451a743160000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce8200000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064eb5625d90000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce8200000000000000000000000037f56df34529edfba81e270003b599df0ff94f3c00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000037f56df34529edfba81e270003b599df0ff94f3c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c4e331d0390000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce82000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023ebcd701fd92867235aeb0174b7c444b9b2b3ad0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000648a6a1e85000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000353c1f0bc78fbbc245b3c93ef77b1dcc5b77d2a0271000000000000000000000000000000000000000000000019194d5c12b43d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f865422000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f99000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000f08c90c7f470b640a21dd9b3744eca3d1d16a04400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
325
+ value: "0x0",
326
+ chainId: 56,
327
+ });
328
+
329
+ const expectResult: DecodeCalldataResult = {
330
+ fromToken: "0x60D01EC2D5E98Ac51C8B4cF84DfCCE98D527c747",
331
+ fromTokenAmount: "1000000000000000000000000000000000",
332
+ minReceiveToTokenAmount: "107383355878218254",
333
+ toToken: CHAINS[CHAINS_ENUM.BSC].nativeTokenAddress,
334
+ toTokenReceiver: "0xf08c90c7f470b640a21dd9b3744eca3d1d16a044",
335
+ };
336
+ expect(res).toEqual(expectResult);
337
+ });
338
+ });