import { TBotAuth, TBotContent } from './interfaces/IBot';
import { IAppConfig, IAppParam, TAppType } from '../mmApp';
import { BotController, IUserData } from '../controller';
import { TemplateTypeModel } from '../platforms/TemplateTypeModel';
import { IAlisaWebhookResponse, IMarusiaWebhookResponse } from '../platforms';
import { Server } from 'http';
export type TRunResult = IAlisaWebhookResponse | IMarusiaWebhookResponse | string;
export * from './interfaces/IBot';
export interface IBotBotClassAndType {
    botClass: TemplateTypeModel | null;
    type: number | null;
}
export declare class Bot<TUserData extends IUserData = IUserData> {
    protected _serverInst: Server | undefined;
    private _userData;
    protected _content: TBotContent;
    protected _botController: BotController<TUserData>;
    protected _auth: TBotAuth;
    constructor(type?: TAppType, botController?: BotController<TUserData>);
    initTypeInGet(): boolean;
    initConfig(config: IAppConfig): void;
    initParams(params: IAppParam): void;
    initBotController(fn: BotController<TUserData>): void;
    protected static _getBotClassAndType(userBotClass?: TemplateTypeModel | null): IBotBotClassAndType;
    setContent(content: TBotContent): void;
    private _getUserData;
    private _clearState;
    run(userBotClass?: TemplateTypeModel | null): Promise<TRunResult>;
    start(hostname?: string, port?: number, userBotClass?: TemplateTypeModel | null): Server;
    private readRequestData;
    close(): void;
}
