import { ExecuteGoal, GoalInvocation } from "../../api/goal/GoalInvocation";
import { ReportProgress } from "../../api/goal/progress/ReportProgress";
import { AutofixRegistration } from "../../api/registration/AutofixRegistration";
import { TransformPresentation } from "../../api/registration/CodeTransformRegistration";
import { ProgressTest } from "../goal/progress/progress";
/**
 * Parameters that includes the current GoalInvocation
 */
export interface GoalInvocationParameters {
    /** Current goal invocation the autofixes are running */
    goalInvocation: GoalInvocation;
}
/**
 * Execute autofixes against this push
 * Throw an error on failure
 * @param {AutofixRegistration[]} registrations
 * @return ExecuteGoal
 */
export declare function executeAutofixes(registrations: AutofixRegistration[], transformPresentation?: TransformPresentation<GoalInvocationParameters>, extractAuthor?: ExtractAuthor): ExecuteGoal;
/**
 * Filter any provided autofixes whose results were included in the commits of the current push.
 * @param {AutofixRegistration[]} autofixes
 * @param {GoalInvocation} gi
 * @returns {AutofixRegistration[]}
 */
export declare function filterImmediateAutofixes(autofixes: AutofixRegistration[], gi: GoalInvocation): AutofixRegistration[];
/**
 * Generate a commit message for the provided autofix.
 * @param {AutofixRegistration} autofix
 * @returns {string}
 */
export declare function generateCommitMessageForAutofix(autofix: AutofixRegistration): string;
export declare const AutofixProgressTests: ProgressTest[];
/**
 * Default ReportProgress for running autofixes
 */
export declare const AutofixProgressReporter: ReportProgress;
/**
 * Extract author information from the current goal invocation
 */
export declare type ExtractAuthor = (gi: GoalInvocation) => Promise<{
    name: string;
    email: string;
} | undefined>;
export declare const NoOpExtractAuthor: ExtractAuthor;
export declare const DefaultExtractAuthor: ExtractAuthor;
//# sourceMappingURL=executeAutofixes.d.ts.map