import { QuizBuilderSchema, QuizQuestion, QuizQuestionType } from '../../../../stores/quizBuilderStore';
/** A single item inside a `CustomQuestionGroup.questions` array. */
export interface CustomQuestionItem {
    /** Quiz question type. */
    type: QuizQuestionType;
    /** Display label shown in the palette and pre-filled on the question. */
    label: string;
    /** Optional Lucide icon name (kebab-case or PascalCase). */
    icon?: string;
    /**
     * Extra properties merged onto the question when it is added (prompt,
     * helpText, required, options, …).
     */
    config?: Partial<Omit<QuizQuestion, "id" | "type" | "bankId">>;
}
/** A collapsible group in `customElementList`. */
export interface CustomQuestionGroup {
    type: "question-group";
    label: string;
    questions: CustomQuestionItem[];
}
/** Union accepted by the `customElementList` prop. */
export type CustomQuestionListItem = CustomQuestionGroup | CustomQuestionItem;
export interface QuizBuilderProps {
    /** Initial / current schema. Two-way bindable via v-model. */
    modelValue?: Partial<QuizBuilderSchema>;
    /**
     * Identifier used to key the quizBuilderStore. Defaults to a stable
     * auto-generated id.
     */
    builderId?: string;
    label?: string;
    name?: string | null;
    item?: Record<string, unknown>;
    classList?: string[] | string;
    helpText?: string;
    errors?: string[];
    hideLabel?: boolean;
    required?: boolean;
    readonly?: boolean;
    disabled?: boolean;
    /**
     * Quiz question types to exclude from the palette, e.g.
     * `["free-text"]`. Has no effect when `customElementList` is set.
     */
    hideElementTypes?: QuizQuestionType[] | string[];
    /**
     * Replaces the default question-type chips with a custom list. Each
     * top-level item is either a collapsible `question-group` or a bare
     * question entry.
     */
    customElementList?: CustomQuestionListItem[];
    /** When `true`, all groups in `customElementList` start expanded. */
    openAllSections?: boolean;
    /**
     * When `true`, exposes bank-management UI: cog (config), per-bank
     * icons, and the "+" add-bank button. When `false`, all questions
     * implicitly land in the default initial bank. Defaults to `false`.
     */
    enableQuestionBanks?: boolean;
    /**
     * When `true`, palette items show a drag handle and must be dragged
     * onto the layers panel. Otherwise items are click-to-add.
     */
    dragToAdd?: boolean;
    /**
     * Caps the overall builder height so each column (palette/config,
     * layers, inspector) scrolls independently instead of the whole
     * component growing with its tallest column. Any CSS length. Defaults
     * to `"40rem"`; pass `"none"` to disable the cap.
     */
    maxHeight?: string;
}
type __VLS_Props = QuizBuilderProps;
type __VLS_PublicProps = {
    "modelValue"?: Partial<QuizBuilderSchema> | undefined;
} & __VLS_Props;
declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
    "update:modelValue": (value: Partial<QuizBuilderSchema> | undefined) => any;
}, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
    "onUpdate:modelValue"?: ((value: Partial<QuizBuilderSchema> | undefined) => any) | undefined;
}>, {
    item: Record<string, unknown>;
    errors: string[];
    maxHeight: string;
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
export default _default;
//# sourceMappingURL=QuizBuilder.vue.d.ts.map