interface IMasterChefV2 {
    struct BondingShareInfo {
        uint256 amount; // How many LP tokens the user has provided.
        uint256 rewardDebt; // Reward debt. See explanation below.
    }
    struct PoolInfo {
        uint256 lastRewardBlock; // Last block number that SUSHI distribution occurs.
        uint256 accuGOVPerShare; // Accumulated SUSHI per share, times 1e12. See below.
    }

    event Deposit(address indexed user, uint256 amount, uint256 bondingShareID);
    event Withdraw(
        address indexed user,
        uint256 amount,
        uint256 bondingShareID
    );

    function deposit(
        address sender,
        uint256 amount,
        uint256 bondingShareID
    ) external;

    // Withdraw LP tokens from MasterChef.
    function withdraw(
        address sender,
        uint256 amount,
        uint256 bondingShareID
    ) external;

    // Info about a bondinh share
    function getBondingShareInfo(uint256 _id)
        external
        view
        returns (uint256[2] memory);

    // Total amount of shares
    function totalShares() external view returns (uint256);

    // View function to see pending SUSHIs on frontend.
    function pendingUGOV(address _user) external view returns (uint256);
}
function pendingUGOV(address _user) external view returns (uint256);
// View function to see pending SUSHIs on frontend.