@paraswap/dex-lib 2.42.4-baseswap → 2.42.4-baseswap.3

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 (36) hide show
  1. package/build/dex/index.js +0 -2
  2. package/build/dex/index.js.map +1 -1
  3. package/build/dex/uniswap-v3/config.js +14 -0
  4. package/build/dex/uniswap-v3/config.js.map +1 -1
  5. package/build/dex/uniswap-v3/uniswap-v3.js +1 -0
  6. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  7. package/package.json +1 -1
  8. package/src/dex/index.ts +0 -2
  9. package/src/dex/uniswap-v3/config.ts +14 -0
  10. package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +24 -0
  11. package/src/dex/uniswap-v3/uniswap-v3-integration.test.ts +375 -0
  12. package/src/dex/uniswap-v3/uniswap-v3.ts +1 -0
  13. package/src/dex/baseswap-v3/baseswap-v3-e2e.test.ts +0 -129
  14. package/src/dex/baseswap-v3/baseswap-v3-events.test.ts +0 -141
  15. package/src/dex/baseswap-v3/baseswap-v3-factory.ts +0 -73
  16. package/src/dex/baseswap-v3/baseswap-v3-integration.test.ts +0 -472
  17. package/src/dex/baseswap-v3/baseswap-v3-pool.ts +0 -519
  18. package/src/dex/baseswap-v3/baseswap-v3.ts +0 -1243
  19. package/src/dex/baseswap-v3/config.ts +0 -53
  20. package/src/dex/baseswap-v3/constants.ts +0 -41
  21. package/src/dex/baseswap-v3/contract-math/BitMath.ts +0 -90
  22. package/src/dex/baseswap-v3/contract-math/FixedPoint128.ts +0 -3
  23. package/src/dex/baseswap-v3/contract-math/FixedPoint96.ts +0 -4
  24. package/src/dex/baseswap-v3/contract-math/FullMath.ts +0 -30
  25. package/src/dex/baseswap-v3/contract-math/LiquidityMath.ts +0 -17
  26. package/src/dex/baseswap-v3/contract-math/Oracle.ts +0 -226
  27. package/src/dex/baseswap-v3/contract-math/SqrtPriceMath.ts +0 -226
  28. package/src/dex/baseswap-v3/contract-math/SwapMath.ts +0 -139
  29. package/src/dex/baseswap-v3/contract-math/Tick.ts +0 -82
  30. package/src/dex/baseswap-v3/contract-math/TickBitMap.ts +0 -123
  31. package/src/dex/baseswap-v3/contract-math/TickMath.ts +0 -211
  32. package/src/dex/baseswap-v3/contract-math/UnsafeMath.ts +0 -5
  33. package/src/dex/baseswap-v3/contract-math/uniswap-v3-math.ts +0 -666
  34. package/src/dex/baseswap-v3/contract-math/utils.ts +0 -55
  35. package/src/dex/baseswap-v3/types.ts +0 -191
  36. package/src/dex/baseswap-v3/utils.ts +0 -83
@@ -11,6 +11,7 @@ import { checkPoolPrices, checkPoolsLiquidity } from '../../../tests/utils';
11
11
  import { Tokens } from '../../../tests/constants-e2e';
12
12
  import UniswapV3QuoterV2ABI from '../../abi/uniswap-v3/UniswapV3QuoterV2.abi.json';
13
13
  import { Address } from '@paraswap/core';
14
+ import { BaseswapV3 } from '../baseswap-v3/baseswap-v3';
14
15
 
15
16
  const network = Network.POLYGON;
16
17
  const TokenASymbol = 'USDC';
@@ -1239,3 +1240,377 @@ describe('Retro', () => {
1239
1240
  });
1240
1241
  });
1241
1242
  });
