///
import * as Promise from 'bluebird';
import { PlatformMiddleware } from './types/platform';
import { Intent, IncomingMessage, IntentGenerator, ReducerFunction, GreetingFunction, DialogFunction, Logger } from './types/bot';
import { UserMiddleware, User, BasicUser } from './types/user';
export { TopicCollection } from './nlp/classifier';
export { Intent, PlatformMiddleware };
import Script from './scripting/script';
export default class Alana {
debugOn: Boolean;
private intents;
private reducer;
userMiddleware: UserMiddleware;
private platforms;
private _scripts;
private greetingScript;
onErrorScript: DialogFunction;
private serializedMessages;
private _logger;
constructor(classifierFile?: string);
addIntent(newIntent: IntentGenerator): this;
unshiftIntent(newIntent: IntentGenerator): this;
newScript(name?: string): Script;
getScript(name?: string): Script;
readonly scripts: string[];
addGreeting(script: GreetingFunction): this;
setReducer(newReducer: ReducerFunction): this;
setUserMiddlware(middleware: UserMiddleware): this;
addPlatform(platform: PlatformMiddleware): this;
addErrorHandler(dialog: DialogFunction): this;
turnOnDebug(): this;
setLogger(logger: Logger): this;
readonly logger: Logger;
createEmptyIntent(): Intent;
createEmptyUser(defaults?: any): User;
start(): void;
stop(): void;
processMessage(basicUser: BasicUser, message: IncomingMessage): Promise;
private _processMessage(basicUser, message);
private getIntents(user, message);
/**
* @private
* @param user The user initiating the chat
* @param request All the incoming information about the current sessiom
* @param response Class used to send responses back to the user
* @param directCall True if being called by process(...) otherwise set to false to stop infinite loops
*/
private _process(user, request, response, loops?, directCall?);
}