@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.
Files changed (198) hide show
  1. package/.idea/aws.xml +17 -0
  2. package/.idea/codeStyles/Project.xml +19 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/misc.xml +6 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/paraswap-dex-lib.iml +9 -0
  7. package/.idea/vcs.xml +6 -0
  8. package/build/abi/woo-fi/WooFeeManager.abi.json +318 -0
  9. package/build/abi/woo-fi/WooPP.abi.json +548 -0
  10. package/build/abi/woo-fi/Wooracle.abi.json +260 -0
  11. package/build/config.js +4 -4
  12. package/build/dex/aave-v3/tokens/arbitrum.json +50 -0
  13. package/build/dex/aave-v3/tokens/avalanche.json +74 -0
  14. package/build/dex/aave-v3/tokens/fantom.json +62 -0
  15. package/build/dex/aave-v3/tokens/optimism.json +50 -0
  16. package/build/dex/aave-v3/tokens/polygon.json +116 -0
  17. package/build/dex/balancer-v2/balancer-v2.d.ts +14 -19
  18. package/build/dex/balancer-v2/balancer-v2.js +27 -22
  19. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  20. package/build/dex/balancer-v2/config.d.ts +2 -7
  21. package/build/dex/balancer-v2/config.js +20 -30
  22. package/build/dex/balancer-v2/config.js.map +1 -1
  23. package/build/dex/balancer-v2/pools/balancer-v2-pool.d.ts +25 -0
  24. package/build/dex/balancer-v2/pools/balancer-v2-pool.js +107 -0
  25. package/build/dex/balancer-v2/pools/balancer-v2-pool.js.map +1 -0
  26. package/build/dex/balancer-v2/pools/linear/LinearMath.d.ts +20 -0
  27. package/build/dex/balancer-v2/pools/linear/LinearMath.js +179 -0
  28. package/build/dex/balancer-v2/pools/linear/LinearMath.js.map +1 -0
  29. package/build/dex/balancer-v2/pools/linear/LinearPool.d.ts +50 -0
  30. package/build/dex/balancer-v2/pools/linear/LinearPool.js +458 -0
  31. package/build/dex/balancer-v2/pools/linear/LinearPool.js.map +1 -0
  32. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.d.ts +10 -0
  33. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.js +314 -0
  34. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.js.map +1 -0
  35. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.d.ts +50 -0
  36. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.js +367 -0
  37. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.js.map +1 -0
  38. package/build/dex/balancer-v2/pools/stable/StableMath.d.ts +7 -0
  39. package/build/dex/balancer-v2/pools/stable/StableMath.js +111 -0
  40. package/build/dex/balancer-v2/pools/stable/StableMath.js.map +1 -0
  41. package/build/dex/balancer-v2/pools/stable/StablePool.d.ts +30 -0
  42. package/build/dex/balancer-v2/pools/stable/StablePool.js +129 -0
  43. package/build/dex/balancer-v2/pools/stable/StablePool.js.map +1 -0
  44. package/build/dex/balancer-v2/pools/weighted/WeightedMath.d.ts +6 -0
  45. package/build/dex/balancer-v2/pools/weighted/WeightedMath.js +61 -0
  46. package/build/dex/balancer-v2/pools/weighted/WeightedMath.js.map +1 -0
  47. package/build/dex/balancer-v2/pools/weighted/WeightedPool.d.ts +30 -0
  48. package/build/dex/balancer-v2/pools/weighted/WeightedPool.js +112 -0
  49. package/build/dex/balancer-v2/pools/weighted/WeightedPool.js.map +1 -0
  50. package/build/dex/balancer-v2/types.d.ts +1 -0
  51. package/build/dex/balancer-v2/types.js.map +1 -1
  52. package/build/dex/balancer-v2/utils.d.ts +3 -2
  53. package/build/dex/balancer-v2/utils.js +6 -4
  54. package/build/dex/balancer-v2/utils.js.map +1 -1
  55. package/build/dex/index.js +1 -1
  56. package/build/dex/index.js.map +1 -1
  57. package/build/dex/quickswap-v3.d.ts +21 -0
  58. package/build/dex/quickswap-v3.js +40 -0
  59. package/build/dex/quickswap-v3.js.map +1 -0
  60. package/build/dex/uniswap-v3/config.js +28 -0
  61. package/build/dex/uniswap-v3/config.js.map +1 -1
  62. package/build/dex/uniswap-v3/uniswap-v3-pool.d.ts +2 -1
  63. package/build/dex/uniswap-v3/uniswap-v3-pool.js +3 -2
  64. package/build/dex/uniswap-v3/uniswap-v3-pool.js.map +1 -1
  65. package/build/dex/uniswap-v3/uniswap-v3.js +1 -1
  66. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  67. package/build/dex/{pancakeswap-v3 → woo-fi}/config.d.ts +2 -2
  68. package/build/dex/woo-fi/config.js +141 -0
  69. package/build/dex/woo-fi/config.js.map +1 -0
  70. package/build/dex/woo-fi/constants.d.ts +5 -0
  71. package/build/dex/woo-fi/constants.js +20 -0
  72. package/build/dex/woo-fi/constants.js.map +1 -0
  73. package/build/dex/woo-fi/types.d.ts +48 -0
  74. package/build/dex/woo-fi/types.js +3 -0
  75. package/build/dex/woo-fi/types.js.map +1 -0
  76. package/build/dex/woo-fi/woo-fi-decimal-math.d.ts +14 -0
  77. package/build/dex/woo-fi/woo-fi-decimal-math.js +42 -0
  78. package/build/dex/woo-fi/woo-fi-decimal-math.js.map +1 -0
  79. package/build/dex/woo-fi/woo-fi-math.d.ts +31 -0
  80. package/build/dex/woo-fi/woo-fi-math.js +300 -0
  81. package/build/dex/woo-fi/woo-fi-math.js.map +1 -0
  82. package/build/dex/woo-fi/woo-fi.d.ts +65 -0
  83. package/build/dex/woo-fi/woo-fi.js +480 -0
  84. package/build/dex/woo-fi/woo-fi.js.map +1 -0
  85. package/package.json +1 -1
  86. package/src/config.ts +4 -4
  87. package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +538 -225
  88. package/src/dex/balancer-v2/balancer-v2-integration.test.ts +305 -122
  89. package/src/dex/balancer-v2/balancer-v2.ts +60 -56
  90. package/src/dex/balancer-v2/config.ts +23 -35
  91. package/src/dex/balancer-v2/pools/balancer-v2-pool.ts +274 -0
  92. package/src/dex/balancer-v2/{LinearMath.ts → pools/linear/LinearMath.ts} +11 -10
  93. package/src/dex/balancer-v2/{LinearPool.ts → pools/linear/LinearPool.ts} +210 -6
  94. package/src/dex/balancer-v2/{StableMath.ts → pools/phantom-stable/PhantomStableMath.ts} +101 -21
  95. package/src/dex/balancer-v2/{PhantomStablePool.ts → pools/phantom-stable/PhantomStablePool.ts} +167 -12
  96. package/src/dex/balancer-v2/pools/stable/StableMath.ts +204 -0
  97. package/src/dex/balancer-v2/pools/stable/StablePool.ts +221 -0
  98. package/src/dex/balancer-v2/pools/weighted/WeightedMath.ts +84 -0
  99. package/src/dex/balancer-v2/pools/weighted/WeightedPool.ts +189 -0
  100. package/src/dex/balancer-v2/types.ts +1 -0
  101. package/src/dex/balancer-v2/utils.ts +7 -1
  102. package/src/dex/index.ts +1 -1
  103. package/src/dex/uniswap-v3/config.ts +32 -0
  104. package/src/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.ts +28 -0
  105. package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +156 -0
  106. package/src/dex/uniswap-v3/uniswap-v3-events.test.ts +0 -4
  107. package/src/dex/uniswap-v3/uniswap-v3-pool.ts +2 -1
  108. package/src/dex/uniswap-v3/uniswap-v3.ts +1 -0
  109. package/tests/constants-e2e.ts +33 -8
  110. package/build/abi/pancakeswap-v3/PancakeV3StateMulticall.abi.json +0 -781
  111. package/build/abi/pancakeswap-v3/PancakeswapV3Pool.abi.json +0 -1039
  112. package/build/abi/pancakeswap-v3/PancakeswapV3Quoter.abi.json +0 -285
  113. package/build/abi/pancakeswap-v3/PancakeswapV3Router.abi.json +0 -583
  114. package/build/dex/pancakeswap-v3/config.js +0 -62
  115. package/build/dex/pancakeswap-v3/config.js.map +0 -1
  116. package/build/dex/pancakeswap-v3/constants.d.ts +0 -23
  117. package/build/dex/pancakeswap-v3/constants.js +0 -29
  118. package/build/dex/pancakeswap-v3/constants.js.map +0 -1
  119. package/build/dex/pancakeswap-v3/contract-math/BitMath.d.ts +0 -4
  120. package/build/dex/pancakeswap-v3/contract-math/BitMath.js +0 -93
  121. package/build/dex/pancakeswap-v3/contract-math/BitMath.js.map +0 -1
  122. package/build/dex/pancakeswap-v3/contract-math/FixedPoint128.d.ts +0 -3
  123. package/build/dex/pancakeswap-v3/contract-math/FixedPoint128.js +0 -8
  124. package/build/dex/pancakeswap-v3/contract-math/FixedPoint128.js.map +0 -1
  125. package/build/dex/pancakeswap-v3/contract-math/FixedPoint96.d.ts +0 -4
  126. package/build/dex/pancakeswap-v3/contract-math/FixedPoint96.js +0 -9
  127. package/build/dex/pancakeswap-v3/contract-math/FixedPoint96.js.map +0 -1
  128. package/build/dex/pancakeswap-v3/contract-math/FullMath.d.ts +0 -4
  129. package/build/dex/pancakeswap-v3/contract-math/FullMath.js +0 -19
  130. package/build/dex/pancakeswap-v3/contract-math/FullMath.js.map +0 -1
  131. package/build/dex/pancakeswap-v3/contract-math/LiquidityMath.d.ts +0 -3
  132. package/build/dex/pancakeswap-v3/contract-math/LiquidityMath.js +0 -22
  133. package/build/dex/pancakeswap-v3/contract-math/LiquidityMath.js.map +0 -1
  134. package/build/dex/pancakeswap-v3/contract-math/Oracle.d.ts +0 -10
  135. package/build/dex/pancakeswap-v3/contract-math/Oracle.js +0 -133
  136. package/build/dex/pancakeswap-v3/contract-math/Oracle.js.map +0 -1
  137. package/build/dex/pancakeswap-v3/contract-math/SqrtPriceMath.d.ts +0 -10
  138. package/build/dex/pancakeswap-v3/contract-math/SqrtPriceMath.js +0 -91
  139. package/build/dex/pancakeswap-v3/contract-math/SqrtPriceMath.js.map +0 -1
  140. package/build/dex/pancakeswap-v3/contract-math/SwapMath.d.ts +0 -8
  141. package/build/dex/pancakeswap-v3/contract-math/SwapMath.js +0 -70
  142. package/build/dex/pancakeswap-v3/contract-math/SwapMath.js.map +0 -1
  143. package/build/dex/pancakeswap-v3/contract-math/Tick.d.ts +0 -7
  144. package/build/dex/pancakeswap-v3/contract-math/Tick.js +0 -45
  145. package/build/dex/pancakeswap-v3/contract-math/Tick.js.map +0 -1
  146. package/build/dex/pancakeswap-v3/contract-math/TickBitMap.d.ts +0 -8
  147. package/build/dex/pancakeswap-v3/contract-math/TickBitMap.js +0 -87
  148. package/build/dex/pancakeswap-v3/contract-math/TickBitMap.js.map +0 -1
  149. package/build/dex/pancakeswap-v3/contract-math/TickMath.d.ts +0 -8
  150. package/build/dex/pancakeswap-v3/contract-math/TickMath.js +0 -162
  151. package/build/dex/pancakeswap-v3/contract-math/TickMath.js.map +0 -1
  152. package/build/dex/pancakeswap-v3/contract-math/UnsafeMath.d.ts +0 -3
  153. package/build/dex/pancakeswap-v3/contract-math/UnsafeMath.js +0 -10
  154. package/build/dex/pancakeswap-v3/contract-math/UnsafeMath.js.map +0 -1
  155. package/build/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.d.ts +0 -18
  156. package/build/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.js +0 -407
  157. package/build/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.js.map +0 -1
  158. package/build/dex/pancakeswap-v3/contract-math/utils.d.ts +0 -3
  159. package/build/dex/pancakeswap-v3/contract-math/utils.js +0 -16
  160. package/build/dex/pancakeswap-v3/contract-math/utils.js.map +0 -1
  161. package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.d.ts +0 -45
  162. package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.js +0 -340
  163. package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.js.map +0 -1
  164. package/build/dex/pancakeswap-v3/pancakeswap-v3.d.ts +0 -55
  165. package/build/dex/pancakeswap-v3/pancakeswap-v3.js +0 -605
  166. package/build/dex/pancakeswap-v3/pancakeswap-v3.js.map +0 -1
  167. package/build/dex/pancakeswap-v3/types.d.ts +0 -137
  168. package/build/dex/pancakeswap-v3/types.js +0 -9
  169. package/build/dex/pancakeswap-v3/types.js.map +0 -1
  170. package/build/dex/pancakeswap-v3/utils.d.ts +0 -6
  171. package/build/dex/pancakeswap-v3/utils.js +0 -65
  172. package/build/dex/pancakeswap-v3/utils.js.map +0 -1
  173. package/src/abi/pancakeswap-v3/PancakeV3StateMulticall.abi.json +0 -781
  174. package/src/abi/pancakeswap-v3/PancakeswapV3Pool.abi.json +0 -1039
  175. package/src/dex/balancer-v2/balancer-v2-pool.ts +0 -744
  176. package/src/dex/pancakeswap-v3/config.ts +0 -68
  177. package/src/dex/pancakeswap-v3/constants.ts +0 -35
  178. package/src/dex/pancakeswap-v3/contract-math/BitMath.ts +0 -90
  179. package/src/dex/pancakeswap-v3/contract-math/FixedPoint128.ts +0 -3
  180. package/src/dex/pancakeswap-v3/contract-math/FixedPoint96.ts +0 -4
  181. package/src/dex/pancakeswap-v3/contract-math/FullMath.ts +0 -30
  182. package/src/dex/pancakeswap-v3/contract-math/LiquidityMath.ts +0 -17
  183. package/src/dex/pancakeswap-v3/contract-math/Oracle.ts +0 -226
  184. package/src/dex/pancakeswap-v3/contract-math/SqrtPriceMath.ts +0 -226
  185. package/src/dex/pancakeswap-v3/contract-math/SwapMath.ts +0 -139
  186. package/src/dex/pancakeswap-v3/contract-math/Tick.ts +0 -82
  187. package/src/dex/pancakeswap-v3/contract-math/TickBitMap.ts +0 -128
  188. package/src/dex/pancakeswap-v3/contract-math/TickMath.ts +0 -211
  189. package/src/dex/pancakeswap-v3/contract-math/UnsafeMath.ts +0 -5
  190. package/src/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.ts +0 -691
  191. package/src/dex/pancakeswap-v3/contract-math/utils.ts +0 -11
  192. package/src/dex/pancakeswap-v3/pancakeswap-v3-e2e.test.ts +0 -168
  193. package/src/dex/pancakeswap-v3/pancakeswap-v3-events.test.ts +0 -124
  194. package/src/dex/pancakeswap-v3/pancakeswap-v3-integration.test.ts +0 -338
  195. package/src/dex/pancakeswap-v3/pancakeswap-v3-pool.ts +0 -554
  196. package/src/dex/pancakeswap-v3/pancakeswap-v3.ts +0 -1000
  197. /package/src/abi/{pancakeswap-v3/PancakeswapV3Quoter.abi.json → uniswap-v3/pancakeswap-v3/PancakeswapV3QuoterV2.abi.json} +0 -0
  198. /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
