@paraswap/dex-lib 2.16.8-pancakeswapv3.0 → 2.17.0
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/.idea/aws.xml +17 -0
- package/.idea/codeStyles/Project.xml +19 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/misc.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/paraswap-dex-lib.iml +9 -0
- package/.idea/vcs.xml +6 -0
- package/build/abi/woo-fi/WooFeeManager.abi.json +318 -0
- package/build/abi/woo-fi/WooPP.abi.json +548 -0
- package/build/abi/woo-fi/Wooracle.abi.json +260 -0
- package/build/config.js +4 -4
- package/build/dex/aave-v3/tokens/arbitrum.json +50 -0
- package/build/dex/aave-v3/tokens/avalanche.json +74 -0
- package/build/dex/aave-v3/tokens/fantom.json +62 -0
- package/build/dex/aave-v3/tokens/optimism.json +50 -0
- package/build/dex/aave-v3/tokens/polygon.json +116 -0
- package/build/dex/balancer-v2/balancer-v2.d.ts +14 -19
- package/build/dex/balancer-v2/balancer-v2.js +27 -22
- package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
- package/build/dex/balancer-v2/config.d.ts +2 -7
- package/build/dex/balancer-v2/config.js +20 -30
- package/build/dex/balancer-v2/config.js.map +1 -1
- package/build/dex/balancer-v2/pools/balancer-v2-pool.d.ts +25 -0
- package/build/dex/balancer-v2/pools/balancer-v2-pool.js +107 -0
- package/build/dex/balancer-v2/pools/balancer-v2-pool.js.map +1 -0
- package/build/dex/balancer-v2/pools/linear/LinearMath.d.ts +20 -0
- package/build/dex/balancer-v2/pools/linear/LinearMath.js +179 -0
- package/build/dex/balancer-v2/pools/linear/LinearMath.js.map +1 -0
- package/build/dex/balancer-v2/pools/linear/LinearPool.d.ts +50 -0
- package/build/dex/balancer-v2/pools/linear/LinearPool.js +458 -0
- package/build/dex/balancer-v2/pools/linear/LinearPool.js.map +1 -0
- package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.d.ts +10 -0
- package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.js +314 -0
- package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.js.map +1 -0
- package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.d.ts +50 -0
- package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.js +367 -0
- package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.js.map +1 -0
- package/build/dex/balancer-v2/pools/stable/StableMath.d.ts +7 -0
- package/build/dex/balancer-v2/pools/stable/StableMath.js +111 -0
- package/build/dex/balancer-v2/pools/stable/StableMath.js.map +1 -0
- package/build/dex/balancer-v2/pools/stable/StablePool.d.ts +30 -0
- package/build/dex/balancer-v2/pools/stable/StablePool.js +129 -0
- package/build/dex/balancer-v2/pools/stable/StablePool.js.map +1 -0
- package/build/dex/balancer-v2/pools/weighted/WeightedMath.d.ts +6 -0
- package/build/dex/balancer-v2/pools/weighted/WeightedMath.js +61 -0
- package/build/dex/balancer-v2/pools/weighted/WeightedMath.js.map +1 -0
- package/build/dex/balancer-v2/pools/weighted/WeightedPool.d.ts +30 -0
- package/build/dex/balancer-v2/pools/weighted/WeightedPool.js +112 -0
- package/build/dex/balancer-v2/pools/weighted/WeightedPool.js.map +1 -0
- package/build/dex/balancer-v2/types.d.ts +1 -0
- package/build/dex/balancer-v2/types.js.map +1 -1
- package/build/dex/balancer-v2/utils.d.ts +3 -2
- package/build/dex/balancer-v2/utils.js +6 -4
- package/build/dex/balancer-v2/utils.js.map +1 -1
- package/build/dex/index.js +1 -1
- package/build/dex/index.js.map +1 -1
- package/build/dex/quickswap-v3.d.ts +21 -0
- package/build/dex/quickswap-v3.js +40 -0
- package/build/dex/quickswap-v3.js.map +1 -0
- package/build/dex/uniswap-v3/config.js +28 -0
- package/build/dex/uniswap-v3/config.js.map +1 -1
- package/build/dex/uniswap-v3/uniswap-v3-pool.d.ts +2 -1
- package/build/dex/uniswap-v3/uniswap-v3-pool.js +3 -2
- package/build/dex/uniswap-v3/uniswap-v3-pool.js.map +1 -1
- package/build/dex/uniswap-v3/uniswap-v3.js +1 -1
- package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
- package/build/dex/{pancakeswap-v3 → woo-fi}/config.d.ts +2 -2
- package/build/dex/woo-fi/config.js +141 -0
- package/build/dex/woo-fi/config.js.map +1 -0
- package/build/dex/woo-fi/constants.d.ts +5 -0
- package/build/dex/woo-fi/constants.js +20 -0
- package/build/dex/woo-fi/constants.js.map +1 -0
- package/build/dex/woo-fi/types.d.ts +48 -0
- package/build/dex/woo-fi/types.js +3 -0
- package/build/dex/woo-fi/types.js.map +1 -0
- package/build/dex/woo-fi/woo-fi-decimal-math.d.ts +14 -0
- package/build/dex/woo-fi/woo-fi-decimal-math.js +42 -0
- package/build/dex/woo-fi/woo-fi-decimal-math.js.map +1 -0
- package/build/dex/woo-fi/woo-fi-math.d.ts +31 -0
- package/build/dex/woo-fi/woo-fi-math.js +300 -0
- package/build/dex/woo-fi/woo-fi-math.js.map +1 -0
- package/build/dex/woo-fi/woo-fi.d.ts +65 -0
- package/build/dex/woo-fi/woo-fi.js +480 -0
- package/build/dex/woo-fi/woo-fi.js.map +1 -0
- package/package.json +1 -1
- package/src/config.ts +4 -4
- package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +538 -225
- package/src/dex/balancer-v2/balancer-v2-integration.test.ts +305 -122
- package/src/dex/balancer-v2/balancer-v2.ts +60 -56
- package/src/dex/balancer-v2/config.ts +23 -35
- package/src/dex/balancer-v2/pools/balancer-v2-pool.ts +274 -0
- package/src/dex/balancer-v2/{LinearMath.ts → pools/linear/LinearMath.ts} +11 -10
- package/src/dex/balancer-v2/{LinearPool.ts → pools/linear/LinearPool.ts} +210 -6
- package/src/dex/balancer-v2/{StableMath.ts → pools/phantom-stable/PhantomStableMath.ts} +101 -21
- package/src/dex/balancer-v2/{PhantomStablePool.ts → pools/phantom-stable/PhantomStablePool.ts} +167 -12
- package/src/dex/balancer-v2/pools/stable/StableMath.ts +204 -0
- package/src/dex/balancer-v2/pools/stable/StablePool.ts +221 -0
- package/src/dex/balancer-v2/pools/weighted/WeightedMath.ts +84 -0
- package/src/dex/balancer-v2/pools/weighted/WeightedPool.ts +189 -0
- package/src/dex/balancer-v2/types.ts +1 -0
- package/src/dex/balancer-v2/utils.ts +7 -1
- package/src/dex/index.ts +1 -1
- package/src/dex/uniswap-v3/config.ts +32 -0
- package/src/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.ts +28 -0
- package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +156 -0
- package/src/dex/uniswap-v3/uniswap-v3-events.test.ts +0 -4
- package/src/dex/uniswap-v3/uniswap-v3-pool.ts +2 -1
- package/src/dex/uniswap-v3/uniswap-v3.ts +1 -0
- package/tests/constants-e2e.ts +33 -8
- package/build/abi/pancakeswap-v3/PancakeV3StateMulticall.abi.json +0 -781
- package/build/abi/pancakeswap-v3/PancakeswapV3Pool.abi.json +0 -1039
- package/build/abi/pancakeswap-v3/PancakeswapV3Quoter.abi.json +0 -285
- package/build/abi/pancakeswap-v3/PancakeswapV3Router.abi.json +0 -583
- package/build/dex/pancakeswap-v3/config.js +0 -62
- package/build/dex/pancakeswap-v3/config.js.map +0 -1
- package/build/dex/pancakeswap-v3/constants.d.ts +0 -23
- package/build/dex/pancakeswap-v3/constants.js +0 -29
- package/build/dex/pancakeswap-v3/constants.js.map +0 -1
- package/build/dex/pancakeswap-v3/contract-math/BitMath.d.ts +0 -4
- package/build/dex/pancakeswap-v3/contract-math/BitMath.js +0 -93
- package/build/dex/pancakeswap-v3/contract-math/BitMath.js.map +0 -1
- package/build/dex/pancakeswap-v3/contract-math/FixedPoint128.d.ts +0 -3
- package/build/dex/pancakeswap-v3/contract-math/FixedPoint128.js +0 -8
- package/build/dex/pancakeswap-v3/contract-math/FixedPoint128.js.map +0 -1
- package/build/dex/pancakeswap-v3/contract-math/FixedPoint96.d.ts +0 -4
- package/build/dex/pancakeswap-v3/contract-math/FixedPoint96.js +0 -9
- package/build/dex/pancakeswap-v3/contract-math/FixedPoint96.js.map +0 -1
- package/build/dex/pancakeswap-v3/contract-math/FullMath.d.ts +0 -4
- package/build/dex/pancakeswap-v3/contract-math/FullMath.js +0 -19
- package/build/dex/pancakeswap-v3/contract-math/FullMath.js.map +0 -1
- package/build/dex/pancakeswap-v3/contract-math/LiquidityMath.d.ts +0 -3
- package/build/dex/pancakeswap-v3/contract-math/LiquidityMath.js +0 -22
- package/build/dex/pancakeswap-v3/contract-math/LiquidityMath.js.map +0 -1
- package/build/dex/pancakeswap-v3/contract-math/Oracle.d.ts +0 -10
- package/build/dex/pancakeswap-v3/contract-math/Oracle.js +0 -133
- package/build/dex/pancakeswap-v3/contract-math/Oracle.js.map +0 -1
- package/build/dex/pancakeswap-v3/contract-math/SqrtPriceMath.d.ts +0 -10
- package/build/dex/pancakeswap-v3/contract-math/SqrtPriceMath.js +0 -91
- package/build/dex/pancakeswap-v3/contract-math/SqrtPriceMath.js.map +0 -1
- package/build/dex/pancakeswap-v3/contract-math/SwapMath.d.ts +0 -8
- package/build/dex/pancakeswap-v3/contract-math/SwapMath.js +0 -70
- package/build/dex/pancakeswap-v3/contract-math/SwapMath.js.map +0 -1
- package/build/dex/pancakeswap-v3/contract-math/Tick.d.ts +0 -7
- package/build/dex/pancakeswap-v3/contract-math/Tick.js +0 -45
- package/build/dex/pancakeswap-v3/contract-math/Tick.js.map +0 -1
- package/build/dex/pancakeswap-v3/contract-math/TickBitMap.d.ts +0 -8
- package/build/dex/pancakeswap-v3/contract-math/TickBitMap.js +0 -87
- package/build/dex/pancakeswap-v3/contract-math/TickBitMap.js.map +0 -1
- package/build/dex/pancakeswap-v3/contract-math/TickMath.d.ts +0 -8
- package/build/dex/pancakeswap-v3/contract-math/TickMath.js +0 -162
- package/build/dex/pancakeswap-v3/contract-math/TickMath.js.map +0 -1
- package/build/dex/pancakeswap-v3/contract-math/UnsafeMath.d.ts +0 -3
- package/build/dex/pancakeswap-v3/contract-math/UnsafeMath.js +0 -10
- package/build/dex/pancakeswap-v3/contract-math/UnsafeMath.js.map +0 -1
- package/build/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.d.ts +0 -18
- package/build/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.js +0 -407
- package/build/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.js.map +0 -1
- package/build/dex/pancakeswap-v3/contract-math/utils.d.ts +0 -3
- package/build/dex/pancakeswap-v3/contract-math/utils.js +0 -16
- package/build/dex/pancakeswap-v3/contract-math/utils.js.map +0 -1
- package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.d.ts +0 -45
- package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.js +0 -340
- package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.js.map +0 -1
- package/build/dex/pancakeswap-v3/pancakeswap-v3.d.ts +0 -55
- package/build/dex/pancakeswap-v3/pancakeswap-v3.js +0 -605
- package/build/dex/pancakeswap-v3/pancakeswap-v3.js.map +0 -1
- package/build/dex/pancakeswap-v3/types.d.ts +0 -137
- package/build/dex/pancakeswap-v3/types.js +0 -9
- package/build/dex/pancakeswap-v3/types.js.map +0 -1
- package/build/dex/pancakeswap-v3/utils.d.ts +0 -6
- package/build/dex/pancakeswap-v3/utils.js +0 -65
- package/build/dex/pancakeswap-v3/utils.js.map +0 -1
- package/src/abi/pancakeswap-v3/PancakeV3StateMulticall.abi.json +0 -781
- package/src/abi/pancakeswap-v3/PancakeswapV3Pool.abi.json +0 -1039
- package/src/dex/balancer-v2/balancer-v2-pool.ts +0 -744
- package/src/dex/pancakeswap-v3/config.ts +0 -68
- package/src/dex/pancakeswap-v3/constants.ts +0 -35
- package/src/dex/pancakeswap-v3/contract-math/BitMath.ts +0 -90
- package/src/dex/pancakeswap-v3/contract-math/FixedPoint128.ts +0 -3
- package/src/dex/pancakeswap-v3/contract-math/FixedPoint96.ts +0 -4
- package/src/dex/pancakeswap-v3/contract-math/FullMath.ts +0 -30
- package/src/dex/pancakeswap-v3/contract-math/LiquidityMath.ts +0 -17
- package/src/dex/pancakeswap-v3/contract-math/Oracle.ts +0 -226
- package/src/dex/pancakeswap-v3/contract-math/SqrtPriceMath.ts +0 -226
- package/src/dex/pancakeswap-v3/contract-math/SwapMath.ts +0 -139
- package/src/dex/pancakeswap-v3/contract-math/Tick.ts +0 -82
- package/src/dex/pancakeswap-v3/contract-math/TickBitMap.ts +0 -128
- package/src/dex/pancakeswap-v3/contract-math/TickMath.ts +0 -211
- package/src/dex/pancakeswap-v3/contract-math/UnsafeMath.ts +0 -5
- package/src/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.ts +0 -691
- package/src/dex/pancakeswap-v3/contract-math/utils.ts +0 -11
- package/src/dex/pancakeswap-v3/pancakeswap-v3-e2e.test.ts +0 -168
- package/src/dex/pancakeswap-v3/pancakeswap-v3-events.test.ts +0 -124
- package/src/dex/pancakeswap-v3/pancakeswap-v3-integration.test.ts +0 -338
- package/src/dex/pancakeswap-v3/pancakeswap-v3-pool.ts +0 -554
- package/src/dex/pancakeswap-v3/pancakeswap-v3.ts +0 -1000
- /package/src/abi/{pancakeswap-v3/PancakeswapV3Quoter.abi.json → uniswap-v3/pancakeswap-v3/PancakeswapV3QuoterV2.abi.json} +0 -0
- /package/src/abi/{pancakeswap-v3 → uniswap-v3/pancakeswap-v3}/PancakeswapV3Router.abi.json +0 -0
|
@@ -2,6 +2,7 @@ import { getAddress } from '@ethersproject/address';
|
|
|
2
2
|
import { Interface, Result } from '@ethersproject/abi';
|
|
3
3
|
import { getBigIntPow } from '../../utils';
|
|
4
4
|
import { BI_POWS } from '../../bigint-constants';
|
|
5
|
+
import { SwapSide } from '../../constants';
|
|
5
6
|
|
|
6
7
|
import {
|
|
7
8
|
BalancerPoolTypes,
|
|
@@ -44,6 +45,7 @@ export function poolGetPathForTokenInOut(
|
|
|
44
45
|
tokenOutAddress: string,
|
|
45
46
|
pool: SubgraphPoolBase,
|
|
46
47
|
poolsMap: SubgraphPoolAddressDictionary,
|
|
48
|
+
side: SwapSide,
|
|
47
49
|
): BalancerPathHop[] {
|
|
48
50
|
const tokenIn = findRequiredMainTokenInPool(tokenInAddress, pool);
|
|
49
51
|
const tokenOut = findRequiredMainTokenInPool(tokenOutAddress, pool);
|
|
@@ -62,11 +64,13 @@ export function poolGetPathForTokenInOut(
|
|
|
62
64
|
tokenOut: hop.token,
|
|
63
65
|
}));
|
|
64
66
|
|
|
65
|
-
|
|
67
|
+
const result = [
|
|
66
68
|
...tokenInHops,
|
|
67
69
|
{ pool, tokenIn: tokenIn.poolToken, tokenOut: tokenOut.poolToken },
|
|
68
70
|
...tokenOutHops,
|
|
69
71
|
];
|
|
72
|
+
|
|
73
|
+
return side === SwapSide.SELL ? result : result.reverse();
|
|
70
74
|
}
|
|
71
75
|
|
|
72
76
|
export function getAllPoolsUsedInPaths(
|
|
@@ -74,6 +78,7 @@ export function getAllPoolsUsedInPaths(
|
|
|
74
78
|
to: string,
|
|
75
79
|
allowedPools: SubgraphPoolBase[],
|
|
76
80
|
poolAddressMap: SubgraphPoolAddressDictionary,
|
|
81
|
+
side: SwapSide,
|
|
77
82
|
) {
|
|
78
83
|
//get all pools from the nested paths
|
|
79
84
|
return uniqBy(
|
|
@@ -84,6 +89,7 @@ export function getAllPoolsUsedInPaths(
|
|
|
84
89
|
to.toLowerCase(),
|
|
85
90
|
pool,
|
|
86
91
|
poolAddressMap,
|
|
92
|
+
side,
|
|
87
93
|
).map(hop => hop.pool),
|
|
88
94
|
)
|
|
89
95
|
.flat(),
|
package/src/dex/index.ts
CHANGED
|
@@ -64,8 +64,8 @@ import { QuickSwapV3 } from './quickswap/quickswap-v3';
|
|
|
64
64
|
import { ZyberSwapV3 } from './quickswap/zyberswap-v3';
|
|
65
65
|
import { TraderJoeV2 } from './trader-joe-v2';
|
|
66
66
|
import { SpiritSwapV3 } from './quickswap/spiritswap-v3';
|
|
67
|
+
import { PancakeswapV3 } from './uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3';
|
|
67
68
|
import { TraderJoeV21 } from './trader-joe-v2.1';
|
|
68
|
-
import { PancakeswapV3 } from './pancakeswap-v3/pancakeswap-v3';
|
|
69
69
|
|
|
70
70
|
const LegacyDexes = [
|
|
71
71
|
CurveV2,
|
|
@@ -4,6 +4,7 @@ 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];
|
|
7
8
|
|
|
8
9
|
// Pools that will be initialized on app startup
|
|
9
10
|
// They are added for testing
|
|
@@ -22,6 +23,7 @@ export const PoolsToPreload: DexConfigMap<
|
|
|
22
23
|
},
|
|
23
24
|
],
|
|
24
25
|
},
|
|
26
|
+
PancakeswapV3: {},
|
|
25
27
|
};
|
|
26
28
|
|
|
27
29
|
export const UniswapV3Config: DexConfigMap<DexParams> = {
|
|
@@ -86,6 +88,36 @@ export const UniswapV3Config: DexConfigMap<DexParams> = {
|
|
|
86
88
|
'https://api.thegraph.com/subgraphs/name/ianlapham/optimism-post-regenesis',
|
|
87
89
|
},
|
|
88
90
|
},
|
|
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
|
+
},
|
|
89
121
|
};
|
|
90
122
|
|
|
91
123
|
export const Adapters: Record<number, AdapterMappings> = {
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
}
|
|
@@ -203,3 +203,159 @@ 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,8 +106,6 @@ describe('UniswapV3 Event', function () {
|
|
|
106
106
|
token0,
|
|
107
107
|
token1,
|
|
108
108
|
logger,
|
|
109
|
-
undefined,
|
|
110
|
-
config.initHash,
|
|
111
109
|
);
|
|
112
110
|
|
|
113
111
|
// It is done in generateState. But here have to make it manually
|
|
@@ -161,8 +159,6 @@ describe('UniswapV3 Event', function () {
|
|
|
161
159
|
_token0,
|
|
162
160
|
_token1,
|
|
163
161
|
logger,
|
|
164
|
-
undefined,
|
|
165
|
-
config.initHash,
|
|
166
162
|
);
|
|
167
163
|
|
|
168
164
|
// It is done in generateState. But here have to make it manually
|
|
@@ -69,6 +69,7 @@ export class UniswapV3EventPool extends StatefulEventSubscriber<PoolState> {
|
|
|
69
69
|
logger: Logger,
|
|
70
70
|
mapKey: string = '',
|
|
71
71
|
readonly poolInitCodeHash: string,
|
|
72
|
+
readonly poolDeployer?: string,
|
|
72
73
|
) {
|
|
73
74
|
super(
|
|
74
75
|
parentName,
|
|
@@ -538,7 +539,7 @@ export class UniswapV3EventPool extends StatefulEventSubscriber<PoolState> {
|
|
|
538
539
|
);
|
|
539
540
|
|
|
540
541
|
return ethers.utils.getCreate2Address(
|
|
541
|
-
this.factoryAddress,
|
|
542
|
+
this.poolDeployer ? this.poolDeployer : this.factoryAddress,
|
|
542
543
|
encodedKey,
|
|
543
544
|
this.poolInitCodeHash,
|
|
544
545
|
);
|
package/tests/constants-e2e.ts
CHANGED
|
@@ -67,6 +67,10 @@ export const Tokens: {
|
|
|
67
67
|
addBalance: balanceOfFn,
|
|
68
68
|
addAllowance: allowanceFn,
|
|
69
69
|
},
|
|
70
|
+
PSP: {
|
|
71
|
+
address: '0xcafe001067cdef266afb7eb5a286dcfd277f3de5',
|
|
72
|
+
decimals: 18,
|
|
73
|
+
},
|
|
70
74
|
SETH: {
|
|
71
75
|
address: '0x5e74C9036fb86BD7eCdcb084a0673EFc32eA31cb',
|
|
72
76
|
decimals: 18,
|
|
@@ -98,7 +102,7 @@ export const Tokens: {
|
|
|
98
102
|
decimals: 18,
|
|
99
103
|
},
|
|
100
104
|
aUSDT: {
|
|
101
|
-
address: '
|
|
105
|
+
address: '0x3Ed3B47Dd13ECAURA9a98b44e6204A523E766B225811',
|
|
102
106
|
decimals: 6,
|
|
103
107
|
},
|
|
104
108
|
waUSDT: {
|
|
@@ -113,6 +117,14 @@ export const Tokens: {
|
|
|
113
117
|
address: '0xba100000625a3754423978a60c9317c58a424e3D',
|
|
114
118
|
decimals: 18,
|
|
115
119
|
},
|
|
120
|
+
OHM: {
|
|
121
|
+
address: '0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5',
|
|
122
|
+
decimals: 9,
|
|
123
|
+
},
|
|
124
|
+
AURA: {
|
|
125
|
+
address: '0xc0c293ce456ff0ed870add98a0828dd4d2903dbf',
|
|
126
|
+
decimals: 18,
|
|
127
|
+
},
|
|
116
128
|
WISE: {
|
|
117
129
|
address: '0x66a0f676479cee1d7373f3dc2e2952778bff5bd6',
|
|
118
130
|
decimals: 18,
|
|
@@ -703,6 +715,14 @@ export const Tokens: {
|
|
|
703
715
|
address: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8',
|
|
704
716
|
decimals: 6,
|
|
705
717
|
},
|
|
718
|
+
OHM: {
|
|
719
|
+
address: '0xf0cb2dc0db5e6c66b9a70ac27b06b878da017028',
|
|
720
|
+
decimals: 9,
|
|
721
|
+
},
|
|
722
|
+
RDNT: {
|
|
723
|
+
address: '0x3082cc23568ea640225c2467653db90e9250aaa0',
|
|
724
|
+
decimals: 18,
|
|
725
|
+
},
|
|
706
726
|
USDT: {
|
|
707
727
|
address: '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9',
|
|
708
728
|
decimals: 6,
|
|
@@ -812,13 +832,13 @@ export const Holders: {
|
|
|
812
832
|
} = {
|
|
813
833
|
[Network.MAINNET]: {
|
|
814
834
|
ETH: '0x176F3DAb24a159341c0509bB36B833E7fdd0a132',
|
|
815
|
-
USDC: '
|
|
816
|
-
WBTC: '
|
|
835
|
+
USDC: '0x79E2Ba942B0e8fDB6ff3d406e930289d10B49ADe',
|
|
836
|
+
WBTC: '0x1Cb17a66DC606a52785f69F08F4256526aBd4943',
|
|
817
837
|
BADGER: '0x34e2741a3f8483dbe5231f61c005110ff4b9f50a',
|
|
818
838
|
STETH: '0x9bdb521a97e95177bf252c253e256a60c3e14447',
|
|
819
839
|
wstETH: '0x6cE0F913F035ec6195bC3cE885aec4C66E485BC4',
|
|
820
|
-
WETH: '
|
|
821
|
-
USDT: '
|
|
840
|
+
WETH: '0x2fEb1512183545f48f6b9C5b4EbfCaF49CfCa6F3',
|
|
841
|
+
USDT: '0x8A446971dbB112f3be15bc38C14D44B94D9E94b9',
|
|
822
842
|
XAUT: '0xc4e161e8d8a4bc4ac762ab33a28bbac5474203d7',
|
|
823
843
|
CVX: '0x0aCA67Fa70B142A3b9bF2eD89A81B40ff85dACdC',
|
|
824
844
|
MIM: '0xa046a8660e66d178ee07ec97c585eeb6aa18c26c',
|
|
@@ -827,7 +847,9 @@ export const Holders: {
|
|
|
827
847
|
oldFRAX: '0x183d0dc5867c01bfb1dbbc41d6a9d3de6e044626',
|
|
828
848
|
newFRAX: '0x183d0dc5867c01bfb1dbbc41d6a9d3de6e044626',
|
|
829
849
|
FEI: '0x19c549357034d10db8d75ed812b45be1dd8a7218',
|
|
830
|
-
BAL: '
|
|
850
|
+
BAL: '0x740a4AEEfb44484853AA96aB12545FC0290805F3',
|
|
851
|
+
OHM: '0x3D7FEAB5cfab1c7De8ab2b7D5B260E76fD88BC78',
|
|
852
|
+
AURA: '0xBB19053E031D9B2B364351B21a8ed3568b21399b',
|
|
831
853
|
WISE: '0x25c315e0758beeab30ee048a4e2080e7084b64b3',
|
|
832
854
|
DDIM: '0x229cbd1955fee93ab6e7876c1b17f6d0b859e953',
|
|
833
855
|
DODO: '0x3e19d726ed435afd3a42967551426b3a47c0f5b7',
|
|
@@ -864,7 +886,8 @@ export const Holders: {
|
|
|
864
886
|
SHIBA: '0x73af3bcf944a6559933396c1577b257e2054d935',
|
|
865
887
|
aEthUSDC: '0x3178490d60B5cceaA5a79FD4D9050C7405Bab80c',
|
|
866
888
|
aEthWETH: '0x645C4c0c95C1Aa6EF25d12f4a25038cA9b0C6Cc7',
|
|
867
|
-
dUSDC: '
|
|
889
|
+
dUSDC: '0x2FC2F705110A7F46Ce85F701d7217EF1018f01A3',
|
|
890
|
+
PSP: '0xE5E5440a1CE69C5cf67BFFA74d185e57c31b43E5',
|
|
868
891
|
},
|
|
869
892
|
[Network.ROPSTEN]: {
|
|
870
893
|
ETH: '0x43262A12d8610AA70C15DbaeAC321d51613c9071',
|
|
@@ -972,7 +995,8 @@ export const Holders: {
|
|
|
972
995
|
ETH: '0xF977814e90dA44bFA03b6295A0616a897441aceC',
|
|
973
996
|
DAI: '0x07d7f291e731a41d3f0ea4f1ae5b6d920ffb3fe0',
|
|
974
997
|
WETH: '0xc31e54c7a869b9fcbecc14363cf510d1c41fa443',
|
|
975
|
-
USDC: '
|
|
998
|
+
USDC: '0x62383739d68dd0f844103db8dfb05a7eded5bbe6',
|
|
999
|
+
OHM: '0xebce5f29ff5ca9aa330ebdf7ec6b5f474bff271e',
|
|
976
1000
|
USDT: '0x62383739d68dd0f844103db8dfb05a7eded5bbe6',
|
|
977
1001
|
POPS: '0x4b78b52e7de4d8b7d367297cb8a87c1875a9d591',
|
|
978
1002
|
FRAX: '0x59bf0545fca0e5ad48e13da269facd2e8c886ba4',
|
|
@@ -987,6 +1011,7 @@ export const Holders: {
|
|
|
987
1011
|
aArbUSDC: '0x048BF2F5908e95976CeAD0E47D805b3803E286e2',
|
|
988
1012
|
ZYB: '0x3ec0eddcd1e25025077327886a78133589082fb2',
|
|
989
1013
|
WBTC: '0xd9d611c6943585bc0e18e51034af8fa28778f7da',
|
|
1014
|
+
RDNT: '0x62383739d68dd0f844103db8dfb05a7eded5bbe6'
|
|
990
1015
|
},
|
|
991
1016
|
[Network.OPTIMISM]: {
|
|
992
1017
|
ETH: '0x9ef21bE1C270AA1c3c3d750F458442397fBFFCB6',
|