interface IDividendAware {

    /**
     * @notice withdraw all accrued dividends by the sender to the sender
     * @return true if successful
     */
    function claimAllDividends() external returns (bool);

    /**
     * @notice withdraw all accrued dividends by the sender to the recipient
     * @param recipient     address to receive dividends
     * @return true if successful
     */
    function claimAllDividendsTo(address recipient) external returns (bool);

    /**
     * @notice withdraw portion of dividends by the sender to the sender
     * @return true if successful
     */
    function claimDividends(uint256 amount) external returns (bool);

    /**
     * @notice withdraw portion of dividends by the sender to the recipient
     * @param recipient     address to receive dividends
     * @param amount        amount of dividends to withdraw
     * @return true if successful
     */
    function claimDividendsTo(address recipient, uint256 amount) external returns (bool);
}
/**
 * @dev Interface for dividend claim functions that should be present in dividend aware tokens
 */
function claimAllDividendsTo(address recipient) external returns (bool);

/**
 * @notice withdraw all accrued dividends by the sender to the recipient
 * @param recipient     address to receive dividends
 * @return true if successful
 */