1243
+
1244
+ describe('BaseswapV3', function () {
1245
+ const dexKey = 'BaseswapV3';
1246
+
1247
+ describe('Base', function () {
1248
+ const network = Network.BASE;
1249
+ const dexHelper = new DummyDexHelper(network);
1250
+
1251
+ let blockNumber: number;
1252
+ let retro: UniswapV3;
1253
+
1254
+ const TokenASymbol = 'USDC';
1255
+ const TokenA = Tokens[network][TokenASymbol];
1256
+
1257
+ const TokenBSymbol = 'WETH';
1258
+ const TokenB = Tokens[network][TokenBSymbol];
1259
+
1260
+ const QuoterV2 = '0x4fDBD73aD4B1DDde594BF05497C15f76308eFfb9';
1261
+
1262
+ beforeEach(async () => {
1263
+ blockNumber = await dexHelper.web3Provider.eth.getBlockNumber();
1264
+ retro = new UniswapV3(network, dexKey, dexHelper);
1265
+ });
1266
+
1267
+ it('getPoolIdentifiers and getPricesVolume SELL', async function () {
1268
+ const pools = await retro.getPoolIdentifiers(
1269
+ TokenA,
1270
+ TokenB,
1271
+ SwapSide.SELL,
1272
+ blockNumber,
1273
+ );
1274
+ console.log(
1275
+ `${TokenASymbol} <> ${TokenBSymbol} Pool Identifiers: `,
1276
+ pools,
1277
+ );
1278
+
1279
+ expect(pools.length).toBeGreaterThan(0);
1280
+
1281
+ const poolPrices = await retro.getPricesVolume(
1282
+ TokenA,
1283
+ TokenB,
1284
+ amounts,
1285
+ SwapSide.SELL,
1286
+ blockNumber,
1287
+ pools,
1288
+ );
1289
+ console.log(
1290
+ `${TokenASymbol} <> ${TokenBSymbol} Pool Prices: `,
1291
+ poolPrices,
1292
+ );
1293
+
1294
+ expect(poolPrices).not.toBeNull();
1295
+ checkPoolPrices(poolPrices!, amounts, SwapSide.SELL, dexKey);
1296
+
1297
+ let falseChecksCounter = 0;
1298
+ await Promise.all(
1299
+ poolPrices!.map(async price => {
1300
+ const fee = retro.eventPools[price.poolIdentifier!]!.feeCode;
1301
+ const res = await checkOnChainPricing(
1302
+ dexHelper,
1303
+ retro,
1304
+ 'quoteExactInputSingle',
1305
+ blockNumber,
1306
+ QuoterV2,
1307
+ price.prices,
1308
+ TokenA.address,
1309
+ TokenB.address,
1310
+ fee,
1311
+ amounts,
1312
+ );
1313
+ if (res === false) falseChecksCounter++;
1314
+ }),
1315
+ );
1316
+
1317
+ expect(falseChecksCounter).toBeLessThan(poolPrices!.length);
1318
+ });
1319
+
1320
+ it('getPoolIdentifiers and getPricesVolume BUY', async function () {
1321
+ const pools = await retro.getPoolIdentifiers(
1322
+ TokenA,
1323
+ TokenB,
1324
+ SwapSide.BUY,
1325
+ blockNumber,
1326
+ );
1327
+ console.log(
1328
+ `${TokenASymbol} <> ${TokenBSymbol} Pool Identifiers: `,
1329
+ pools,
1330
+ );
1331
+
1332
+ expect(pools.length).toBeGreaterThan(0);
1333
+
1334
+ const poolPrices = await retro.getPricesVolume(
1335
+ TokenA,
1336
+ TokenB,
1337
+ amountsBuy,
1338
+ SwapSide.BUY,
1339
+ blockNumber,
1340
+ pools,
1341
+ );
1342
+ console.log(
1343
+ `${TokenASymbol} <> ${TokenBSymbol} Pool Prices: `,
1344
+ poolPrices,
1345
+ );
1346
+
1347
+ expect(poolPrices).not.toBeNull();
1348
+ checkPoolPrices(poolPrices!, amountsBuy, SwapSide.BUY, dexKey);
1349
+
1350
+ // Check if onchain pricing equals to calculated ones
1351
+ let falseChecksCounter = 0;
1352
+ await Promise.all(
1353
+ poolPrices!.map(async price => {
1354
+ const fee = retro.eventPools[price.poolIdentifier!]!.feeCode;
1355
+ const res = await checkOnChainPricing(
1356
+ dexHelper,
1357
+ retro,
1358
+ 'quoteExactOutputSingle',
1359
+ blockNumber,
1360
+ QuoterV2,
1361
+ price.prices,
1362
+ TokenA.address,
1363
+ TokenB.address,
1364
+ fee,
1365
+ amountsBuy,
1366
+ );
1367
+ if (res === false) falseChecksCounter++;
1368
+ }),
1369
+ );
1370
+ expect(falseChecksCounter).toBeLessThan(poolPrices!.length);
1371
+ });
1372
+
1373
+ it('getPoolIdentifiers and getPricesVolume SELL stable pairs', async function () {
1374
+ const TokenASymbol = 'USDbC';
1375
+ const TokenA = Tokens[network][TokenASymbol];
1376
+
1377
+ const TokenBSymbol = 'USDC';
1378
+ const TokenB = Tokens[network][TokenBSymbol];
1379
+
1380
+ const amounts = [
1381
+ 0n,
1382
+ 6000000n,
1383
+ 12000000n,
1384
+ 18000000n,
1385
+ 24000000n,
1386
+ 30000000n,
1387
+ 36000000n,
1388
+ 42000000n,
1389
+ 48000000n,
1390
+ 54000000n,
1391
+ 60000000n,
1392
+ 66000000n,
1393
+ 72000000n,
1394
+ 78000000n,
1395
+ 84000000n,
1396
+ 90000000n,
1397
+ 96000000n,
1398
+ 102000000n,
1399
+ 108000000n,
1400
+ 114000000n,
1401
+ 120000000n,
1402
+ 126000000n,
1403
+ 132000000n,
1404
+ 138000000n,
1405
+ 144000000n,
1406
+ 150000000n,
1407
+ 156000000n,
1408
+ 162000000n,
1409
+ 168000000n,
1410
+ 174000000n,
1411
+ 180000000n,
1412
+ 186000000n,
1413
+ 192000000n,
1414
+ 198000000n,
1415
+ 204000000n,
1416
+ 210000000n,
1417
+ 216000000n,
1418
+ 222000000n,
1419
+ 228000000n,
1420
+ 234000000n,
1421
+ 240000000n,
1422
+ 246000000n,
1423
+ 252000000n,
1424
+ 258000000n,
1425
+ 264000000n,
1426
+ 270000000n,
1427
+ 276000000n,
1428
+ 282000000n,
1429
+ 288000000n,
1430
+ 294000000n,
1431
+ 300000000n,
1432
+ ];
1433
+
1434
+ const pools = await retro.getPoolIdentifiers(
1435
+ TokenA,
1436
+ TokenB,
1437
+ SwapSide.SELL,
1438
+ blockNumber,
1439
+ );
1440
+ console.log(
1441
+ `${TokenASymbol} <> ${TokenBSymbol} Pool Identifiers: `,
1442
+ pools,
1443
+ );
1444
+
1445
+ expect(pools.length).toBeGreaterThan(0);
1446
+
1447
+ const poolPrices = await retro.getPricesVolume(
1448
+ TokenA,
1449
+ TokenB,
1450
+ amounts,
1451
+ SwapSide.SELL,
1452
+ blockNumber,
1453
+ pools,
1454
+ );
1455
+ console.log(
1456
+ `${TokenASymbol} <> ${TokenBSymbol} Pool Prices: `,
1457
+ poolPrices,
1458
+ );
1459
+
1460
+ expect(poolPrices).not.toBeNull();
1461
+ checkPoolPrices(
1462
+ poolPrices!.filter(pp => pp.unit !== 0n),
1463
+ amounts,
1464
+ SwapSide.SELL,
1465
+ dexKey,
1466
+ );
1467
+
1468
+ // Check if onchain pricing equals to calculated ones
1469
+ let falseChecksCounter = 0;
1470
+ await Promise.all(
1471
+ poolPrices!.map(async price => {
1472
+ const fee = retro.eventPools[price.poolIdentifier!]!.feeCode;
1473
+ const res = await checkOnChainPricing(
1474
+ dexHelper,
1475
+ retro,
1476
+ 'quoteExactInputSingle',
1477
+ blockNumber,
1478
+ QuoterV2,
1479
+ price.prices,
1480
+ TokenA.address,
1481
+ TokenB.address,
1482
+ fee,
1483
+ amounts,
1484
+ );
1485
+ if (res === false) falseChecksCounter++;
1486
+ }),
1487
+ );
1488
+ expect(falseChecksCounter).toBeLessThan(poolPrices!.length);
1489
+ });
1490
+
1491
+ it('getPoolIdentifiers and getPricesVolume BUY stable pairs', async function () {
1492
+ const TokenASymbol = 'DAI';
1493
+ const TokenA = Tokens[network][TokenASymbol];
1494
+
1495
+ const TokenBSymbol = 'USDC';
1496
+ const TokenB = Tokens[network][TokenBSymbol];
1497
+
1498
+ const amountsBuy = [
1499
+ 0n,
1500
+ 6000000n,
1501
+ 12000000n,
1502
+ 18000000n,
1503
+ 24000000n,
1504
+ 30000000n,
1505
+ 36000000n,
1506
+ 42000000n,
1507
+ 48000000n,
1508
+ 54000000n,
1509
+ 60000000n,
1510
+ 66000000n,
1511
+ 72000000n,
1512
+ 78000000n,
1513
+ 84000000n,
1514
+ 90000000n,
1515
+ 96000000n,
1516
+ 102000000n,
1517
+ 108000000n,
1518
+ 114000000n,
1519
+ 120000000n,
1520
+ 126000000n,
1521
+ 132000000n,
1522
+ 138000000n,
1523
+ 144000000n,
1524
+ 150000000n,
1525
+ 156000000n,
1526
+ 162000000n,
1527
+ 168000000n,
1528
+ 174000000n,
1529
+ 180000000n,
1530
+ 186000000n,
1531
+ 192000000n,
1532
+ 198000000n,
1533
+ 204000000n,
1534
+ 210000000n,
1535
+ 216000000n,
1536
+ 222000000n,
1537
+ 228000000n,
1538
+ 234000000n,
1539
+ 240000000n,
1540
+ 246000000n,
1541
+ 252000000n,
1542
+ 258000000n,
1543
+ 264000000n,
1544
+ 270000000n,
1545
+ 276000000n,
1546
+ 282000000n,
1547
+ 288000000n,
1548
+ 294000000n,
1549
+ 300000000n,
1550
+ ];
1551
+
1552
+ const pools = await retro.getPoolIdentifiers(
1553
+ TokenA,
1554
+ TokenB,
1555
+ SwapSide.BUY,
1556
+ blockNumber,
1557
+ );
1558
+ console.log(
1559
+ `${TokenASymbol} <> ${TokenBSymbol} Pool Identifiers: `,
1560
+ pools,
1561
+ );
1562
+
1563
+ expect(pools.length).toBeGreaterThan(0);
1564
+
1565
+ const poolPrices = await retro.getPricesVolume(
1566
+ TokenA,
1567
+ TokenB,
1568
+ amountsBuy,
1569
+ SwapSide.BUY,
1570
+ blockNumber,
1571
+ pools,
1572
+ );
1573
+ console.log(
1574
+ `${TokenASymbol} <> ${TokenBSymbol} Pool Prices: `,
1575
+ poolPrices,
1576
+ );
1577
+
1578
+ expect(poolPrices).not.toBeNull();
1579
+ checkPoolPrices(
1580
+ poolPrices!.filter(pp => pp.unit !== 0n),
1581
+ amountsBuy,
1582
+ SwapSide.BUY,
1583
+ dexKey,
1584
+ );
1585
+
1586
+ // Check if onchain pricing equals to calculated ones
1587
+ let falseChecksCounter = 0;
1588
+ await Promise.all(
1589
+ poolPrices!.map(async price => {
1590
+ const fee = retro.eventPools[price.poolIdentifier!]!.feeCode;
1591
+ const res = await checkOnChainPricing(
1592
+ dexHelper,
1593
+ retro,
1594
+ 'quoteExactOutputSingle',
1595
+ blockNumber,
1596
+ QuoterV2,
1597
+ price.prices,
1598
+ TokenA.address,
1599
+ TokenB.address,
1600
+ fee,
1601
+ amountsBuy,
1602
+ );
1603
+ if (res === false) falseChecksCounter++;
1604
+ }),
1605
+ );
1606
+ expect(falseChecksCounter).toBeLessThan(poolPrices!.length);
1607
+ });
1608
+
1609
+ it('getTopPoolsForToken', async function () {
1610
+ const poolLiquidity = await retro.getTopPoolsForToken(TokenB.address, 10);
1611
+ console.log(`${TokenASymbol} Top Pools:`, poolLiquidity);
1612
+
1613
+ checkPoolsLiquidity(poolLiquidity, TokenB.address, dexKey);
1614
+ });
1615
+ });
1616
+ });
@@ -100,6 +100,7 @@ export class UniswapV3
100
100
  'RamsesV2',
