export declare function createResolveLocale(getDefaultLocale: () => string): (availableLocales: string[], requestedLocales: string[], options: { [k: string]: string; localeMatcher: string; }, relevantExtensionKeys: K[], localeData: Record) => ResolveLocaleResult; export declare interface CurrencyData { displayName: CurrencyPattern; symbol: string; narrowSymbol?: string; variantSymbol?: string; } declare interface CurrencyPattern { one?: string; other: string; } export declare interface FieldData { '0'?: string; '1'?: string; '-1'?: string; '2'?: string; '-2'?: string; '3'?: string; '-3'?: string; future: RelativeTimeData; past: RelativeTimeData; } export declare function getAliasesByLang(lang: string): Record; /** * IE11-safe version of getCanonicalLocales since it's ES2016 * @param locales locales */ export declare function getCanonicalLocales(locales?: string | string[]): string[]; export declare function getInternalSlot(map: WeakMap, pl: Instance, field: Field): Internal[Field]; export declare function getLocaleHierarchy(locale: string, aliases: Record, parentLocales: Record): string[]; /** * https://tc39.es/ecma402/#sec-getoption * @param opts * @param prop * @param type * @param values * @param fallback */ export declare function getOption(opts: T, prop: K, type: 'string' | 'boolean', values?: T[K][], fallback?: T[K]): T[K] | undefined; export declare function getParentLocalesByLang(lang: string): Record; export declare function invariant(condition: boolean, message: string, Err?: any): void; export declare function isLiteralPart(patternPart: LiteralPart | { type: string; value?: string; }): patternPart is LiteralPart; export declare function isMissingLocaleDataError(e: Error): e is MissingLocaleDataError; export declare type LDMLPluralRule = 'zero' | 'one' | 'two' | 'few' | 'many' | 'other'; export declare interface ListPattern { start: string; middle: string; end: string; pair: string; } export declare interface ListPatternData { long: ListPattern; short?: ListPattern; narrow?: ListPattern; } export declare interface ListPatternFieldsData { conjunction?: ListPatternData; disjunction?: ListPatternData; unit?: ListPatternData; } export declare type ListPatternLocaleData = LocaleData; export declare interface LiteralPart { type: 'literal'; value: string; } declare type Locale = string; declare interface LocaleData { data: Record; aliases: Record; availableLocales: string[]; parentLocales: Record; } export declare type LocaleFieldsData = { [f in RelativeTimeField]?: FieldData; } & { nu?: Array; }; declare class MissingLocaleDataError extends Error { type: string; } export declare function partitionPattern(pattern: string): ({ type: string; value: string; } | { type: string; value: undefined; })[]; export declare interface PluralRulesData { categories: { cardinal: string[]; ordinal: string[]; }; fn: (val: number | string, ord?: boolean) => LDMLPluralRule; } export declare type PluralRulesLocaleData = LocaleData; declare type RelativeTimeData = { [u in LDMLPluralRule]?: string; }; export declare type RelativeTimeField = 'second' | 'second-short' | 'second-narrow' | 'minute' | 'minute-short' | 'minute-narrow' | 'hour' | 'hour-short' | 'hour-narrow' | 'day' | 'day-short' | 'day-narrow' | 'week' | 'week-short' | 'week-narrow' | 'month' | 'month-short' | 'month-narrow' | 'quarter' | 'quarter-short' | 'quarter-narrow' | 'year' | 'year-short' | 'year-narrow'; export declare type RelativeTimeLocaleData = LocaleData; declare interface ResolveLocaleResult { locale: string; dataLocale: string; [k: string]: any; } export declare const SANCTIONED_UNITS: string[]; export declare function selectUnit(from: Date | number, to?: Date | number, thresholds?: Partial): { value: number; unit: Unit; }; export declare function setInternalSlot(map: WeakMap, pl: Instance, field: Field, value: Internal[Field]): void; export declare function supportedLocales(availableLocales: string[], requestedLocales: string[], options?: { localeMatcher?: 'best fit' | 'lookup'; }): string[]; declare type Thresholds = Record<'second' | 'minute' | 'hour' | 'day', number>; /** * https://tc39.es/ecma262/#sec-toobject * @param arg */ export declare function toObject(arg: T): T extends null ? never : T extends undefined ? never : T; export declare type UnifiedNumberFormatLocaleData = LocaleData<{ /** unit name -> data mapping */ units?: Record; /** currency ISO code -> currency data mapping */ currencies?: Record>; }>; declare type Unit = 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year'; export declare interface UnitData { displayName: string; long: UnitPattern; short?: UnitPattern; narrow?: UnitPattern; } declare interface UnitPattern { one?: string; other?: string; } export declare function unpackData>(locale: string, localeData: LocaleData, /** By default shallow merge the dictionaries. */ reducer?: (all: T, d: T) => T): T; export declare type UnpackedLocaleFieldsData = { [f in RelativeTimeField]?: FieldData; } & { nu: Array; }; export { }