import { EventFired, HandleEvent } from "@atomist/automation-client/lib/HandleEvent";
import { HandlerContext } from "@atomist/automation-client/lib/HandlerContext";
import { HandlerResult } from "@atomist/automation-client/lib/HandlerResult";
import { ExecuteGoalResult } from "../../../../../api/goal/ExecuteGoalResult";
import { SdmGoalEvent } from "../../../../../api/goal/SdmGoalEvent";
import { GoalImplementationMapper } from "../../../../../api/goal/support/GoalImplementationMapper";
import { GoalExecutionListener } from "../../../../../api/listener/GoalStatusListener";
import { SoftwareDeliveryMachineConfiguration } from "../../../../../api/machine/SoftwareDeliveryMachineOptions";
import { ProgressLog } from "../../../../../spi/log/ProgressLog";
import { OnAnyRequestedSdmGoal } from "../../../../../typings/types";
/**
 * Handle an SDM request goal. Used for many implementation types.
 */
export declare class FulfillGoalOnRequested implements HandleEvent<OnAnyRequestedSdmGoal.Subscription> {
    private readonly implementationMapper;
    private readonly goalExecutionListeners;
    configuration: SoftwareDeliveryMachineConfiguration;
    constructor(implementationMapper: GoalImplementationMapper, goalExecutionListeners: GoalExecutionListener[]);
    handle(event: EventFired<OnAnyRequestedSdmGoal.Subscription>, ctx: HandlerContext): Promise<HandlerResult>;
}
export declare function reportStart(sdmGoal: SdmGoalEvent, progressLog: ProgressLog): Promise<void>;
export declare function reportEndAndClose(result: ExecuteGoalResult, start: number, progressLog: ProgressLog): Promise<void>;
//# sourceMappingURL=FulfillGoalOnRequested.d.ts.map