Part of the lingo docs (natural-language quantities, units, dates parser) — index: https://lingo.pascal.app/llms.txt

## Currency

Parse symbols, ISO codes, and slang; format via Intl; convert with rates you supply. lingo never bundles or fetches FX.

~~~ts
import { lingo, quantity, fromMinor, convertCurrency } from "@pascal-app/lingo"

lingo("$5", { currency: "CAD" }).quantity.unit   // "CAD"
lingo("3 quid 50").quantity.value                 // 3.5   (GBP)
quantity(5, "USD").format()                       // "$5.00"
quantity(5, "USD").toMinor()                      // 500   (Stripe minor units)
fromMinor(500, "USD").value                       // 5

// Convert with YOUR rates — lingo never bundles or fetches FX.
convertCurrency(100, "USD", "EUR", {
  rates: { base: "USD", rates: { EUR: 0.92 } },
})                                                // 92
~~~

Bare `$` and `cents` stay ambiguous (an `AMBIGUOUS_UNIT` warning) until you pass a `currency` context. Cross-currency `convert()` without rates fails with `RATE_REQUIRED`, never a silent wrong answer. `toMinor()`/`fromMinor()` handle Stripe integer minor units (JPY → 0 decimals, KWD → 3).

Human docs: https://lingo.pascal.app/docs#currency