import { Language } from "@atomist/sdm-pack-sloc/lib/slocReport";
import { RepositoryScorer } from "../aspect/AspectRegistry";
import { FiveStar } from "./Score";
export declare const CommunityCategory: string;
export declare const CodeCategory: string;
/**
 * Use to anchor scores to penalize repositories about which we know little.
 * Typically weighted > default x1
 */
export declare function anchorScoreAt(score: FiveStar): RepositoryScorer;
/**
 * Penalize repositories for not having a recent commit.
 * days is the number of days since the latest commit to the default branch
 * that will cost 1 star.
 */
export declare function requireRecentCommit(opts: {
    days: number;
}): RepositoryScorer;
/**
 * Limit languages used in a project
 */
export declare function limitLanguages(opts: {
    limit: number;
    baseOnly?: boolean;
}): RepositoryScorer;
/**
 * Penalize repositories for having too many lines of code.
 * The limit is the number of lines of code required to drop one star.
 * The chosen limit will depend on team preferences: For example,
 * are we trying to do microservices?
 */
export declare function limitLinesOfCode(opts: {
    limit: number;
    baseOnly?: boolean;
}): RepositoryScorer;
/**
 * Penalize repositories for having too many lines of code in the given language
 */
export declare function limitLinesOfCodeIn(opts: {
    limit: number;
    language: Language;
    freeAmount?: number;
}): RepositoryScorer;
/**
 * Penalize repositories for having an excessive number of git branches
 */
export declare function penalizeForExcessiveBranches(opts: {
    branchLimit: number;
}): RepositoryScorer;
/**
 * Penalize repositories for having more than 1 virtual project,
 * as identified by a VirtualProjectFinder
 */
export declare const PenalizeMonorepos: RepositoryScorer;
/**
 * Penalize repositories without a license file
 */
export declare const PenalizeNoLicense: RepositoryScorer;
/**
 * Penalize repositories without a code of conduct file
 */
export declare const PenalizeNoCodeOfConduct: RepositoryScorer;
/**
 * Penalize repositories that don't have this type of aspect.
 * If data is provided, check that the sha matches the default sha-ing of this
 * data payload
 */
export declare function requireAspectOfType(opts: {
    type: string;
    reason: string;
    data?: any;
    category?: string;
    baseOnly?: boolean;
}): RepositoryScorer;
/**
 * Penalize repositories without matches for the glob pattern.
 * Depends on globAspect
 */
export declare function requireGlobAspect(opts: {
    glob: string;
    category?: string;
    baseOnly?: boolean;
}): RepositoryScorer;
/**
 * Penalize for each point lost in these reviewers
 */
export declare function penalizeForReviewViolations(opts: {
    reviewerName: string;
    violationsPerPointLost: number;
}): RepositoryScorer;
/**
 * Convenient function to emit scorers for all reviewers
 */
export declare function penalizeForAllReviewViolations(opts: {
    reviewerNames: string[];
    violationsPerPointLost: number;
}): RepositoryScorer[];
/**
 * Use for a file pattern or something within files we don't want
 */
export declare function penalizeGlobMatches(opts: {
    name?: string;
    type: string;
    pointsLostPerMatch: number;
}): RepositoryScorer;
//# sourceMappingURL=commonScorers.d.ts.map