import { GitProject, Project, RepoRef } from "@atomist/automation-client";
import { AnalysisTracking } from "../../tracking/analysisTracker";
import { ProjectAnalysisResultStore } from "../persist/ProjectAnalysisResultStore";
import { Analyzer, ProjectAnalysisResultFilter, SpiderResult } from "./Spider";
/**
 * A reasonable number of repositories to analyze at a time.
 * The bucketing mechanism will wait for this many to complete, then
 * start another batch. If this is too big, the web interface can't respond.
 */
export declare const DefaultPoolSize = 6;
/**
 * This class knows how to execute an analysis run,
 * given some functions that are specific to the source
 * of the repositories.
 */
export declare class AnalysisRun<FoundRepo> {
    private readonly world;
    private readonly params;
    constructor(world: {
        howToFindRepos: () => AsyncIterable<FoundRepo>;
        determineRepoRef: (f: FoundRepo) => Promise<RepoRef>;
        describeFoundRepo: (f: FoundRepo) => RepoDescription;
        howToClone: (rr: RepoRef, fr: FoundRepo) => Promise<GitProject>;
        analyzer: Analyzer;
        persister: ProjectAnalysisResultStore;
        analysisTracking: AnalysisTracking;
        keepExistingPersisted: ProjectAnalysisResultFilter;
        projectFilter?: (p: Project) => Promise<boolean>;
    }, params: {
        workspaceId: string;
        description: string;
        maxRepos?: number;
        poolSize?: number;
    });
    run(): Promise<SpiderResult>;
}
interface RepoDescription {
    description: string;
    url?: string;
}
export {};
//# sourceMappingURL=common.d.ts.map