import { Resource } from "../../common";
import { APIQuestion, Question, StoreAnswer, StoreQuestion } from "../question";
import { APIQuestionnaire, QuestionnaireType, StoreQuestionnaire } from "./interfaces";
export declare class Questionnaire extends Resource {
    /**
     * Order of the questionnaire
     */
    order: number;
    /**
     * Next question that the user has to answer.
     * It's calculated in the backend.
     * null if there's no more questions in this questionnaire
     */
    nextQuestion: Question | null;
    /**
     * The questions already answered for this profile
     */
    answeredQuestions: Question[];
    /**
     * Answers of this profile for the current questionnaire
     */
    answers: StoreAnswer[];
    /**
     * Total number of questions for this questionnaire, excluding dependents
     */
    defaultQuestionCount: number;
    type: QuestionnaireType;
    intakeFormTitle?: string | undefined;
    diseaseName?: string | undefined;
    duration?: string | undefined;
    preAttemptText?: string | undefined;
    constructor(
    /**
     * Order of the questionnaire
     */
    order: number, 
    /**
     * Next question that the user has to answer.
     * It's calculated in the backend.
     * null if there's no more questions in this questionnaire
     */
    nextQuestion: Question | null, 
    /**
     * The questions already answered for this profile
     */
    answeredQuestions: Question[], 
    /**
     * Answers of this profile for the current questionnaire
     */
    answers: StoreAnswer[], 
    /**
     * Total number of questions for this questionnaire, excluding dependents
     */
    defaultQuestionCount: number, type: QuestionnaireType, intakeFormTitle?: string | undefined, diseaseName?: string | undefined, duration?: string | undefined, preAttemptText?: string | undefined);
    /**
     * The name of the questionnaire resource on the API server.
     */
    static get resourceName(): string;
    /**
     * The name of the service containing the questionnaire resource.
     */
    static get serviceName(): string;
    /**
     * Convert the questionnaire into a JSON serializable object for the API server.
     */
    serializeAPI(): APIQuestionnaire;
    /**
     * Deserialize the data from the API server.
     *
     * @param data The questionnaire data from the API server.
     */
    deserializeAPI(data: APIQuestionnaire): void;
    /**
     * Serialize the questionnaire into a format for storing in the Redux store.
     */
    serializeRedux(): StoreQuestionnaire;
    /**
     * Create a questionnaire from the API server data.
     *
     * @param data Data from the api server.
     *
     * @returns The questionnaire object.
     */
    static apiFactory(data: APIQuestionnaire): Questionnaire;
    /**
     * Create a questionnaire from the Redux store data.
     *
     * @param data Data from the api server.
     *
     * @returns The questionnaire object.
     */
    static reduxFactory(data: StoreQuestionnaire): Questionnaire;
    /**
     * Get the default questions of the questionnaire.
     * i.e., Get all non-follow up questions.
     *
     * @param questionnaireId The id of the questionnaire.
     * @param profileId (optional) The profile id of the client.
     *
     * @returns The questionnaire object.
     */
    static getDefaultQuestions(questionnaireId: string, profileId?: string): Promise<APIQuestion[]>;
    /**
     * Delete all answers of the questionnaire for the client.
     *
     * @param profileId The profile id of the client.
     * @param questionnaireId The id of the questionnaire.
     *
     * @returns The questionnaire object.
     */
    static deleteAllAnswersOfClient(profileId: string, questionnaireId: string): Promise<import("../../common").Response>;
    /**
     * Get the next question of the questionnaire.
     *
     * @param profileId The profile id of the client.
     *
     * @returns The questionnaire object.
     */
    getNextQuestion(profileId: string): Promise<StoreQuestion | null>;
}
