import type { EligibilityCheckResponse } from '../../api/types';
import type { EligibilityData, EligibilityEventTicketType, PublicEvent, PublicEventTicketType, RegistrationEvent } from './types';
export declare const DEFAULT_EVENT_CURRENCY = "usd";
export type SelectableEventTicketType = EligibilityEventTicketType | PublicEventTicketType;
type TicketTypeSourceEvent = Pick<PublicEvent, 'ticketTypes'> | Pick<RegistrationEvent, 'ticketTypes'>;
/**
 * Format date for display
 */
export declare function formatDate(isoTimestamp: string, options?: {
    timeZone?: string | null;
    locale?: string;
}): string;
/**
 * Format time for display
 */
export declare function formatTime(isoTimestamp: string, options?: {
    timeZone?: string | null;
    locale?: string;
}): string;
/**
 * Format date and time in short form for compact displays (e.g., order summary)
 */
export declare function formatEventDateTime(isoTimestamp: string, options?: {
    timeZone?: string | null;
    locale?: string;
}): string;
/**
 * Build the registration API endpoint URL
 *
 * @param apiBaseUrl - The dashboard API base URL (e.g., "http://localhost:4000/api")
 * @param siteId - The site ID
 * @param customEndpoint - Optional custom endpoint override
 * @returns The full API endpoint URL
 */
export declare function buildRegistrationEndpoint(apiBaseUrl: string, siteId: string, customEndpoint?: string): string;
export { formatPrice } from '../../shared';
/** Tooltip text shown when pass/membership redemptions are unavailable for multi-ticket bookings. */
export declare const ENTITLEMENT_SINGLE_TICKET_TOOLTIP = "Only available for single-ticket bookings";
/** Passes and memberships can only be redeemed for single-ticket registrations. */
export declare function areEntitlementsDisabledForTicketCount(ticketsCount: number): boolean;
/**
 * Build the eligibility check endpoint URL
 *
 * @param apiBaseUrl - The dashboard API base URL (e.g., "http://localhost:4000/api")
 * @param siteId - The site ID
 * @param customEndpoint - Optional custom endpoint override
 * @returns The full API endpoint URL
 */
export declare function buildEligibilityEndpoint(apiBaseUrl: string, siteId: string, customEndpoint?: string): string;
/**
 * Build the checkout endpoint URL
 *
 * @param apiBaseUrl - The dashboard API base URL (e.g., "http://localhost:4000/api")
 * @param siteId - The site ID
 * @param customEndpoint - Optional custom endpoint override
 * @returns The full API endpoint URL
 */
export declare function buildCheckoutEndpoint(apiBaseUrl: string, siteId: string, customEndpoint?: string): string;
/**
 * Transform API eligibility response to internal eligibility data.
 *
 * @param response - The raw API response from checkEligibility
 * @returns Transformed eligibility data for component use
 */
export declare function transformEligibilityResponse(response: EligibilityCheckResponse): EligibilityData;
export declare function getTicketTypeAvailabilityLabel(ticketType: Pick<SelectableEventTicketType, 'availability'>): string | null;
export declare function getVisibleTicketTypes(input: {
    event: TicketTypeSourceEvent | null;
    eligibility: EligibilityData | null;
    selectedAttendanceMode?: 'in_person' | 'online' | null;
}): SelectableEventTicketType[];
export declare function findSelectedTicketType(input: {
    event: TicketTypeSourceEvent | null;
    eligibility: EligibilityData | null;
    selectedTicketTypeId: string | null;
    selectedAttendanceMode?: 'in_person' | 'online' | null;
}): SelectableEventTicketType | null;
/**
 * Check if card payment is the only available option.
 *
 * Returns true when:
 * - Event requires payment (not free)
 * - User can pay directly (card payment enabled)
 * - User has no eligible passes
 * - User has no eligible memberships
 * - No passes are available for purchase (upsells)
 * - No memberships are available for purchase (upsells)
 *
 * Used to pre-select stripe in PaymentSelectionStep when there's only one option.
 */
export declare function isOnlyCardPaymentAvailable(eligibility: EligibilityData | null): boolean;
/**
 * Like `isOnlyCardPaymentAvailable`, but accounts for ticket-count rules.
 *
 * Passes/memberships (and pass/membership bundles) are disabled for multi-ticket bookings,
 * so they shouldn't prevent us auto-selecting card when they're visible-but-disabled.
 */
export declare function isOnlyCardPaymentAvailableForTicketCount(eligibility: EligibilityData | null, ticketsCount: number): boolean;
