import type { DiscountContext } from '../../api/types';
import type { EventRegistrationClientProps, FormData, Guest, GuestErrors, PaymentSelection, PaymentStepState, PublicEvent, RegistrationEvent, RegistrationResult, RegistrationStep } from './types';
import type { PaymentMethod } from './PaymentSelectionStep';
export declare function useEventRegistrationWizard(options: {
    anchorId: string;
    occurrenceContext: EventRegistrationClientProps['occurrenceContext'];
    contentEntry: EventRegistrationClientProps['contentEntry'];
    events: PublicEvent[];
    maxTicketsNum: number;
}): {
    api: import("../../api").BlockApiClient;
    anchorId: string;
    occurrenceContext: {
        id: string;
        seriesId: string;
        startsAt: string;
        endsAt: string;
        timeZone: string;
        capacityOverride?: number | null | undefined;
        overrides?: Record<string, unknown> | null | undefined;
    } | null | undefined;
    registrationTarget: Readonly<{
        occurrenceId: string;
        selectedEventId: string | null;
    }> | null;
    contentEntry: {
        id: string;
        slug: string;
        contentTypeSlug: string;
    } | null | undefined;
    events: PublicEvent[];
    maxTicketsNum: number;
    scopedEvents: RegistrationEvent[];
    preSelectedEvent: RegistrationEvent | null;
    hasPreSelectedContext: boolean;
    step: RegistrationStep;
    setStep: (nextStep: RegistrationStep) => void;
    selectedEvent: RegistrationEvent | null;
    setSelectedEvent: import("react").Dispatch<import("react").SetStateAction<RegistrationEvent | null>>;
    ticketsCount: number;
    setTicketsCount: (nextTicketsCount: number) => void;
    selectedAttendanceMode: "in_person" | "online" | null;
    setSelectedAttendanceMode: import("react").Dispatch<import("react").SetStateAction<"in_person" | "online" | null>>;
    selectedTicketTypeId: string | null;
    setSelectedTicketTypeId: import("react").Dispatch<import("react").SetStateAction<string | null>>;
    selectedTicketType: import("./utils").SelectableEventTicketType | null;
    visibleTicketTypes: import("./utils").SelectableEventTicketType[];
    ticketTypeSelectionRequired: boolean;
    hasValidSelectedTicketType: boolean;
    eventRequiresPayment: boolean;
    formData: FormData;
    setFormData: import("react").Dispatch<import("react").SetStateAction<FormData>>;
    errors: Partial<Record<keyof FormData, string>>;
    guests: Guest[];
    setGuests: import("react").Dispatch<import("react").SetStateAction<Guest[]>>;
    guestErrors: GuestErrors;
    guestSectionShake: boolean;
    handleGuestShakeEnd: () => void;
    registrationResult: RegistrationResult | null;
    errorMessage: string;
    altchaSolution: string | null;
    setAltchaSolution: import("react").Dispatch<import("react").SetStateAction<string | null>>;
    portalAuthState: import("./hooks").PortalAuthState;
    showMagicLinkModal: boolean;
    setShowMagicLinkModal: import("react").Dispatch<import("react").SetStateAction<boolean>>;
    handleLogout: () => void;
    paymentStepState: PaymentStepState;
    handlePaymentStepStateChange: (state: PaymentStepState) => void;
    handlePaymentSelectionChange: (selection: PaymentSelection) => void;
    paymentSelection: PaymentSelection;
    isMembershipFastTrack: boolean;
    waitlistClaim: import("../../shared/useWaitlistClaim").UseWaitlistClaimResult;
    eligibility: import("./types").EligibilityData | null;
    eligibilityLoading: boolean;
    eligibilityError: string | null;
    existingRegistration: import("../../api").CustomerEventRegistration | null;
    existingRegistrationLoading: boolean;
    hasEligibility: boolean;
    hasMembershipEligibility: boolean;
    requireGuestDetails: boolean;
    discountCode: string;
    setDiscountCode: import("react").Dispatch<import("react").SetStateAction<string>>;
    discountUiOpen: boolean;
    setDiscountUiOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
    discountsAvailable: boolean;
    manualCodeEntryAllowed: boolean;
    autoAppliedDiscount: import("../../api/types").AutoAppliedDiscountPreview | null;
    discountsAvailableLoading: boolean;
    discountContext: DiscountContext | null;
    shouldShowDiscountToggle: boolean;
    verification: import("../../hooks/usePaymentVerification").PaymentVerificationResult;
    handleDetailsComplete: () => Promise<void>;
    handlePaymentSelect: (method: PaymentMethod, passId?: string, membershipId?: string) => Promise<void>;
    handleUseCardInsteadOfPass: () => void;
    handleBookForSomeoneElse: () => void;
    handleSubmit: (method: PaymentMethod, passId?: string, membershipId?: string, selection?: PaymentSelection) => Promise<void>;
    handleEventSelect: (event: RegistrationEvent) => void;
    handleRetry: () => void;
};
export type UseEventRegistrationWizardResult = ReturnType<typeof useEventRegistrationWizard>;
