import { epicCrawler, crawlArray, crawlerOptions } from 'epic-crawler';
import { epicStorage } from "epic-storage";
export declare type ANSWEROPTIONS = {
    title: string;
    description: string;
    url: string | null;
    image: string | null;
    action: string | null;
};
export declare type OPTIONSOBJECT = {
    text: string;
    options: ANSWEROPTIONS[];
};
export declare type ANSWEROBJECT = {
    answered: number;
    repeatAllowed: number;
    answers: string[];
    optionsObject: OPTIONSOBJECT;
    actionsObject: object;
};
export declare type REPEATOBJECT = {
    answered: number;
    repeatAllowed: number;
    answers: string[];
    optionsObject: OPTIONSOBJECT;
    actionsObject: object;
    lastActionsObject: object;
};
export declare type TRAININGOBJECT = {
    id: string;
    initRequired: boolean;
    questions: string[];
    answerObject: ANSWEROBJECT;
    repeatObject: REPEATOBJECT;
};
export declare type TRAINING = TRAININGOBJECT[];
export declare type processOptions = {
    repeatAllowed?: number;
    defaultAnswers?: string[];
    defaultRepeatAnswers?: string[];
    optionsText?: string;
    answerActionObject?: object;
    repeatOptions?: ANSWEROPTIONS[];
    repeatActionObject?: object;
    lastActionsObject?: object;
};
export declare class epicChatBotTeacher {
    protected subjectUrl: string | null;
    protected crawledData: crawlArray;
    protected trainingObjects: TRAINING;
    protected crawlerSubject: string;
    protected storage: epicStorage | null;
    protected crawlerOptions: crawlerOptions;
    crawler: epicCrawler;
    constructor(trainingObjects?: TRAINING);
    init: () => Promise<unknown>;
    train: (trainingObjects: TRAINING) => this;
    crawlSubject: (subjectUrl: string, { depth, strict, cache }?: import("epic-link-crawler").options) => Promise<unknown>;
    protected getCrawledData: () => Promise<unknown>;
    processCrawledData: ({ repeatAllowed, defaultAnswers, defaultRepeatAnswers, optionsText, answerActionObject, repeatOptions, repeatActionObject, lastActionsObject, }?: processOptions) => Promise<unknown>;
    saveTraining: (training?: TRAINING | undefined) => Promise<unknown>;
    trainingObject: (id: string, botInitializationRequired: boolean, questions: string[], answerObject: ANSWEROBJECT, repeatObject: REPEATOBJECT) => TRAININGOBJECT;
    answerObject: (repeatAllowed: number, answers: string[], optionsObject: OPTIONSOBJECT, actionsObject?: object) => ANSWEROBJECT;
    repeatObject: (repeatAllowed: number, answers: string[], optionsObject: OPTIONSOBJECT, actionsObject?: object, lastActionsObject?: object) => REPEATOBJECT;
    optionsObject: (titleText: string, answerOptions: ANSWEROPTIONS[]) => OPTIONSOBJECT;
    answerOptions: (title: string, description: string, url?: string | null, image?: string | null, action?: string | null) => ANSWEROPTIONS;
    exportTraining: () => Promise<unknown>;
}
//# sourceMappingURL=epicChatBotTeacher.d.ts.map