@paraswap/dex-lib 2.17.0 → 2.17.1-pancakeswapv3.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 (165) hide show
  1. package/build/abi/pancakeswap-v3/PancakeV3StateMulticall.abi.json +781 -0
  2. package/build/abi/pancakeswap-v3/PancakeswapV3Pool.abi.json +1039 -0
  3. package/build/abi/pancakeswap-v3/PancakeswapV3Quoter.abi.json +285 -0
  4. package/build/abi/pancakeswap-v3/PancakeswapV3Router.abi.json +583 -0
  5. package/build/dex/balancer-v2/balancer-v2.js +8 -6
  6. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  7. package/build/dex/balancer-v2/config.js.map +1 -1
  8. package/build/dex/balancer-v2/pools/linear/LinearMath.js.map +1 -1
  9. package/build/dex/balancer-v2/pools/linear/LinearPool.js.map +1 -1
  10. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.js.map +1 -1
  11. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.js.map +1 -1
  12. package/build/dex/balancer-v2/pools/stable/StableMath.js +0 -1
  13. package/build/dex/balancer-v2/pools/stable/StableMath.js.map +1 -1
  14. package/build/dex/balancer-v2/pools/stable/StablePool.js +2 -1
  15. package/build/dex/balancer-v2/pools/stable/StablePool.js.map +1 -1
  16. package/build/dex/balancer-v2/pools/weighted/WeightedPool.js.map +1 -1
  17. package/build/dex/index.js +1 -1
  18. package/build/dex/index.js.map +1 -1
  19. package/build/dex/{woo-fi → pancakeswap-v3}/config.d.ts +2 -2
  20. package/build/dex/pancakeswap-v3/config.js +62 -0
  21. package/build/dex/pancakeswap-v3/config.js.map +1 -0
  22. package/build/dex/pancakeswap-v3/constants.d.ts +23 -0
  23. package/build/dex/pancakeswap-v3/constants.js +29 -0
  24. package/build/dex/pancakeswap-v3/constants.js.map +1 -0
  25. package/build/dex/pancakeswap-v3/contract-math/BitMath.d.ts +4 -0
  26. package/build/dex/pancakeswap-v3/contract-math/BitMath.js +93 -0
  27. package/build/dex/pancakeswap-v3/contract-math/BitMath.js.map +1 -0
  28. package/build/dex/pancakeswap-v3/contract-math/FixedPoint128.d.ts +3 -0
  29. package/build/dex/pancakeswap-v3/contract-math/FixedPoint128.js +8 -0
  30. package/build/dex/pancakeswap-v3/contract-math/FixedPoint128.js.map +1 -0
  31. package/build/dex/pancakeswap-v3/contract-math/FixedPoint96.d.ts +4 -0
  32. package/build/dex/pancakeswap-v3/contract-math/FixedPoint96.js +9 -0
  33. package/build/dex/pancakeswap-v3/contract-math/FixedPoint96.js.map +1 -0
  34. package/build/dex/pancakeswap-v3/contract-math/FullMath.d.ts +4 -0
  35. package/build/dex/pancakeswap-v3/contract-math/FullMath.js +19 -0
  36. package/build/dex/pancakeswap-v3/contract-math/FullMath.js.map +1 -0
  37. package/build/dex/pancakeswap-v3/contract-math/LiquidityMath.d.ts +3 -0
  38. package/build/dex/pancakeswap-v3/contract-math/LiquidityMath.js +22 -0
  39. package/build/dex/pancakeswap-v3/contract-math/LiquidityMath.js.map +1 -0
  40. package/build/dex/pancakeswap-v3/contract-math/Oracle.d.ts +10 -0
  41. package/build/dex/pancakeswap-v3/contract-math/Oracle.js +133 -0
  42. package/build/dex/pancakeswap-v3/contract-math/Oracle.js.map +1 -0
  43. package/build/dex/pancakeswap-v3/contract-math/SqrtPriceMath.d.ts +10 -0
  44. package/build/dex/pancakeswap-v3/contract-math/SqrtPriceMath.js +91 -0
  45. package/build/dex/pancakeswap-v3/contract-math/SqrtPriceMath.js.map +1 -0
  46. package/build/dex/pancakeswap-v3/contract-math/SwapMath.d.ts +8 -0
  47. package/build/dex/pancakeswap-v3/contract-math/SwapMath.js +70 -0
  48. package/build/dex/pancakeswap-v3/contract-math/SwapMath.js.map +1 -0
  49. package/build/dex/pancakeswap-v3/contract-math/Tick.d.ts +7 -0
  50. package/build/dex/pancakeswap-v3/contract-math/Tick.js +45 -0
  51. package/build/dex/pancakeswap-v3/contract-math/Tick.js.map +1 -0
  52. package/build/dex/pancakeswap-v3/contract-math/TickBitMap.d.ts +8 -0
  53. package/build/dex/pancakeswap-v3/contract-math/TickBitMap.js +87 -0
  54. package/build/dex/pancakeswap-v3/contract-math/TickBitMap.js.map +1 -0
  55. package/build/dex/pancakeswap-v3/contract-math/TickMath.d.ts +8 -0
  56. package/build/dex/pancakeswap-v3/contract-math/TickMath.js +162 -0
  57. package/build/dex/pancakeswap-v3/contract-math/TickMath.js.map +1 -0
  58. package/build/dex/pancakeswap-v3/contract-math/UnsafeMath.d.ts +3 -0
  59. package/build/dex/pancakeswap-v3/contract-math/UnsafeMath.js +10 -0
  60. package/build/dex/pancakeswap-v3/contract-math/UnsafeMath.js.map +1 -0
  61. package/build/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.d.ts +18 -0
  62. package/build/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.js +407 -0
  63. package/build/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.js.map +1 -0
  64. package/build/dex/pancakeswap-v3/contract-math/utils.d.ts +3 -0
  65. package/build/dex/pancakeswap-v3/contract-math/utils.js +16 -0
  66. package/build/dex/pancakeswap-v3/contract-math/utils.js.map +1 -0
  67. package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.d.ts +45 -0
  68. package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.js +340 -0
  69. package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.js.map +1 -0
  70. package/build/dex/pancakeswap-v3/pancakeswap-v3.d.ts +55 -0
  71. package/build/dex/pancakeswap-v3/pancakeswap-v3.js +605 -0
  72. package/build/dex/pancakeswap-v3/pancakeswap-v3.js.map +1 -0
  73. package/build/dex/pancakeswap-v3/types.d.ts +137 -0
  74. package/build/dex/pancakeswap-v3/types.js +9 -0
  75. package/build/dex/pancakeswap-v3/types.js.map +1 -0
  76. package/build/dex/pancakeswap-v3/utils.d.ts +6 -0
  77. package/build/dex/pancakeswap-v3/utils.js +65 -0
  78. package/build/dex/pancakeswap-v3/utils.js.map +1 -0
  79. package/build/dex/uniswap-v3/config.js +0 -28
  80. package/build/dex/uniswap-v3/config.js.map +1 -1
  81. package/build/dex/uniswap-v3/uniswap-v3-pool.d.ts +1 -2
  82. package/build/dex/uniswap-v3/uniswap-v3-pool.js +2 -3
  83. package/build/dex/uniswap-v3/uniswap-v3-pool.js.map +1 -1
  84. package/build/dex/uniswap-v3/uniswap-v3.js +1 -1
  85. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  86. package/package.json +1 -1
  87. package/src/abi/pancakeswap-v3/PancakeV3StateMulticall.abi.json +781 -0
  88. package/src/abi/pancakeswap-v3/PancakeswapV3Pool.abi.json +1039 -0
  89. package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +13 -19
  90. package/src/dex/balancer-v2/balancer-v2-integration.test.ts +47 -36
  91. package/src/dex/balancer-v2/balancer-v2.ts +46 -24
  92. package/src/dex/balancer-v2/config.ts +1 -1
  93. package/src/dex/balancer-v2/pools/linear/LinearMath.ts +2 -2
  94. package/src/dex/balancer-v2/pools/linear/LinearPool.ts +1 -1
  95. package/src/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.ts +19 -19
  96. package/src/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.ts +0 -1
  97. package/src/dex/balancer-v2/pools/stable/StableMath.ts +13 -14
  98. package/src/dex/balancer-v2/pools/stable/StablePool.ts +4 -2
  99. package/src/dex/balancer-v2/pools/weighted/WeightedPool.ts +0 -1
  100. package/src/dex/index.ts +1 -1
  101. package/src/dex/pancakeswap-v3/config.ts +68 -0
  102. package/src/dex/pancakeswap-v3/constants.ts +35 -0
  103. package/src/dex/pancakeswap-v3/contract-math/BitMath.ts +90 -0
  104. package/src/dex/pancakeswap-v3/contract-math/FixedPoint128.ts +3 -0
  105. package/src/dex/pancakeswap-v3/contract-math/FixedPoint96.ts +4 -0
  106. package/src/dex/pancakeswap-v3/contract-math/FullMath.ts +30 -0
  107. package/src/dex/pancakeswap-v3/contract-math/LiquidityMath.ts +17 -0
  108. package/src/dex/pancakeswap-v3/contract-math/Oracle.ts +226 -0
  109. package/src/dex/pancakeswap-v3/contract-math/SqrtPriceMath.ts +226 -0
  110. package/src/dex/pancakeswap-v3/contract-math/SwapMath.ts +139 -0
  111. package/src/dex/pancakeswap-v3/contract-math/Tick.ts +82 -0
  112. package/src/dex/pancakeswap-v3/contract-math/TickBitMap.ts +128 -0
  113. package/src/dex/pancakeswap-v3/contract-math/TickMath.ts +211 -0
  114. package/src/dex/pancakeswap-v3/contract-math/UnsafeMath.ts +5 -0
  115. package/src/dex/pancakeswap-v3/contract-math/pancakeswap-v3-math.ts +691 -0
  116. package/src/dex/pancakeswap-v3/contract-math/utils.ts +11 -0
  117. package/src/dex/pancakeswap-v3/pancakeswap-v3-e2e.test.ts +168 -0
  118. package/src/dex/pancakeswap-v3/pancakeswap-v3-events.test.ts +124 -0
  119. package/src/dex/pancakeswap-v3/pancakeswap-v3-integration.test.ts +460 -0
  120. package/src/dex/pancakeswap-v3/pancakeswap-v3-pool.ts +554 -0
  121. package/src/dex/pancakeswap-v3/pancakeswap-v3.ts +1000 -0
  122. package/src/dex/uniswap-v3/config.ts +0 -32
  123. package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +0 -156
  124. package/src/dex/uniswap-v3/uniswap-v3-events.test.ts +4 -0
  125. package/src/dex/uniswap-v3/uniswap-v3-pool.ts +1 -2
  126. package/src/dex/uniswap-v3/uniswap-v3.ts +0 -1
  127. package/tests/constants-e2e.ts +1 -1
  128. package/.idea/aws.xml +0 -17
  129. package/.idea/codeStyles/Project.xml +0 -19
  130. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  131. package/.idea/misc.xml +0 -6
  132. package/.idea/modules.xml +0 -8
  133. package/.idea/paraswap-dex-lib.iml +0 -9
  134. package/.idea/vcs.xml +0 -6
  135. package/build/abi/woo-fi/WooFeeManager.abi.json +0 -318
  136. package/build/abi/woo-fi/WooPP.abi.json +0 -548
  137. package/build/abi/woo-fi/Wooracle.abi.json +0 -260
  138. package/build/dex/aave-v3/tokens/arbitrum.json +0 -50
  139. package/build/dex/aave-v3/tokens/avalanche.json +0 -74
  140. package/build/dex/aave-v3/tokens/fantom.json +0 -62
  141. package/build/dex/aave-v3/tokens/optimism.json +0 -50
  142. package/build/dex/aave-v3/tokens/polygon.json +0 -116
  143. package/build/dex/quickswap-v3.d.ts +0 -21
  144. package/build/dex/quickswap-v3.js +0 -40
  145. package/build/dex/quickswap-v3.js.map +0 -1
  146. package/build/dex/woo-fi/config.js +0 -141
  147. package/build/dex/woo-fi/config.js.map +0 -1
  148. package/build/dex/woo-fi/constants.d.ts +0 -5
  149. package/build/dex/woo-fi/constants.js +0 -20
  150. package/build/dex/woo-fi/constants.js.map +0 -1
  151. package/build/dex/woo-fi/types.d.ts +0 -48
  152. package/build/dex/woo-fi/types.js +0 -3
  153. package/build/dex/woo-fi/types.js.map +0 -1
  154. package/build/dex/woo-fi/woo-fi-decimal-math.d.ts +0 -14
  155. package/build/dex/woo-fi/woo-fi-decimal-math.js +0 -42
  156. package/build/dex/woo-fi/woo-fi-decimal-math.js.map +0 -1
  157. package/build/dex/woo-fi/woo-fi-math.d.ts +0 -31
  158. package/build/dex/woo-fi/woo-fi-math.js +0 -300
  159. package/build/dex/woo-fi/woo-fi-math.js.map +0 -1
  160. package/build/dex/woo-fi/woo-fi.d.ts +0 -65
  161. package/build/dex/woo-fi/woo-fi.js +0 -480
  162. package/build/dex/woo-fi/woo-fi.js.map +0 -1
  163. package/src/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.ts +0 -28
  164. /package/src/abi/{uniswap-v3/pancakeswap-v3/PancakeswapV3QuoterV2.abi.json → pancakeswap-v3/PancakeswapV3Quoter.abi.json} +0 -0
  165. /package/src/abi/{uniswap-v3/pancakeswap-v3 → pancakeswap-v3}/PancakeswapV3Router.abi.json +0 -0
