import { AppObject } from "@vived/core";
import { AppObjectEntity } from "@vived/core";
import { AppObjectRepo } from "@vived/core";
import { QuestionAnswerEntity } from "./QuestionAnswerEntity";
import { Challenge } from "../../Challenge/Entities";
export declare const VALIDATION_NO_CORRECT = "At least one answer must be correct.";
export declare const VALIDATION_NOT_ENOUGH_ANSWERS = "Question must have at least two answers";
export declare abstract class QuestionEntity extends AppObjectEntity implements Challenge {
    static readonly type = "QuestionEntity";
    readonly challengeID = "QUESTION";
    name: string;
    helpHeading: string;
    consumerHelpText: string;
    authorHelpText: string;
    abstract get gotItRight(): boolean;
    abstract get reviewFeedback(): string;
    abstract addAnswer: (answer: QuestionAnswerEntity) => void;
    abstract removeAnswer: (id: string) => void;
    abstract getAnswer: (id: string) => QuestionAnswerEntity | undefined;
    abstract getAllAnswers: () => QuestionAnswerEntity[];
    abstract hasAnswer: (id: string) => boolean;
    abstract createNewAnswer: () => QuestionAnswerEntity;
    abstract removeAllAnswers: () => void;
    abstract reset: () => void;
    abstract submitAnswer: (id: string) => void;
    abstract setDefaultState: () => void;
    abstract answerFactory: (id?: string) => QuestionAnswerEntity;
    abstract get validationMessage(): string | undefined;
    static get: (appObjects: AppObjectRepo) => QuestionEntity | undefined;
}
export declare function makeQuestionEntity(appObject: AppObject): QuestionEntity;
//# sourceMappingURL=QuestionEntity.d.ts.map