export type Kind = "string" | "boolean" | "integer" | "number"; export interface Pattern { text?: string; literal?: boolean; select?: string; plural?: string; cases?: Record; } export interface Message { params?: Record; value: Pattern; } export interface Document { version: 1; namespace: string; locale: string; messages: Record; } export interface Configuration { sourceLocale: string; defaultLocale: string; locales: string[]; fallbacks?: Record; } export interface Pack { version: 1; locale: string; config: Configuration; documents: Document[]; ruleVersion: "cldr-46.1"; pluralRules: Record>>; license?: string; } export interface Rendered { text: string; locale: string; requested: string; fallback: boolean; } export interface Localizer { readonly locale: string; readonly locales: readonly string[]; render(namespace: string, key: string, params?: Record): Rendered; t(namespace: string, key: string, params?: Record): string; } export class MessageError extends Error { readonly kind: string; constructor(kind: string, problem: string); } export function createLocalizer(pack: Pack): Localizer; export function overlayPack(pack: Pack, overrides: Document[]): Pack; export function createLanguageController(initialPack: Pack, loadPack: (locale: string) => Promise): { readonly current: Localizer; setLanguage(locale: string): Promise; }; export function fetchPack(url: string | URL, options?: { signal?: AbortSignal; fetch?: typeof globalThis.fetch }): Promise;