package org.jadira.scanner.core.api;
import java.util.List;
public interface Resolver<T, E, A> {
/**
* Resolve the first match
* @param locator Locator to be used
* @param projector Projector to be used
* @param filter Zero or more filters to be used
* @return The first match
*/
T resolveFirst(Locator<A> locator, Projector<E> projector, Filter<?>... filter);
/**
* Resolve all matches up to limit
* @param limit The maximum number of results to match
* @param locator Locator to be used
* @param projector Projector to be used
* @param filter Zero or more filters to be used
* @return The first match
*/
List<? extends T> resolve(Integer limit, Locator<A> locator, Projector<E> projector, Filter<?>... filter);
/**
* Resolve all matches
* @param locator Locator to be used
* @param projector Projector to be used
* @param filter Zero or more filters to be used
* @return The first match
*/
List<? extends T> resolveAll(Locator<A> locator, Projector<E> projector, Filter<?>... filter);
}