import type { DiscountContext } from '../../api/types';
import type { EligibilityData, EligibilityEventTicketType, OccurrenceContext, PaymentSelection, PublicEventTicketType, RegistrationEvent } from './types';
export type RegistrationTarget = Readonly<{
    occurrenceId: string;
    selectedEventId: string | null;
}>;
export declare function eventMatchesOccurrenceId(event: Pick<RegistrationEvent, 'publicEventId' | 'registrationOccurrenceId'>, occurrenceId: string): boolean;
export declare function findEventByOccurrenceId(events: readonly RegistrationEvent[], occurrenceId: string): RegistrationEvent | null;
export declare function findPreSelectedEvent(input: Readonly<{
    scopedEvents: readonly RegistrationEvent[];
    occurrenceContext: OccurrenceContext | null | undefined;
}>): RegistrationEvent | null;
export declare function resolveRegistrationTarget(input: Readonly<{
    occurrenceContext: Pick<NonNullable<OccurrenceContext>, 'id'> | null | undefined;
    selectedEvent: Pick<RegistrationEvent, 'publicEventId' | 'registrationOccurrenceId'> | null;
}>): RegistrationTarget | null;
export declare function resolveEventRequiresPayment(input: Readonly<{
    eligibility: Pick<EligibilityData, 'requiresPayment'> | null;
    selectedTicketType: Pick<EligibilityEventTicketType | PublicEventTicketType, 'priceAmount'> | null;
    event: Pick<RegistrationEvent, 'pricingType'> | null;
}>): boolean;
export declare function resolveDiscountContext(input: Readonly<{
    paymentSelection: PaymentSelection;
    event: Pick<RegistrationEvent, 'seriesId' | 'eventCategory'> | null;
    eventRequiresPayment: boolean;
    ticketsCount: number;
}>): DiscountContext | null;
