1
1
// SPDX-License-Identifier: MIT
2
2
pragma solidity ^ 0.8.0 ;
3
3
4
- import "./BNBPartyCreation .sol " ;
4
+ import "./BNBPartyLiquidityHelper .sol " ;
5
5
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol " ;
6
6
7
7
/// @title BNBPartyLiquidity
8
- /// @notice This abstract contract manages handling of liquidity pools within the BNB Party system.
9
- abstract contract BNBPartyLiquidity is BNBPartyCreation {
8
+ /// @notice This abstract contract manages the creation and handling of liquidity pools within the BNB Party system.
9
+ abstract contract BNBPartyLiquidity is BNBPartyLiquidityHelper {
10
10
/// @notice Handles liquidity by decreasing the liquidity, collecting tokens, and creating a new liquidity pool.
11
11
/// @param recipient Address receiving the bonus BNB
12
12
/// @dev Decreases liquidity, collects tokens, creates a new pool, and sends bonuses
@@ -18,24 +18,7 @@ abstract contract BNBPartyLiquidity is BNBPartyCreation {
18
18
uint128 liquidity = pool.liquidity ();
19
19
20
20
// Decrease liquidity and collect tokens
21
- (uint256 amount0 , uint256 amount1 ) = BNBPositionManager.decreaseLiquidity (
22
- INonfungiblePositionManager.DecreaseLiquidityParams ({
23
- tokenId: lpToTokenId[msg .sender ],
24
- liquidity: liquidity,
25
- amount0Min: 0 ,
26
- amount1Min: 0 ,
27
- deadline: block .timestamp
28
- })
29
- );
30
-
31
- BNBPositionManager.collect (
32
- INonfungiblePositionManager.CollectParams ({
33
- tokenId: lpToTokenId[msg .sender ],
34
- recipient: address (this ),
35
- amount0Max: uint128 (amount0),
36
- amount1Max: uint128 (amount1)
37
- })
38
- );
21
+ (uint256 amount0 , uint256 amount1 ) = _decreaseAndCollect (lpToTokenId[msg .sender ], liquidity);
39
22
40
23
uint256 unwrapAmount = party.bonusTargetReach + party.bonusPartyCreator + party.targetReachFee;
41
24
uint160 newSqrtPriceX96;
@@ -59,24 +42,14 @@ abstract contract BNBPartyLiquidity is BNBPartyCreation {
59
42
);
60
43
}
61
44
62
- IERC20 (token0). approve ( address (positionManager), amount0);
63
- IERC20 ( token1). approve ( address (positionManager) , amount1);
45
+ // Approve tokens for the new liquidity pool creation
46
+ _approveTokens (token0, token1, amount0 , amount1);
64
47
// Create new Liquidity Pool
65
48
_createLP (positionManager, token0, token1, amount0, amount1, newSqrtPriceX96, party.lpFee, party.lpTicks);
66
49
67
50
// Send bonuses
68
51
_unwrapAndSendBNB (recipient, unwrapAmount);
69
52
// burn meme tokens
70
- if (token0 == address (WBNB)) {
71
- _burnMemeToken (token1);
72
- }
73
- else {
74
- _burnMemeToken (token0);
75
- }
76
- }
77
-
78
- function _burnMemeToken (address token ) internal {
79
- uint256 balance = IERC20 (token).balanceOf (address (this ));
80
- ERC20Burnable (token).burn (balance);
53
+ _burnMemeToken (token0 == address (WBNB) ? token1 : token0);
81
54
}
82
55
}
0 commit comments