import { Configuration } from "@atomist/automation-client";
import { Aspect, FP } from "@atomist/sdm-pack-fingerprint";
import { ProjectAnalysisResult } from "../analysis/ProjectAnalysisResult";
import { ScoreWeightings, WeightedScore } from "../scorer/Score";
import { AspectRegistry, RepositoryScorer, ScoredRepo, Tag, TagAndScoreOptions, TaggerDefinition, WorkspaceScorer, WorkspaceToScore } from "./AspectRegistry";
import { AspectReportDetails, AspectReportDetailsRegistry, AspectWithReportDetails } from "./AspectReportDetailsRegistry";
import { IdealStore } from "./IdealStore";
import { ProblemStore, UndesirableUsageChecker } from "./ProblemStore";
export declare class DefaultAspectRegistry implements AspectRegistry, AspectReportDetailsRegistry {
    private readonly opts;
    private readonly taggers;
    /**
     * Add a tagger that will work on all repositories.
     */
    withTaggers(...taggers: TaggerDefinition[]): this;
    scoreWorkspace(workspaceId: string, workspaceToScore: WorkspaceToScore): Promise<WeightedScore>;
    tagAndScoreRepos(workspaceId: string, repos: ProjectAnalysisResult[], tsOpts: TagAndScoreOptions): Promise<ScoredRepo[]>;
    readonly availableTags: Tag[];
    readonly aspects: Aspect[];
    aspectOf(type: string): Aspect | undefined;
    reportDetailsOf(typeOrAspect: string | Aspect, workspaceId: string): Promise<AspectReportDetails | undefined>;
    undesirableUsageCheckerFor(workspaceId: string): Promise<UndesirableUsageChecker | undefined>;
    readonly idealStore: IdealStore;
    readonly problemStore: ProblemStore;
    readonly scorers: RepositoryScorer[];
    private tagRepos;
    private tagRepo;
    constructor(opts: {
        idealStore: IdealStore;
        problemStore: ProblemStore;
        aspects: AspectWithReportDetails[];
        undesirableUsageChecker: UndesirableUsageChecker;
        scorers?: RepositoryScorer[];
        workspaceScorers?: WorkspaceScorer[];
        scoreWeightings?: ScoreWeightings;
        configuration?: Configuration;
    });
}
export declare function defaultedToDisplayableFingerprintName(aspect?: Aspect): (fingerprintName: string) => string;
export declare function defaultedToDisplayableFingerprint(aspect?: Aspect): (fpi: FP) => string;
//# sourceMappingURL=DefaultAspectRegistry.d.ts.map