mirror of
https://github.com/lux-amm/v4-core.git
synced 2026-10-30 20:54:53 +00:00
31 lines
1.3 KiB
Solidity
31 lines
1.3 KiB
Solidity
// SPDX-License-Identifier: UNLICENSED
|
|
pragma solidity ^0.8.20;
|
|
|
|
import {LiquidityAmounts} from "./LiquidityAmounts.sol";
|
|
import {IPoolManager} from "../../src/interfaces/IPoolManager.sol";
|
|
import {ModifyLiquidityParams} from "../../src/types/PoolOperation.sol";
|
|
import {PoolId} from "../../src/types/PoolId.sol";
|
|
import {TickMath} from "../../src/libraries/TickMath.sol";
|
|
import {PoolKey} from "../../src/types/PoolKey.sol";
|
|
import {StateLibrary} from "../../src/libraries/StateLibrary.sol";
|
|
|
|
/// @title Calculate token<>liquidity
|
|
/// @notice Helps calculate amounts for bounding fuzz tests
|
|
library AmountHelpers {
|
|
function getMaxAmountInForPool(IPoolManager manager, ModifyLiquidityParams memory params, PoolKey memory key)
|
|
public
|
|
view
|
|
returns (uint256 amount0, uint256 amount1)
|
|
{
|
|
PoolId id = key.toId();
|
|
uint128 liquidity = StateLibrary.getLiquidity(manager, id);
|
|
(uint160 sqrtPriceX96,,,) = StateLibrary.getSlot0(manager, id);
|
|
|
|
uint160 sqrtPriceX96Lower = TickMath.getSqrtPriceAtTick(params.tickLower);
|
|
uint160 sqrtPriceX96Upper = TickMath.getSqrtPriceAtTick(params.tickUpper);
|
|
|
|
amount0 = LiquidityAmounts.getAmount0ForLiquidity(sqrtPriceX96Lower, sqrtPriceX96, liquidity);
|
|
amount1 = LiquidityAmounts.getAmount1ForLiquidity(sqrtPriceX96Upper, sqrtPriceX96, liquidity);
|
|
}
|
|
}
|