interface IMining {
    // pair
    function addLiquidity(bool isGp, address _user, uint256 _amount) external;
    function removeLiquidity(bool isGp, address _user, uint256 _amount) external;
    function updateGPInfo(address[] calldata gps, uint256[] calldata amounts) external;
    // lp mining
    function onTransferLiquidity(address from, address to, uint256 lpAmount) external;
    function claimLiquidityShares(address user, address[] calldata tokens, uint256[] calldata balances, uint256[] calldata weights, uint256 amount, bool _add) external;
    // swap mining
    function claimSwapShare(address user, address tokenIn, uint256 amountIn, address tokenOut, uint256 amountOut) external;
}
function onTransferLiquidity(address from, address to, uint256 lpAmount) external;

// lp mining