import { HandlerContext } from "@atomist/automation-client/lib/HandlerContext";
import { HandlerResult } from "@atomist/automation-client/lib/HandlerResult";
import { ExecuteGoalResult } from "../../api/goal/ExecuteGoalResult";
import { Goal } from "../../api/goal/Goal";
import { ExecuteGoal, GoalInvocation, GoalProjectListenerRegistration } from "../../api/goal/GoalInvocation";
import { SdmGoalEvent } from "../../api/goal/SdmGoalEvent";
import { GoalImplementation } from "../../api/goal/support/GoalImplementationMapper";
import { GoalExecutionListener } from "../../api/listener/GoalStatusListener";
import { SoftwareDeliveryMachineConfiguration } from "../../api/machine/SoftwareDeliveryMachineOptions";
import { ProjectLoader } from "../../spi/project/ProjectLoader";
/**
 * Central function to execute a goal with progress logging
 */
export declare function executeGoal(rules: {
    projectLoader: ProjectLoader;
    goalExecutionListeners: GoalExecutionListener[];
}, implementation: GoalImplementation, gi: GoalInvocation): Promise<ExecuteGoalResult>;
export declare function executeHook(rules: {
    projectLoader: ProjectLoader;
}, goalInvocation: GoalInvocation, sdmGoal: SdmGoalEvent, stage: "post" | "pre"): Promise<HandlerResult>;
export declare function markStatus(parameters: {
    context: HandlerContext;
    goalEvent: SdmGoalEvent;
    goal: Goal;
    result: ExecuteGoalResult;
    error?: Error;
    progressLogUrl: string;
}): Promise<void>;
export declare function prepareGoalExecutor(gi: GoalImplementation, sdmGoal: SdmGoalEvent, configuration: SoftwareDeliveryMachineConfiguration): ExecuteGoal;
export declare function prepareGoalInvocation(gi: GoalInvocation, listeners: GoalProjectListenerRegistration | GoalProjectListenerRegistration[]): GoalInvocation;
//# sourceMappingURL=executeGoal.d.ts.map