import { BaseElement } from '../shared/base';
/**
 * Variants of the `builder` element type. Each value here maps 1:1 to a
 * Vue file (or folder) under `src/elements/builder/` via the engine's registry.
 *
 * Builders are inherently recursive — they author other elements/cards —
 * so the typed shape stays intentionally loose. Specific payloads are
 * narrowed inside each renderer.
 */
export type BuilderStyle = "form-builder" | "object-builder" | "preset-builder" | "reactive-canvas-builder" | "element-list-builder" | "quiz-builder" | "dependency-list-builder" | "grid-builder";
export interface BuilderElement extends BaseElement<`builder.${BuilderStyle}`> {
    name?: string | null;
    label?: string;
    /**
     * Default payload for the builder. Builders accept arbitrary nested
     * shapes (form schemas, object trees, canvas docs) so this stays
     * intentionally loose. Concrete typing happens in each renderer.
     */
    defaultValue?: unknown;
    /**
     * Element/card types to hide in the builder's palette. Mirrors the v2
     * platform's filter prop on FormBuilder.
     */
    hideElementTypes?: ReadonlyArray<string>;
    hideCardTypes?: ReadonlyArray<string>;
    /** Models the builder is allowed to author against (DependencyList, Quiz). */
    allowedModels?: ReadonlyArray<string>;
    /** Hide the surrounding chrome when the builder is embedded in a card. */
    displayHeader?: boolean;
    /** Route descriptor for asset lookups inside the builder. */
    assetSearchRoute?: Record<string, unknown>;
    /** Route descriptor for asset uploads inside the builder. */
    assetUploadRoute?: Record<string, unknown>;
    /** Arbitrary builder-specific config (canvas docs, grid templates, etc.). */
    builderConfig?: Record<string, unknown>;
}
export declare const BuilderElementDefaults: {
    readonly type: "builder.object-builder";
    readonly columns: 12;
    readonly columnsSm: 12;
    readonly columnsMd: 12;
    readonly columnsLg: 12;
    readonly columnsXl: 12;
};
export declare const BuilderElementMetadata: {
    readonly icon: "puzzle";
    readonly displayLabel: "Builder";
    readonly elementCategory: "builder";
    readonly description: "Add a builder to allow creating of forms, objects, reactive canvases, and more.";
};
export declare const BuilderElementEditConfig: {
    readonly label: {
        readonly type: "input.text";
        readonly defaultValue: "";
        readonly label: "Label";
        readonly columnsMd: 6;
        readonly columns: 12;
        readonly section: "configuration";
    };
    readonly name: {
        readonly type: "picker.data-model";
        readonly defaultValue: "";
        readonly label: "Name";
        readonly columns: 12;
        readonly section: "advanced";
    };
    readonly style: {
        readonly type: "option-select.select";
        readonly defaultValue: "object-builder";
        readonly label: "Builder Style";
        readonly columns: 12;
        readonly section: "layout";
        readonly selectOptions: readonly [{
            readonly label: "Form Builder";
            readonly value: "form-builder";
        }, {
            readonly label: "Object Builder";
            readonly value: "object-builder";
        }, {
            readonly label: "Preset Builder";
            readonly value: "preset-builder";
        }, {
            readonly label: "Reactive Canvas Builder";
            readonly value: "reactive-canvas-builder";
        }, {
            readonly label: "Element List Builder";
            readonly value: "element-list-builder";
        }, {
            readonly label: "Quiz Builder";
            readonly value: "quiz-builder";
        }, {
            readonly label: "Dependency List Builder";
            readonly value: "dependency-list-builder";
        }, {
            readonly label: "Grid Builder";
            readonly value: "grid-builder";
        }];
    };
    readonly displayHeader: {
        readonly type: "boolean.switch";
        readonly label: "Show builder header";
        readonly columns: 6;
        readonly section: "layout";
    };
};
export declare const BuilderStyleMetadataMap: Partial<Record<BuilderStyle, {
    displayLabel: string;
    description: string;
}>>;
//# sourceMappingURL=BuilderElement.d.ts.map