import type { CoursePricingOption, PublicCourse } from './types';
export type CoursePriceDisplay = Readonly<{
    kind: 'free';
    currency: string;
}> | Readonly<{
    kind: 'exact';
    amount: number;
    currency: string;
}> | Readonly<{
    kind: 'from';
    amount: number;
    currency: string;
}> | Readonly<{
    kind: 'unavailable';
    currency: string;
}>;
export type ResolvedCoursePricingState = Readonly<{
    currency: string;
    display: CoursePriceDisplay;
    selectableOptions: readonly CoursePricingOption[];
    requiresSelection: boolean;
    selectedOption: CoursePricingOption | null;
    selectedPriceAmount: number | null;
    selectedRequiresPayment: boolean;
    hasPaidSelection: boolean;
    hasFreeSelection: boolean;
}>;
type CourseCurrencyFormatOptions = Readonly<{
    locale?: string;
    minimumFractionDigits?: number;
    maximumFractionDigits?: number;
}>;
export declare function getSelectableCoursePricingOptions(course: Pick<PublicCourse, 'pricing'>, now?: Date): readonly CoursePricingOption[];
export declare function resolveCoursePricingState(course: Pick<PublicCourse, 'pricing' | 'priceCents' | 'currency'>, selectedPricingOptionId?: string | null, now?: Date): ResolvedCoursePricingState;
export declare function formatCoursePriceDisplay(display: CoursePriceDisplay, locale?: string): string;
export declare function formatCourseCurrencyAmount(amount: number, currency: string, options?: CourseCurrencyFormatOptions): string;
export declare function formatCoursePriceAmount(amount: number, currency: string, locale?: string): string;
export {};