- return [
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
  );
@@ -214,6 +214,7 @@ export class UniswapV3
214
214
  this.logger,
215
215
  this.cacheStateKey,
216
216
  this.config.initHash,
217
+ this.config.deployer,
217
218
  );
218
219
 
219
220
  try {
@@ -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: '0x3Ed3B47Dd13EC9a98b44e6204A523E766B225811',
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: '0xDcEF968d416a41Cdac0ED8702fAC8128A64241A2',
816
- WBTC: '0x6daB3bCbFb336b29d06B9C793AEF7eaA57888922',
835
+ USDC: '0x79E2Ba942B0e8fDB6ff3d406e930289d10B49ADe',
836
+ WBTC: '0x1Cb17a66DC606a52785f69F08F4256526aBd4943',
817
837
  BADGER: '0x34e2741a3f8483dbe5231f61c005110ff4b9f50a',
818
838
  STETH: '0x9bdb521a97e95177bf252c253e256a60c3e14447',
819
839
  wstETH: '0x6cE0F913F035ec6195bC3cE885aec4C66E485BC4',
820
- WETH: '0x56178a0d5f301baf6cf3e1cd53d9863437345bf9',
821
- USDT: '0x5754284f345afc66a98fbb0a0afe71e0f007b949',
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: '0x7514f531ef3721b8d2ff8d3a841d7c05011eecca',
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: '0x3C6A135F7A3A7Ce203EF629B43D9dc66f0f98BFa',
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: '0xb19fe973edd97e971534f6c46d96f2b109d3f1de',
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',