import { BaseElement } from '../shared/base';
import { ValidationConfig } from '../shared/validation';
/**
 * Variants of the `boolean` element type. Each value here maps 1:1 to a
 * Vue file under `src/elements/boolean/` via the engine's registry.
 */
export type BooleanStyle = "checkbox" | "switch" | "radio" | "icon-toggle";
export interface BooleanElement extends BaseElement<`boolean.${BooleanStyle}`> {
    name: string;
    label: string;
    defaultValue?: boolean;
    required?: boolean;
    readonly?: boolean;
    /** For `radio`: render the two choices on the same row. */
    inline?: boolean;
    /** Override the label shown next to / on top of the control's "true" state. */
    trueLabel?: string;
    /** Override the label shown next to / on top of the control's "false" state. */
    falseLabel?: string;
    /** For `icon-toggle`: lucide icon name when value is true. */
    trueIcon?: string;
    /** For `icon-toggle`: lucide icon name when value is false. */
    falseIcon?: string;
    /** Validation rules (Laravel-style strings). */
    validation?: ValidationConfig;
}
export declare const BooleanElementDefaults: {
    readonly type: "boolean.checkbox";
    readonly label: "Boolean Label";
    readonly defaultValue: false;
    readonly columns: 12;
    readonly columnsSm: 12;
    readonly columnsMd: 12;
    readonly columnsLg: 12;
    readonly columnsXl: 12;
};
export declare const BooleanElementMetadata: {
    readonly icon: "square-check";
    readonly displayLabel: "True or False";
    readonly elementCategory: "boolean";
    readonly description: "Create a boolean field to store true/false values and display as a checkbox, switch, radio button, or icon toggle.";
};
/**
 * EditConfig describes how the FormBuilder inspector renders each
 * configurable property. Each key matches a property on `BooleanElement`;
 * the value is a (loosely-typed) element spec.
 */
export declare const BooleanElementEditConfig: {
    readonly label: {
        readonly type: "input.text";
        readonly defaultValue: "";
        readonly label: "Label";
        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: "checkbox";
        readonly label: "Boolean Style";
        readonly columns: 6;
        readonly selectOptions: readonly [{
            readonly label: "Checkbox";
            readonly value: "checkbox";
        }, {
            readonly label: "Switch";
            readonly value: "switch";
        }, {
            readonly label: "Radio";
            readonly value: "radio";
        }, {
            readonly label: "Icon Toggle";
            readonly value: "icon-toggle";
        }];
        readonly section: "layout";
    };
    readonly defaultValue: {
        readonly type: "boolean.checkbox";
        readonly label: "Default Value";
        readonly columns: 12;
        readonly section: "configuration";
    };
    readonly required: {
        readonly type: "boolean.switch";
        readonly label: "Make item required";
        readonly columns: 6;
        readonly section: "configuration";
    };
    readonly readonly: {
        readonly type: "boolean.switch";
        readonly label: "Make item read-only";
        readonly columns: 6;
        readonly section: "configuration";
    };
    readonly inline: {
        readonly type: "boolean.switch";
        readonly label: "Inline Options";
        readonly columns: 6;
        readonly section: "layout";
        readonly conditionParams: [{
            readonly name: "style";
            readonly logic: "==";
            readonly value: "radio";
        }];
    };
    readonly trueLabel: {
        readonly type: "input.text";
        readonly label: "True Label";
        readonly columns: 6;
        readonly section: "configuration";
        readonly conditionParams: [{
            readonly name: "style";
            readonly logic: "in-array";
            readonly value: readonly ["radio", "switch"];
        }];
    };
    readonly falseLabel: {
        readonly type: "input.text";
        readonly label: "False Label";
        readonly columns: 6;
        readonly section: "configuration";
        readonly conditionParams: [{
            readonly name: "style";
            readonly logic: "in-array";
            readonly value: readonly ["radio", "switch"];
        }];
    };
    readonly trueIcon: {
        readonly type: "picker.icon";
        readonly label: "True Icon";
        readonly columns: 6;
        readonly section: "configuration";
        readonly conditionParams: [{
            readonly name: "style";
            readonly logic: "==";
            readonly value: "icon-toggle";
        }];
    };
    readonly falseIcon: {
        readonly type: "picker.icon";
        readonly label: "False Icon";
        readonly columns: 6;
        readonly section: "configuration";
        readonly conditionParams: [{
            readonly name: "style";
            readonly logic: "==";
            readonly value: "icon-toggle";
        }];
    };
};
export declare const BooleanStyleMetadataMap: Partial<Record<BooleanStyle, {
    displayLabel: string;
    description: string;
}>>;
//# sourceMappingURL=BooleanElement.d.ts.map