import { z } from "zod";
import type { EventLocationType } from '../../../../../app-store/locations';
import type { BookerEvent } from '../../../types';
export interface IUseBookingForm {
    event?: Pick<BookerEvent, "bookingFields"> | null;
    sessionEmail?: string | null;
    sessionName?: string | null;
    sessionUsername?: string | null;
    hasSession: boolean;
    extraOptions: Record<string, string | string[]>;
    prefillFormParams: {
        guests: string[];
        name: string | null;
    };
    lastBookingResponse?: Record<string, string>;
}
export type UseBookingFormReturnType = ReturnType<typeof useBookingForm>;
export declare const useBookingForm: ({ event, sessionEmail, sessionName, sessionUsername, hasSession, extraOptions, prefillFormParams, lastBookingResponse, }: IUseBookingForm) => {
    bookingForm: import("react-hook-form").UseFormReturn<{
        locationType?: EventLocationType["type"];
        responses: z.infer<z.ZodObject<{
            responses: z.ZodType<{
                name: (string | {
                    firstName: string;
                    lastName?: string | undefined;
                }) & (string | {
                    firstName: string;
                    lastName?: string | undefined;
                } | undefined);
                email: string;
                attendeePhoneNumber?: string | undefined;
                guests?: string[] | undefined;
                notes?: string | undefined;
                location?: {
                    value: string;
                    optionValue: string;
                } | undefined;
                smsReminderNumber?: string | undefined;
                rescheduleReason?: string | undefined;
            } & Record<string, any>, {
                name: (string | {
                    firstName: string;
                    lastName?: string | undefined;
                }) & (string | {
                    firstName: string;
                    lastName?: string | undefined;
                } | undefined);
                email: string;
                attendeePhoneNumber?: string | undefined;
                guests?: string[] | undefined;
                notes?: string | undefined;
                location?: {
                    value: string;
                    optionValue: string;
                } | undefined;
                smsReminderNumber?: string | undefined;
                rescheduleReason?: string | undefined;
            } & Record<string, any>, {
                name: (string | {
                    firstName: string;
                    lastName?: string | undefined;
                }) & (string | {
                    firstName: string;
                    lastName?: string | undefined;
                } | undefined);
                email: string;
                attendeePhoneNumber?: string | undefined;
                guests?: string[] | undefined;
                notes?: string | undefined;
                location?: {
                    value: string;
                    optionValue: string;
                } | undefined;
                smsReminderNumber?: string | undefined;
                rescheduleReason?: string | undefined;
            } & Record<string, any>> | z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            responses: z.ZodType<{
                name: (string | {
                    firstName: string;
                    lastName?: string | undefined;
                }) & (string | {
                    firstName: string;
                    lastName?: string | undefined;
                } | undefined);
                email: string;
                attendeePhoneNumber?: string | undefined;
                guests?: string[] | undefined;
                notes?: string | undefined;
                location?: {
                    value: string;
                    optionValue: string;
                } | undefined;
                smsReminderNumber?: string | undefined;
                rescheduleReason?: string | undefined;
            } & Record<string, any>, {
                name: (string | {
                    firstName: string;
                    lastName?: string | undefined;
                }) & (string | {
                    firstName: string;
                    lastName?: string | undefined;
                } | undefined);
                email: string;
                attendeePhoneNumber?: string | undefined;
                guests?: string[] | undefined;
                notes?: string | undefined;
                location?: {
                    value: string;
                    optionValue: string;
                } | undefined;
                smsReminderNumber?: string | undefined;
                rescheduleReason?: string | undefined;
            } & Record<string, any>, {
                name: (string | {
                    firstName: string;
                    lastName?: string | undefined;
                }) & (string | {
                    firstName: string;
                    lastName?: string | undefined;
                } | undefined);
                email: string;
                attendeePhoneNumber?: string | undefined;
                guests?: string[] | undefined;
                notes?: string | undefined;
                location?: {
                    value: string;
                    optionValue: string;
                } | undefined;
                smsReminderNumber?: string | undefined;
                rescheduleReason?: string | undefined;
            } & Record<string, any>> | z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            responses: z.ZodType<{
                name: (string | {
                    firstName: string;
                    lastName?: string | undefined;
                }) & (string | {
                    firstName: string;
                    lastName?: string | undefined;
                } | undefined);
                email: string;
                attendeePhoneNumber?: string | undefined;
                guests?: string[] | undefined;
                notes?: string | undefined;
                location?: {
                    value: string;
                    optionValue: string;
                } | undefined;
                smsReminderNumber?: string | undefined;
                rescheduleReason?: string | undefined;
            } & Record<string, any>, {
                name: (string | {
                    firstName: string;
                    lastName?: string | undefined;
                }) & (string | {
                    firstName: string;
                    lastName?: string | undefined;
                } | undefined);
                email: string;
                attendeePhoneNumber?: string | undefined;
                guests?: string[] | undefined;
                notes?: string | undefined;
                location?: {
                    value: string;
                    optionValue: string;
                } | undefined;
                smsReminderNumber?: string | undefined;
                rescheduleReason?: string | undefined;
            } & Record<string, any>, {
                name: (string | {
                    firstName: string;
                    lastName?: string | undefined;
                }) & (string | {
                    firstName: string;
                    lastName?: string | undefined;
                } | undefined);
                email: string;
                attendeePhoneNumber?: string | undefined;
                guests?: string[] | undefined;
                notes?: string | undefined;
                location?: {
                    value: string;
                    optionValue: string;
                } | undefined;
                smsReminderNumber?: string | undefined;
                rescheduleReason?: string | undefined;
            } & Record<string, any>> | z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
        }, z.ZodTypeAny, "passthrough">>>["responses"] | null;
        globalError: undefined;
        cfToken?: string;
    }, any>;
    bookerFormErrorRef: import("react").RefObject<HTMLDivElement>;
    key: string;
    formEmail: string;
    formName: (string | {
        firstName: string;
        lastName?: string | undefined;
    }) & (string | {
        firstName: string;
        lastName?: string | undefined;
    } | undefined);
    beforeVerifyEmail: () => void;
    formErrors: {
        hasFormErrors: boolean;
        formErrors: import("react-hook-form").FieldError | undefined;
    };
    errors: {
        hasFormErrors: boolean;
        formErrors: import("react-hook-form").FieldError | undefined;
    };
};
//# sourceMappingURL=useBookingForm.d.ts.map