import { ArchFunction } from './ArchFunction';
import { Predicate } from './Predicate';
export declare abstract class DescribedPredicate<T> implements Predicate<T> {
    readonly description: string;
    protected constructor(description: string);
    abstract test(t: T): boolean;
    as(description: string): DescribedPredicate<T>;
    and(other: DescribedPredicate<T>): DescribedPredicate<T>;
    or(other: DescribedPredicate<T>): DescribedPredicate<T>;
    static not<T>(predicate: DescribedPredicate<T>): DescribedPredicate<T>;
    onResultOf<F>(function_: ArchFunction<F, T>): DescribedPredicate<F>;
    static alwaysFalse<T>(): DescribedPredicate<T>;
}
