import { z } from 'zod';
import { Workflow } from '../../ee/workflows/lib/types';
import { EventTypeCustomInput, EventType } from '../../../kysely/types.ts';
import { customInputSchema, eventTypeBookingFields, EventTypeMetaDataSchema } from '../../../prisma/zod-utils';
export type Fields = z.infer<typeof eventTypeBookingFields>;
export declare const getSmsReminderNumberField: () => {
    readonly name: "smsReminderNumber";
    readonly type: "phone";
    readonly defaultLabel: "number_text_notifications";
    readonly defaultPlaceholder: "enter_phone_number";
    readonly editable: "system";
};
export declare const getSmsReminderNumberSource: ({ workflowId, isSmsReminderNumberRequired, }: {
    workflowId: Workflow["id"];
    isSmsReminderNumberRequired: boolean;
}) => {
    id: string;
    type: string;
    label: string;
    fieldRequired: boolean;
    editUrl: string;
};
export declare const getAIAgentCallPhoneNumberField: () => {
    readonly name: "aiAgentCallPhoneNumber";
    readonly type: "phone";
    readonly defaultLabel: "phone_number_for_ai_call";
    readonly defaultPlaceholder: "enter_phone_number";
    readonly editable: "system";
};
export declare const getAIAgentCallPhoneNumberSource: ({ workflowId, isAIAgentCallPhoneNumberRequired, }: {
    workflowId: Workflow["id"];
    isAIAgentCallPhoneNumberRequired: boolean;
}) => {
    id: string;
    type: string;
    label: string;
    fieldRequired: boolean;
    editUrl: string;
};
/**
 * This fn is the key to ensure on the fly mapping of customInputs to bookingFields and ensuring that all the systems fields are present and correctly ordered in bookingFields
 */
export declare const getBookingFieldsWithSystemFields: ({ bookingFields, disableGuests, isOrgTeamEvent, disableBookingTitle, customInputs, metadata, workflows, }: {
    bookingFields: Fields | EventType["bookingFields"];
    disableGuests: boolean;
    isOrgTeamEvent?: boolean;
    disableBookingTitle?: boolean;
    customInputs: EventTypeCustomInput[] | z.infer<typeof customInputSchema>[];
    metadata: EventType["metadata"] | z.infer<typeof EventTypeMetaDataSchema>;
    workflows: {
        workflow: Workflow;
    }[];
}) => {
    name: string;
    type: "number" | "boolean" | "select" | "text" | "checkbox" | "email" | "address" | "url" | "name" | "radio" | "phone" | "textarea" | "multiemail" | "multiselect" | "radioInput";
    price?: number | undefined;
    required?: boolean | undefined;
    hidden?: boolean | undefined;
    label?: string | undefined;
    placeholder?: string | undefined;
    options?: {
        label: string;
        value: string;
        price?: number | undefined;
    }[] | undefined;
    variant?: string | undefined;
    minLength?: number | undefined;
    maxLength?: number | undefined;
    labelAsSafeHtml?: string | undefined;
    defaultLabel?: string | undefined;
    defaultPlaceholder?: string | undefined;
    getOptionsAt?: string | undefined;
    optionsInputs?: Record<string, {
        type: "text" | "address" | "phone";
        required?: boolean | undefined;
        placeholder?: string | undefined;
    }> | undefined;
    excludeEmails?: string | undefined;
    requireEmails?: string | undefined;
    variantsConfig?: {
        variants: Record<string, {
            fields: {
                name: string;
                type: "number" | "boolean" | "select" | "text" | "checkbox" | "email" | "address" | "url" | "name" | "radio" | "phone" | "textarea" | "multiemail" | "multiselect" | "radioInput";
                price?: number | undefined;
                required?: boolean | undefined;
                label?: string | undefined;
                placeholder?: string | undefined;
                minLength?: number | undefined;
                maxLength?: number | undefined;
                labelAsSafeHtml?: string | undefined;
                excludeEmails?: string | undefined;
                requireEmails?: string | undefined;
            }[];
        }>;
    } | undefined;
    views?: {
        label: string;
        id: string;
        description?: string | undefined;
    }[] | undefined;
    hideWhenJustOneOption?: boolean | undefined;
    editable?: "user" | "system" | "system-but-optional" | "system-but-hidden" | "user-readonly" | undefined;
    sources?: {
        label: string;
        type: string;
        id: string;
        editUrl?: string | undefined;
        fieldRequired?: boolean | undefined;
    }[] | undefined;
    disableOnPrefill?: boolean | undefined;
}[] & z.BRAND<"HAS_SYSTEM_FIELDS">;
export declare const ensureBookingInputsHaveSystemFields: ({ bookingFields, disableGuests, isOrgTeamEvent, disableBookingTitle, additionalNotesRequired, customInputs, workflows, }: {
    bookingFields: Fields;
    disableGuests: boolean;
    isOrgTeamEvent: boolean;
    disableBookingTitle?: boolean;
    additionalNotesRequired: boolean;
    customInputs: z.infer<typeof customInputSchema>[];
    workflows: {
        workflow: Workflow;
    }[];
}) => {
    name: string;
    type: "number" | "boolean" | "select" | "text" | "checkbox" | "email" | "address" | "url" | "name" | "radio" | "phone" | "textarea" | "multiemail" | "multiselect" | "radioInput";
    price?: number | undefined;
    required?: boolean | undefined;
    hidden?: boolean | undefined;
    label?: string | undefined;
    placeholder?: string | undefined;
    options?: {
        label: string;
        value: string;
        price?: number | undefined;
    }[] | undefined;
    variant?: string | undefined;
    minLength?: number | undefined;
    maxLength?: number | undefined;
    labelAsSafeHtml?: string | undefined;
    defaultLabel?: string | undefined;
    defaultPlaceholder?: string | undefined;
    getOptionsAt?: string | undefined;
    optionsInputs?: Record<string, {
        type: "text" | "address" | "phone";
        required?: boolean | undefined;
        placeholder?: string | undefined;
    }> | undefined;
    excludeEmails?: string | undefined;
    requireEmails?: string | undefined;
    variantsConfig?: {
        variants: Record<string, {
            fields: {
                name: string;
                type: "number" | "boolean" | "select" | "text" | "checkbox" | "email" | "address" | "url" | "name" | "radio" | "phone" | "textarea" | "multiemail" | "multiselect" | "radioInput";
                price?: number | undefined;
                required?: boolean | undefined;
                label?: string | undefined;
                placeholder?: string | undefined;
                minLength?: number | undefined;
                maxLength?: number | undefined;
                labelAsSafeHtml?: string | undefined;
                excludeEmails?: string | undefined;
                requireEmails?: string | undefined;
            }[];
        }>;
    } | undefined;
    views?: {
        label: string;
        id: string;
        description?: string | undefined;
    }[] | undefined;
    hideWhenJustOneOption?: boolean | undefined;
    editable?: "user" | "system" | "system-but-optional" | "system-but-hidden" | "user-readonly" | undefined;
    sources?: {
        label: string;
        type: string;
        id: string;
        editUrl?: string | undefined;
        fieldRequired?: boolean | undefined;
    }[] | undefined;
    disableOnPrefill?: boolean | undefined;
}[] & z.BRAND<"HAS_SYSTEM_FIELDS">;
//# sourceMappingURL=getBookingFields.d.ts.map