101
101
  'ChronosV3',
102
102
  'Retro',
103
+ 'BaseswapV3',
103
104
  ]),
104
105
  );
105
106
 
@@ -1,129 +0,0 @@
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
- function testForNetwork(
15
- network: Network,
16
- dexKey: string,
17
- tokenASymbol: string,
18
- tokenBSymbol: string,
19
- tokenAAmount: string,
20
- tokenBAmount: string,
21
- nativeTokenAmount: string,
22
- slippage?: number | undefined,
23
- ) {
24
- const provider = new StaticJsonRpcProvider(
25
- generateConfig(network).privateHttpProvider,
26
- network,
27
- );
28
- const tokens = Tokens[network];
29
- const holders = Holders[network];
30
- const nativeTokenSymbol = NativeTokenSymbols[network];
31
-
32
- const sideToContractMethods = new Map([
33
- [
34
- SwapSide.SELL,
35
- [
36
- ContractMethod.simpleSwap,
37
- ContractMethod.multiSwap,
38
- ContractMethod.megaSwap,
39
- ],
40
- ],
41
- [SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
42
- ]);
43
-
44
- describe(`${network}`, () => {
45
- sideToContractMethods.forEach((contractMethods, side) =>
46
- describe(`${side}`, () => {
47
- contractMethods.forEach((contractMethod: ContractMethod) => {
48
- describe(`${contractMethod}`, () => {
49
- it(`${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
- undefined,
61
- undefined,
62
- undefined,
63
- slippage,
64
- );
65
- });
66
- it(`${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
67
- await testE2E(
68
- tokens[tokenASymbol],
69
- tokens[nativeTokenSymbol],
70
- holders[tokenASymbol],
71
- side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
72
- side,
73
- dexKey,
74
- contractMethod,
75
- network,
76
- provider,
77
- undefined,
78
- undefined,
79
- undefined,
80
- slippage,
81
- );
82
- });
83
- it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
84
- await testE2E(
85
- tokens[tokenASymbol],
86
- tokens[tokenBSymbol],
87
- holders[tokenASymbol],
88
- side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
89
- side,
90
- dexKey,
91
- contractMethod,
92
- network,
93
- provider,
94
- undefined,
95
- undefined,
96
- undefined,
97
- slippage,
98
- );
99
- });
100
- });
101
- });
102
- }),
103
- );
104
- });
105
- }
106
-
107
- describe('BaseswapV3 E2E', () => {
108
- const dexKey = 'BaseswapV3';
109
- describe('Base', () => {
110
- const network = Network.BASE;
111
-
112
- const tokenASymbol: string = 'USDC';
113
- const tokenBSymbol: string = 'USDbC';
114
-
115
- const tokenAAmount: string = '1000000';
116
- const tokenBAmount: string = '1000000';
117
- const nativeTokenAmount = '1000000000000000000';
118
-
119
- testForNetwork(
120
- network,
121
- dexKey,
122
- tokenASymbol,
123
- tokenBSymbol,
124
- tokenAAmount,
125
- tokenBAmount,
126
- nativeTokenAmount,
127
- );
128
- });
129
- });
@@ -1,141 +0,0 @@
1
- /* eslint-disable no-console */
2
- import dotenv from 'dotenv';
3
- dotenv.config();
4
-
5
- import _ from 'lodash';
6
- import { BaseswapV3EventPool } from './baseswap-v3-pool';
7
- import { BaseswapV3Config } from './config';
8
- import { Network } from '../../constants';
9
- import { DummyDexHelper } from '../../dex-helper/index';
10
- import { testEventSubscriber } from '../../../tests/utils-events';
11
- import { PoolState } from './types';
12
- import { Interface } from '@ethersproject/abi';
13
- import ERC20ABI from '../../abi/erc20.json';
14
- import StateMulticallABI from '../../abi/uniswap-v3/UniswapV3StateMulticall.abi.json';
15
- import { AbiItem } from 'web3-utils';
16
-
17
- jest.setTimeout(300 * 1000);
18
- const dexKey = 'BaseswapV3';
19
- const network = Network.BASE;
20
- const config = BaseswapV3Config[dexKey][network];
21
-
22
- async function fetchPoolStateFromContract(
23
- baseswapV3Pool: BaseswapV3EventPool,
24
- blockNumber: number,
25
- poolAddress: string,
26
- ): Promise<PoolState> {
27
- const message = `BaseswapV3: ${poolAddress} blockNumber ${blockNumber}`;
28
- console.log(`Fetching state ${message}`);
29
- // Be careful to not request state prior to contract deployment
30
- // Otherwise need to use manual state sourcing from multicall
31
- // We had that mechanism, but removed it with this commit
32
- // You can restore it, but better just to find block after state multicall
33
- // deployment
34
- const state = baseswapV3Pool.generateState(blockNumber);
35
- console.log(`Done ${message}`);
36
- return state;
37
- }
38
-
39
- describe('BaseswapV3 Event', function () {
40
- const poolAddress = '0xEf3C164b0feE8Eb073513E88EcEa280A58cC9945';
41
- const poolFeeCode = 450n;
42
- const token0 = '0x4200000000000000000000000000000000000006';
43
- const token1 = '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA'; // USDbC
44
-
45
- const blockNumbers: { [eventName: string]: number[] } = {
46
- ['Swap']: [
47
- 5574195, 5574217, 5574296, 5574296, 5574369, 5574404, 5574489, 5574522,
48
- 5574566, 5574579, 5574587, 5574588, 5574611, 5574657, 5574712, 5574737,
49
- 5574761, 5574806, 5574851, 5574896, 5574918, 5574982, 5575086, 5575110,
50
- 5575308, 5575378, 5575490, 5575668,
51
- ],
52
- ['Burn']: [
53
- 5575845, 5609704, 5609704, 5612315, 5612770, 5616727, 5617522, 5617821,
54
- 5620232, 5622253,
55
- ],
56
- // topic0 - 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde
57
- ['Mint']: [
58
- 5594704, 5595166, 5606630, 5609854, 5612343, 5612386, 5612959, 5613707,
59
- 5619196, 5620167, 5622035, 5622391, 5644261, 5645562, 5647711, 5649108,
60
- 5649161, 5649377, 5651799, 5652903,
61
- ],
62
- // topic0 - 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133
63
- ['SetFeeProtocol']: [],
64
- // topic0 - 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a
65
- // There are some events on blockNumbers: 13125816, 12733621, 12591465
66
- // But stateMulticall is not deployed at that time. So I just remove that check
67
- // I think it is not important actually
68
- ['IncreaseObservationCardinalityNext']: [],
69
- ['Collect']: [
70
- 5575845, 5609704, 5612315, 5612770, 5616727, 5617522, 5617821, 5620232,
71
- 5622253, 5642348, 5643915, 5645799, 5646074, 5647176, 5650388, 5650466,
72
- 5653068, 5655334, 5655462, 5656401, 5657882, 5658500, 5659898, 5663603,
73
- 5663999, 5664004, 5670005, 5671343, 5673141,
74
- ],
75
- ['Flash']: [],
76
- };
77
-
78
- describe('BaseswapV3EventPool', () => {
79
- Object.keys(blockNumbers).forEach((event: string) => {
80
- blockNumbers[event].forEach((blockNumber: number) => {
81
- it(`${event}:${blockNumber} - should return correct state`, async function () {
82
- const dexHelper = new DummyDexHelper(network);
83
- // await dexHelper.init();
84
-
85
- const logger = dexHelper.getLogger(dexKey);
86
-
87
- // readonly dexHelper: IDexHelper,
88
- // parentName: string,
89
- // readonly stateMultiContract: Contract,
90
- // readonly decodeStateMultiCallResultWithRelativeBitmaps:
91
- // | DecodeStateMultiCallFunc
92
- // | undefined,
93
- // readonly erc20Interface: Interface,
94
- // protected readonly factoryAddress: Address,
95
- // public feeCode: bigint,
96
- // token0: Address,
97
- // token1: Address,
98
- // logger: Logger,
99
- // mapKey: string = '',
100
- // readonly poolInitCodeHash: string,
101
-
102
- const baseswapV3Pool = new BaseswapV3EventPool(
103
- dexHelper,
104
- dexKey,
105
- new dexHelper.web3Provider.eth.Contract(
106
- StateMulticallABI as AbiItem[],
107
- config.stateMulticall,
108
- ),
109
- undefined,
110
- new Interface(ERC20ABI),
111
- config.factory,
112
- poolFeeCode,
113
- token0,
114
- token1,
115
- logger,
116
- undefined,
117
- config.initHash,
118
- );
119
-
120
- // It is done in generateState. But here have to make it manually
121
- baseswapV3Pool.poolAddress = poolAddress.toLowerCase();
122
- baseswapV3Pool.addressesSubscribed[0] = poolAddress;
123
-
124
- await testEventSubscriber(
125
- baseswapV3Pool,
126
- baseswapV3Pool.addressesSubscribed,
127
- (_blockNumber: number) =>
128
- fetchPoolStateFromContract(
129
- baseswapV3Pool,
130
- _blockNumber,
131
- poolAddress,
132
- ),
133
- blockNumber,
134
- `${dexKey}_${poolAddress}`,
135
- dexHelper.provider,
136
- );
137
- });
138
- });
139
- });
140
- });
141
- });