///
import { Express, RequestHandler } from 'express';
import { PersistentStoreAdapter } from './persistency';
import { BaseConnector, BaseHttpConnector, EventConfiguration } from 'reshuffle-base-connector';
import { Logger, LoggerOptions } from 'winston';
import http from 'http';
export interface Handler {
handle: (event: any, app: Reshuffle) => void;
id: string;
}
export default class Reshuffle {
availableConnectors: any;
httpDelegates: {
[path: string]: any;
};
port: number;
registry: {
connectors: {
[url: string]: BaseConnector;
};
handlers: {
[id: string]: Handler[];
};
common: {
webserver?: Express;
persistentStore?: any;
};
};
httpServer?: http.Server;
logger: Logger;
middleware: RequestHandler[];
constructor(loggerOptions?: LoggerOptions);
addMiddleware(middleware: RequestHandler): void;
private prepareWebServer;
register(connector: BaseConnector): Reshuffle;
unregister(connector: BaseConnector): Promise;
getConnector(connectorId: BaseConnector['id']): BaseConnector;
registerHTTPDelegate(path: string, delegate: BaseHttpConnector): Reshuffle;
unregisterHTTPDelegate(path: string): void;
when(eventConfiguration: EventConfiguration, handler: (() => void) | Handler): Reshuffle;
start(port?: number, callback?: () => void): void;
stopWebServer(): void;
restart(port?: number): void;
handleEvent(eventId: EventConfiguration['id'], event: any): Promise;
onHandleEvent(handler: Handler, event: any): Promise;
setPersistentStore(adapter: PersistentStoreAdapter): PersistentStoreAdapter;
getPersistentStore(): any;
getLogger(): Logger;
}
export { Reshuffle };