import { Project } from "@atomist/automation-client";
import { FingerprinterRegistration, PushTest } from "@atomist/sdm";
import { CodeStats, LanguageReportRequest } from "../slocReport";
/**
 * Structure tructure that can persisted: For example, written as a fingerprint after each commit
 */
export interface CodeMetrics {
    project: {
        url: string;
        owner: string;
        repo: string;
        branch: string;
    };
    timestamp: string;
    languages: CodeStats[];
    totalFiles: number;
    /**
     * Lines recognized
     */
    lines: number;
    files: number;
}
/**
 * Return a serializable language summary structure structure
 * @param {Project} p
 * @param {LanguageReportRequest[]} requests
 * @return {Promise<CodeMetrics>}
 */
export declare function calculateCodeMetrics(p: Project, requests?: LanguageReportRequest[]): Promise<CodeMetrics>;
export declare function lineCountFingerprinter(pushTest: PushTest): FingerprinterRegistration;
