import type { PublicEvent } from '../../../blocks/events/shared/types';
import type { PublicPassProduct, PublicMembershipProduct } from '../../../blocks/shop';
export type OccurrenceContextLike = {
    id: string;
    seriesId: string;
    startsAt: string;
    endsAt: string;
    timeZone: string;
} | null;
export type EventDetailsSelection = {
    mode: 'selected' | 'next';
    selected: PublicEvent | null;
    otherDates: PublicEvent[];
    timeZone: string;
};
export declare function selectEventDetails(args: {
    events: PublicEvent[] | null | undefined;
    occurrenceContext: OccurrenceContextLike | null | undefined;
    nowIso: string;
    otherDatesLimit: string | number | null | undefined;
}): EventDetailsSelection;
/**
 * Filter site passes to only those that cover the selected event.
 *
 * @param sitePasses - Array of all site passes (may be null/undefined)
 * @param event - The selected event (may be null)
 * @returns Passes that cover the event based on category eligibility
 */
export declare function filterPassesForEvent(sitePasses: PublicPassProduct[] | null | undefined, event: PublicEvent | null): PublicPassProduct[];
/**
 * Filter site memberships to only those that cover the selected event.
 *
 * @param siteMemberships - Array of all site memberships (may be null/undefined)
 * @param event - The selected event (may be null)
 * @returns Memberships that cover the event based on category eligibility
 */
export declare function filterMembershipsForEvent(siteMemberships: PublicMembershipProduct[] | null | undefined, event: PublicEvent | null): PublicMembershipProduct[];
