import { Version } from "./Version.js";
import { VersionComparisonOperator } from "./VersionComparisonOperator.js";
import { VersionInterval } from "./VersionInterval.js";
export declare abstract class VersionPredicate {
    /**
     * Get all terms that have to be satisfied for this predicate to match.
     *
     * @return Required predicate terms, empty if anything matches
     */
    abstract getTerms(): PredicateTerm[];
    /**
     * Get the version interval representing the matched versions.
     *
     * @return Covered version interval or null if nothing
     */
    abstract getInterval(): VersionInterval;
    abstract test(version: Version): boolean;
    static parseStringOne(predicate: string): VersionPredicate;
    static parseString(predicates: string[]): Set<VersionPredicate>;
}
export interface PredicateTerm {
    getOperator(): VersionComparisonOperator;
    getReferenceVersion(): Version;
}
