import { Configuration } from "./configuration";
import { HandleCommand } from "./HandleCommand";
import { HandleEvent } from "./HandleEvent";
import { HandlerResult } from "./HandlerResult";
import { ExpressServer } from "./internal/transport/express/ExpressServer";
import { CommandIncoming, EventIncoming, RequestProcessor } from "./internal/transport/RequestProcessor";
import { WebSocketClient } from "./internal/transport/websocket/WebSocketClient";
import { AutomationServer } from "./server/AutomationServer";
import { BuildableAutomationServer } from "./server/BuildableAutomationServer";
import { Maker } from "./util/constructionUtils";
export declare class AutomationClient implements RequestProcessor {
    configuration: Configuration;
    automations: BuildableAutomationServer;
    webSocketClient: WebSocketClient;
    httpServer: ExpressServer;
    webSocketHandler: RequestProcessor;
    httpHandler: RequestProcessor;
    private defaultListeners;
    constructor(configuration: Configuration);
    readonly automationServer: AutomationServer;
    withCommandHandler(chm: Maker<HandleCommand>): AutomationClient;
    withEventHandler(event: Maker<HandleEvent<any>>): AutomationClient;
    withIngester(ingester: string): AutomationClient;
    processCommand(command: CommandIncoming, callback?: (result: Promise<HandlerResult>) => void): any;
    processEvent(event: EventIncoming, callback?: (results: Promise<HandlerResult[]>) => void): any;
    run(): Promise<void>;
    private configureStatsd;
    private configureLogging;
    private setupWebSocketClusterRequestHandler;
    private setupWebSocketClusterWorkerRequestHandler;
    private setupWebSocketRequestHandler;
    private setupApplicationEvents;
    private setupExpressRequestHandler;
    private runWs;
    private runHttp;
    private printStartupMessage;
}
export declare function automationClient(configuration: Configuration): AutomationClient;
//# sourceMappingURL=automationClient.d.ts.map