import { z } from "zod";
import { fieldSchema, type FieldType } from '../../prisma/zod-utils';
export type ALL_VIEWS = "ALL_VIEWS";
export declare const fieldTypeConfigSchema: z.ZodEffects<z.ZodObject<{
    label: z.ZodString;
    value: z.ZodEnum<["name", "text", "textarea", "number", "email", "phone", "address", "multiemail", "select", "multiselect", "checkbox", "radio", "radioInput", "boolean", "url"]>;
    isTextType: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    systemOnly: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    needsOptions: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    supportsLengthCheck: z.ZodOptional<z.ZodObject<{
        maxLength: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        maxLength: number;
    }, {
        maxLength: number;
    }>>;
    supportsPricing: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    optionsSupportPricing: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    propsType: z.ZodEnum<["text", "textList", "select", "multiselect", "boolean", "objectiveWithInput", "variants"]>;
    variantsConfig: z.ZodOptional<z.ZodObject<{
        /**
         * This is the default variant that will be used when a new field is created.
         */
        defaultVariant: z.ZodString;
        /**
         *  Used only when there are 2 variants, so that UI can be simplified by showing a switch(with this label) instead of a Select
         */
        toggleLabel: z.ZodOptional<z.ZodString>;
        variants: z.ZodRecord<z.ZodString, z.ZodObject<{
            /**
             * That's how the variant would be labelled in App UI. This label represents the field in booking questions' list
             * Supports translation
             */
            label: z.ZodString;
            fieldsMap: z.ZodRecord<z.ZodString, z.ZodObject<{
                /**
                 * Supports translation
                 */
                defaultLabel: z.ZodOptional<z.ZodString>;
                /**
                 * Supports translation
                 */
                defaultPlaceholder: z.ZodOptional<z.ZodString>;
                /**
                 * Decides if a variant field's required property can be changed or not
                 */
                canChangeRequirability: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
            }, "strip", z.ZodTypeAny, {
                defaultLabel?: string | undefined;
                defaultPlaceholder?: string | undefined;
                canChangeRequirability?: boolean | undefined;
            }, {
                defaultLabel?: string | undefined;
                defaultPlaceholder?: string | undefined;
                canChangeRequirability?: boolean | undefined;
            }>>;
        }, "strip", z.ZodTypeAny, {
            label: string;
            fieldsMap: Record<string, {
                defaultLabel?: string | undefined;
                defaultPlaceholder?: string | undefined;
                canChangeRequirability?: boolean | undefined;
            }>;
        }, {
            label: string;
            fieldsMap: Record<string, {
                defaultLabel?: string | undefined;
                defaultPlaceholder?: string | undefined;
                canChangeRequirability?: boolean | undefined;
            }>;
        }>>;
        /**
         * This is the default configuration for the field.
         */
        defaultValue: z.ZodOptional<z.ZodObject<{
            variants: z.ZodRecord<z.ZodString, z.ZodObject<{
                fields: z.ZodArray<z.ZodObject<Omit<{
                    name: z.ZodEffects<z.ZodString, string, string>;
                    type: z.ZodEnum<["name", "text", "textarea", "number", "email", "phone", "address", "multiemail", "select", "multiselect", "checkbox", "radio", "radioInput", "boolean", "url"]>;
                    label: z.ZodOptional<z.ZodString>;
                    labelAsSafeHtml: z.ZodOptional<z.ZodString>;
                    defaultLabel: z.ZodOptional<z.ZodString>;
                    placeholder: z.ZodOptional<z.ZodString>;
                    defaultPlaceholder: z.ZodOptional<z.ZodString>;
                    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
                    options: z.ZodOptional<z.ZodArray<z.ZodObject<{
                        label: z.ZodString;
                        value: z.ZodString;
                        price: z.ZodOptional<z.ZodNumber>;
                    }, "strip", z.ZodTypeAny, {
                        label: string;
                        value: string;
                        price?: number | undefined;
                    }, {
                        label: string;
                        value: string;
                        price?: number | undefined;
                    }>, "many">>;
                    getOptionsAt: z.ZodOptional<z.ZodString>;
                    optionsInputs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
                        type: z.ZodEnum<["address", "phone", "text"]>;
                        required: z.ZodOptional<z.ZodBoolean>;
                        placeholder: z.ZodOptional<z.ZodString>;
                    }, "strip", z.ZodTypeAny, {
                        type: "phone" | "address" | "text";
                        required?: boolean | undefined;
                        placeholder?: string | undefined;
                    }, {
                        type: "phone" | "address" | "text";
                        required?: boolean | undefined;
                        placeholder?: string | undefined;
                    }>>>;
                    minLength: z.ZodOptional<z.ZodNumber>;
                    maxLength: z.ZodOptional<z.ZodNumber>;
                    excludeEmails: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
                    requireEmails: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
                    price: z.ZodOptional<z.ZodNumber>;
                }, "options" | "defaultLabel" | "defaultPlaceholder" | "getOptionsAt" | "optionsInputs">, "strip", z.ZodTypeAny, {
                    name: string;
                    type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                    label?: string | undefined;
                    price?: number | undefined;
                    required?: boolean | undefined;
                    placeholder?: string | undefined;
                    labelAsSafeHtml?: string | undefined;
                    minLength?: number | undefined;
                    maxLength?: number | undefined;
                    excludeEmails?: string | undefined;
                    requireEmails?: string | undefined;
                }, {
                    name: string;
                    type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                    label?: string | undefined;
                    price?: number | undefined;
                    required?: boolean | undefined;
                    placeholder?: string | undefined;
                    labelAsSafeHtml?: string | undefined;
                    minLength?: number | undefined;
                    maxLength?: number | undefined;
                    excludeEmails?: string | undefined;
                    requireEmails?: string | undefined;
                }>, "many">;
            }, "strip", z.ZodTypeAny, {
                fields: {
                    name: string;
                    type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                    label?: string | undefined;
                    price?: number | undefined;
                    required?: boolean | undefined;
                    placeholder?: string | undefined;
                    labelAsSafeHtml?: string | undefined;
                    minLength?: number | undefined;
                    maxLength?: number | undefined;
                    excludeEmails?: string | undefined;
                    requireEmails?: string | undefined;
                }[];
            }, {
                fields: {
                    name: string;
                    type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                    label?: string | undefined;
                    price?: number | undefined;
                    required?: boolean | undefined;
                    placeholder?: string | undefined;
                    labelAsSafeHtml?: string | undefined;
                    minLength?: number | undefined;
                    maxLength?: number | undefined;
                    excludeEmails?: string | undefined;
                    requireEmails?: string | undefined;
                }[];
            }>>;
        }, "strip", z.ZodTypeAny, {
            variants: Record<string, {
                fields: {
                    name: string;
                    type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                    label?: string | undefined;
                    price?: number | undefined;
                    required?: boolean | undefined;
                    placeholder?: string | undefined;
                    labelAsSafeHtml?: string | undefined;
                    minLength?: number | undefined;
                    maxLength?: number | undefined;
                    excludeEmails?: string | undefined;
                    requireEmails?: string | undefined;
                }[];
            }>;
        }, {
            variants: Record<string, {
                fields: {
                    name: string;
                    type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                    label?: string | undefined;
                    price?: number | undefined;
                    required?: boolean | undefined;
                    placeholder?: string | undefined;
                    labelAsSafeHtml?: string | undefined;
                    minLength?: number | undefined;
                    maxLength?: number | undefined;
                    excludeEmails?: string | undefined;
                    requireEmails?: string | undefined;
                }[];
            }>;
        }>>;
    }, "strip", z.ZodTypeAny, {
        variants: Record<string, {
            label: string;
            fieldsMap: Record<string, {
                defaultLabel?: string | undefined;
                defaultPlaceholder?: string | undefined;
                canChangeRequirability?: boolean | undefined;
            }>;
        }>;
        defaultVariant: string;
        toggleLabel?: string | undefined;
        defaultValue?: {
            variants: Record<string, {
                fields: {
                    name: string;
                    type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                    label?: string | undefined;
                    price?: number | undefined;
                    required?: boolean | undefined;
                    placeholder?: string | undefined;
                    labelAsSafeHtml?: string | undefined;
                    minLength?: number | undefined;
                    maxLength?: number | undefined;
                    excludeEmails?: string | undefined;
                    requireEmails?: string | undefined;
                }[];
            }>;
        } | undefined;
    }, {
        variants: Record<string, {
            label: string;
            fieldsMap: Record<string, {
                defaultLabel?: string | undefined;
                defaultPlaceholder?: string | undefined;
                canChangeRequirability?: boolean | undefined;
            }>;
        }>;
        defaultVariant: string;
        toggleLabel?: string | undefined;
        defaultValue?: {
            variants: Record<string, {
                fields: {
                    name: string;
                    type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                    label?: string | undefined;
                    price?: number | undefined;
                    required?: boolean | undefined;
                    placeholder?: string | undefined;
                    labelAsSafeHtml?: string | undefined;
                    minLength?: number | undefined;
                    maxLength?: number | undefined;
                    excludeEmails?: string | undefined;
                    requireEmails?: string | undefined;
                }[];
            }>;
        } | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    label: string;
    value: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
    propsType: "boolean" | "select" | "text" | "multiselect" | "variants" | "textList" | "objectiveWithInput";
    isTextType?: boolean | undefined;
    systemOnly?: boolean | undefined;
    needsOptions?: boolean | undefined;
    supportsLengthCheck?: {
        maxLength: number;
    } | undefined;
    supportsPricing?: boolean | undefined;
    optionsSupportPricing?: boolean | undefined;
    variantsConfig?: {
        variants: Record<string, {
            label: string;
            fieldsMap: Record<string, {
                defaultLabel?: string | undefined;
                defaultPlaceholder?: string | undefined;
                canChangeRequirability?: boolean | undefined;
            }>;
        }>;
        defaultVariant: string;
        toggleLabel?: string | undefined;
        defaultValue?: {
            variants: Record<string, {
                fields: {
                    name: string;
                    type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                    label?: string | undefined;
                    price?: number | undefined;
                    required?: boolean | undefined;
                    placeholder?: string | undefined;
                    labelAsSafeHtml?: string | undefined;
                    minLength?: number | undefined;
                    maxLength?: number | undefined;
                    excludeEmails?: string | undefined;
                    requireEmails?: string | undefined;
                }[];
            }>;
        } | undefined;
    } | undefined;
}, {
    label: string;
    value: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
    propsType: "boolean" | "select" | "text" | "multiselect" | "variants" | "textList" | "objectiveWithInput";
    isTextType?: boolean | undefined;
    systemOnly?: boolean | undefined;
    needsOptions?: boolean | undefined;
    supportsLengthCheck?: {
        maxLength: number;
    } | undefined;
    supportsPricing?: boolean | undefined;
    optionsSupportPricing?: boolean | undefined;
    variantsConfig?: {
        variants: Record<string, {
            label: string;
            fieldsMap: Record<string, {
                defaultLabel?: string | undefined;
                defaultPlaceholder?: string | undefined;
                canChangeRequirability?: boolean | undefined;
            }>;
        }>;
        defaultVariant: string;
        toggleLabel?: string | undefined;
        defaultValue?: {
            variants: Record<string, {
                fields: {
                    name: string;
                    type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                    label?: string | undefined;
                    price?: number | undefined;
                    required?: boolean | undefined;
                    placeholder?: string | undefined;
                    labelAsSafeHtml?: string | undefined;
                    minLength?: number | undefined;
                    maxLength?: number | undefined;
                    excludeEmails?: string | undefined;
                    requireEmails?: string | undefined;
                }[];
            }>;
        } | undefined;
    } | undefined;
}>, {
    label: string;
    value: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
    propsType: "boolean" | "select" | "text" | "multiselect" | "variants" | "textList" | "objectiveWithInput";
    isTextType?: boolean | undefined;
    systemOnly?: boolean | undefined;
    needsOptions?: boolean | undefined;
    supportsLengthCheck?: {
        maxLength: number;
    } | undefined;
    supportsPricing?: boolean | undefined;
    optionsSupportPricing?: boolean | undefined;
    variantsConfig?: {
        variants: Record<string, {
            label: string;
            fieldsMap: Record<string, {
                defaultLabel?: string | undefined;
                defaultPlaceholder?: string | undefined;
                canChangeRequirability?: boolean | undefined;
            }>;
        }>;
        defaultVariant: string;
        toggleLabel?: string | undefined;
        defaultValue?: {
            variants: Record<string, {
                fields: {
                    name: string;
                    type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                    label?: string | undefined;
                    price?: number | undefined;
                    required?: boolean | undefined;
                    placeholder?: string | undefined;
                    labelAsSafeHtml?: string | undefined;
                    minLength?: number | undefined;
                    maxLength?: number | undefined;
                    excludeEmails?: string | undefined;
                    requireEmails?: string | undefined;
                }[];
            }>;
        } | undefined;
    } | undefined;
}, {
    label: string;
    value: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
    propsType: "boolean" | "select" | "text" | "multiselect" | "variants" | "textList" | "objectiveWithInput";
    isTextType?: boolean | undefined;
    systemOnly?: boolean | undefined;
    needsOptions?: boolean | undefined;
    supportsLengthCheck?: {
        maxLength: number;
    } | undefined;
    supportsPricing?: boolean | undefined;
    optionsSupportPricing?: boolean | undefined;
    variantsConfig?: {
        variants: Record<string, {
            label: string;
            fieldsMap: Record<string, {
                defaultLabel?: string | undefined;
                defaultPlaceholder?: string | undefined;
                canChangeRequirability?: boolean | undefined;
            }>;
        }>;
        defaultVariant: string;
        toggleLabel?: string | undefined;
        defaultValue?: {
            variants: Record<string, {
                fields: {
                    name: string;
                    type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                    label?: string | undefined;
                    price?: number | undefined;
                    required?: boolean | undefined;
                    placeholder?: string | undefined;
                    labelAsSafeHtml?: string | undefined;
                    minLength?: number | undefined;
                    maxLength?: number | undefined;
                    excludeEmails?: string | undefined;
                    requireEmails?: string | undefined;
                }[];
            }>;
        } | undefined;
    } | undefined;
}>;
export declare const fieldsSchema: z.ZodArray<z.ZodObject<{
    name: z.ZodEffects<z.ZodString, string, string>;
    type: z.ZodEnum<["name", "text", "textarea", "number", "email", "phone", "address", "multiemail", "select", "multiselect", "checkbox", "radio", "radioInput", "boolean", "url"]>;
    label: z.ZodOptional<z.ZodString>;
    price: z.ZodOptional<z.ZodNumber>;
    required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    placeholder: z.ZodOptional<z.ZodString>;
    options: z.ZodOptional<z.ZodArray<z.ZodObject<{
        label: z.ZodString;
        value: z.ZodString;
        price: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        label: string;
        value: string;
        price?: number | undefined;
    }, {
        label: string;
        value: string;
        price?: number | undefined;
    }>, "many">>;
    labelAsSafeHtml: z.ZodOptional<z.ZodString>;
    defaultLabel: z.ZodOptional<z.ZodString>;
    defaultPlaceholder: z.ZodOptional<z.ZodString>;
    getOptionsAt: z.ZodOptional<z.ZodString>;
    optionsInputs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
        type: z.ZodEnum<["address", "phone", "text"]>;
        required: z.ZodOptional<z.ZodBoolean>;
        placeholder: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: "phone" | "address" | "text";
        required?: boolean | undefined;
        placeholder?: string | undefined;
    }, {
        type: "phone" | "address" | "text";
        required?: boolean | undefined;
        placeholder?: string | undefined;
    }>>>;
    minLength: z.ZodOptional<z.ZodNumber>;
    maxLength: z.ZodOptional<z.ZodNumber>;
    excludeEmails: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
    requireEmails: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
    variant: z.ZodOptional<z.ZodString>;
    variantsConfig: z.ZodOptional<z.ZodObject<{
        variants: z.ZodRecord<z.ZodString, z.ZodObject<{
            fields: z.ZodArray<z.ZodObject<Omit<{
                name: z.ZodEffects<z.ZodString, string, string>;
                type: z.ZodEnum<["name", "text", "textarea", "number", "email", "phone", "address", "multiemail", "select", "multiselect", "checkbox", "radio", "radioInput", "boolean", "url"]>;
                label: z.ZodOptional<z.ZodString>;
                labelAsSafeHtml: z.ZodOptional<z.ZodString>;
                defaultLabel: z.ZodOptional<z.ZodString>;
                placeholder: z.ZodOptional<z.ZodString>;
                defaultPlaceholder: z.ZodOptional<z.ZodString>;
                required: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
                options: z.ZodOptional<z.ZodArray<z.ZodObject<{
                    label: z.ZodString;
                    value: z.ZodString;
                    price: z.ZodOptional<z.ZodNumber>;
                }, "strip", z.ZodTypeAny, {
                    label: string;
                    value: string;
                    price?: number | undefined;
                }, {
                    label: string;
                    value: string;
                    price?: number | undefined;
                }>, "many">>;
                getOptionsAt: z.ZodOptional<z.ZodString>;
                optionsInputs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
                    type: z.ZodEnum<["address", "phone", "text"]>;
                    required: z.ZodOptional<z.ZodBoolean>;
                    placeholder: z.ZodOptional<z.ZodString>;
                }, "strip", z.ZodTypeAny, {
                    type: "phone" | "address" | "text";
                    required?: boolean | undefined;
                    placeholder?: string | undefined;
                }, {
                    type: "phone" | "address" | "text";
                    required?: boolean | undefined;
                    placeholder?: string | undefined;
                }>>>;
                minLength: z.ZodOptional<z.ZodNumber>;
                maxLength: z.ZodOptional<z.ZodNumber>;
                excludeEmails: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
                requireEmails: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
                price: z.ZodOptional<z.ZodNumber>;
            }, "options" | "defaultLabel" | "defaultPlaceholder" | "getOptionsAt" | "optionsInputs">, "strip", z.ZodTypeAny, {
                name: string;
                type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                label?: string | undefined;
                price?: number | undefined;
                required?: boolean | undefined;
                placeholder?: string | undefined;
                labelAsSafeHtml?: string | undefined;
                minLength?: number | undefined;
                maxLength?: number | undefined;
                excludeEmails?: string | undefined;
                requireEmails?: string | undefined;
            }, {
                name: string;
                type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                label?: string | undefined;
                price?: number | undefined;
                required?: boolean | undefined;
                placeholder?: string | undefined;
                labelAsSafeHtml?: string | undefined;
                minLength?: number | undefined;
                maxLength?: number | undefined;
                excludeEmails?: string | undefined;
                requireEmails?: string | undefined;
            }>, "many">;
        }, "strip", z.ZodTypeAny, {
            fields: {
                name: string;
                type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                label?: string | undefined;
                price?: number | undefined;
                required?: boolean | undefined;
                placeholder?: string | undefined;
                labelAsSafeHtml?: string | undefined;
                minLength?: number | undefined;
                maxLength?: number | undefined;
                excludeEmails?: string | undefined;
                requireEmails?: string | undefined;
            }[];
        }, {
            fields: {
                name: string;
                type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                label?: string | undefined;
                price?: number | undefined;
                required?: boolean | undefined;
                placeholder?: string | undefined;
                labelAsSafeHtml?: string | undefined;
                minLength?: number | undefined;
                maxLength?: number | undefined;
                excludeEmails?: string | undefined;
                requireEmails?: string | undefined;
            }[];
        }>>;
    }, "strip", z.ZodTypeAny, {
        variants: Record<string, {
            fields: {
                name: string;
                type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                label?: string | undefined;
                price?: number | undefined;
                required?: boolean | undefined;
                placeholder?: string | undefined;
                labelAsSafeHtml?: string | undefined;
                minLength?: number | undefined;
                maxLength?: number | undefined;
                excludeEmails?: string | undefined;
                requireEmails?: string | undefined;
            }[];
        }>;
    }, {
        variants: Record<string, {
            fields: {
                name: string;
                type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                label?: string | undefined;
                price?: number | undefined;
                required?: boolean | undefined;
                placeholder?: string | undefined;
                labelAsSafeHtml?: string | undefined;
                minLength?: number | undefined;
                maxLength?: number | undefined;
                excludeEmails?: string | undefined;
                requireEmails?: string | undefined;
            }[];
        }>;
    }>>;
    views: z.ZodOptional<z.ZodArray<z.ZodObject<{
        label: z.ZodString;
        id: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        id: string;
        label: string;
        description?: string | undefined;
    }, {
        id: string;
        label: string;
        description?: string | undefined;
    }>, "many">>;
    hideWhenJustOneOption: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    hidden: z.ZodOptional<z.ZodBoolean>;
    editable: z.ZodOptional<z.ZodDefault<z.ZodEnum<["system", "system-but-optional", "system-but-hidden", "user", "user-readonly"]>>>;
    sources: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodUnion<[z.ZodLiteral<"user">, z.ZodLiteral<"system">, z.ZodString]>;
        label: z.ZodString;
        editUrl: z.ZodOptional<z.ZodString>;
        fieldRequired: z.ZodOptional<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        id: string;
        type: string;
        label: string;
        editUrl?: string | undefined;
        fieldRequired?: boolean | undefined;
    }, {
        id: string;
        type: string;
        label: string;
        editUrl?: string | undefined;
        fieldRequired?: boolean | undefined;
    }>, "many">>;
    disableOnPrefill: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
}, "strip", z.ZodTypeAny, {
    name: string;
    type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
    label?: string | undefined;
    price?: number | undefined;
    required?: boolean | undefined;
    placeholder?: string | undefined;
    options?: {
        label: string;
        value: string;
        price?: number | undefined;
    }[] | undefined;
    labelAsSafeHtml?: string | undefined;
    defaultLabel?: string | undefined;
    defaultPlaceholder?: string | undefined;
    getOptionsAt?: string | undefined;
    optionsInputs?: Record<string, {
        type: "phone" | "address" | "text";
        required?: boolean | undefined;
        placeholder?: string | undefined;
    }> | undefined;
    minLength?: number | undefined;
    maxLength?: number | undefined;
    excludeEmails?: string | undefined;
    requireEmails?: string | undefined;
    variant?: string | undefined;
    variantsConfig?: {
        variants: Record<string, {
            fields: {
                name: string;
                type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                label?: string | undefined;
                price?: number | undefined;
                required?: boolean | undefined;
                placeholder?: string | undefined;
                labelAsSafeHtml?: string | undefined;
                minLength?: number | undefined;
                maxLength?: number | undefined;
                excludeEmails?: string | undefined;
                requireEmails?: string | undefined;
            }[];
        }>;
    } | undefined;
    views?: {
        id: string;
        label: string;
        description?: string | undefined;
    }[] | undefined;
    hideWhenJustOneOption?: boolean | undefined;
    hidden?: boolean | undefined;
    editable?: "user" | "system" | "system-but-optional" | "system-but-hidden" | "user-readonly" | undefined;
    sources?: {
        id: string;
        type: string;
        label: string;
        editUrl?: string | undefined;
        fieldRequired?: boolean | undefined;
    }[] | undefined;
    disableOnPrefill?: boolean | undefined;
}, {
    name: string;
    type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
    label?: string | undefined;
    price?: number | undefined;
    required?: boolean | undefined;
    placeholder?: string | undefined;
    options?: {
        label: string;
        value: string;
        price?: number | undefined;
    }[] | undefined;
    labelAsSafeHtml?: string | undefined;
    defaultLabel?: string | undefined;
    defaultPlaceholder?: string | undefined;
    getOptionsAt?: string | undefined;
    optionsInputs?: Record<string, {
        type: "phone" | "address" | "text";
        required?: boolean | undefined;
        placeholder?: string | undefined;
    }> | undefined;
    minLength?: number | undefined;
    maxLength?: number | undefined;
    excludeEmails?: string | undefined;
    requireEmails?: string | undefined;
    variant?: string | undefined;
    variantsConfig?: {
        variants: Record<string, {
            fields: {
                name: string;
                type: "number" | "boolean" | "url" | "phone" | "name" | "address" | "select" | "textarea" | "text" | "checkbox" | "radio" | "email" | "multiemail" | "multiselect" | "radioInput";
                label?: string | undefined;
                price?: number | undefined;
                required?: boolean | undefined;
                placeholder?: string | undefined;
                labelAsSafeHtml?: string | undefined;
                minLength?: number | undefined;
                maxLength?: number | undefined;
                excludeEmails?: string | undefined;
                requireEmails?: string | undefined;
            }[];
        }>;
    } | undefined;
    views?: {
        id: string;
        label: string;
        description?: string | undefined;
    }[] | undefined;
    hideWhenJustOneOption?: boolean | undefined;
    hidden?: boolean | undefined;
    editable?: "user" | "system" | "system-but-optional" | "system-but-hidden" | "user-readonly" | undefined;
    sources?: {
        id: string;
        type: string;
        label: string;
        editUrl?: string | undefined;
        fieldRequired?: boolean | undefined;
    }[] | undefined;
    disableOnPrefill?: boolean | undefined;
}>, "many">;
export declare const fieldTypesSchemaMap: Partial<Record<FieldType, {
    /**
     * - preprocess the responses received through prefill query params
     * - preprocess the values being filled in the booking form.
     * - does not run for the responses received from DB
     */
    preprocess: (data: {
        field: z.infer<typeof fieldSchema>;
        response: string;
        isPartialSchema: boolean;
    }) => unknown;
    /**
     * - Validates the response received through prefill query params
     * - Validates the values being filled in the booking form.
     * - does not run for the responses received from DB
     */
    superRefine: (data: {
        field: z.infer<typeof fieldSchema>;
        response: string;
        isPartialSchema: boolean;
        ctx: z.RefinementCtx;
        m: (key: string, options?: Record<string, unknown>) => string;
    }) => void;
}>>;
//# sourceMappingURL=schema.d.ts.map