import { Aspect, FP } from "@atomist/sdm-pack-fingerprints";
import { AspectRegistry, CombinationTagger, RepositoryScorer, ScoredRepo, Tag, TaggerDefinition } from "./AspectRegistry";
import { ProjectAnalysisResult } from "../analysis/ProjectAnalysisResult";
import { ScoreWeightings } from "../scorer/Score";
import { IdealStore } from "./IdealStore";
import { ProblemStore, UndesirableUsageChecker } from "./ProblemStore";
export declare class DefaultAspectRegistry implements AspectRegistry {
    private readonly opts;
    private readonly taggers;
    private readonly combinationTaggers;
    /**
     * Add a tagger that will work on all repositories.
     */
    withTaggers(...taggers: TaggerDefinition[]): this;
    withCombinationTaggers(...taggers: CombinationTagger[]): this;
    private combinationTagsFor;
    tagAndScoreRepos(workspaceId: string, repos: ProjectAnalysisResult[]): Promise<ScoredRepo[]>;
    readonly availableTags: Tag[];
    readonly aspects: Aspect[];
    aspectOf(type: string): Aspect | undefined;
    undesirableUsageCheckerFor(workspaceId: string): Promise<UndesirableUsageChecker>;
    readonly idealStore: IdealStore;
    readonly problemStore: ProblemStore;
    readonly scorers: RepositoryScorer[];
    private tagRepos;
    private tagRepo;
    constructor(opts: {
        idealStore: IdealStore;
        problemStore: ProblemStore;
        aspects: Aspect[];
        undesirableUsageChecker: UndesirableUsageChecker;
        scorers?: RepositoryScorer[];
        scoreWeightings?: ScoreWeightings;
    });
}
export declare function defaultedToDisplayableFingerprintName(aspect?: Aspect): (fingerprintName: string) => string;
export declare function defaultedToDisplayableFingerprint(aspect?: Aspect): (fpi: FP) => string;
//# sourceMappingURL=DefaultAspectRegistry.d.ts.map