@paraswap/dex-lib 2.17.0 → 2.17.1-pancakeswapv3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/abi/pancakeswap-v3/PancakeV3StateMulticall.abi.json +781 -0
- package/build/abi/pancakeswap-v3/PancakeswapV3Pool.abi.json +1039 -0
- package/build/abi/pancakeswap-v3/PancakeswapV3Quoter.abi.json +285 -0
- package/build/abi/pancakeswap-v3/PancakeswapV3Router.abi.json +583 -0
- package/build/dex/balancer-v2/balancer-v2.js +8 -6
- package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
- package/build/dex/balancer-v2/config.js.map +1 -1
- package/build/dex/balancer-v2/pools/linear/LinearMath.js.map +1 -1
- package/build/dex/balancer-v2/pools/linear/LinearPool.js.map +1 -1
- package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.js.map +1 -1
- package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.js.map +1 -1
- package/build/dex/balancer-v2/pools/stable/StableMath.js +0 -1
- package/build/dex/balancer-v2/pools/stable/StableMath.js.map +1 -1
- package/build/dex/balancer-v2/pools/stable/StablePool.js +2 -1
- package/build/dex/balancer-v2/pools/stable/StablePool.js.map +1 -1
- package/build/dex/balancer-v2/pools/weighted/WeightedPool.js.map +1 -1
- package/build/dex/index.js +1 -1
- package/build/dex/index.js.map +1 -1
- package/build/dex/pancakeswap-v3/config.d.ts +4 -0
- package/build/dex/pancakeswap-v3/config.js +62 -0
- package/build/dex/pancakeswap-v3/config.js.map +1 -0
- package/build/dex/pancakeswap-v3/constants.d.ts +23 -0
- package/build/dex/pancakeswap-v3/constants.js +29 -0
- package/build/dex/pancakeswap-v3/constants.js.map +1 -0
- package/build/dex/pancakeswap-v3/contract-math/BitMath.d.ts +4 -0
- package/build/dex/pancakeswap-v3/contract-math/BitMath.js +93 -0
- package/build/dex/pancakeswap-v3/contract-math/BitMath.js.map +1 -0
- package/build/dex/pancakeswap-v3/contract-math/FixedPoint128.d.ts +3 -0
- package/build/dex/pancakeswap-v3/contract-math/FixedPoint128.js +8 -0
- package/build/dex/pancakeswap-v3/contract-math/FixedPoint128.js.map +1 -0
- package/build/dex/pancakeswap-v3/contract-math/FixedPoint96.d.ts +4 -0
- package/build/dex/pancakeswap-v3/contract-math/FixedPoint96.js +9 -0
- package/build/dex/pancakeswap-v3/contract-math/FixedPoint96.js.map +1 -0
- package/build/dex/pancakeswap-v3/contract-math/FullMath.d.ts +4 -0
- package/build/dex/pancakeswap-v3/contract-math/FullMath.js +19 -0
- package/build/dex/pancakeswap-v3/contract-math/FullMath.js.map +1 -0
- package/build/dex/pancakeswap-v3/contract-math/LiquidityMath.d.ts +3 -0
- package/build/dex/pancakeswap-v3/contract-math/LiquidityMath.js +22 -0
- package/build/dex/pancakeswap-v3/contract-math/LiquidityMath.js.map +1 -0
- package/build/dex/pancakeswap-v3/contract-math/Oracle.d.ts +10 -0
- package/build/dex/pancakeswap-v3/contract-math/Oracle.js +133 -0
- package/build/dex/pancakeswap-v3/contract-math/Oracle.js.map +1 -0
- package/build/dex/pancakeswap-v3/contract-math/SqrtPriceMath.d.ts +10 -0
- package/build/dex/pancakeswap-v3/contract-math/SqrtPriceMath.js +91 -0
- package/build/dex/pancakeswap-v3/contract-math/SqrtPriceMath.js.map +1 -0
- package/build/dex/pancakeswap-v3/contract-math/SwapMath.d.ts +8 -0
- package/build/dex/pancakeswap-v3/contract-math/SwapMath.js +70 -0
- package/build/dex/pancakeswap-v3/contract-math/SwapMath.js.map +1 -0
- package/build/dex/pancakeswap-v3/contract-math/Tick.d.ts +7 -0
- package/build/dex/pancakeswap-v3/contract-math/Tick.js +45 -0
- package/build/dex/pancakeswap-v3/contract-math/Tick.js.map +1 -0
- package/build/dex/pancakeswap-v3/contract-math/TickBitMap.d.ts +8 -0
- package/build/dex/pancakeswap-v3/contract-math/TickBitMap.js +87 -0
- package/build/dex/pancakeswap-v3/contract-math/TickBitMap.js.map +1 -0
- package/build/dex/pancakeswap-v3/contract-math/TickMath.d.ts +8 -0
- package/build/dex/pancakeswap-v3/contract-math/TickMath.js +162 -0
- package/build/dex/pancakeswap-v3/contract-math/TickMath.js.map +1 -0
- package/build/dex/pancakeswap-v3/contract-math/UnsafeMath.d.ts +3 -0
- package/build/dex/pancakeswap-v3/contract-math/UnsafeMath.js +10 -0
- package/build/dex/pancakeswap-v3/contract-math/UnsafeMath.js.map +1 -0
- package/build/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.d.ts +18 -0
- package/build/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.js +407 -0
- package/build/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.js.map +1 -0
- package/build/dex/pancakeswap-v3/contract-math/utils.d.ts +3 -0
- package/build/dex/pancakeswap-v3/contract-math/utils.js +16 -0
- package/build/dex/pancakeswap-v3/contract-math/utils.js.map +1 -0
- package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.d.ts +45 -0
- package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.js +340 -0
- package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.js.map +1 -0
- package/build/dex/pancakeswap-v3/pancakeswap-v3.d.ts +55 -0
- package/build/dex/pancakeswap-v3/pancakeswap-v3.js +605 -0
- package/build/dex/pancakeswap-v3/pancakeswap-v3.js.map +1 -0
- package/build/dex/pancakeswap-v3/types.d.ts +14 -0
- package/build/dex/pancakeswap-v3/types.js +3 -0
- package/build/dex/pancakeswap-v3/types.js.map +1 -0
- package/build/dex/pancakeswap-v3/utils.d.ts +4 -0
- package/build/dex/pancakeswap-v3/utils.js +57 -0
- package/build/dex/pancakeswap-v3/utils.js.map +1 -0
- package/build/dex/uniswap-v3/config.js +4 -32
- package/build/dex/uniswap-v3/config.js.map +1 -1
- package/build/dex/uniswap-v3/uniswap-v3-pool.d.ts +1 -2
- package/build/dex/uniswap-v3/uniswap-v3-pool.js +2 -3
- package/build/dex/uniswap-v3/uniswap-v3-pool.js.map +1 -1
- package/build/dex/uniswap-v3/uniswap-v3.js +15 -11
- package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
- package/package.json +1 -1
- package/src/abi/pancakeswap-v3/PancakeV3StateMulticall.abi.json +781 -0
- package/src/abi/pancakeswap-v3/PancakeswapV3Pool.abi.json +1039 -0
- package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +13 -19
- package/src/dex/balancer-v2/balancer-v2-integration.test.ts +47 -36
- package/src/dex/balancer-v2/balancer-v2.ts +46 -24
- package/src/dex/balancer-v2/config.ts +1 -1
- package/src/dex/balancer-v2/pools/linear/LinearMath.ts +2 -2
- package/src/dex/balancer-v2/pools/linear/LinearPool.ts +1 -1
- package/src/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.ts +19 -19
- package/src/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.ts +0 -1
- package/src/dex/balancer-v2/pools/stable/StableMath.ts +13 -14
- package/src/dex/balancer-v2/pools/stable/StablePool.ts +4 -2
- package/src/dex/balancer-v2/pools/weighted/WeightedPool.ts +0 -1
- package/src/dex/index.ts +1 -1
- package/src/dex/pancakeswap-v3/config.ts +68 -0
- package/src/dex/pancakeswap-v3/constants.ts +35 -0
- package/src/dex/pancakeswap-v3/contract-math/BitMath.ts +90 -0
- package/src/dex/pancakeswap-v3/contract-math/FixedPoint128.ts +3 -0
- package/src/dex/pancakeswap-v3/contract-math/FixedPoint96.ts +4 -0
- package/src/dex/pancakeswap-v3/contract-math/FullMath.ts +30 -0
- package/src/dex/pancakeswap-v3/contract-math/LiquidityMath.ts +17 -0
- package/src/dex/pancakeswap-v3/contract-math/Oracle.ts +226 -0
- package/src/dex/pancakeswap-v3/contract-math/SqrtPriceMath.ts +226 -0
- package/src/dex/pancakeswap-v3/contract-math/SwapMath.ts +139 -0
- package/src/dex/pancakeswap-v3/contract-math/Tick.ts +82 -0
- package/src/dex/pancakeswap-v3/contract-math/TickBitMap.ts +128 -0
- package/src/dex/pancakeswap-v3/contract-math/TickMath.ts +211 -0
- package/src/dex/pancakeswap-v3/contract-math/UnsafeMath.ts +5 -0
- package/src/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.ts +691 -0
- package/src/dex/pancakeswap-v3/contract-math/utils.ts +11 -0
- package/src/dex/pancakeswap-v3/pancakeswap-v3-e2e.test.ts +235 -0
- package/src/dex/pancakeswap-v3/pancakeswap-v3-events.test.ts +124 -0
- package/src/dex/pancakeswap-v3/pancakeswap-v3-integration.test.ts +540 -0
- package/src/dex/pancakeswap-v3/pancakeswap-v3-pool.ts +554 -0
- package/src/dex/pancakeswap-v3/pancakeswap-v3.ts +1000 -0
- package/src/dex/pancakeswap-v3/utils.ts +68 -0
- package/src/dex/uniswap-v3/config.ts +4 -36
- package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +0 -156
- package/src/dex/uniswap-v3/uniswap-v3-events.test.ts +4 -0
- package/src/dex/uniswap-v3/uniswap-v3-pool.ts +1 -2
- package/src/dex/uniswap-v3/uniswap-v3.ts +8 -5
- package/tests/constants-e2e.ts +1 -1
- package/src/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.ts +0 -28
- /package/src/abi/{uniswap-v3/pancakeswap-v3/PancakeswapV3QuoterV2.abi.json → pancakeswap-v3/PancakeswapV3Quoter.abi.json} +0 -0
- /package/src/abi/{uniswap-v3/pancakeswap-v3 → pancakeswap-v3}/PancakeswapV3Router.abi.json +0 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { BytesLike, ethers } from 'ethers';
|
|
2
|
+
import { assert } from 'ts-essentials';
|
|
3
|
+
import { extractSuccessAndValue } from '../../lib/decoders';
|
|
4
|
+
import { MultiResult } from '../../lib/multi-wrapper';
|
|
5
|
+
import {
|
|
6
|
+
DecodedStateMultiCallResultWithRelativeBitmaps,
|
|
7
|
+
} from '../uniswap-v3/types';
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
export function decodeStateMultiCallResultWithRelativeBitmaps(
|
|
11
|
+
result: MultiResult<BytesLike> | BytesLike,
|
|
12
|
+
): DecodedStateMultiCallResultWithRelativeBitmaps {
|
|
13
|
+
const [isSuccess, toDecode] = extractSuccessAndValue(result);
|
|
14
|
+
|
|
15
|
+
assert(
|
|
16
|
+
isSuccess && toDecode !== '0x',
|
|
17
|
+
`decodeStateMultiCallResultWithRelativeBitmaps failed to get decodable result: ${result}`,
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
const decoded = ethers.utils.defaultAbiCoder.decode(
|
|
21
|
+
[
|
|
22
|
+
// I don't want to pass here any interface, so I just use it in ethers format
|
|
23
|
+
`
|
|
24
|
+
tuple(
|
|
25
|
+
address pool,
|
|
26
|
+
uint256 blockTimestamp,
|
|
27
|
+
tuple(
|
|
28
|
+
uint160 sqrtPriceX96,
|
|
29
|
+
int24 tick,
|
|
30
|
+
uint16 observationIndex,
|
|
31
|
+
uint16 observationCardinality,
|
|
32
|
+
uint16 observationCardinalityNext,
|
|
33
|
+
uint32 feeProtocol,
|
|
34
|
+
bool unlocked,
|
|
35
|
+
) slot0,
|
|
36
|
+
uint128 liquidity,
|
|
37
|
+
int24 tickSpacing,
|
|
38
|
+
uint128 maxLiquidityPerTick,
|
|
39
|
+
tuple(
|
|
40
|
+
uint32 blockTimestamp,
|
|
41
|
+
int56 tickCumulative,
|
|
42
|
+
uint160 secondsPerLiquidityCumulativeX128,
|
|
43
|
+
bool initialized,
|
|
44
|
+
) observation,
|
|
45
|
+
tuple(
|
|
46
|
+
int16 index,
|
|
47
|
+
uint256 value,
|
|
48
|
+
)[] tickBitmap,
|
|
49
|
+
tuple(
|
|
50
|
+
int24 index,
|
|
51
|
+
tuple(
|
|
52
|
+
uint128 liquidityGross,
|
|
53
|
+
int128 liquidityNet,
|
|
54
|
+
int56 tickCumulativeOutside,
|
|
55
|
+
uint160 secondsPerLiquidityOutsideX128,
|
|
56
|
+
uint32 secondsOutside,
|
|
57
|
+
bool initialized,
|
|
58
|
+
) value,
|
|
59
|
+
)[] ticks
|
|
60
|
+
)
|
|
61
|
+
`,
|
|
62
|
+
],
|
|
63
|
+
toDecode,
|
|
64
|
+
)[0];
|
|
65
|
+
// This conversion is not precise, because when we decode, we have more values
|
|
66
|
+
// But I typed only the ones that are used later
|
|
67
|
+
return decoded as DecodedStateMultiCallResultWithRelativeBitmaps;
|
|
68
|
+
}
|
|
@@ -4,7 +4,6 @@ import { Network, SwapSide } from '../../constants';
|
|
|
4
4
|
import { Address } from '../../types';
|
|
5
5
|
|
|
6
6
|
const SUPPORTED_FEES = [10000n, 3000n, 500n, 100n];
|
|
7
|
-
const PANCAKE_SUPPORTED_FEES = [10000n, 2500n, 500n, 100n];
|
|
8
7
|
|
|
9
8
|
// Pools that will be initialized on app startup
|
|
10
9
|
// They are added for testing
|
|
@@ -23,14 +22,13 @@ export const PoolsToPreload: DexConfigMap<
|
|
|
23
22
|
},
|
|
24
23
|
],
|
|
25
24
|
},
|
|
26
|
-
PancakeswapV3: {},
|
|
27
25
|
};
|
|
28
26
|
|
|
29
27
|
export const UniswapV3Config: DexConfigMap<DexParams> = {
|
|
30
28
|
UniswapV3: {
|
|
31
29
|
[Network.MAINNET]: {
|
|
32
30
|
factory: '0x1F98431c8aD98523631AE4a59f267346ea31F984',
|
|
33
|
-
quoter: '
|
|
31
|
+
quoter: '0x61fFE014bA17989E743c5F6cB21bF9697530B21e',
|
|
34
32
|
router: '0xE592427A0AEce92De3Edee1F18E0157C05861564',
|
|
35
33
|
supportedFees: SUPPORTED_FEES,
|
|
36
34
|
stateMulticall: '0x9c764D2e92dA68E4CDfD784B902283A095ff8b63',
|
|
@@ -53,7 +51,7 @@ export const UniswapV3Config: DexConfigMap<DexParams> = {
|
|
|
53
51
|
},
|
|
54
52
|
[Network.POLYGON]: {
|
|
55
53
|
factory: '0x1F98431c8aD98523631AE4a59f267346ea31F984',
|
|
56
|
-
quoter: '
|
|
54
|
+
quoter: '0x61fFE014bA17989E743c5F6cB21bF9697530B21e',
|
|
57
55
|
router: '0xE592427A0AEce92De3Edee1F18E0157C05861564',
|
|
58
56
|
supportedFees: SUPPORTED_FEES,
|
|
59
57
|
stateMulticall: '0x6Dc993Fe1e945A640576B4Dca81281d8e998DF71',
|
|
@@ -65,7 +63,7 @@ export const UniswapV3Config: DexConfigMap<DexParams> = {
|
|
|
65
63
|
},
|
|
66
64
|
[Network.ARBITRUM]: {
|
|
67
65
|
factory: '0x1F98431c8aD98523631AE4a59f267346ea31F984',
|
|
68
|
-
quoter: '
|
|
66
|
+
quoter: '0x61fFE014bA17989E743c5F6cB21bF9697530B21e',
|
|
69
67
|
router: '0xE592427A0AEce92De3Edee1F18E0157C05861564',
|
|
70
68
|
supportedFees: SUPPORTED_FEES,
|
|
71
69
|
stateMulticall: '0xaBB58098A7B5172A9b0B38a1925A522dbf0b4FC3',
|
|
@@ -77,7 +75,7 @@ export const UniswapV3Config: DexConfigMap<DexParams> = {
|
|
|
77
75
|
},
|
|
78
76
|
[Network.OPTIMISM]: {
|
|
79
77
|
factory: '0x1F98431c8aD98523631AE4a59f267346ea31F984',
|
|
80
|
-
quoter: '
|
|
78
|
+
quoter: '0x61fFE014bA17989E743c5F6cB21bF9697530B21e',
|
|
81
79
|
router: '0xE592427A0AEce92De3Edee1F18E0157C05861564',
|
|
82
80
|
supportedFees: SUPPORTED_FEES,
|
|
83
81
|
stateMulticall: '0x4FF0dEC5f9a763Aa1E5C2a962aa6f4eDFeE4f9eA',
|
|
@@ -88,36 +86,6 @@ export const UniswapV3Config: DexConfigMap<DexParams> = {
|
|
|
88
86
|
'https://api.thegraph.com/subgraphs/name/ianlapham/optimism-post-regenesis',
|
|
89
87
|
},
|
|
90
88
|
},
|
|
91
|
-
PancakeswapV3: {
|
|
92
|
-
[Network.MAINNET]: {
|
|
93
|
-
factory: '0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865',
|
|
94
|
-
deployer: '0x41ff9AA7e16B8B1a8a8dc4f0eFacd93D02d071c9',
|
|
95
|
-
quoter: '0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997',
|
|
96
|
-
router: '0x1b81D678ffb9C0263b24A97847620C99d213eB14',
|
|
97
|
-
supportedFees: PANCAKE_SUPPORTED_FEES,
|
|
98
|
-
stateMulticall: '0x80898f80cFA3Fa3AbF410d90e69aDc432AE5D4c2',
|
|
99
|
-
uniswapMulticall: '0xac1cE734566f390A94b00eb9bf561c2625BF44ea',
|
|
100
|
-
chunksCount: 10,
|
|
101
|
-
initHash:
|
|
102
|
-
'0x6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e2',
|
|
103
|
-
subgraphURL:
|
|
104
|
-
'https://api.thegraph.com/subgraphs/name/pancakeswap/exchange-v3-eth',
|
|
105
|
-
},
|
|
106
|
-
[Network.BSC]: {
|
|
107
|
-
factory: '0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865',
|
|
108
|
-
deployer: '0x41ff9AA7e16B8B1a8a8dc4f0eFacd93D02d071c9',
|
|
109
|
-
quoter: '0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997',
|
|
110
|
-
router: '0x1b81D678ffb9C0263b24A97847620C99d213eB14',
|
|
111
|
-
supportedFees: PANCAKE_SUPPORTED_FEES,
|
|
112
|
-
stateMulticall: '0x9DAd2ED7ADc6eaacf81589Cd043579c9684E5C81',
|
|
113
|
-
uniswapMulticall: '0xac1cE734566f390A94b00eb9bf561c2625BF44ea',
|
|
114
|
-
chunksCount: 10,
|
|
115
|
-
initHash:
|
|
116
|
-
'0x6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e2',
|
|
117
|
-
subgraphURL:
|
|
118
|
-
'https://api.thegraph.com/subgraphs/name/pancakeswap/exchange-v3-bsc',
|
|
119
|
-
},
|
|
120
|
-
},
|
|
121
89
|
};
|
|
122
90
|
|
|
123
91
|
export const Adapters: Record<number, AdapterMappings> = {
|
|
@@ -203,159 +203,3 @@ describe('UniswapV3 E2E', () => {
|
|
|
203
203
|
);
|
|
204
204
|
});
|
|
205
205
|
});
|
|
206
|
-
|
|
207
|
-
describe('PancakeswapV3 E2E', () => {
|
|
208
|
-
const dexKey = 'PancakeswapV3';
|
|
209
|
-
|
|
210
|
-
describe('PancakeswapV3 MAINNET', () => {
|
|
211
|
-
const network = Network.MAINNET;
|
|
212
|
-
const tokens = Tokens[network];
|
|
213
|
-
const holders = Holders[network];
|
|
214
|
-
const provider = new StaticJsonRpcProvider(
|
|
215
|
-
generateConfig(network).privateHttpProvider,
|
|
216
|
-
network,
|
|
217
|
-
);
|
|
218
|
-
|
|
219
|
-
const tokenASymbol: string = 'USDT';
|
|
220
|
-
const tokenBSymbol: string = 'USDC';
|
|
221
|
-
const nativeTokenSymbol = NativeTokenSymbols[network];
|
|
222
|
-
|
|
223
|
-
const tokenAAmount: string = '100000000';
|
|
224
|
-
const tokenBAmount: string = '100000000';
|
|
225
|
-
const nativeTokenAmount = '1000000000000000000';
|
|
226
|
-
|
|
227
|
-
const sideToContractMethods = new Map([
|
|
228
|
-
[
|
|
229
|
-
SwapSide.SELL,
|
|
230
|
-
[
|
|
231
|
-
ContractMethod.simpleSwap,
|
|
232
|
-
ContractMethod.multiSwap,
|
|
233
|
-
ContractMethod.megaSwap,
|
|
234
|
-
],
|
|
235
|
-
],
|
|
236
|
-
[SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
|
|
237
|
-
]);
|
|
238
|
-
|
|
239
|
-
sideToContractMethods.forEach((contractMethods, side) =>
|
|
240
|
-
contractMethods.forEach((contractMethod: ContractMethod) => {
|
|
241
|
-
describe(`${contractMethod}`, () => {
|
|
242
|
-
it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
|
|
243
|
-
await testE2E(
|
|
244
|
-
tokens[nativeTokenSymbol],
|
|
245
|
-
tokens[tokenASymbol],
|
|
246
|
-
holders[nativeTokenSymbol],
|
|
247
|
-
side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
|
|
248
|
-
side,
|
|
249
|
-
dexKey,
|
|
250
|
-
contractMethod,
|
|
251
|
-
network,
|
|
252
|
-
provider,
|
|
253
|
-
);
|
|
254
|
-
});
|
|
255
|
-
it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
|
|
256
|
-
await testE2E(
|
|
257
|
-
tokens[tokenASymbol],
|
|
258
|
-
tokens[nativeTokenSymbol],
|
|
259
|
-
holders[tokenASymbol],
|
|
260
|
-
side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
|
|
261
|
-
side,
|
|
262
|
-
dexKey,
|
|
263
|
-
contractMethod,
|
|
264
|
-
network,
|
|
265
|
-
provider,
|
|
266
|
-
);
|
|
267
|
-
});
|
|
268
|
-
it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
|
|
269
|
-
await testE2E(
|
|
270
|
-
tokens[tokenASymbol],
|
|
271
|
-
tokens[tokenBSymbol],
|
|
272
|
-
holders[tokenASymbol],
|
|
273
|
-
side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
|
|
274
|
-
side,
|
|
275
|
-
dexKey,
|
|
276
|
-
contractMethod,
|
|
277
|
-
network,
|
|
278
|
-
provider,
|
|
279
|
-
);
|
|
280
|
-
});
|
|
281
|
-
});
|
|
282
|
-
}),
|
|
283
|
-
);
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
describe('PancakeswapV3 BSC', () => {
|
|
287
|
-
const network = Network.BSC;
|
|
288
|
-
const tokens = Tokens[network];
|
|
289
|
-
const holders = Holders[network];
|
|
290
|
-
const provider = new StaticJsonRpcProvider(
|
|
291
|
-
generateConfig(network).privateHttpProvider,
|
|
292
|
-
network,
|
|
293
|
-
);
|
|
294
|
-
|
|
295
|
-
const tokenASymbol: string = 'BUSD';
|
|
296
|
-
const tokenBSymbol: string = 'WBNB';
|
|
297
|
-
const nativeTokenSymbol = NativeTokenSymbols[network];
|
|
298
|
-
|
|
299
|
-
const tokenAAmount: string = '100000000000000000000';
|
|
300
|
-
const tokenBAmount: string = '1000000000000000000';
|
|
301
|
-
const nativeTokenAmount = '1000000000000000000';
|
|
302
|
-
|
|
303
|
-
const sideToContractMethods = new Map([
|
|
304
|
-
[
|
|
305
|
-
SwapSide.SELL,
|
|
306
|
-
[
|
|
307
|
-
ContractMethod.simpleSwap,
|
|
308
|
-
ContractMethod.multiSwap,
|
|
309
|
-
ContractMethod.megaSwap,
|
|
310
|
-
],
|
|
311
|
-
],
|
|
312
|
-
[SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
|
|
313
|
-
]);
|
|
314
|
-
|
|
315
|
-
sideToContractMethods.forEach((contractMethods, side) =>
|
|
316
|
-
contractMethods.forEach((contractMethod: ContractMethod) => {
|
|
317
|
-
describe(`${contractMethod}`, () => {
|
|
318
|
-
it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
|
|
319
|
-
await testE2E(
|
|
320
|
-
tokens[nativeTokenSymbol],
|
|
321
|
-
tokens[tokenASymbol],
|
|
322
|
-
holders[nativeTokenSymbol],
|
|
323
|
-
side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
|
|
324
|
-
side,
|
|
325
|
-
dexKey,
|
|
326
|
-
contractMethod,
|
|
327
|
-
network,
|
|
328
|
-
provider,
|
|
329
|
-
);
|
|
330
|
-
});
|
|
331
|
-
it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
|
|
332
|
-
await testE2E(
|
|
333
|
-
tokens[tokenASymbol],
|
|
334
|
-
tokens[nativeTokenSymbol],
|
|
335
|
-
holders[tokenASymbol],
|
|
336
|
-
side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
|
|
337
|
-
side,
|
|
338
|
-
dexKey,
|
|
339
|
-
contractMethod,
|
|
340
|
-
network,
|
|
341
|
-
provider,
|
|
342
|
-
);
|
|
343
|
-
});
|
|
344
|
-
it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
|
|
345
|
-
await testE2E(
|
|
346
|
-
tokens[tokenASymbol],
|
|
347
|
-
tokens[tokenBSymbol],
|
|
348
|
-
holders[tokenASymbol],
|
|
349
|
-
side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
|
|
350
|
-
side,
|
|
351
|
-
dexKey,
|
|
352
|
-
contractMethod,
|
|
353
|
-
network,
|
|
354
|
-
provider,
|
|
355
|
-
);
|
|
356
|
-
});
|
|
357
|
-
});
|
|
358
|
-
}),
|
|
359
|
-
);
|
|
360
|
-
});
|
|
361
|
-
});
|
|
@@ -106,6 +106,8 @@ describe('UniswapV3 Event', function () {
|
|
|
106
106
|
token0,
|
|
107
107
|
token1,
|
|
108
108
|
logger,
|
|
109
|
+
undefined,
|
|
110
|
+
config.initHash,
|
|
109
111
|
);
|
|
110
112
|
|
|
111
113
|
// It is done in generateState. But here have to make it manually
|
|
@@ -159,6 +161,8 @@ describe('UniswapV3 Event', function () {
|
|
|
159
161
|
_token0,
|
|
160
162
|
_token1,
|
|
161
163
|
logger,
|
|
164
|
+
undefined,
|
|
165
|
+
config.initHash,
|
|
162
166
|
);
|
|
163
167
|
|
|
164
168
|
// It is done in generateState. But here have to make it manually
|
|
@@ -69,7 +69,6 @@ export class UniswapV3EventPool extends StatefulEventSubscriber<PoolState> {
|
|
|
69
69
|
logger: Logger,
|
|
70
70
|
mapKey: string = '',
|
|
71
71
|
readonly poolInitCodeHash: string,
|
|
72
|
-
readonly poolDeployer?: string,
|
|
73
72
|
) {
|
|
74
73
|
super(
|
|
75
74
|
parentName,
|
|
@@ -539,7 +538,7 @@ export class UniswapV3EventPool extends StatefulEventSubscriber<PoolState> {
|
|
|
539
538
|
);
|
|
540
539
|
|
|
541
540
|
return ethers.utils.getCreate2Address(
|
|
542
|
-
this.
|
|
541
|
+
this.factoryAddress,
|
|
543
542
|
encodedKey,
|
|
544
543
|
this.poolInitCodeHash,
|
|
545
544
|
);
|
|
@@ -214,7 +214,6 @@ export class UniswapV3
|
|
|
214
214
|
this.logger,
|
|
215
215
|
this.cacheStateKey,
|
|
216
216
|
this.config.initHash,
|
|
217
|
-
this.config.deployer,
|
|
218
217
|
);
|
|
219
218
|
|
|
220
219
|
try {
|
|
@@ -392,19 +391,23 @@ export class UniswapV3
|
|
|
392
391
|
callData:
|
|
393
392
|
side === SwapSide.SELL
|
|
394
393
|
? this.quoterIface.encodeFunctionData('quoteExactInputSingle', [
|
|
394
|
+
[
|
|
395
395
|
from.address,
|
|
396
396
|
to.address,
|
|
397
|
-
pool.feeCodeAsString,
|
|
398
397
|
_amount.toString(),
|
|
398
|
+
pool.feeCodeAsString,
|
|
399
399
|
0, //sqrtPriceLimitX96
|
|
400
|
-
]
|
|
400
|
+
],
|
|
401
|
+
])
|
|
401
402
|
: this.quoterIface.encodeFunctionData('quoteExactOutputSingle', [
|
|
403
|
+
[
|
|
402
404
|
from.address,
|
|
403
405
|
to.address,
|
|
404
|
-
pool.feeCodeAsString,
|
|
405
406
|
_amount.toString(),
|
|
407
|
+
pool.feeCodeAsString,
|
|
406
408
|
0, //sqrtPriceLimitX96
|
|
407
|
-
]
|
|
409
|
+
],
|
|
410
|
+
]),
|
|
408
411
|
})),
|
|
409
412
|
);
|
|
410
413
|
|
package/tests/constants-e2e.ts
CHANGED
|
@@ -1011,7 +1011,7 @@ export const Holders: {
|
|
|
1011
1011
|
aArbUSDC: '0x048BF2F5908e95976CeAD0E47D805b3803E286e2',
|
|
1012
1012
|
ZYB: '0x3ec0eddcd1e25025077327886a78133589082fb2',
|
|
1013
1013
|
WBTC: '0xd9d611c6943585bc0e18e51034af8fa28778f7da',
|
|
1014
|
-
RDNT: '0x62383739d68dd0f844103db8dfb05a7eded5bbe6'
|
|
1014
|
+
RDNT: '0x62383739d68dd0f844103db8dfb05a7eded5bbe6',
|
|
1015
1015
|
},
|
|
1016
1016
|
[Network.OPTIMISM]: {
|
|
1017
1017
|
ETH: '0x9ef21bE1C270AA1c3c3d750F458442397fBFFCB6',
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { UniswapV3 } from '../../uniswap-v3';
|
|
2
|
-
import { Network } from '../../../../constants';
|
|
3
|
-
import { IDexHelper } from '../../../../dex-helper';
|
|
4
|
-
import { Interface } from '@ethersproject/abi';
|
|
5
|
-
import PancakeswapV3RouterABI from '../../../../abi/uniswap-v3/pancakeswap-v3/PancakeswapV3Router.abi.json';
|
|
6
|
-
import PancakeswapV3QuoterV2ABI from '../../../../abi/uniswap-v3/pancakeswap-v3/PancakeswapV3QuoterV2.abi.json';
|
|
7
|
-
import { getDexKeysWithNetwork } from '../../../../utils';
|
|
8
|
-
import _ from 'lodash';
|
|
9
|
-
import { UniswapV3Config } from '../../config';
|
|
10
|
-
|
|
11
|
-
export class PancakeswapV3 extends UniswapV3 {
|
|
12
|
-
public static dexKeysWithNetwork: { key: string; networks: Network[] }[] =
|
|
13
|
-
getDexKeysWithNetwork(_.pick(UniswapV3Config, ['PancakeswapV3']));
|
|
14
|
-
constructor(
|
|
15
|
-
protected network: Network,
|
|
16
|
-
dexKey: string,
|
|
17
|
-
protected dexHelper: IDexHelper,
|
|
18
|
-
) {
|
|
19
|
-
super(
|
|
20
|
-
network,
|
|
21
|
-
dexKey,
|
|
22
|
-
dexHelper,
|
|
23
|
-
undefined,
|
|
24
|
-
new Interface(PancakeswapV3RouterABI),
|
|
25
|
-
new Interface(PancakeswapV3QuoterV2ABI),
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
File without changes
|
|
File without changes
|