interface IComptroller {
    /// @notice The COMP accrued but not yet transferred to each user
    function compAccrued(address holder) external view returns (uint256);

    /**
     * @notice Claim all the comp accrued by holder in all markets
     * @param holder The address to claim COMP for
     */
    function claimComp(address holder) external;

    /**
     * @notice Claim all the comp accrued by holder in the specified markets
     * @param holder The address to claim COMP for
     * @param cTokens The list of markets to claim COMP in
     */
    function claimComp(address holder, ICToken[] memory cTokens) external;

    /**
     * @notice Claim all comp accrued by the holders
     * @param holders The addresses to claim COMP for
     * @param cTokens The list of markets to claim COMP in
     * @param borrowers Whether or not to claim COMP earned by borrowing
     * @param suppliers Whether or not to claim COMP earned by supplying
     */
    function claimComp(address[] memory holders, ICToken[] memory cTokens, bool borrowers, bool suppliers) external;

    /// @notice The portion of compRate that each market currently receives
    function compSpeeds(address cToken) external view returns (uint256);

    /**
     * @notice Return the address of the COMP token
     * @return The address of COMP
     */
    function getCompAddress() external view returns (address);
}
function claimComp(address holder, ICToken[] memory cTokens) external;

/**
 * @notice Claim all the comp accrued by holder in the specified markets
 * @param holder The address to claim COMP for
 * @param cTokens The list of markets to claim COMP in
 */