':param dict estimation_mode: mode -> loose, strict, ignore
:return: Entries that we have estimated to be available'

def estimated(self, entries, estimation_mode):

    estimator = get_plugin_by_name(u'estimate_release').instance
    result = []
    for entry in entries:
        est_date = estimator.estimate(entry)
        if (est_date is None):
            log.debug(u'No    release    date    could    be    determined    for    %s', entry[u'title'])
            if (estimation_mode[u'mode'] == u'strict'):
                entry.reject(u'has    no    release    date')
                entry.complete()
            else:
                result.append(entry)
            continue
        if isinstance(est_date, datetime.date):
            est_date = datetime.datetime.combine(est_date, datetime.time())
        if (datetime.datetime.now() >= est_date):
            log.debug(u'%s    has    been    released    at    %s', entry[u'title'], est_date)
            result.append(entry)
        elif (datetime.datetime.now() >= (est_date - parse_timedelta(estimation_mode[u'optimistic']))):
            log.debug(u'%s    will    be    released    at    %s.    Ignoring    release    estimation    because    estimated    release    date    is    in    less    than    %s', entry[u'title'], est_date, estimation_mode[u'optimistic'])
            result.append(entry)
        else:
            entry.reject(u'has    not    been    released')
            entry.complete()
            log.verbose(u"%s    hasn't    been    released    yet    (Expected:    %s)", entry[u'title'], est_date)
    return result
