import { Project } from "@atomist/automation-client";
import { ProjectAnalyzer } from "@atomist/sdm-pack-analysis";
import { ScmSearchCriteria } from "../ScmSearchCriteria";
import { PersistenceResult, Spider, SpiderFailure, SpiderOptions, SpiderResult } from "../Spider";
declare type CloneFunction = (sourceData: GitHubSearchResult) => Promise<Project>;
/**
 * Spider GitHub. Ensure that GITHUB_TOKEN environment variable is set.
 */
export declare class GitHubSpider implements Spider {
    private readonly queryFunction;
    private readonly cloneFunction;
    spider(criteria: ScmSearchCriteria, analyzer: ProjectAnalyzer, opts: SpiderOptions): Promise<SpiderResult>;
    constructor(queryFunction?: (token: string, criteria: ScmSearchCriteria) => AsyncIterable<GitHubSearchResult>, cloneFunction?: CloneFunction);
}
export interface AnalyzeAndPersistResult {
    failedToCloneOrAnalyze: SpiderFailure[];
    failedToPersist: SpiderFailure[];
    repoCount: number;
    projectCount: number;
    persisted: PersistenceResult[];
}
/**
 * Result row in a GitHub search
 */
export interface GitHubSearchResult {
    owner: {
        login: string;
    };
    name: string;
    url: string;
    html_url: string;
    timestamp: Date;
    query: string;
}
export {};
//# sourceMappingURL=GitHubSpider.d.ts.map