///
import { EventEmitter } from 'events';
import { JsonObject } from 'type-fest';
import Context from '../context/Context';
import SessionStore from '../session/SessionStore';
import { Action, Client, Plugin, RequestContext } from '../types';
import { Event } from '../context/Event';
import { Connector } from './Connector';
declare type Builder = {
build: () => Action;
};
export declare function run(action: Action): Action;
declare type RequestHandler = (body: B, requestContext?: RequestContext) => void | Promise;
export declare type OnRequest = (body: JsonObject, requestContext?: RequestContext) => void;
export default class Bot> {
_sessions: SessionStore;
_initialized: boolean;
_connector: Connector;
_handler: Action | null;
_errorHandler: Action | null;
_initialState: JsonObject;
_plugins: Function[];
_sync: boolean;
_emitter: EventEmitter;
_onRequest: OnRequest | undefined;
constructor({ connector, sessionStore, sync, onRequest, }: {
connector: Connector;
sessionStore?: SessionStore;
sync?: boolean;
onRequest?: OnRequest;
});
get connector(): Connector;
get sessions(): SessionStore;
get handler(): Action | null;
get emitter(): EventEmitter;
onEvent(handler: Action | Builder): Bot;
onError(handler: Action | Builder): Bot;
setInitialState(initialState: JsonObject): Bot;
use(plugin: Plugin): Bot;
initSessionStore(): Promise;
createRequestHandler(): RequestHandler;
}
export {};
//# sourceMappingURL=Bot.d.ts.map