import { DescribedPredicate } from '../../base/DescribedPredicate';
import { Dependency, TypeScriptClass } from '../../core/domain/TypeScriptClass';
import { ArchCondition, ConditionByPredicate } from '../ArchCondition';
export declare abstract class ArchConditions {
    static onlyDependOnClassesThat: (predicate: DescribedPredicate<TypeScriptClass>) => ArchCondition<TypeScriptClass>;
    static dependOnClassesThat: (predicate: DescribedPredicate<TypeScriptClass>) => ArchCondition<TypeScriptClass>;
    static onlyHaveDependentClassesThat: (predicate: DescribedPredicate<TypeScriptClass>) => ArchCondition<TypeScriptClass>;
    static onlyHaveDependentsWhere(predicate: DescribedPredicate<Dependency>): ArchCondition<TypeScriptClass>;
    static negate<T>(condition: ArchCondition<T>): ArchCondition<T>;
    static haveSimpleNameStartingWith(prefix: string): ArchCondition<TypeScriptClass>;
    static haveSimpleNameEndingWith(suffix: string): ArchCondition<TypeScriptClass>;
    static have(predicate: DescribedPredicate<TypeScriptClass>): ConditionByPredicate;
}
