import { Configuration } from "@atomist/automation-client/lib/configuration";
import { HandleCommand } from "@atomist/automation-client/lib/HandleCommand";
import { HandleEvent } from "@atomist/automation-client/lib/HandleEvent";
import { Maker } from "@atomist/automation-client/lib/util/constructionUtils";
import { AbstractSoftwareDeliveryMachine } from "../../api-helper/machine/AbstractSoftwareDeliveryMachine";
import { SoftwareDeliveryMachineConfiguration } from "../../api/machine/SoftwareDeliveryMachineOptions";
import { GoalSetter } from "../../api/mapping/GoalSetter";
/**
 * Implementation of SoftwareDeliveryMachine based on Atomist event handlers.
 * Not intended for direct user instantiation. See machineFactory.ts
 */
export declare class HandlerBasedSoftwareDeliveryMachine extends AbstractSoftwareDeliveryMachine {
    private get onRepoCreation();
    private get onFirstPush();
    private get goalSetting();
    private get goalConsequences();
    private get allFunctionalUnits();
    get eventHandlers(): Array<Maker<HandleEvent<any>>>;
    get commandHandlers(): Array<Maker<HandleCommand>>;
    get ingesters(): string[];
    /**
     * Construct a new software delivery machine, with zero or
     * more goal setters.
     * @param {string} name
     * @param configuration automation client configuration we're running in
     * @param {GoalSetter} goalSetters tell me what to do on a push. Hint: start with "whenPushSatisfies(...)"
     */
    constructor(name: string, configuration: Configuration & SoftwareDeliveryMachineConfiguration, goalSetters: Array<GoalSetter | GoalSetter[]>);
}
//# sourceMappingURL=HandlerBasedSoftwareDeliveryMachine.d.ts.map