@@ -0,0 +1,168 @@
1
+ import dotenv from 'dotenv';
2
+ dotenv.config();
3
+
4
+ import { testE2E } from '../../../tests/utils-e2e';
5
+ import {
6
+ Tokens,
7
+ Holders,
8
+ NativeTokenSymbols,
9
+ } from '../../../tests/constants-e2e';
10
+ import { Network, ContractMethod, SwapSide } from '../../constants';
11
+ import { StaticJsonRpcProvider } from '@ethersproject/providers';
12
+ import { generateConfig } from '../../config';
13
+
14
+ describe('PancakeswapV3 E2E', () => {
15
+ const dexKey = 'PancakeswapV3';
16
+
17
+ describe('PancakeswapV3 MAINNET', () => {
18
+ const network = Network.MAINNET;
19
+ const tokens = Tokens[network];
20
+ const holders = Holders[network];
21
+ const provider = new StaticJsonRpcProvider(
22
+ generateConfig(network).privateHttpProvider,
23
+ network,
24
+ );
25
+
26
+ const tokenASymbol: string = 'USDT';
27
+ const tokenBSymbol: string = 'USDC';
28
+ const nativeTokenSymbol = NativeTokenSymbols[network];
29
+
30
+ const tokenAAmount: string = '100000000';
31
+ const tokenBAmount: string = '100000000';
32
+ const nativeTokenAmount = '1000000000000000000';
33
+
34
+ const sideToContractMethods = new Map([
35
+ [
36
+ SwapSide.SELL,
37
+ [
38
+ ContractMethod.simpleSwap,
39
+ ContractMethod.multiSwap,
40
+ ContractMethod.megaSwap,
41
+ ],
42
+ ],
43
+ [SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
44
+ ]);
45
+
46
+ sideToContractMethods.forEach((contractMethods, side) =>
47
+ contractMethods.forEach((contractMethod: ContractMethod) => {
48
+ describe(`${contractMethod}`, () => {
49
+ it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
50
+ await testE2E(
51
+ tokens[nativeTokenSymbol],
52
+ tokens[tokenASymbol],
53
+ holders[nativeTokenSymbol],
54
+ side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
55
+ side,
56
+ dexKey,
57
+ contractMethod,
58
+ network,
59
+ provider,
60
+ );
61
+ });
62
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
63
+ await testE2E(
64
+ tokens[tokenASymbol],
65
+ tokens[nativeTokenSymbol],
66
+ holders[tokenASymbol],
67
+ side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
68
+ side,
69
+ dexKey,
70
+ contractMethod,
71
+ network,
72
+ provider,
73
+ );
74
+ });
75
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
76
+ await testE2E(
77
+ tokens[tokenASymbol],
78
+ tokens[tokenBSymbol],
79
+ holders[tokenASymbol],
80
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
81
+ side,
82
+ dexKey,
83
+ contractMethod,
84
+ network,
85
+ provider,
86
+ );
87
+ });
88
+ });
89
+ }),
90
+ );
91
+ });
92
+
93
+ describe('PancakeswapV3 BSC', () => {
94
+ const network = Network.BSC;
95
+ const tokens = Tokens[network];
96
+ const holders = Holders[network];
97
+ const provider = new StaticJsonRpcProvider(
98
+ generateConfig(network).privateHttpProvider,
99
+ network,
100
+ );
101
+
102
+ const tokenASymbol: string = 'BUSD';
103
+ const tokenBSymbol: string = 'WBNB';
104
+ const nativeTokenSymbol = NativeTokenSymbols[network];
105
+
106
+ const tokenAAmount: string = '100000000000000000000';
107
+ const tokenBAmount: string = '1000000000000000000';
108
+ const nativeTokenAmount = '1000000000000000000';
109
+
110
+ const sideToContractMethods = new Map([
111
+ [
112
+ SwapSide.SELL,
113
+ [
114
+ ContractMethod.simpleSwap,
115
+ ContractMethod.multiSwap,
116
+ ContractMethod.megaSwap,
117
+ ],
118
+ ],
119
+ [SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
120
+ ]);
121
+
122
+ sideToContractMethods.forEach((contractMethods, side) =>
123
+ contractMethods.forEach((contractMethod: ContractMethod) => {
124
+ describe(`${contractMethod}`, () => {
125
+ it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
126
+ await testE2E(
127
+ tokens[nativeTokenSymbol],
128
+ tokens[tokenASymbol],
129
+ holders[nativeTokenSymbol],
130
+ side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
131
+ side,
132
+ dexKey,
133
+ contractMethod,
134
+ network,
135
+ provider,
136
+ );
137
+ });
138
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
139
+ await testE2E(
140
+ tokens[tokenASymbol],
141
+ tokens[nativeTokenSymbol],
142
+ holders[tokenASymbol],
143
+ side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
144
+ side,
145
+ dexKey,
146
+ contractMethod,
147
+ network,
148
+ provider,
149
+ );
150
+ });
151
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
152
+ await testE2E(
153
+ tokens[tokenASymbol],
154
+ tokens[tokenBSymbol],
155
+ holders[tokenASymbol],
156
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
157
+ side,
158
+ dexKey,
159
+ contractMethod,
160
+ network,
161
+ provider,
162
+ );
163
+ });
164
+ });
165
+ }),
166
+ );
167
+ });
168
+ });
@@ -0,0 +1,124 @@
1
+ /* eslint-disable no-console */
2
+ import dotenv from 'dotenv';
3
+ dotenv.config();
4
+
5
+ import { PancakeswapV3Config } from './config';
6
+ import { Network } from '../../constants';
7
+ import { DummyDexHelper } from '../../dex-helper/index';
8
+ import { testEventSubscriber } from '../../../tests/utils-events';
9
+ import { Interface } from '@ethersproject/abi';
10
+ import ERC20ABI from '../../abi/erc20.json';
11
+ import StateMulticallABI from '../../abi/pancakeswap-v3/PancakeV3StateMulticall.abi.json';
12
+ import { AbiItem } from 'web3-utils';
13
+ import { PancakeSwapV3EventPool } from './pancakeswap-v3-pool';
14
+ import { PoolState } from '../uniswap-v3/types';
15
+
16
+ jest.setTimeout(300 * 1000);
17
+ const dexKey = 'PancakeswapV3';
18
+ const network = Network.MAINNET;
19
+ const config = PancakeswapV3Config[dexKey][network];
20
+
21
+ async function fetchPoolStateFromContract(
22
+ pancakeswapV3Pool: PancakeSwapV3EventPool,
23
+ blockNumber: number,
24
+ poolAddress: string,
25
+ ): Promise<PoolState | undefined> {
26
+ const message = `PancakeswapV3: ${poolAddress} blockNumber ${blockNumber}`;
27
+ console.log(`Fetching state ${message}`);
28
+ // Be careful to not request state prior to contract deployment
29
+ // Otherwise need to use manual state sourcing from multicall
30
+ // We had that mechanism, but removed it with this commit
31
+ // You can restore it, but better just to find block after state multicall
32
+ // deployment
33
+ const state = await pancakeswapV3Pool.generateState(blockNumber);
34
+
35
+ console.log(`Done ${message}`);
36
+
37
+ return state;
38
+ }
39
+
40
+ describe('PancakeswapV3 Event', function () {
41
+ const poolAddress = '0x04c8577958CcC170EB3d2CCa76F9d51bc6E42D8f';
42
+ const poolFeeCode = 100n;
43
+ const token0 = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48';
44
+ const token1 = '0xdAC17F958D2ee523a2206206994597C13D831ec7';
45
+
46
+ const blockNumbers: { [eventName: string]: number[] } = {
47
+ ['Swap']: [
48
+ 17030597, 17031935, 17032362, 17035931, 17038708, 17039103, 17039688,
49
+ 17039812, 17046030, 17046317, 17046694, 17047063, 17047219, 17056731,
50
+ 17057640, 17057862, 17057892, 17057955, 17063052, 17063127, 17063524,
51
+ 17091869, 17093155, 17093506, 17146325, 17146863, 17147474, 17147830,
52
+ 17154952, 17159976, 17160283, 17160720, 17233700, 17234168, 17234407,
53
+ 17234433, 17242498, 17242712, 17243089, 17276770, 17277552, 17277733,
54
+ 17320467,
55
+ ],
56
+ ['Burn']: [
57
+ 17030970, 17031054, 17031107, 17031773, 17031838, 17033280, 17036092,
58
+ 17042331, 17042392, 17043224, 17097388, 17098794, 17099011, 17118506,
59
+ 17121704, 17143519, 17163847, 17207834, 17213897, 17249508, 17251725,
60
+ ],
61
+ ['Mint']: [
62
+ 17030284, 17031045, 17033298, 17033315, 17036173, 17042433, 17043299,
63
+ 17044836, 17044855, 17046316, 17047699, 17047732, 17050119, 17071407,
64
+ 17074384, 17090265, 17092669, 17093251, 17094015, 17121836, 17147932,
65
+ 17163857, 17172266, 17185894, 17194153, 17199371, 17249453,
66
+ ],
67
+ ['SetFeeProtocol']: [],
68
+ ['IncreaseObservationCardinalityNext']: [],
69
+ ['Collect']: [
70
+ 17117306, 17118506, 17121704, 17143519, 17147612, 17160005, 17163847,
71
+ 17192312, 17201868, 17205784, 17207834, 17213120, 17213897, 17241053,
72
+ 17249508, 17251725,
73
+ ],
74
+ ['Flash']: [],
75
+ };
76
+
77
+ describe('PancakeswapV3EventPool', function () {
78
+ Object.keys(blockNumbers).forEach((event: string) => {
79
+ blockNumbers[event].forEach((blockNumber: number) => {
80
+ it(`${event}:${blockNumber} - should return correct state`, async function () {
81
+ const dexHelper = new DummyDexHelper(network);
82
+
83
+ const logger = dexHelper.getLogger(dexKey);
84
+
85
+ const pancakeswapV3Pool = new PancakeSwapV3EventPool(
86
+ dexHelper,
87
+ dexKey,
88
+ new dexHelper.web3Provider.eth.Contract(
89
+ StateMulticallABI as AbiItem[],
90
+ config.stateMulticall,
91
+ ),
92
+ new Interface(ERC20ABI),
93
+ config.factory,
94
+ poolFeeCode,
95
+ token0,
96
+ token1,
97
+ logger,
98
+ undefined,
99
+ config.initHash,
100
+ config.deployer,
101
+ );
102
+
103
+ // It is done in generateState. But here have to make it manually
104
+ pancakeswapV3Pool.poolAddress = poolAddress.toLowerCase();
105
+ pancakeswapV3Pool.addressesSubscribed[0] = poolAddress;
106
+
107
+ await testEventSubscriber(
108
+ pancakeswapV3Pool,
109
+ pancakeswapV3Pool.addressesSubscribed,
110
+ (_blockNumber: number) =>
111
+ fetchPoolStateFromContract(
112
+ pancakeswapV3Pool,
113
+ _blockNumber,
114
+ poolAddress,
115
+ ),
116
+ blockNumber,
117
+ `${dexKey}_${poolAddress}`,
118
+ dexHelper.provider,
119
+ );
120
+ });
121
+ });
122
+ });
123
+ });
124
+ });