API reference ================== Rates in the JavaScript API are fractions; 0.05 means 5%. CLI rates are percentages. All returned amounts are integer cents. Total dollar inputs may use strings such as ``450M``, ``$1,234.56`` or ``1.2B``. calculateAnnuity(options) ------------------------------ ``total`` is required. Defaults are ``payments=30``, ``growthRate=0.05``, ``discountRate=0.04`` and ``timing='due'``. The return object contains these settings, ``totalCents``, ``presentValueCents`` and ``rows``. Each row contains ``payment`` (one-based), ``year``, ``amountCents`` and ``presentValueCents``. annuitySchedule(totalCents, payments=30, growthRate=0.05) -------------------------------------------------------------- Returns an integer-cent array. Its sum equals the exact input total. Payments must be 1–1000. Growth must be greater than -1 and at most 1. Zero growth gives equal unrounded payments; rounding distributes indivisible cents. presentValue(cashFlows, discountRate=0.04, timing='due') ------------------------------------------------------------- Accepts 1–1000 nonnegative integer-cent flows and returns an aggregate value rounded once. Discount must be between 0 and 1. Use ``due`` for years 0…n−1, ``ordinary`` for years 1…n. Flows may be gross or caller-computed net amounts. parseAmount(value) ----------------------- Parses dollar numbers or strings into cents. Conventional comma groups and K/M/B suffixes are allowed; scientific notation strings and fractions of a cent are rejected. Neither individual amounts nor combined flows may exceed ``Number.MAX_SAFE_INTEGER`` cents. Use strings for large inputs to preserve cents. toCSV(result) ------------------ Exports a calculation result as LF-terminated CSV with columns ``payment,year,amount_usd,present_value_usd``. Monetary cells use two decimal places and no thousands separators. JSON output retains integer-cent fields. Validation errors ---------------------- Invalid amounts, rates, payment counts, timing or unsafe integers throw ``RangeError`` (invalid amount input types throw ``TypeError``). The CLI writes a concise message to stderr and exits with status 1. It does not silently replace invalid parameters with defaults.