import { NumberingSystem, SupportedLocale } from './locale';
export type FractionalSecondDigits = 1 | 2 | 3;
export type EffectiveHourFormat = "12" | "24";
export type HourFormat = "user" | EffectiveHourFormat;
export declare const hourFormats: EffectiveHourFormat[];
export interface LocalizedTime {
    hour: string;
    hourSuffix: string;
    minute: string;
    minuteSuffix: string;
    second: string;
    decimalSeparator: string;
    fractionalSecond: string;
    secondSuffix: string;
    meridiem: string;
}
export type Meridiem = "AM" | "PM";
export type MinuteOrSecond = "minute" | "second";
export interface Time {
    fractionalSecond?: string;
    hour: string;
    minute: string;
    second?: string;
}
export type TimePart = "hour" | "hourSuffix" | "minute" | "minuteSuffix" | "second" | "decimalSeparator" | "fractionalSecond" | "secondSuffix" | "meridiem";
export declare const maxTenthForMinuteAndSecond = 5;
export declare function formatTimePart(number: number, minLength?: number): string;
export declare function getLocaleHourFormat(locale: SupportedLocale): EffectiveHourFormat;
/**
 * To reference the CLDR meridiems for each supported locale navigate to:
 * https://github.com/unicode-org/cldr-json/tree/main/cldr-json/cldr-dates-full/main,
 * click {locale}/ca-generic.json and drill down to main.{locale}.dates.calendars.generic.dayPeriods.format.abbreviated.
 *
 * @param locale.locale
 * @param locale
 * @param meridiem
 * @param parts
 * @param locale.meridiem
 * @param locale.parts
 */
export declare function getLocalizedMeridiem({ locale, meridiem, parts: fromParts, }: {
    locale: SupportedLocale;
    meridiem?: Meridiem;
    parts?: Intl.DateTimeFormatPart[];
}): string;
export declare function getLocalizedDecimalSeparator(locale: SupportedLocale, numberingSystem: NumberingSystem): string;
export declare function getLocalizedTimePartSuffix(part: "hour" | "minute" | "second", locale: SupportedLocale, numberingSystem?: NumberingSystem): string;
export declare function getMeridiem(hour: string): Meridiem;
export declare function getMeridiemOrder(locale: SupportedLocale): number;
export declare function isValidTime(value: string | Time): boolean;
interface LocalizeTimePartParameters {
    value: string;
    part: TimePart;
    locale: SupportedLocale;
    numberingSystem?: NumberingSystem;
    hour12?: boolean;
}
export declare function localizeTimePart({ value, part, locale, numberingSystem, hour12, }: LocalizeTimePartParameters): string;
interface LocalizeTimeStringParameters {
    hour12?: boolean;
    includeSeconds?: boolean;
    locale: SupportedLocale;
    numberingSystem?: NumberingSystem;
    parts?: boolean;
    step?: number;
    value: string;
}
export declare function localizeTimeString({ hour12, includeSeconds, locale, numberingSystem, parts: toParts, step, value, }: LocalizeTimeStringParameters): string | LocalizedTime;
interface LocalizeTimeStringToPartsParameters {
    hour12?: boolean;
    locale: SupportedLocale;
    numberingSystem?: NumberingSystem;
    step: number;
    value: string;
}
export declare function localizeTimeStringToParts({ hour12, locale, numberingSystem, step, value, }: LocalizeTimeStringToPartsParameters): LocalizedTime;
export declare function parseTimeString(value: string, step?: number): Time;
export declare function toISOTimeString(value: string | Time, step?: number): string;
export {};
