import { BaseElement } from '../shared/base';
/**
 * Variants of the `configuration-block` element type. Each value here maps
 * 1:1 to a Vue file under `src/elements/configuration-block/` via the
 * engine's registry.
 *
 * The v2 schema spells the elements-list variant as "elements" — we accept
 * both "elements" (legacy) and "elements-block" (canonical) by widening
 * the style accordingly.
 */
export type ConfigurationBlockStyle = "elements-block" | "repeatable" | "dialog" | "modal";
export interface ConfigurationBlockElement extends BaseElement<`configuration-block.${ConfigurationBlockStyle}`> {
    name?: string | null;
    label?: string;
    /**
     * Child element / card payload. For `repeatable` this is the schema
     * for one row; for `dialog` / `modal` / `elements-block` this is the
     * full child tree. Kept loose to avoid a circular reference.
     */
    selectOptions?: ReadonlyArray<Record<string, unknown>>;
    /** For `repeatable`: label on the "add row" button. */
    addOptionButtonLabel?: string;
    /** For `repeatable`: which child fields to summarise in each row's header. */
    optionLabelFields?: ReadonlyArray<string>;
    /** For `dialog` / `modal`: label on the trigger button. */
    triggerButtonLabel?: string;
    /** For `dialog` / `modal`: dialog/modal title. */
    dialogTitle?: string;
    /** Initial collapsed state for `repeatable` rows. */
    collapsedByDefault?: boolean;
}
export declare const ConfigurationBlockElementDefaults: {
    readonly type: "configuration-block.elements-block";
    readonly columns: 12;
    readonly columnsSm: 12;
    readonly columnsMd: 12;
    readonly columnsLg: 12;
    readonly columnsXl: 12;
};
export declare const ConfigurationBlockElementMetadata: {
    readonly icon: "square-dashed-circle-plus";
    readonly displayLabel: "Configuration Group";
    readonly elementCategory: "configuration-block";
    readonly description: "Create a group of configuration elements, these can be repeatable element blocks, modals or dialogs.";
};
export declare const ConfigurationBlockElementEditConfig: {
    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: "elements-block";
        readonly label: "Configuration Style";
        readonly selectOptions: readonly [{
            readonly label: "Elements List";
            readonly value: "elements-block";
        }, {
            readonly label: "Repeatable";
            readonly value: "repeatable";
        }, {
            readonly label: "Dialog";
            readonly value: "dialog";
        }, {
            readonly label: "Modal";
            readonly value: "modal";
        }];
        readonly columns: 12;
        readonly section: "layout";
    };
    readonly addOptionButtonLabel: {
        readonly type: "input.text";
        readonly label: "Add Button Label";
        readonly columns: 6;
        readonly section: "configuration";
        readonly conditionParams: [{
            readonly name: "style";
            readonly logic: "==";
            readonly value: "repeatable";
        }];
    };
    readonly collapsedByDefault: {
        readonly type: "boolean.switch";
        readonly label: "Collapse rows by default";
        readonly columns: 6;
        readonly section: "layout";
        readonly conditionParams: [{
            readonly name: "style";
            readonly logic: "==";
            readonly value: "repeatable";
        }];
    };
    readonly triggerButtonLabel: {
        readonly type: "input.text";
        readonly label: "Trigger Button Label";
        readonly columns: 6;
        readonly section: "configuration";
        readonly conditionParams: [{
            readonly name: "style";
            readonly logic: "in-array";
            readonly value: readonly ["dialog", "modal"];
        }];
    };
    readonly dialogTitle: {
        readonly type: "input.text";
        readonly label: "Dialog Title";
        readonly columns: 6;
        readonly section: "configuration";
        readonly conditionParams: [{
            readonly name: "style";
            readonly logic: "in-array";
            readonly value: readonly ["dialog", "modal"];
        }];
    };
};
export declare const ConfigurationBlockStyleMetadataMap: Partial<Record<ConfigurationBlockStyle, {
    displayLabel: string;
    description: string;
}>>;
//# sourceMappingURL=ConfigurationBlockElement.d.ts.map