{
    "Function": "_burnLiquidity",
    "File": "contracts/SemiFungiblePositionManager.sol",
    "Parent Contracts": [
        "contracts/multicall/Multicall.sol",
        "contracts/tokens/ERC1155Minimal.sol"
    ],
    "High-Level Calls": [
        "LiquidityChunk",
        "LiquidityChunk",
        "LiquidityChunk",
        "LeftRight",
        "LeftRight",
        "IUniswapV3Pool"
    ],
    "Internal Calls": [],
    "Library Calls": [
        "tickLower",
        "tickUpper",
        "toRightSlot",
        "liquidity",
        "toLeftSlot"
    ],
    "Low-Level Calls": [],
    "Code": "function _burnLiquidity(\n        uint256 liquidityChunk,\n        IUniswapV3Pool univ3pool\n    ) internal returns (int256 movedAmounts) {\n        // burn that option's liquidity in the Uniswap Pool.\n        // This will send the underlying tokens back to the Panoptic Pool (msg.sender)\n        (uint256 amount0, uint256 amount1) = univ3pool.burn(\n            liquidityChunk.tickLower(),\n            liquidityChunk.tickUpper(),\n            liquidityChunk.liquidity()\n        );\n\n        // amount0 The amount of token0 that was sent back to the Panoptic Pool\n        // amount1 The amount of token1 that was sent back to the Panoptic Pool\n        // no need to safecast to int from uint here as the max position size is int128\n        // decrement the amountsOut with burnt amounts. amountsOut = notional value of tokens moved\n        unchecked {\n            movedAmounts = int256(0).toRightSlot(-int128(int256(amount0))).toLeftSlot(\n                -int128(int256(amount1))\n            );\n        }\n    }"
}