class RefundValidator {

    public boolean isRefundable(final UserProfile userProfile,
                                final UserFundsDto fund,
                                final long requestId,
                                final String requestStatus) {
        return userProfile != null
               && userProfile.userOwnsAddress(fund.getFunderAddress())
               && "FUNDED".equalsIgnoreCase(requestStatus)
               && !refundRequestAlreadyExists(requestId)
               && hasPositiveBalance(requestId, fund);
    }

    public  RefundValidator(final RefundService refundService, final FundService fundService);

}