import BaseConnector from './BaseConnector' import BaseHttpConnector from './BaseHttpConnector' import EventConfiguration from './EventConfiguration' import { Logger } from 'winston' export type Updater = (value: any) => Promise export type Handler = { handle: (event?: EventConfiguration) => void id: string } export type PersistentStore = { del: (key: string) => Promise get: (key: string) => Promise list: () => Promise set: (key: string, value: any) => Promise update: (key: string, updater: Updater) => Promise validateKey: (key: string) => void validateValue: (value: any) => void } export interface Reshuffle { getConnector: (connectorId: BaseConnector['id']) => BaseConnector when: (eventConfiguration: EventConfiguration, handler: (() => void) | Handler) => Reshuffle register: (connector: BaseConnector) => Reshuffle registerHTTPDelegate: (path: string, delegate: BaseHttpConnector) => Reshuffle unregisterHTTPDelegate: (path: string) => void handleEvent: (eventName: string, event: any) => Promise getPersistentStore: () => PersistentStore getLogger: () => Logger }