@rabby-wallet/rabby-swap 0.0.3 → 0.0.4

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.
@@ -0,0 +1,279 @@
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
+ })
package/dist/abi.d.ts ADDED
@@ -0,0 +1,106 @@
1
+ export declare const OneInchABI: {
2
+ inputs: ({
3
+ internalType: string;
4
+ name: string;
5
+ type: string;
6
+ components?: undefined;
7
+ } | {
8
+ components: {
9
+ internalType: string;
10
+ name: string;
11
+ type: string;
12
+ }[];
13
+ internalType: string;
14
+ name: string;
15
+ type: string;
16
+ })[];
17
+ name: string;
18
+ outputs: {
19
+ internalType: string;
20
+ name: string;
21
+ type: string;
22
+ }[];
23
+ stateMutability: string;
24
+ type: string;
25
+ }[];
26
+ export declare const ZeroXABI: {
27
+ inputs: ({
28
+ name: string;
29
+ type: string;
30
+ components?: undefined;
31
+ } | {
32
+ name: string;
33
+ type: string;
34
+ components: {
35
+ name: string;
36
+ type: string;
37
+ }[];
38
+ })[];
39
+ name: string;
40
+ outputs: {
41
+ name: string;
42
+ type: string;
43
+ }[];
44
+ stateMutability: string;
45
+ type: string;
46
+ }[];
47
+ export declare const ParaSwapABI: {
48
+ inputs: {
49
+ components: ({
50
+ internalType: string;
51
+ name: string;
52
+ type: string;
53
+ components?: undefined;
54
+ } | {
55
+ components: ({
56
+ internalType: string;
57
+ name: string;
58
+ type: string;
59
+ components?: undefined;
60
+ } | {
61
+ components: ({
62
+ internalType: string;
63
+ name: string;
64
+ type: string;
65
+ components?: undefined;
66
+ } | {
67
+ components: ({
68
+ internalType: string;
69
+ name: string;
70
+ type: string;
71
+ components?: undefined;
72
+ } | {
73
+ components: {
74
+ internalType: string;
75
+ name: string;
76
+ type: string;
77
+ }[];
78
+ internalType: string;
79
+ name: string;
80
+ type: string;
81
+ })[];
82
+ internalType: string;
83
+ name: string;
84
+ type: string;
85
+ })[];
86
+ internalType: string;
87
+ name: string;
88
+ type: string;
89
+ })[];
90
+ internalType: string;
91
+ name: string;
92
+ type: string;
93
+ })[];
94
+ internalType: string;
95
+ name: string;
96
+ type: string;
97
+ }[];
98
+ name: string;
99
+ outputs: {
100
+ internalType: string;
101
+ name: string;
102
+ type: string;
103
+ }[];
104
+ stateMutability: string;
105
+ type: string;
106
+ }[];