/** * ToWords - Full-featured class with all bundled locales. * * This class extends ToWordsCore and adds locale lookup by code string. * It imports all locales, so use this when you need dynamic locale switching * or don't care about bundle size. * * For tree-shaken single-locale imports, use per-locale entry points instead: * * @example * // Full package (all locales ~55KB gzipped) * import { ToWords } from 'to-words'; * const tw = new ToWords({ localeCode: 'en-IN' }); * * // Single locale (~3-4KB gzipped) - SAME API! * import { ToWords } from 'to-words/en-IN'; * const tw = new ToWords(); */ import { type ConstructorOf, type ConverterOptions, type LocaleInterface, type NumberInput, type OrdinalOptions } from './types.js'; import { ToWordsCore, DefaultConverterOptions, DefaultToWordsOptions } from './ToWordsCore.js'; import LOCALES from './locales/index.js'; export { DefaultConverterOptions, DefaultToWordsOptions }; export { LOCALES }; export declare function setLocaleDetector(fn: (() => string) | null): void; export declare class ToWords extends ToWordsCore { /** * Get the locale class, either from setLocale() or by looking up the localeCode. * This overrides ToWordsCore to add LOCALES lookup. */ getLocaleClass(): ConstructorOf; } /** * Detect the current locale from the environment and match it against the supported * locale list. This is the single entry point for all auto-detection. * * Detection order: * 1. Custom detector (if registered via `setLocaleDetector()`). * 2. `navigator.language` — browser / React Native. * 3. `Intl.DateTimeFormat().resolvedOptions().locale` — Node.js, Deno, Bun, CF Workers. * * Once a raw locale string is obtained it is normalised and matched: * 1. Exact match (e.g. `fr-FR`). * 2. Strip BCP 47 script tag (e.g. `zh-Hant-TW` → `zh-TW`). * 3. Language-prefix fallback (e.g. `sw-ZZ` → first `sw-*` locale in the list). * * Returns `fallback` (default `'en-IN'`) when nothing matches. * * @param fallback Locale code to return when detection yields no match. */ export declare function detectLocale(fallback?: string): string; /** * Convert a number to words. * Uses the full bundle (all locales). For tree-shaken single-locale usage import from `to-words/`. * Internally caches one `ToWords` instance per locale — no performance penalty on repeated calls. * When `localeCode` is omitted, the runtime locale is auto-detected via `detectLocale()`. * * @example * import { toWords } from 'to-words'; * toWords(12345, { localeCode: 'en-US' }); // "Twelve Thousand Three Hundred Forty Five" * toWords(12345); // uses auto-detected runtime locale, falls back to 'en-IN' */ export declare function toWords(number: NumberInput, options?: ConverterOptions & { localeCode?: string; }): string; /** * Convert a number to ordinal words. * Uses the full bundle (all locales). For tree-shaken single-locale usage import from `to-words/`. * When `localeCode` is omitted, the runtime locale is auto-detected via `detectLocale()`. * * @example * import { toOrdinal } from 'to-words'; * toOrdinal(21, { localeCode: 'en-US' }); // "Twenty First" * toOrdinal(21); // uses auto-detected runtime locale, falls back to 'en-IN' */ export declare function toOrdinal(number: NumberInput, options?: OrdinalOptions & { localeCode?: string; }): string; /** * Convert a number to currency words. * Uses the full bundle (all locales). For tree-shaken single-locale usage import from `to-words/`. * Shorthand for `toWords(number, { currency: true, ...options })`. * When `localeCode` is omitted, the runtime locale is auto-detected via `detectLocale()`. * * @example * import { toCurrency } from 'to-words'; * toCurrency(1234.56, { localeCode: 'en-US' }); // "One Thousand Two Hundred Thirty Four Dollars And Fifty Six Cents Only" * toCurrency(1234.56); // uses auto-detected runtime locale, falls back to 'en-IN' */ export declare function toCurrency(number: NumberInput, options?: ConverterOptions & { localeCode?: string; }): string;