import { Configuration } from "../configuration";
import { HandleCommand } from "../HandleCommand";
import { EventFired, HandleEvent } from "../HandleEvent";
import { HandlerContext } from "../HandlerContext";
import { HandlerResult } from "../HandlerResult";
import { CommandInvocation } from "../internal/invoker/Payload";
import { Automations } from "../internal/metadata/metadata";
import { CommandHandlerMetadata, EventHandlerMetadata } from "../metadata/automationMetadata";
import { Maker } from "../util/constructionUtils";
import { AbstractAutomationServer } from "./AbstractAutomationServer";
/**
 * Simple automation server that offers building style
 * configuration
 */
export declare class BuildableAutomationServer extends AbstractAutomationServer {
    opts: Configuration;
    private graphClient;
    private commandHandlers;
    private eventHandlers;
    private ingesters;
    private secretResolver;
    private metadataProcessor;
    constructor(opts: Configuration);
    registerCommandHandler(chm: Maker<HandleCommand>): this;
    fromCommandHandler<P>(hc: HandleCommand<P>): this;
    registerEventHandler(maker: Maker<HandleEvent<any>>): this;
    registerIngester(ingester: any): this;
    protected invokeCommandHandler(invocation: CommandInvocation, metadata: CommandHandlerMetadata, ctx: HandlerContext): Promise<HandlerResult>;
    protected invokeEventHandler(e: EventFired<any>, metadata: EventHandlerMetadata, ctx: HandlerContext): Promise<HandlerResult>;
    /**
     * Populate handler parameters
     */
    private invokeCommandHandlerWithFreshParametersInstance;
    private invokeFreshEventHandlerInstance;
    private enrichContext;
    private populateMappedParameters;
    private populateSecrets;
    readonly automations: Automations;
}
//# sourceMappingURL=BuildableAutomationServer.d.ts.map