import { Question } from '../../../../../common-ui/dist/common-ui.es.js';
import { Answer, ViewData } from '../../../../../common/dist/index.mjs';
import { Tokens } from 'marked';
export { BlanksCardDataShapes } from './shapes.js';
type fillInSectionType = 'text' | 'blank';
export interface FillInSection {
    type: fillInSectionType;
    text: string;
}
export declare class BlanksCard extends Question {
    static dataShapes: import('../../../../../common/dist/index.mjs').DataShape[];
    static views: import('vue').DefineComponent<{
        data: ViewData[];
        modifyDifficulty: number;
    }, {
        question: import('vue').ComputedRef<BlanksCard>;
        truncatedOptions: import('vue').ComputedRef<string[] | undefined>;
        hasImage: import('vue').ComputedRef<boolean>;
        imageURLs: import('vue').ComputedRef<string[]>;
        hasAudio: import('vue').ComputedRef<boolean>;
        audioURL: import('vue').ComputedRef<string[]>;
        obscuredAnswer: import('vue').ComputedRef<string>;
        someAnswer: import('vue').ComputedRef<string>;
        isQuestion: import('vue').ComputedRef<boolean>;
        handleNext: () => void;
        markdownText: import('vue').ComputedRef<string>;
        priorSessionViews: import('vue').Ref<number>;
        priorAttempts: import('vue').Ref<number>;
        priorAnswers: import('vue').Ref<[Answer, string][]>;
        maxAttemptsPerView: import('vue').Ref<number>;
        maxSessionViews: import('vue').Ref<number>;
        submitAnswer: (answer: Answer, submittingClass?: string) => import('packages/db/dist/types-legacy-6ettoclI.js').i;
        startTime: import('vue').Ref<moment.Moment>;
        hotKeys: import('vue').Ref<import('../../../../../common-ui/dist/common-ui.es.js').HotKey[]>;
        timeSpent: import('vue').ComputedRef<number>;
        logger: import('../../../../../common-ui/dist/common-ui.es.js').ViewableLogger;
        getURL: (item: string, dataShapeIndex?: number) => string;
        emitResponse: (record: import('packages/db/dist/types-legacy-6ettoclI.js').c) => void;
    }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
        data: ViewData[];
        modifyDifficulty: number;
    }> & Readonly<{}>, {
        modifyDifficulty: number;
    }, {}, {
        MarkdownRenderer: any;
        RadioMultipleChoice: any;
        AudioAutoPlayer: any;
    }, {}, string, import('vue').ComponentProvideOptions, true, {}, any>[];
    mdText: string;
    answers: string[] | null;
    options: string[] | null;
    splitTextToken(token: Tokens.Text): Tokens.Text[];
    /**
     * Parses a string to extract answer options and distractors for a fill-in question.
     * The input string must be wrapped in curly braces and can contain multiple answers/distractors separated by | and ||.
     * For example: "{{answer1|answer2||distractor1|distractor2}}"
     * @param s The input string containing answers and optional distractors
     * @returns An object containing the parsed answers array and shuffled options array (or null if no distractors)
     * @throws Error if input string is not properly formatted with {{ }}
     */
    private optionsFromString;
    constructor(data: ViewData[]);
    isCorrect(answer: Answer): boolean;
    dataShapes(): import('../../../../../common/dist/index.mjs').DataShape[];
    views(): import('vue').DefineComponent<{
        data: ViewData[];
        modifyDifficulty: number;
    }, {
        question: import('vue').ComputedRef<BlanksCard>;
        truncatedOptions: import('vue').ComputedRef<string[] | undefined>;
        hasImage: import('vue').ComputedRef<boolean>;
        imageURLs: import('vue').ComputedRef<string[]>;
        hasAudio: import('vue').ComputedRef<boolean>;
        audioURL: import('vue').ComputedRef<string[]>;
        obscuredAnswer: import('vue').ComputedRef<string>;
        someAnswer: import('vue').ComputedRef<string>;
        isQuestion: import('vue').ComputedRef<boolean>;
        handleNext: () => void;
        markdownText: import('vue').ComputedRef<string>;
        priorSessionViews: import('vue').Ref<number>;
        priorAttempts: import('vue').Ref<number>;
        priorAnswers: import('vue').Ref<[Answer, string][]>;
        maxAttemptsPerView: import('vue').Ref<number>;
        maxSessionViews: import('vue').Ref<number>;
        submitAnswer: (answer: Answer, submittingClass?: string) => import('packages/db/dist/types-legacy-6ettoclI.js').i;
        startTime: import('vue').Ref<moment.Moment>;
        hotKeys: import('vue').Ref<import('../../../../../common-ui/dist/common-ui.es.js').HotKey[]>;
        timeSpent: import('vue').ComputedRef<number>;
        logger: import('../../../../../common-ui/dist/common-ui.es.js').ViewableLogger;
        getURL: (item: string, dataShapeIndex?: number) => string;
        emitResponse: (record: import('packages/db/dist/types-legacy-6ettoclI.js').c) => void;
    }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
        data: ViewData[];
        modifyDifficulty: number;
    }> & Readonly<{}>, {
        modifyDifficulty: number;
    }, {}, {
        MarkdownRenderer: any;
        RadioMultipleChoice: any;
        AudioAutoPlayer: any;
    }, {}, string, import('vue').ComponentProvideOptions, true, {}, any>[];
    private isCorrectRadio;
}
//# sourceMappingURL=index.d.ts.map