import { ExecuteGoalResult } from "../goal/ExecuteGoalResult";
import { Goal } from "../goal/Goal";
import { SdmGoalEvent } from "../goal/SdmGoalEvent";
import { RepoListenerInvocation, SdmListener } from "./Listener";
/**
 * Invokes when an event occurs relating to execution of a goal
 * within this SDM.
 */
export interface GoalExecutionListenerInvocation extends RepoListenerInvocation {
    /**
     * The goal that is current executing
     */
    goal: Goal;
    /**
     * The goal event that changed state
     */
    goalEvent: SdmGoalEvent;
    /**
     * Error that was raised during goal execution if not handled inside the
     * goalExecutor
     */
    error?: Error;
    /**
     * Result of goal execution; only available if goalExecutor returned an result
     */
    result?: ExecuteGoalResult | undefined;
}
export declare type GoalExecutionListener = SdmListener<GoalExecutionListenerInvocation>;
//# sourceMappingURL=GoalStatusListener.d.ts.map