import type { PieEnvironment, PieUpdateSession } from '@pie-element/shared-types'; import type { ImageClozeAssociationConfiguration, ImageClozeAssociationContainerResponse, ImageClozeAssociationModel, ImageClozeAssociationSession, ImageClozeAssociationValidation } from '../types.js'; type Session = ImageClozeAssociationSession | null | undefined; /** The model the delivery renders: the camelized model plus the state the controller derives */ type ImageClozeAssociationViewModel = Omit & { disabled: boolean; mode: PieEnvironment['mode']; responseCorrect?: boolean; responseAreasToBeFilled: number; completeResponses: string[][]; hasUnplacedChoices: boolean; teacherInstructions?: string | null; rationale?: string | null; }; type ImageClozeAssociationOutcome = { score: number; empty: boolean; traceLog: string[]; }; export type ImageClozeAssociationValidationErrors = { teacherInstructions?: string; }; export declare const normalize: (question: ImageClozeAssociationModel) => { answerChoiceTransparency?: boolean; prompt?: string; rationale: string; rationaleEnabled: boolean; spellCheckEnabled?: boolean; teacherInstructions: string; teacherInstructionsEnabled: boolean; studentInstructionsEnabled: boolean; image?: import("../types.js").ImageClozeAssociationImage; responseContainers?: import("../types.js").ImageClozeAssociationResponseContainer[]; stimulus?: string; possibleResponses?: string[]; validation?: ImageClozeAssociationValidation; partialScoring?: boolean; maxResponsePerZone?: number; duplicateResponses?: boolean; showDashedBorder?: boolean; rubricEnabled?: boolean; shuffle?: boolean; lockChoiceOrder?: boolean; language?: string; uiStyle?: import("../types.js").ImageClozeAssociationUiStyle; responseAreaFill?: string; responseContainerPadding?: string; imageDropTargetPadding?: string; fontSizeFactor?: number; autoplayAudioEnabled?: boolean; autoplayAudioHeld?: boolean; completeAudioEnabled?: boolean; customAudioButton?: import("@pie-element/shared-types").CustomAudioButton; extraCSSRules?: import("@pie-element/shared-types").ExtraCSSRules; possible_responses?: string[]; response_containers?: import("../types.js").ImageClozeAssociationResponseContainer[]; ui_style?: import("../types.js").ImageClozeAssociationSnakeCaseUiStyle; duplicate_responses?: boolean; max_response_per_zone?: number; response_container?: Record; metadata?: Record; is_math?: boolean; response_id?: string; metadatadistractor_rationale?: string; published?: boolean; shuffle_options?: boolean; id: string; element: string; accessibilityCatalogs?: import("@pie-element/shared-types").AccessibilityCatalog[]; }; /** * @param {*} question * @param {*} session * @param {*} env * @param {*} updateSession - optional - a function that will set the properties passed into it on the session. */ export declare const model: (question: ImageClozeAssociationModel, session: ImageClozeAssociationSession | undefined, env: PieEnvironment, updateSession?: PieUpdateSession) => Promise; export declare const isResponseCorrect: (correctResponses: ImageClozeAssociationContainerResponse[], session: Session) => boolean; export declare const getPartialScore: (question: ImageClozeAssociationModel, session: Session) => number; /** * Generates detailed trace log for scoring evaluation * @param {Object} model - the question model * @param {Object} session - the student session * @param {Object} env - the environment * @returns {Array} traceLog - array of trace messages */ export declare const getLogTrace: (model: ImageClozeAssociationModel, session: Session, env?: Partial) => string[]; export declare const outcome: (config: ImageClozeAssociationModel, session: Session, env?: Partial) => Promise; export declare const createCorrectResponseSession: (question: ImageClozeAssociationModel, env: PieEnvironment) => Promise; export declare const validate: (model?: Partial, config?: ImageClozeAssociationConfiguration) => ImageClozeAssociationValidationErrors; export {};