import Session from './Session';
import { BotClientConfig } from './Config';
import { IApplication, IPrompt, ISession, ISessionPrompt, SessionQueryParams } from '@glodon-aiot/apis';
import EventBus from './EventBus';
export type ClientEventName = 'ready' | 'application:loaded';
export default class BotClient {
    private _token;
    private lazyload;
    protected event: EventBus;
    private cvforceApi;
    private _applicationId;
    private _application;
    private _sessions;
    private _activeSession?;
    private _ready?;
    private _questionContextMaxLength?;
    private _promptVariables?;
    constructor(_token: string, //AIoT resource token
    configs: BotClientConfig, lazyload?: boolean);
    private checkReady;
    get ready(): boolean | undefined;
    private set ready(value);
    get questionContextMaxLength(): number | undefined;
    get promptVariables(): IPrompt[] | undefined;
    get knowledges(): any;
    get sessions(): Session[];
    set sessions(v: Session[]);
    private loadApplication;
    private getService;
    get token(): string;
    set token(v: string);
    get applicationId(): string;
    get application(): IApplication | null;
    get activeSession(): string;
    set activeSession(sessionId: string);
    private createSession;
    getSessions(queryParams?: SessionQueryParams): Promise<Session[]>;
    loadSession(sessionId?: string, sessionParams?: Partial<ISession & {
        promptVariables?: ISessionPrompt[];
    }>): Promise<Session>;
    reload(): Promise<this>;
    reloadSession(sessionId?: string): Promise<Session | undefined>;
    setTop(sessionId: string, top: boolean, order?: string): Promise<Session[] | undefined>;
    addEventListener(eventName: ClientEventName, callback: any, once?: boolean): void;
    removeEventListener(eventName: ClientEventName, callback: any): void;
    removeSession(session: string | Session, deleteFromRemote?: boolean): Promise<void>;
    clean(): void;
}
