@ducatjs/money 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1332) hide show
  1. package/NOTICE +47 -11
  2. package/README.md +346 -44
  3. package/data/cldr-territories.json +2791 -0
  4. package/data/crypto-units.json +68 -0
  5. package/data/rbnf/de.txt +243 -0
  6. package/data/rbnf/en.txt +166 -0
  7. package/data/rbnf/es.txt +261 -0
  8. package/data/rbnf/fr.txt +159 -0
  9. package/data/rbnf/it.txt +502 -0
  10. package/data/rbnf/nl.txt +103 -0
  11. package/data/rbnf/pt.txt +171 -0
  12. package/dist/adyen-fx.js +1 -1
  13. package/dist/adyen-fx.js.map +1 -1
  14. package/dist/allocate.d.ts.map +1 -1
  15. package/dist/allocate.js +2 -3
  16. package/dist/allocate.js.map +1 -1
  17. package/dist/cash.d.ts +15 -0
  18. package/dist/cash.d.ts.map +1 -1
  19. package/dist/cash.js +17 -0
  20. package/dist/cash.js.map +1 -1
  21. package/dist/convert.d.ts.map +1 -1
  22. package/dist/convert.js +2 -3
  23. package/dist/convert.js.map +1 -1
  24. package/dist/crypto.d.ts +54 -0
  25. package/dist/crypto.d.ts.map +1 -0
  26. package/dist/crypto.js +89 -0
  27. package/dist/crypto.js.map +1 -0
  28. package/dist/currencies.d.ts +43 -0
  29. package/dist/currencies.d.ts.map +1 -0
  30. package/dist/currencies.js +91 -0
  31. package/dist/currencies.js.map +1 -0
  32. package/dist/currency.d.ts +9 -1
  33. package/dist/currency.d.ts.map +1 -1
  34. package/dist/currency.js +41 -14
  35. package/dist/currency.js.map +1 -1
  36. package/dist/decimal.d.ts +25 -3
  37. package/dist/decimal.d.ts.map +1 -1
  38. package/dist/decimal.js +78 -8
  39. package/dist/decimal.js.map +1 -1
  40. package/dist/ecb.d.ts +23 -8
  41. package/dist/ecb.d.ts.map +1 -1
  42. package/dist/ecb.js +46 -15
  43. package/dist/ecb.js.map +1 -1
  44. package/dist/entries/adyen-fx.d.ts +3 -0
  45. package/dist/entries/adyen-fx.d.ts.map +1 -0
  46. package/dist/entries/adyen-fx.js +5 -0
  47. package/dist/entries/adyen-fx.js.map +1 -0
  48. package/dist/entries/boc.d.ts +3 -0
  49. package/dist/entries/boc.d.ts.map +1 -0
  50. package/dist/entries/boc.js +5 -0
  51. package/dist/entries/boc.js.map +1 -0
  52. package/dist/entries/boe.d.ts +3 -0
  53. package/dist/entries/boe.d.ts.map +1 -0
  54. package/dist/entries/boe.js +5 -0
  55. package/dist/entries/boe.js.map +1 -0
  56. package/dist/entries/crypto.d.ts +3 -0
  57. package/dist/entries/crypto.d.ts.map +1 -0
  58. package/dist/entries/crypto.js +5 -0
  59. package/dist/entries/crypto.js.map +1 -0
  60. package/dist/entries/currencies.d.ts +3 -0
  61. package/dist/entries/currencies.d.ts.map +1 -0
  62. package/dist/entries/currencies.js +5 -0
  63. package/dist/entries/currencies.js.map +1 -0
  64. package/dist/entries/drizzle-mysql.d.ts +3 -0
  65. package/dist/entries/drizzle-mysql.d.ts.map +1 -0
  66. package/dist/entries/drizzle-mysql.js +5 -0
  67. package/dist/entries/drizzle-mysql.js.map +1 -0
  68. package/dist/entries/drizzle-pg.d.ts +3 -0
  69. package/dist/entries/drizzle-pg.d.ts.map +1 -0
  70. package/dist/entries/drizzle-pg.js +5 -0
  71. package/dist/entries/drizzle-pg.js.map +1 -0
  72. package/dist/entries/drizzle-sqlite.d.ts +3 -0
  73. package/dist/entries/drizzle-sqlite.d.ts.map +1 -0
  74. package/dist/entries/drizzle-sqlite.js +5 -0
  75. package/dist/entries/drizzle-sqlite.js.map +1 -0
  76. package/dist/entries/ecb.d.ts +3 -0
  77. package/dist/entries/ecb.d.ts.map +1 -0
  78. package/dist/entries/ecb.js +5 -0
  79. package/dist/entries/ecb.js.map +1 -0
  80. package/dist/entries/fed.d.ts +3 -0
  81. package/dist/entries/fed.d.ts.map +1 -0
  82. package/dist/entries/fed.js +5 -0
  83. package/dist/entries/fed.js.map +1 -0
  84. package/dist/entries/fetch.d.ts +3 -0
  85. package/dist/entries/fetch.d.ts.map +1 -0
  86. package/dist/entries/fetch.js +5 -0
  87. package/dist/entries/fetch.js.map +1 -0
  88. package/dist/entries/finance.d.ts +3 -0
  89. package/dist/entries/finance.d.ts.map +1 -0
  90. package/dist/entries/finance.js +5 -0
  91. package/dist/entries/finance.js.map +1 -0
  92. package/dist/entries/historic.d.ts +3 -0
  93. package/dist/entries/historic.d.ts.map +1 -0
  94. package/dist/entries/historic.js +5 -0
  95. package/dist/entries/historic.js.map +1 -0
  96. package/dist/entries/history.d.ts +3 -0
  97. package/dist/entries/history.d.ts.map +1 -0
  98. package/dist/entries/history.js +5 -0
  99. package/dist/entries/history.js.map +1 -0
  100. package/dist/entries/hmrc.d.ts +3 -0
  101. package/dist/entries/hmrc.d.ts.map +1 -0
  102. package/dist/entries/hmrc.js +5 -0
  103. package/dist/entries/hmrc.js.map +1 -0
  104. package/dist/entries/kysely.d.ts +3 -0
  105. package/dist/entries/kysely.d.ts.map +1 -0
  106. package/dist/entries/kysely.js +5 -0
  107. package/dist/entries/kysely.js.map +1 -0
  108. package/dist/entries/parse.d.ts +3 -0
  109. package/dist/entries/parse.d.ts.map +1 -0
  110. package/dist/entries/parse.js +5 -0
  111. package/dist/entries/parse.js.map +1 -0
  112. package/dist/entries/pg.d.ts +3 -0
  113. package/dist/entries/pg.d.ts.map +1 -0
  114. package/dist/entries/pg.js +5 -0
  115. package/dist/entries/pg.js.map +1 -0
  116. package/dist/entries/policy.d.ts +3 -0
  117. package/dist/entries/policy.d.ts.map +1 -0
  118. package/dist/entries/policy.js +5 -0
  119. package/dist/entries/policy.js.map +1 -0
  120. package/dist/entries/pricing.d.ts +3 -0
  121. package/dist/entries/pricing.d.ts.map +1 -0
  122. package/dist/entries/pricing.js +5 -0
  123. package/dist/entries/pricing.js.map +1 -0
  124. package/dist/entries/stripe-fx.d.ts +3 -0
  125. package/dist/entries/stripe-fx.d.ts.map +1 -0
  126. package/dist/entries/stripe-fx.js +5 -0
  127. package/dist/entries/stripe-fx.js.map +1 -0
  128. package/dist/entries/testing-arbitraries.d.ts +3 -0
  129. package/dist/entries/testing-arbitraries.d.ts.map +1 -0
  130. package/dist/entries/testing-arbitraries.js +5 -0
  131. package/dist/entries/testing-arbitraries.js.map +1 -0
  132. package/dist/entries/testing-index.d.ts +3 -0
  133. package/dist/entries/testing-index.d.ts.map +1 -0
  134. package/dist/entries/testing-index.js +5 -0
  135. package/dist/entries/testing-index.js.map +1 -0
  136. package/dist/entries/testing-jest.d.ts +3 -0
  137. package/dist/entries/testing-jest.d.ts.map +1 -0
  138. package/dist/entries/testing-jest.js +5 -0
  139. package/dist/entries/testing-jest.js.map +1 -0
  140. package/dist/entries/testing-vitest.d.ts +3 -0
  141. package/dist/entries/testing-vitest.d.ts.map +1 -0
  142. package/dist/entries/testing-vitest.js +5 -0
  143. package/dist/entries/testing-vitest.js.map +1 -0
  144. package/dist/entries/valibot.d.ts +3 -0
  145. package/dist/entries/valibot.d.ts.map +1 -0
  146. package/dist/entries/valibot.js +5 -0
  147. package/dist/entries/valibot.js.map +1 -0
  148. package/dist/entries/wire.d.ts +3 -0
  149. package/dist/entries/wire.d.ts.map +1 -0
  150. package/dist/entries/wire.js +5 -0
  151. package/dist/entries/wire.js.map +1 -0
  152. package/dist/entries/zod.d.ts +3 -0
  153. package/dist/entries/zod.d.ts.map +1 -0
  154. package/dist/entries/zod.js +5 -0
  155. package/dist/entries/zod.js.map +1 -0
  156. package/dist/exact.d.ts.map +1 -1
  157. package/dist/exact.js +3 -3
  158. package/dist/exact.js.map +1 -1
  159. package/dist/fetch.d.ts +7 -1
  160. package/dist/fetch.d.ts.map +1 -1
  161. package/dist/fetch.js +11 -2
  162. package/dist/fetch.js.map +1 -1
  163. package/dist/finance.d.ts +296 -0
  164. package/dist/finance.d.ts.map +1 -0
  165. package/dist/finance.js +825 -0
  166. package/dist/finance.js.map +1 -0
  167. package/dist/fixed-money.d.ts +12 -0
  168. package/dist/fixed-money.d.ts.map +1 -0
  169. package/dist/fixed-money.js +32 -0
  170. package/dist/fixed-money.js.map +1 -0
  171. package/dist/fixed.d.ts +26 -9
  172. package/dist/fixed.d.ts.map +1 -1
  173. package/dist/fixed.js +75 -49
  174. package/dist/fixed.js.map +1 -1
  175. package/dist/fn.d.ts +17 -1
  176. package/dist/fn.d.ts.map +1 -1
  177. package/dist/fn.js +17 -1
  178. package/dist/fn.js.map +1 -1
  179. package/dist/format.d.ts.map +1 -1
  180. package/dist/format.js +28 -9
  181. package/dist/format.js.map +1 -1
  182. package/dist/generated/crypto.d.ts +58 -0
  183. package/dist/generated/crypto.d.ts.map +1 -0
  184. package/dist/generated/crypto.js +15 -0
  185. package/dist/generated/crypto.js.map +1 -0
  186. package/dist/generated/iso/AED.d.ts +2 -0
  187. package/dist/generated/iso/AED.d.ts.map +1 -0
  188. package/dist/generated/iso/AED.js +5 -0
  189. package/dist/generated/iso/AED.js.map +1 -0
  190. package/dist/generated/iso/AFN.d.ts +2 -0
  191. package/dist/generated/iso/AFN.d.ts.map +1 -0
  192. package/dist/generated/iso/AFN.js +5 -0
  193. package/dist/generated/iso/AFN.js.map +1 -0
  194. package/dist/generated/iso/ALL.d.ts +2 -0
  195. package/dist/generated/iso/ALL.d.ts.map +1 -0
  196. package/dist/generated/iso/ALL.js +5 -0
  197. package/dist/generated/iso/ALL.js.map +1 -0
  198. package/dist/generated/iso/AMD.d.ts +2 -0
  199. package/dist/generated/iso/AMD.d.ts.map +1 -0
  200. package/dist/generated/iso/AMD.js +5 -0
  201. package/dist/generated/iso/AMD.js.map +1 -0
  202. package/dist/generated/iso/AOA.d.ts +2 -0
  203. package/dist/generated/iso/AOA.d.ts.map +1 -0
  204. package/dist/generated/iso/AOA.js +5 -0
  205. package/dist/generated/iso/AOA.js.map +1 -0
  206. package/dist/generated/iso/ARS.d.ts +2 -0
  207. package/dist/generated/iso/ARS.d.ts.map +1 -0
  208. package/dist/generated/iso/ARS.js +5 -0
  209. package/dist/generated/iso/ARS.js.map +1 -0
  210. package/dist/generated/iso/AUD.d.ts +2 -0
  211. package/dist/generated/iso/AUD.d.ts.map +1 -0
  212. package/dist/generated/iso/AUD.js +5 -0
  213. package/dist/generated/iso/AUD.js.map +1 -0
  214. package/dist/generated/iso/AWG.d.ts +2 -0
  215. package/dist/generated/iso/AWG.d.ts.map +1 -0
  216. package/dist/generated/iso/AWG.js +5 -0
  217. package/dist/generated/iso/AWG.js.map +1 -0
  218. package/dist/generated/iso/AZN.d.ts +2 -0
  219. package/dist/generated/iso/AZN.d.ts.map +1 -0
  220. package/dist/generated/iso/AZN.js +5 -0
  221. package/dist/generated/iso/AZN.js.map +1 -0
  222. package/dist/generated/iso/BAM.d.ts +2 -0
  223. package/dist/generated/iso/BAM.d.ts.map +1 -0
  224. package/dist/generated/iso/BAM.js +5 -0
  225. package/dist/generated/iso/BAM.js.map +1 -0
  226. package/dist/generated/iso/BBD.d.ts +2 -0
  227. package/dist/generated/iso/BBD.d.ts.map +1 -0
  228. package/dist/generated/iso/BBD.js +5 -0
  229. package/dist/generated/iso/BBD.js.map +1 -0
  230. package/dist/generated/iso/BDT.d.ts +2 -0
  231. package/dist/generated/iso/BDT.d.ts.map +1 -0
  232. package/dist/generated/iso/BDT.js +5 -0
  233. package/dist/generated/iso/BDT.js.map +1 -0
  234. package/dist/generated/iso/BHD.d.ts +2 -0
  235. package/dist/generated/iso/BHD.d.ts.map +1 -0
  236. package/dist/generated/iso/BHD.js +5 -0
  237. package/dist/generated/iso/BHD.js.map +1 -0
  238. package/dist/generated/iso/BIF.d.ts +2 -0
  239. package/dist/generated/iso/BIF.d.ts.map +1 -0
  240. package/dist/generated/iso/BIF.js +5 -0
  241. package/dist/generated/iso/BIF.js.map +1 -0
  242. package/dist/generated/iso/BMD.d.ts +2 -0
  243. package/dist/generated/iso/BMD.d.ts.map +1 -0
  244. package/dist/generated/iso/BMD.js +5 -0
  245. package/dist/generated/iso/BMD.js.map +1 -0
  246. package/dist/generated/iso/BND.d.ts +2 -0
  247. package/dist/generated/iso/BND.d.ts.map +1 -0
  248. package/dist/generated/iso/BND.js +5 -0
  249. package/dist/generated/iso/BND.js.map +1 -0
  250. package/dist/generated/iso/BOB.d.ts +2 -0
  251. package/dist/generated/iso/BOB.d.ts.map +1 -0
  252. package/dist/generated/iso/BOB.js +5 -0
  253. package/dist/generated/iso/BOB.js.map +1 -0
  254. package/dist/generated/iso/BOV.d.ts +2 -0
  255. package/dist/generated/iso/BOV.d.ts.map +1 -0
  256. package/dist/generated/iso/BOV.js +5 -0
  257. package/dist/generated/iso/BOV.js.map +1 -0
  258. package/dist/generated/iso/BRL.d.ts +2 -0
  259. package/dist/generated/iso/BRL.d.ts.map +1 -0
  260. package/dist/generated/iso/BRL.js +5 -0
  261. package/dist/generated/iso/BRL.js.map +1 -0
  262. package/dist/generated/iso/BSD.d.ts +2 -0
  263. package/dist/generated/iso/BSD.d.ts.map +1 -0
  264. package/dist/generated/iso/BSD.js +5 -0
  265. package/dist/generated/iso/BSD.js.map +1 -0
  266. package/dist/generated/iso/BTN.d.ts +2 -0
  267. package/dist/generated/iso/BTN.d.ts.map +1 -0
  268. package/dist/generated/iso/BTN.js +5 -0
  269. package/dist/generated/iso/BTN.js.map +1 -0
  270. package/dist/generated/iso/BWP.d.ts +2 -0
  271. package/dist/generated/iso/BWP.d.ts.map +1 -0
  272. package/dist/generated/iso/BWP.js +5 -0
  273. package/dist/generated/iso/BWP.js.map +1 -0
  274. package/dist/generated/iso/BYN.d.ts +2 -0
  275. package/dist/generated/iso/BYN.d.ts.map +1 -0
  276. package/dist/generated/iso/BYN.js +5 -0
  277. package/dist/generated/iso/BYN.js.map +1 -0
  278. package/dist/generated/iso/BZD.d.ts +2 -0
  279. package/dist/generated/iso/BZD.d.ts.map +1 -0
  280. package/dist/generated/iso/BZD.js +5 -0
  281. package/dist/generated/iso/BZD.js.map +1 -0
  282. package/dist/generated/iso/CAD.d.ts +2 -0
  283. package/dist/generated/iso/CAD.d.ts.map +1 -0
  284. package/dist/generated/iso/CAD.js +5 -0
  285. package/dist/generated/iso/CAD.js.map +1 -0
  286. package/dist/generated/iso/CDF.d.ts +2 -0
  287. package/dist/generated/iso/CDF.d.ts.map +1 -0
  288. package/dist/generated/iso/CDF.js +5 -0
  289. package/dist/generated/iso/CDF.js.map +1 -0
  290. package/dist/generated/iso/CHE.d.ts +2 -0
  291. package/dist/generated/iso/CHE.d.ts.map +1 -0
  292. package/dist/generated/iso/CHE.js +5 -0
  293. package/dist/generated/iso/CHE.js.map +1 -0
  294. package/dist/generated/iso/CHF.d.ts +2 -0
  295. package/dist/generated/iso/CHF.d.ts.map +1 -0
  296. package/dist/generated/iso/CHF.js +5 -0
  297. package/dist/generated/iso/CHF.js.map +1 -0
  298. package/dist/generated/iso/CHW.d.ts +2 -0
  299. package/dist/generated/iso/CHW.d.ts.map +1 -0
  300. package/dist/generated/iso/CHW.js +5 -0
  301. package/dist/generated/iso/CHW.js.map +1 -0
  302. package/dist/generated/iso/CLF.d.ts +2 -0
  303. package/dist/generated/iso/CLF.d.ts.map +1 -0
  304. package/dist/generated/iso/CLF.js +5 -0
  305. package/dist/generated/iso/CLF.js.map +1 -0
  306. package/dist/generated/iso/CLP.d.ts +2 -0
  307. package/dist/generated/iso/CLP.d.ts.map +1 -0
  308. package/dist/generated/iso/CLP.js +5 -0
  309. package/dist/generated/iso/CLP.js.map +1 -0
  310. package/dist/generated/iso/CNY.d.ts +2 -0
  311. package/dist/generated/iso/CNY.d.ts.map +1 -0
  312. package/dist/generated/iso/CNY.js +5 -0
  313. package/dist/generated/iso/CNY.js.map +1 -0
  314. package/dist/generated/iso/COP.d.ts +2 -0
  315. package/dist/generated/iso/COP.d.ts.map +1 -0
  316. package/dist/generated/iso/COP.js +5 -0
  317. package/dist/generated/iso/COP.js.map +1 -0
  318. package/dist/generated/iso/COU.d.ts +2 -0
  319. package/dist/generated/iso/COU.d.ts.map +1 -0
  320. package/dist/generated/iso/COU.js +5 -0
  321. package/dist/generated/iso/COU.js.map +1 -0
  322. package/dist/generated/iso/CRC.d.ts +2 -0
  323. package/dist/generated/iso/CRC.d.ts.map +1 -0
  324. package/dist/generated/iso/CRC.js +5 -0
  325. package/dist/generated/iso/CRC.js.map +1 -0
  326. package/dist/generated/iso/CUP.d.ts +2 -0
  327. package/dist/generated/iso/CUP.d.ts.map +1 -0
  328. package/dist/generated/iso/CUP.js +5 -0
  329. package/dist/generated/iso/CUP.js.map +1 -0
  330. package/dist/generated/iso/CVE.d.ts +2 -0
  331. package/dist/generated/iso/CVE.d.ts.map +1 -0
  332. package/dist/generated/iso/CVE.js +5 -0
  333. package/dist/generated/iso/CVE.js.map +1 -0
  334. package/dist/generated/iso/CZK.d.ts +2 -0
  335. package/dist/generated/iso/CZK.d.ts.map +1 -0
  336. package/dist/generated/iso/CZK.js +5 -0
  337. package/dist/generated/iso/CZK.js.map +1 -0
  338. package/dist/generated/iso/DJF.d.ts +2 -0
  339. package/dist/generated/iso/DJF.d.ts.map +1 -0
  340. package/dist/generated/iso/DJF.js +5 -0
  341. package/dist/generated/iso/DJF.js.map +1 -0
  342. package/dist/generated/iso/DKK.d.ts +2 -0
  343. package/dist/generated/iso/DKK.d.ts.map +1 -0
  344. package/dist/generated/iso/DKK.js +5 -0
  345. package/dist/generated/iso/DKK.js.map +1 -0
  346. package/dist/generated/iso/DOP.d.ts +2 -0
  347. package/dist/generated/iso/DOP.d.ts.map +1 -0
  348. package/dist/generated/iso/DOP.js +5 -0
  349. package/dist/generated/iso/DOP.js.map +1 -0
  350. package/dist/generated/iso/DZD.d.ts +2 -0
  351. package/dist/generated/iso/DZD.d.ts.map +1 -0
  352. package/dist/generated/iso/DZD.js +5 -0
  353. package/dist/generated/iso/DZD.js.map +1 -0
  354. package/dist/generated/iso/EGP.d.ts +2 -0
  355. package/dist/generated/iso/EGP.d.ts.map +1 -0
  356. package/dist/generated/iso/EGP.js +5 -0
  357. package/dist/generated/iso/EGP.js.map +1 -0
  358. package/dist/generated/iso/ERN.d.ts +2 -0
  359. package/dist/generated/iso/ERN.d.ts.map +1 -0
  360. package/dist/generated/iso/ERN.js +5 -0
  361. package/dist/generated/iso/ERN.js.map +1 -0
  362. package/dist/generated/iso/ETB.d.ts +2 -0
  363. package/dist/generated/iso/ETB.d.ts.map +1 -0
  364. package/dist/generated/iso/ETB.js +5 -0
  365. package/dist/generated/iso/ETB.js.map +1 -0
  366. package/dist/generated/iso/EUR.d.ts +2 -0
  367. package/dist/generated/iso/EUR.d.ts.map +1 -0
  368. package/dist/generated/iso/EUR.js +5 -0
  369. package/dist/generated/iso/EUR.js.map +1 -0
  370. package/dist/generated/iso/FJD.d.ts +2 -0
  371. package/dist/generated/iso/FJD.d.ts.map +1 -0
  372. package/dist/generated/iso/FJD.js +5 -0
  373. package/dist/generated/iso/FJD.js.map +1 -0
  374. package/dist/generated/iso/FKP.d.ts +2 -0
  375. package/dist/generated/iso/FKP.d.ts.map +1 -0
  376. package/dist/generated/iso/FKP.js +5 -0
  377. package/dist/generated/iso/FKP.js.map +1 -0
  378. package/dist/generated/iso/GBP.d.ts +2 -0
  379. package/dist/generated/iso/GBP.d.ts.map +1 -0
  380. package/dist/generated/iso/GBP.js +5 -0
  381. package/dist/generated/iso/GBP.js.map +1 -0
  382. package/dist/generated/iso/GEL.d.ts +2 -0
  383. package/dist/generated/iso/GEL.d.ts.map +1 -0
  384. package/dist/generated/iso/GEL.js +5 -0
  385. package/dist/generated/iso/GEL.js.map +1 -0
  386. package/dist/generated/iso/GHS.d.ts +2 -0
  387. package/dist/generated/iso/GHS.d.ts.map +1 -0
  388. package/dist/generated/iso/GHS.js +5 -0
  389. package/dist/generated/iso/GHS.js.map +1 -0
  390. package/dist/generated/iso/GIP.d.ts +2 -0
  391. package/dist/generated/iso/GIP.d.ts.map +1 -0
  392. package/dist/generated/iso/GIP.js +5 -0
  393. package/dist/generated/iso/GIP.js.map +1 -0
  394. package/dist/generated/iso/GMD.d.ts +2 -0
  395. package/dist/generated/iso/GMD.d.ts.map +1 -0
  396. package/dist/generated/iso/GMD.js +5 -0
  397. package/dist/generated/iso/GMD.js.map +1 -0
  398. package/dist/generated/iso/GNF.d.ts +2 -0
  399. package/dist/generated/iso/GNF.d.ts.map +1 -0
  400. package/dist/generated/iso/GNF.js +5 -0
  401. package/dist/generated/iso/GNF.js.map +1 -0
  402. package/dist/generated/iso/GTQ.d.ts +2 -0
  403. package/dist/generated/iso/GTQ.d.ts.map +1 -0
  404. package/dist/generated/iso/GTQ.js +5 -0
  405. package/dist/generated/iso/GTQ.js.map +1 -0
  406. package/dist/generated/iso/GYD.d.ts +2 -0
  407. package/dist/generated/iso/GYD.d.ts.map +1 -0
  408. package/dist/generated/iso/GYD.js +5 -0
  409. package/dist/generated/iso/GYD.js.map +1 -0
  410. package/dist/generated/iso/HKD.d.ts +2 -0
  411. package/dist/generated/iso/HKD.d.ts.map +1 -0
  412. package/dist/generated/iso/HKD.js +5 -0
  413. package/dist/generated/iso/HKD.js.map +1 -0
  414. package/dist/generated/iso/HNL.d.ts +2 -0
  415. package/dist/generated/iso/HNL.d.ts.map +1 -0
  416. package/dist/generated/iso/HNL.js +5 -0
  417. package/dist/generated/iso/HNL.js.map +1 -0
  418. package/dist/generated/iso/HTG.d.ts +2 -0
  419. package/dist/generated/iso/HTG.d.ts.map +1 -0
  420. package/dist/generated/iso/HTG.js +5 -0
  421. package/dist/generated/iso/HTG.js.map +1 -0
  422. package/dist/generated/iso/HUF.d.ts +2 -0
  423. package/dist/generated/iso/HUF.d.ts.map +1 -0
  424. package/dist/generated/iso/HUF.js +5 -0
  425. package/dist/generated/iso/HUF.js.map +1 -0
  426. package/dist/generated/iso/IDR.d.ts +2 -0
  427. package/dist/generated/iso/IDR.d.ts.map +1 -0
  428. package/dist/generated/iso/IDR.js +5 -0
  429. package/dist/generated/iso/IDR.js.map +1 -0
  430. package/dist/generated/iso/ILS.d.ts +2 -0
  431. package/dist/generated/iso/ILS.d.ts.map +1 -0
  432. package/dist/generated/iso/ILS.js +5 -0
  433. package/dist/generated/iso/ILS.js.map +1 -0
  434. package/dist/generated/iso/INR.d.ts +2 -0
  435. package/dist/generated/iso/INR.d.ts.map +1 -0
  436. package/dist/generated/iso/INR.js +5 -0
  437. package/dist/generated/iso/INR.js.map +1 -0
  438. package/dist/generated/iso/IQD.d.ts +2 -0
  439. package/dist/generated/iso/IQD.d.ts.map +1 -0
  440. package/dist/generated/iso/IQD.js +5 -0
  441. package/dist/generated/iso/IQD.js.map +1 -0
  442. package/dist/generated/iso/IRR.d.ts +2 -0
  443. package/dist/generated/iso/IRR.d.ts.map +1 -0
  444. package/dist/generated/iso/IRR.js +5 -0
  445. package/dist/generated/iso/IRR.js.map +1 -0
  446. package/dist/generated/iso/ISK.d.ts +2 -0
  447. package/dist/generated/iso/ISK.d.ts.map +1 -0
  448. package/dist/generated/iso/ISK.js +5 -0
  449. package/dist/generated/iso/ISK.js.map +1 -0
  450. package/dist/generated/iso/JMD.d.ts +2 -0
  451. package/dist/generated/iso/JMD.d.ts.map +1 -0
  452. package/dist/generated/iso/JMD.js +5 -0
  453. package/dist/generated/iso/JMD.js.map +1 -0
  454. package/dist/generated/iso/JOD.d.ts +2 -0
  455. package/dist/generated/iso/JOD.d.ts.map +1 -0
  456. package/dist/generated/iso/JOD.js +5 -0
  457. package/dist/generated/iso/JOD.js.map +1 -0
  458. package/dist/generated/iso/JPY.d.ts +2 -0
  459. package/dist/generated/iso/JPY.d.ts.map +1 -0
  460. package/dist/generated/iso/JPY.js +5 -0
  461. package/dist/generated/iso/JPY.js.map +1 -0
  462. package/dist/generated/iso/KES.d.ts +2 -0
  463. package/dist/generated/iso/KES.d.ts.map +1 -0
  464. package/dist/generated/iso/KES.js +5 -0
  465. package/dist/generated/iso/KES.js.map +1 -0
  466. package/dist/generated/iso/KGS.d.ts +2 -0
  467. package/dist/generated/iso/KGS.d.ts.map +1 -0
  468. package/dist/generated/iso/KGS.js +5 -0
  469. package/dist/generated/iso/KGS.js.map +1 -0
  470. package/dist/generated/iso/KHR.d.ts +2 -0
  471. package/dist/generated/iso/KHR.d.ts.map +1 -0
  472. package/dist/generated/iso/KHR.js +5 -0
  473. package/dist/generated/iso/KHR.js.map +1 -0
  474. package/dist/generated/iso/KMF.d.ts +2 -0
  475. package/dist/generated/iso/KMF.d.ts.map +1 -0
  476. package/dist/generated/iso/KMF.js +5 -0
  477. package/dist/generated/iso/KMF.js.map +1 -0
  478. package/dist/generated/iso/KPW.d.ts +2 -0
  479. package/dist/generated/iso/KPW.d.ts.map +1 -0
  480. package/dist/generated/iso/KPW.js +5 -0
  481. package/dist/generated/iso/KPW.js.map +1 -0
  482. package/dist/generated/iso/KRW.d.ts +2 -0
  483. package/dist/generated/iso/KRW.d.ts.map +1 -0
  484. package/dist/generated/iso/KRW.js +5 -0
  485. package/dist/generated/iso/KRW.js.map +1 -0
  486. package/dist/generated/iso/KWD.d.ts +2 -0
  487. package/dist/generated/iso/KWD.d.ts.map +1 -0
  488. package/dist/generated/iso/KWD.js +5 -0
  489. package/dist/generated/iso/KWD.js.map +1 -0
  490. package/dist/generated/iso/KYD.d.ts +2 -0
  491. package/dist/generated/iso/KYD.d.ts.map +1 -0
  492. package/dist/generated/iso/KYD.js +5 -0
  493. package/dist/generated/iso/KYD.js.map +1 -0
  494. package/dist/generated/iso/KZT.d.ts +2 -0
  495. package/dist/generated/iso/KZT.d.ts.map +1 -0
  496. package/dist/generated/iso/KZT.js +5 -0
  497. package/dist/generated/iso/KZT.js.map +1 -0
  498. package/dist/generated/iso/LAK.d.ts +2 -0
  499. package/dist/generated/iso/LAK.d.ts.map +1 -0
  500. package/dist/generated/iso/LAK.js +5 -0
  501. package/dist/generated/iso/LAK.js.map +1 -0
  502. package/dist/generated/iso/LBP.d.ts +2 -0
  503. package/dist/generated/iso/LBP.d.ts.map +1 -0
  504. package/dist/generated/iso/LBP.js +5 -0
  505. package/dist/generated/iso/LBP.js.map +1 -0
  506. package/dist/generated/iso/LKR.d.ts +2 -0
  507. package/dist/generated/iso/LKR.d.ts.map +1 -0
  508. package/dist/generated/iso/LKR.js +5 -0
  509. package/dist/generated/iso/LKR.js.map +1 -0
  510. package/dist/generated/iso/LRD.d.ts +2 -0
  511. package/dist/generated/iso/LRD.d.ts.map +1 -0
  512. package/dist/generated/iso/LRD.js +5 -0
  513. package/dist/generated/iso/LRD.js.map +1 -0
  514. package/dist/generated/iso/LSL.d.ts +2 -0
  515. package/dist/generated/iso/LSL.d.ts.map +1 -0
  516. package/dist/generated/iso/LSL.js +5 -0
  517. package/dist/generated/iso/LSL.js.map +1 -0
  518. package/dist/generated/iso/LYD.d.ts +2 -0
  519. package/dist/generated/iso/LYD.d.ts.map +1 -0
  520. package/dist/generated/iso/LYD.js +5 -0
  521. package/dist/generated/iso/LYD.js.map +1 -0
  522. package/dist/generated/iso/MAD.d.ts +2 -0
  523. package/dist/generated/iso/MAD.d.ts.map +1 -0
  524. package/dist/generated/iso/MAD.js +5 -0
  525. package/dist/generated/iso/MAD.js.map +1 -0
  526. package/dist/generated/iso/MDL.d.ts +2 -0
  527. package/dist/generated/iso/MDL.d.ts.map +1 -0
  528. package/dist/generated/iso/MDL.js +5 -0
  529. package/dist/generated/iso/MDL.js.map +1 -0
  530. package/dist/generated/iso/MGA.d.ts +2 -0
  531. package/dist/generated/iso/MGA.d.ts.map +1 -0
  532. package/dist/generated/iso/MGA.js +5 -0
  533. package/dist/generated/iso/MGA.js.map +1 -0
  534. package/dist/generated/iso/MKD.d.ts +2 -0
  535. package/dist/generated/iso/MKD.d.ts.map +1 -0
  536. package/dist/generated/iso/MKD.js +5 -0
  537. package/dist/generated/iso/MKD.js.map +1 -0
  538. package/dist/generated/iso/MMK.d.ts +2 -0
  539. package/dist/generated/iso/MMK.d.ts.map +1 -0
  540. package/dist/generated/iso/MMK.js +5 -0
  541. package/dist/generated/iso/MMK.js.map +1 -0
  542. package/dist/generated/iso/MNT.d.ts +2 -0
  543. package/dist/generated/iso/MNT.d.ts.map +1 -0
  544. package/dist/generated/iso/MNT.js +5 -0
  545. package/dist/generated/iso/MNT.js.map +1 -0
  546. package/dist/generated/iso/MOP.d.ts +2 -0
  547. package/dist/generated/iso/MOP.d.ts.map +1 -0
  548. package/dist/generated/iso/MOP.js +5 -0
  549. package/dist/generated/iso/MOP.js.map +1 -0
  550. package/dist/generated/iso/MRU.d.ts +2 -0
  551. package/dist/generated/iso/MRU.d.ts.map +1 -0
  552. package/dist/generated/iso/MRU.js +5 -0
  553. package/dist/generated/iso/MRU.js.map +1 -0
  554. package/dist/generated/iso/MUR.d.ts +2 -0
  555. package/dist/generated/iso/MUR.d.ts.map +1 -0
  556. package/dist/generated/iso/MUR.js +5 -0
  557. package/dist/generated/iso/MUR.js.map +1 -0
  558. package/dist/generated/iso/MVR.d.ts +2 -0
  559. package/dist/generated/iso/MVR.d.ts.map +1 -0
  560. package/dist/generated/iso/MVR.js +5 -0
  561. package/dist/generated/iso/MVR.js.map +1 -0
  562. package/dist/generated/iso/MWK.d.ts +2 -0
  563. package/dist/generated/iso/MWK.d.ts.map +1 -0
  564. package/dist/generated/iso/MWK.js +5 -0
  565. package/dist/generated/iso/MWK.js.map +1 -0
  566. package/dist/generated/iso/MXN.d.ts +2 -0
  567. package/dist/generated/iso/MXN.d.ts.map +1 -0
  568. package/dist/generated/iso/MXN.js +5 -0
  569. package/dist/generated/iso/MXN.js.map +1 -0
  570. package/dist/generated/iso/MXV.d.ts +2 -0
  571. package/dist/generated/iso/MXV.d.ts.map +1 -0
  572. package/dist/generated/iso/MXV.js +5 -0
  573. package/dist/generated/iso/MXV.js.map +1 -0
  574. package/dist/generated/iso/MYR.d.ts +2 -0
  575. package/dist/generated/iso/MYR.d.ts.map +1 -0
  576. package/dist/generated/iso/MYR.js +5 -0
  577. package/dist/generated/iso/MYR.js.map +1 -0
  578. package/dist/generated/iso/MZN.d.ts +2 -0
  579. package/dist/generated/iso/MZN.d.ts.map +1 -0
  580. package/dist/generated/iso/MZN.js +5 -0
  581. package/dist/generated/iso/MZN.js.map +1 -0
  582. package/dist/generated/iso/NAD.d.ts +2 -0
  583. package/dist/generated/iso/NAD.d.ts.map +1 -0
  584. package/dist/generated/iso/NAD.js +5 -0
  585. package/dist/generated/iso/NAD.js.map +1 -0
  586. package/dist/generated/iso/NGN.d.ts +2 -0
  587. package/dist/generated/iso/NGN.d.ts.map +1 -0
  588. package/dist/generated/iso/NGN.js +5 -0
  589. package/dist/generated/iso/NGN.js.map +1 -0
  590. package/dist/generated/iso/NIO.d.ts +2 -0
  591. package/dist/generated/iso/NIO.d.ts.map +1 -0
  592. package/dist/generated/iso/NIO.js +5 -0
  593. package/dist/generated/iso/NIO.js.map +1 -0
  594. package/dist/generated/iso/NOK.d.ts +2 -0
  595. package/dist/generated/iso/NOK.d.ts.map +1 -0
  596. package/dist/generated/iso/NOK.js +5 -0
  597. package/dist/generated/iso/NOK.js.map +1 -0
  598. package/dist/generated/iso/NPR.d.ts +2 -0
  599. package/dist/generated/iso/NPR.d.ts.map +1 -0
  600. package/dist/generated/iso/NPR.js +5 -0
  601. package/dist/generated/iso/NPR.js.map +1 -0
  602. package/dist/generated/iso/NZD.d.ts +2 -0
  603. package/dist/generated/iso/NZD.d.ts.map +1 -0
  604. package/dist/generated/iso/NZD.js +5 -0
  605. package/dist/generated/iso/NZD.js.map +1 -0
  606. package/dist/generated/iso/OMR.d.ts +2 -0
  607. package/dist/generated/iso/OMR.d.ts.map +1 -0
  608. package/dist/generated/iso/OMR.js +5 -0
  609. package/dist/generated/iso/OMR.js.map +1 -0
  610. package/dist/generated/iso/PAB.d.ts +2 -0
  611. package/dist/generated/iso/PAB.d.ts.map +1 -0
  612. package/dist/generated/iso/PAB.js +5 -0
  613. package/dist/generated/iso/PAB.js.map +1 -0
  614. package/dist/generated/iso/PEN.d.ts +2 -0
  615. package/dist/generated/iso/PEN.d.ts.map +1 -0
  616. package/dist/generated/iso/PEN.js +5 -0
  617. package/dist/generated/iso/PEN.js.map +1 -0
  618. package/dist/generated/iso/PGK.d.ts +2 -0
  619. package/dist/generated/iso/PGK.d.ts.map +1 -0
  620. package/dist/generated/iso/PGK.js +5 -0
  621. package/dist/generated/iso/PGK.js.map +1 -0
  622. package/dist/generated/iso/PHP.d.ts +2 -0
  623. package/dist/generated/iso/PHP.d.ts.map +1 -0
  624. package/dist/generated/iso/PHP.js +5 -0
  625. package/dist/generated/iso/PHP.js.map +1 -0
  626. package/dist/generated/iso/PKR.d.ts +2 -0
  627. package/dist/generated/iso/PKR.d.ts.map +1 -0
  628. package/dist/generated/iso/PKR.js +5 -0
  629. package/dist/generated/iso/PKR.js.map +1 -0
  630. package/dist/generated/iso/PLN.d.ts +2 -0
  631. package/dist/generated/iso/PLN.d.ts.map +1 -0
  632. package/dist/generated/iso/PLN.js +5 -0
  633. package/dist/generated/iso/PLN.js.map +1 -0
  634. package/dist/generated/iso/PYG.d.ts +2 -0
  635. package/dist/generated/iso/PYG.d.ts.map +1 -0
  636. package/dist/generated/iso/PYG.js +5 -0
  637. package/dist/generated/iso/PYG.js.map +1 -0
  638. package/dist/generated/iso/QAR.d.ts +2 -0
  639. package/dist/generated/iso/QAR.d.ts.map +1 -0
  640. package/dist/generated/iso/QAR.js +5 -0
  641. package/dist/generated/iso/QAR.js.map +1 -0
  642. package/dist/generated/iso/RON.d.ts +2 -0
  643. package/dist/generated/iso/RON.d.ts.map +1 -0
  644. package/dist/generated/iso/RON.js +5 -0
  645. package/dist/generated/iso/RON.js.map +1 -0
  646. package/dist/generated/iso/RSD.d.ts +2 -0
  647. package/dist/generated/iso/RSD.d.ts.map +1 -0
  648. package/dist/generated/iso/RSD.js +5 -0
  649. package/dist/generated/iso/RSD.js.map +1 -0
  650. package/dist/generated/iso/RUB.d.ts +2 -0
  651. package/dist/generated/iso/RUB.d.ts.map +1 -0
  652. package/dist/generated/iso/RUB.js +5 -0
  653. package/dist/generated/iso/RUB.js.map +1 -0
  654. package/dist/generated/iso/RWF.d.ts +2 -0
  655. package/dist/generated/iso/RWF.d.ts.map +1 -0
  656. package/dist/generated/iso/RWF.js +5 -0
  657. package/dist/generated/iso/RWF.js.map +1 -0
  658. package/dist/generated/iso/SAR.d.ts +2 -0
  659. package/dist/generated/iso/SAR.d.ts.map +1 -0
  660. package/dist/generated/iso/SAR.js +5 -0
  661. package/dist/generated/iso/SAR.js.map +1 -0
  662. package/dist/generated/iso/SBD.d.ts +2 -0
  663. package/dist/generated/iso/SBD.d.ts.map +1 -0
  664. package/dist/generated/iso/SBD.js +5 -0
  665. package/dist/generated/iso/SBD.js.map +1 -0
  666. package/dist/generated/iso/SCR.d.ts +2 -0
  667. package/dist/generated/iso/SCR.d.ts.map +1 -0
  668. package/dist/generated/iso/SCR.js +5 -0
  669. package/dist/generated/iso/SCR.js.map +1 -0
  670. package/dist/generated/iso/SDG.d.ts +2 -0
  671. package/dist/generated/iso/SDG.d.ts.map +1 -0
  672. package/dist/generated/iso/SDG.js +5 -0
  673. package/dist/generated/iso/SDG.js.map +1 -0
  674. package/dist/generated/iso/SEK.d.ts +2 -0
  675. package/dist/generated/iso/SEK.d.ts.map +1 -0
  676. package/dist/generated/iso/SEK.js +5 -0
  677. package/dist/generated/iso/SEK.js.map +1 -0
  678. package/dist/generated/iso/SGD.d.ts +2 -0
  679. package/dist/generated/iso/SGD.d.ts.map +1 -0
  680. package/dist/generated/iso/SGD.js +5 -0
  681. package/dist/generated/iso/SGD.js.map +1 -0
  682. package/dist/generated/iso/SHP.d.ts +2 -0
  683. package/dist/generated/iso/SHP.d.ts.map +1 -0
  684. package/dist/generated/iso/SHP.js +5 -0
  685. package/dist/generated/iso/SHP.js.map +1 -0
  686. package/dist/generated/iso/SLE.d.ts +2 -0
  687. package/dist/generated/iso/SLE.d.ts.map +1 -0
  688. package/dist/generated/iso/SLE.js +5 -0
  689. package/dist/generated/iso/SLE.js.map +1 -0
  690. package/dist/generated/iso/SOS.d.ts +2 -0
  691. package/dist/generated/iso/SOS.d.ts.map +1 -0
  692. package/dist/generated/iso/SOS.js +5 -0
  693. package/dist/generated/iso/SOS.js.map +1 -0
  694. package/dist/generated/iso/SRD.d.ts +2 -0
  695. package/dist/generated/iso/SRD.d.ts.map +1 -0
  696. package/dist/generated/iso/SRD.js +5 -0
  697. package/dist/generated/iso/SRD.js.map +1 -0
  698. package/dist/generated/iso/SSP.d.ts +2 -0
  699. package/dist/generated/iso/SSP.d.ts.map +1 -0
  700. package/dist/generated/iso/SSP.js +5 -0
  701. package/dist/generated/iso/SSP.js.map +1 -0
  702. package/dist/generated/iso/STN.d.ts +2 -0
  703. package/dist/generated/iso/STN.d.ts.map +1 -0
  704. package/dist/generated/iso/STN.js +5 -0
  705. package/dist/generated/iso/STN.js.map +1 -0
  706. package/dist/generated/iso/SVC.d.ts +2 -0
  707. package/dist/generated/iso/SVC.d.ts.map +1 -0
  708. package/dist/generated/iso/SVC.js +5 -0
  709. package/dist/generated/iso/SVC.js.map +1 -0
  710. package/dist/generated/iso/SYP.d.ts +2 -0
  711. package/dist/generated/iso/SYP.d.ts.map +1 -0
  712. package/dist/generated/iso/SYP.js +5 -0
  713. package/dist/generated/iso/SYP.js.map +1 -0
  714. package/dist/generated/iso/SZL.d.ts +2 -0
  715. package/dist/generated/iso/SZL.d.ts.map +1 -0
  716. package/dist/generated/iso/SZL.js +5 -0
  717. package/dist/generated/iso/SZL.js.map +1 -0
  718. package/dist/generated/iso/THB.d.ts +2 -0
  719. package/dist/generated/iso/THB.d.ts.map +1 -0
  720. package/dist/generated/iso/THB.js +5 -0
  721. package/dist/generated/iso/THB.js.map +1 -0
  722. package/dist/generated/iso/TJS.d.ts +2 -0
  723. package/dist/generated/iso/TJS.d.ts.map +1 -0
  724. package/dist/generated/iso/TJS.js +5 -0
  725. package/dist/generated/iso/TJS.js.map +1 -0
  726. package/dist/generated/iso/TMT.d.ts +2 -0
  727. package/dist/generated/iso/TMT.d.ts.map +1 -0
  728. package/dist/generated/iso/TMT.js +5 -0
  729. package/dist/generated/iso/TMT.js.map +1 -0
  730. package/dist/generated/iso/TND.d.ts +2 -0
  731. package/dist/generated/iso/TND.d.ts.map +1 -0
  732. package/dist/generated/iso/TND.js +5 -0
  733. package/dist/generated/iso/TND.js.map +1 -0
  734. package/dist/generated/iso/TOP.d.ts +2 -0
  735. package/dist/generated/iso/TOP.d.ts.map +1 -0
  736. package/dist/generated/iso/TOP.js +5 -0
  737. package/dist/generated/iso/TOP.js.map +1 -0
  738. package/dist/generated/iso/TRY.d.ts +2 -0
  739. package/dist/generated/iso/TRY.d.ts.map +1 -0
  740. package/dist/generated/iso/TRY.js +5 -0
  741. package/dist/generated/iso/TRY.js.map +1 -0
  742. package/dist/generated/iso/TTD.d.ts +2 -0
  743. package/dist/generated/iso/TTD.d.ts.map +1 -0
  744. package/dist/generated/iso/TTD.js +5 -0
  745. package/dist/generated/iso/TTD.js.map +1 -0
  746. package/dist/generated/iso/TWD.d.ts +2 -0
  747. package/dist/generated/iso/TWD.d.ts.map +1 -0
  748. package/dist/generated/iso/TWD.js +5 -0
  749. package/dist/generated/iso/TWD.js.map +1 -0
  750. package/dist/generated/iso/TZS.d.ts +2 -0
  751. package/dist/generated/iso/TZS.d.ts.map +1 -0
  752. package/dist/generated/iso/TZS.js +5 -0
  753. package/dist/generated/iso/TZS.js.map +1 -0
  754. package/dist/generated/iso/UAH.d.ts +2 -0
  755. package/dist/generated/iso/UAH.d.ts.map +1 -0
  756. package/dist/generated/iso/UAH.js +5 -0
  757. package/dist/generated/iso/UAH.js.map +1 -0
  758. package/dist/generated/iso/UGX.d.ts +2 -0
  759. package/dist/generated/iso/UGX.d.ts.map +1 -0
  760. package/dist/generated/iso/UGX.js +5 -0
  761. package/dist/generated/iso/UGX.js.map +1 -0
  762. package/dist/generated/iso/USD.d.ts +2 -0
  763. package/dist/generated/iso/USD.d.ts.map +1 -0
  764. package/dist/generated/iso/USD.js +5 -0
  765. package/dist/generated/iso/USD.js.map +1 -0
  766. package/dist/generated/iso/USN.d.ts +2 -0
  767. package/dist/generated/iso/USN.d.ts.map +1 -0
  768. package/dist/generated/iso/USN.js +5 -0
  769. package/dist/generated/iso/USN.js.map +1 -0
  770. package/dist/generated/iso/UYI.d.ts +2 -0
  771. package/dist/generated/iso/UYI.d.ts.map +1 -0
  772. package/dist/generated/iso/UYI.js +5 -0
  773. package/dist/generated/iso/UYI.js.map +1 -0
  774. package/dist/generated/iso/UYU.d.ts +2 -0
  775. package/dist/generated/iso/UYU.d.ts.map +1 -0
  776. package/dist/generated/iso/UYU.js +5 -0
  777. package/dist/generated/iso/UYU.js.map +1 -0
  778. package/dist/generated/iso/UYW.d.ts +2 -0
  779. package/dist/generated/iso/UYW.d.ts.map +1 -0
  780. package/dist/generated/iso/UYW.js +5 -0
  781. package/dist/generated/iso/UYW.js.map +1 -0
  782. package/dist/generated/iso/UZS.d.ts +2 -0
  783. package/dist/generated/iso/UZS.d.ts.map +1 -0
  784. package/dist/generated/iso/UZS.js +5 -0
  785. package/dist/generated/iso/UZS.js.map +1 -0
  786. package/dist/generated/iso/VED.d.ts +2 -0
  787. package/dist/generated/iso/VED.d.ts.map +1 -0
  788. package/dist/generated/iso/VED.js +5 -0
  789. package/dist/generated/iso/VED.js.map +1 -0
  790. package/dist/generated/iso/VES.d.ts +2 -0
  791. package/dist/generated/iso/VES.d.ts.map +1 -0
  792. package/dist/generated/iso/VES.js +5 -0
  793. package/dist/generated/iso/VES.js.map +1 -0
  794. package/dist/generated/iso/VND.d.ts +2 -0
  795. package/dist/generated/iso/VND.d.ts.map +1 -0
  796. package/dist/generated/iso/VND.js +5 -0
  797. package/dist/generated/iso/VND.js.map +1 -0
  798. package/dist/generated/iso/VUV.d.ts +2 -0
  799. package/dist/generated/iso/VUV.d.ts.map +1 -0
  800. package/dist/generated/iso/VUV.js +5 -0
  801. package/dist/generated/iso/VUV.js.map +1 -0
  802. package/dist/generated/iso/WST.d.ts +2 -0
  803. package/dist/generated/iso/WST.d.ts.map +1 -0
  804. package/dist/generated/iso/WST.js +5 -0
  805. package/dist/generated/iso/WST.js.map +1 -0
  806. package/dist/generated/iso/XAD.d.ts +2 -0
  807. package/dist/generated/iso/XAD.d.ts.map +1 -0
  808. package/dist/generated/iso/XAD.js +5 -0
  809. package/dist/generated/iso/XAD.js.map +1 -0
  810. package/dist/generated/iso/XAF.d.ts +2 -0
  811. package/dist/generated/iso/XAF.d.ts.map +1 -0
  812. package/dist/generated/iso/XAF.js +5 -0
  813. package/dist/generated/iso/XAF.js.map +1 -0
  814. package/dist/generated/iso/XCD.d.ts +2 -0
  815. package/dist/generated/iso/XCD.d.ts.map +1 -0
  816. package/dist/generated/iso/XCD.js +5 -0
  817. package/dist/generated/iso/XCD.js.map +1 -0
  818. package/dist/generated/iso/XCG.d.ts +2 -0
  819. package/dist/generated/iso/XCG.d.ts.map +1 -0
  820. package/dist/generated/iso/XCG.js +5 -0
  821. package/dist/generated/iso/XCG.js.map +1 -0
  822. package/dist/generated/iso/XOF.d.ts +2 -0
  823. package/dist/generated/iso/XOF.d.ts.map +1 -0
  824. package/dist/generated/iso/XOF.js +5 -0
  825. package/dist/generated/iso/XOF.js.map +1 -0
  826. package/dist/generated/iso/XPF.d.ts +2 -0
  827. package/dist/generated/iso/XPF.d.ts.map +1 -0
  828. package/dist/generated/iso/XPF.js +5 -0
  829. package/dist/generated/iso/XPF.js.map +1 -0
  830. package/dist/generated/iso/YER.d.ts +2 -0
  831. package/dist/generated/iso/YER.d.ts.map +1 -0
  832. package/dist/generated/iso/YER.js +5 -0
  833. package/dist/generated/iso/YER.js.map +1 -0
  834. package/dist/generated/iso/ZAR.d.ts +2 -0
  835. package/dist/generated/iso/ZAR.d.ts.map +1 -0
  836. package/dist/generated/iso/ZAR.js +5 -0
  837. package/dist/generated/iso/ZAR.js.map +1 -0
  838. package/dist/generated/iso/ZMW.d.ts +2 -0
  839. package/dist/generated/iso/ZMW.d.ts.map +1 -0
  840. package/dist/generated/iso/ZMW.js +5 -0
  841. package/dist/generated/iso/ZMW.js.map +1 -0
  842. package/dist/generated/iso/ZWG.d.ts +2 -0
  843. package/dist/generated/iso/ZWG.d.ts.map +1 -0
  844. package/dist/generated/iso/ZWG.js +5 -0
  845. package/dist/generated/iso/ZWG.js.map +1 -0
  846. package/dist/generated/iso4217-numeric.d.ts +3 -0
  847. package/dist/generated/iso4217-numeric.d.ts.map +1 -0
  848. package/dist/generated/iso4217-numeric.js +184 -0
  849. package/dist/generated/iso4217-numeric.js.map +1 -0
  850. package/dist/generated/rbnf-de.d.ts +3 -0
  851. package/dist/generated/rbnf-de.d.ts.map +1 -0
  852. package/dist/generated/rbnf-de.js +5 -0
  853. package/dist/generated/rbnf-de.js.map +1 -0
  854. package/dist/generated/rbnf-en.d.ts +3 -0
  855. package/dist/generated/rbnf-en.d.ts.map +1 -0
  856. package/dist/generated/rbnf-en.js +5 -0
  857. package/dist/generated/rbnf-en.js.map +1 -0
  858. package/dist/generated/rbnf-es.d.ts +3 -0
  859. package/dist/generated/rbnf-es.d.ts.map +1 -0
  860. package/dist/generated/rbnf-es.js +5 -0
  861. package/dist/generated/rbnf-es.js.map +1 -0
  862. package/dist/generated/rbnf-fr.d.ts +3 -0
  863. package/dist/generated/rbnf-fr.d.ts.map +1 -0
  864. package/dist/generated/rbnf-fr.js +5 -0
  865. package/dist/generated/rbnf-fr.js.map +1 -0
  866. package/dist/generated/rbnf-it.d.ts +3 -0
  867. package/dist/generated/rbnf-it.d.ts.map +1 -0
  868. package/dist/generated/rbnf-it.js +5 -0
  869. package/dist/generated/rbnf-it.js.map +1 -0
  870. package/dist/generated/rbnf-nl.d.ts +3 -0
  871. package/dist/generated/rbnf-nl.d.ts.map +1 -0
  872. package/dist/generated/rbnf-nl.js +5 -0
  873. package/dist/generated/rbnf-nl.js.map +1 -0
  874. package/dist/generated/rbnf-pt.d.ts +3 -0
  875. package/dist/generated/rbnf-pt.d.ts.map +1 -0
  876. package/dist/generated/rbnf-pt.js +5 -0
  877. package/dist/generated/rbnf-pt.js.map +1 -0
  878. package/dist/generated/territories.d.ts +6 -0
  879. package/dist/generated/territories.d.ts.map +1 -0
  880. package/dist/generated/territories.js +275 -0
  881. package/dist/generated/territories.js.map +1 -0
  882. package/dist/index.d.ts +1 -0
  883. package/dist/index.d.ts.map +1 -1
  884. package/dist/index.js +2 -0
  885. package/dist/index.js.map +1 -1
  886. package/dist/kysely.d.ts.map +1 -1
  887. package/dist/kysely.js +2 -2
  888. package/dist/kysely.js.map +1 -1
  889. package/dist/math.d.ts +41 -0
  890. package/dist/math.d.ts.map +1 -0
  891. package/dist/math.js +132 -0
  892. package/dist/math.js.map +1 -0
  893. package/dist/money.d.ts +39 -57
  894. package/dist/money.d.ts.map +1 -1
  895. package/dist/money.js +118 -128
  896. package/dist/money.js.map +1 -1
  897. package/dist/parse.js +7 -7
  898. package/dist/parse.js.map +1 -1
  899. package/dist/plugins/adyen.d.ts +2 -0
  900. package/dist/plugins/adyen.d.ts.map +1 -1
  901. package/dist/plugins/adyen.js +2 -0
  902. package/dist/plugins/adyen.js.map +1 -1
  903. package/dist/plugins/all.d.ts +18 -2
  904. package/dist/plugins/all.d.ts.map +1 -1
  905. package/dist/plugins/all.js +19 -2
  906. package/dist/plugins/all.js.map +1 -1
  907. package/dist/plugins/allocate.d.ts +1 -0
  908. package/dist/plugins/allocate.d.ts.map +1 -1
  909. package/dist/plugins/allocate.js +2 -0
  910. package/dist/plugins/allocate.js.map +1 -1
  911. package/dist/plugins/braintree.d.ts +1 -0
  912. package/dist/plugins/braintree.d.ts.map +1 -1
  913. package/dist/plugins/braintree.js +2 -0
  914. package/dist/plugins/braintree.js.map +1 -1
  915. package/dist/plugins/cash.d.ts +1 -0
  916. package/dist/plugins/cash.d.ts.map +1 -1
  917. package/dist/plugins/cash.js +2 -0
  918. package/dist/plugins/cash.js.map +1 -1
  919. package/dist/plugins/checkout.d.ts +1 -0
  920. package/dist/plugins/checkout.d.ts.map +1 -1
  921. package/dist/plugins/checkout.js +2 -0
  922. package/dist/plugins/checkout.js.map +1 -1
  923. package/dist/plugins/convert.d.ts +5 -0
  924. package/dist/plugins/convert.d.ts.map +1 -1
  925. package/dist/plugins/convert.js +2 -0
  926. package/dist/plugins/convert.js.map +1 -1
  927. package/dist/plugins/core.d.ts +78 -0
  928. package/dist/plugins/core.d.ts.map +1 -0
  929. package/dist/plugins/core.js +104 -0
  930. package/dist/plugins/core.js.map +1 -0
  931. package/dist/plugins/exact.d.ts +1 -0
  932. package/dist/plugins/exact.d.ts.map +1 -1
  933. package/dist/plugins/exact.js +2 -0
  934. package/dist/plugins/exact.js.map +1 -1
  935. package/dist/plugins/fixed-money.d.ts +31 -0
  936. package/dist/plugins/fixed-money.d.ts.map +1 -0
  937. package/dist/plugins/fixed-money.js +29 -0
  938. package/dist/plugins/fixed-money.js.map +1 -0
  939. package/dist/plugins/format.d.ts +5 -0
  940. package/dist/plugins/format.d.ts.map +1 -1
  941. package/dist/plugins/format.js +2 -0
  942. package/dist/plugins/format.js.map +1 -1
  943. package/dist/plugins/iso.d.ts +2 -0
  944. package/dist/plugins/iso.d.ts.map +1 -0
  945. package/dist/plugins/iso.js +9 -0
  946. package/dist/plugins/iso.js.map +1 -0
  947. package/dist/plugins/klarna.d.ts +1 -0
  948. package/dist/plugins/klarna.d.ts.map +1 -1
  949. package/dist/plugins/klarna.js +2 -0
  950. package/dist/plugins/klarna.js.map +1 -1
  951. package/dist/plugins/math.d.ts +20 -0
  952. package/dist/plugins/math.d.ts.map +1 -0
  953. package/dist/plugins/math.js +24 -0
  954. package/dist/plugins/math.js.map +1 -0
  955. package/dist/plugins/paypal.d.ts +5 -0
  956. package/dist/plugins/paypal.d.ts.map +1 -1
  957. package/dist/plugins/paypal.js +6 -0
  958. package/dist/plugins/paypal.js.map +1 -1
  959. package/dist/plugins/prisma.d.ts +5 -0
  960. package/dist/plugins/prisma.d.ts.map +1 -1
  961. package/dist/plugins/prisma.js +6 -0
  962. package/dist/plugins/prisma.js.map +1 -1
  963. package/dist/plugins/stripe.d.ts +5 -0
  964. package/dist/plugins/stripe.d.ts.map +1 -1
  965. package/dist/plugins/stripe.js +6 -0
  966. package/dist/plugins/stripe.js.map +1 -1
  967. package/dist/plugins/tax.d.ts +1 -0
  968. package/dist/plugins/tax.d.ts.map +1 -1
  969. package/dist/plugins/tax.js +6 -0
  970. package/dist/plugins/tax.js.map +1 -1
  971. package/dist/policy.d.ts.map +1 -1
  972. package/dist/policy.js +5 -6
  973. package/dist/policy.js.map +1 -1
  974. package/dist/pricing.d.ts +52 -0
  975. package/dist/pricing.d.ts.map +1 -0
  976. package/dist/pricing.js +100 -0
  977. package/dist/pricing.js.map +1 -0
  978. package/dist/prisma.d.ts.map +1 -1
  979. package/dist/prisma.js +6 -2
  980. package/dist/prisma.js.map +1 -1
  981. package/dist/provider.js +2 -2
  982. package/dist/provider.js.map +1 -1
  983. package/dist/rate-text.d.ts +6 -0
  984. package/dist/rate-text.d.ts.map +1 -1
  985. package/dist/rate-text.js +24 -1
  986. package/dist/rate-text.js.map +1 -1
  987. package/dist/rate.d.ts.map +1 -1
  988. package/dist/rate.js +2 -3
  989. package/dist/rate.js.map +1 -1
  990. package/dist/rbnf.d.ts +29 -0
  991. package/dist/rbnf.d.ts.map +1 -0
  992. package/dist/rbnf.js +301 -0
  993. package/dist/rbnf.js.map +1 -0
  994. package/dist/rounding.d.ts +15 -0
  995. package/dist/rounding.d.ts.map +1 -1
  996. package/dist/rounding.js +32 -0
  997. package/dist/rounding.js.map +1 -1
  998. package/dist/scale.d.ts +8 -0
  999. package/dist/scale.d.ts.map +1 -0
  1000. package/dist/scale.js +34 -0
  1001. package/dist/scale.js.map +1 -0
  1002. package/dist/schema.d.ts.map +1 -1
  1003. package/dist/schema.js +4 -5
  1004. package/dist/schema.js.map +1 -1
  1005. package/dist/territories.d.ts +40 -0
  1006. package/dist/territories.d.ts.map +1 -0
  1007. package/dist/territories.js +71 -0
  1008. package/dist/territories.js.map +1 -0
  1009. package/dist/testing/arbitraries.d.ts.map +1 -1
  1010. package/dist/testing/arbitraries.js +4 -4
  1011. package/dist/testing/arbitraries.js.map +1 -1
  1012. package/dist/testing/index.js +1 -1
  1013. package/dist/testing/index.js.map +1 -1
  1014. package/dist/tiers.d.ts +95 -0
  1015. package/dist/tiers.d.ts.map +1 -0
  1016. package/dist/tiers.js +173 -0
  1017. package/dist/tiers.js.map +1 -0
  1018. package/dist/valibot.d.ts.map +1 -1
  1019. package/dist/valibot.js +4 -1
  1020. package/dist/valibot.js.map +1 -1
  1021. package/dist/wire.d.ts +105 -0
  1022. package/dist/wire.d.ts.map +1 -0
  1023. package/dist/wire.js +212 -0
  1024. package/dist/wire.js.map +1 -0
  1025. package/dist/words/de.d.ts +4 -0
  1026. package/dist/words/de.d.ts.map +1 -0
  1027. package/dist/words/de.js +8 -0
  1028. package/dist/words/de.js.map +1 -0
  1029. package/dist/words/en.d.ts +4 -0
  1030. package/dist/words/en.d.ts.map +1 -0
  1031. package/dist/words/en.js +8 -0
  1032. package/dist/words/en.js.map +1 -0
  1033. package/dist/words/es.d.ts +4 -0
  1034. package/dist/words/es.d.ts.map +1 -0
  1035. package/dist/words/es.js +8 -0
  1036. package/dist/words/es.js.map +1 -0
  1037. package/dist/words/fr.d.ts +4 -0
  1038. package/dist/words/fr.d.ts.map +1 -0
  1039. package/dist/words/fr.js +8 -0
  1040. package/dist/words/fr.js.map +1 -0
  1041. package/dist/words/it.d.ts +4 -0
  1042. package/dist/words/it.d.ts.map +1 -0
  1043. package/dist/words/it.js +8 -0
  1044. package/dist/words/it.js.map +1 -0
  1045. package/dist/words/nl.d.ts +4 -0
  1046. package/dist/words/nl.d.ts.map +1 -0
  1047. package/dist/words/nl.js +8 -0
  1048. package/dist/words/nl.js.map +1 -0
  1049. package/dist/words/pt.d.ts +4 -0
  1050. package/dist/words/pt.d.ts.map +1 -0
  1051. package/dist/words/pt.js +8 -0
  1052. package/dist/words/pt.js.map +1 -0
  1053. package/dist/words.d.ts +63 -0
  1054. package/dist/words.d.ts.map +1 -0
  1055. package/dist/words.js +107 -0
  1056. package/dist/words.js.map +1 -0
  1057. package/dist/zod.d.ts.map +1 -1
  1058. package/dist/zod.js +1 -1
  1059. package/dist/zod.js.map +1 -1
  1060. package/package.json +312 -54
  1061. package/src/adyen-fx.ts +1 -1
  1062. package/src/allocate.ts +4 -3
  1063. package/src/cash.ts +26 -0
  1064. package/src/convert.ts +2 -3
  1065. package/src/crypto.ts +129 -0
  1066. package/src/currencies.ts +123 -0
  1067. package/src/currency.ts +45 -14
  1068. package/src/decimal.ts +98 -10
  1069. package/src/ecb.ts +75 -16
  1070. package/src/entries/adyen-fx.ts +5 -0
  1071. package/src/entries/boc.ts +5 -0
  1072. package/src/entries/boe.ts +5 -0
  1073. package/src/entries/crypto.ts +5 -0
  1074. package/src/entries/currencies.ts +5 -0
  1075. package/src/entries/drizzle-mysql.ts +5 -0
  1076. package/src/entries/drizzle-pg.ts +5 -0
  1077. package/src/entries/drizzle-sqlite.ts +5 -0
  1078. package/src/entries/ecb.ts +5 -0
  1079. package/src/entries/fed.ts +5 -0
  1080. package/src/entries/fetch.ts +5 -0
  1081. package/src/entries/finance.ts +5 -0
  1082. package/src/entries/historic.ts +5 -0
  1083. package/src/entries/history.ts +5 -0
  1084. package/src/entries/hmrc.ts +5 -0
  1085. package/src/entries/kysely.ts +5 -0
  1086. package/src/entries/parse.ts +5 -0
  1087. package/src/entries/pg.ts +5 -0
  1088. package/src/entries/policy.ts +5 -0
  1089. package/src/entries/pricing.ts +5 -0
  1090. package/src/entries/stripe-fx.ts +5 -0
  1091. package/src/entries/testing-arbitraries.ts +5 -0
  1092. package/src/entries/testing-index.ts +5 -0
  1093. package/src/entries/testing-jest.ts +5 -0
  1094. package/src/entries/testing-vitest.ts +5 -0
  1095. package/src/entries/valibot.ts +5 -0
  1096. package/src/entries/wire.ts +5 -0
  1097. package/src/entries/zod.ts +5 -0
  1098. package/src/exact.ts +3 -3
  1099. package/src/fetch.ts +20 -4
  1100. package/src/finance.ts +1219 -0
  1101. package/src/fixed-money.ts +38 -0
  1102. package/src/fixed.ts +86 -66
  1103. package/src/fn.ts +17 -0
  1104. package/src/format.ts +28 -9
  1105. package/src/generated/crypto.ts +15 -0
  1106. package/src/generated/iso/AED.ts +5 -0
  1107. package/src/generated/iso/AFN.ts +5 -0
  1108. package/src/generated/iso/ALL.ts +5 -0
  1109. package/src/generated/iso/AMD.ts +5 -0
  1110. package/src/generated/iso/AOA.ts +5 -0
  1111. package/src/generated/iso/ARS.ts +5 -0
  1112. package/src/generated/iso/AUD.ts +5 -0
  1113. package/src/generated/iso/AWG.ts +5 -0
  1114. package/src/generated/iso/AZN.ts +5 -0
  1115. package/src/generated/iso/BAM.ts +5 -0
  1116. package/src/generated/iso/BBD.ts +5 -0
  1117. package/src/generated/iso/BDT.ts +5 -0
  1118. package/src/generated/iso/BHD.ts +5 -0
  1119. package/src/generated/iso/BIF.ts +5 -0
  1120. package/src/generated/iso/BMD.ts +5 -0
  1121. package/src/generated/iso/BND.ts +5 -0
  1122. package/src/generated/iso/BOB.ts +5 -0
  1123. package/src/generated/iso/BOV.ts +5 -0
  1124. package/src/generated/iso/BRL.ts +5 -0
  1125. package/src/generated/iso/BSD.ts +5 -0
  1126. package/src/generated/iso/BTN.ts +5 -0
  1127. package/src/generated/iso/BWP.ts +5 -0
  1128. package/src/generated/iso/BYN.ts +5 -0
  1129. package/src/generated/iso/BZD.ts +5 -0
  1130. package/src/generated/iso/CAD.ts +5 -0
  1131. package/src/generated/iso/CDF.ts +5 -0
  1132. package/src/generated/iso/CHE.ts +5 -0
  1133. package/src/generated/iso/CHF.ts +5 -0
  1134. package/src/generated/iso/CHW.ts +5 -0
  1135. package/src/generated/iso/CLF.ts +5 -0
  1136. package/src/generated/iso/CLP.ts +5 -0
  1137. package/src/generated/iso/CNY.ts +5 -0
  1138. package/src/generated/iso/COP.ts +5 -0
  1139. package/src/generated/iso/COU.ts +5 -0
  1140. package/src/generated/iso/CRC.ts +5 -0
  1141. package/src/generated/iso/CUP.ts +5 -0
  1142. package/src/generated/iso/CVE.ts +5 -0
  1143. package/src/generated/iso/CZK.ts +5 -0
  1144. package/src/generated/iso/DJF.ts +5 -0
  1145. package/src/generated/iso/DKK.ts +5 -0
  1146. package/src/generated/iso/DOP.ts +5 -0
  1147. package/src/generated/iso/DZD.ts +5 -0
  1148. package/src/generated/iso/EGP.ts +5 -0
  1149. package/src/generated/iso/ERN.ts +5 -0
  1150. package/src/generated/iso/ETB.ts +5 -0
  1151. package/src/generated/iso/EUR.ts +5 -0
  1152. package/src/generated/iso/FJD.ts +5 -0
  1153. package/src/generated/iso/FKP.ts +5 -0
  1154. package/src/generated/iso/GBP.ts +5 -0
  1155. package/src/generated/iso/GEL.ts +5 -0
  1156. package/src/generated/iso/GHS.ts +5 -0
  1157. package/src/generated/iso/GIP.ts +5 -0
  1158. package/src/generated/iso/GMD.ts +5 -0
  1159. package/src/generated/iso/GNF.ts +5 -0
  1160. package/src/generated/iso/GTQ.ts +5 -0
  1161. package/src/generated/iso/GYD.ts +5 -0
  1162. package/src/generated/iso/HKD.ts +5 -0
  1163. package/src/generated/iso/HNL.ts +5 -0
  1164. package/src/generated/iso/HTG.ts +5 -0
  1165. package/src/generated/iso/HUF.ts +5 -0
  1166. package/src/generated/iso/IDR.ts +5 -0
  1167. package/src/generated/iso/ILS.ts +5 -0
  1168. package/src/generated/iso/INR.ts +5 -0
  1169. package/src/generated/iso/IQD.ts +5 -0
  1170. package/src/generated/iso/IRR.ts +5 -0
  1171. package/src/generated/iso/ISK.ts +5 -0
  1172. package/src/generated/iso/JMD.ts +5 -0
  1173. package/src/generated/iso/JOD.ts +5 -0
  1174. package/src/generated/iso/JPY.ts +5 -0
  1175. package/src/generated/iso/KES.ts +5 -0
  1176. package/src/generated/iso/KGS.ts +5 -0
  1177. package/src/generated/iso/KHR.ts +5 -0
  1178. package/src/generated/iso/KMF.ts +5 -0
  1179. package/src/generated/iso/KPW.ts +5 -0
  1180. package/src/generated/iso/KRW.ts +5 -0
  1181. package/src/generated/iso/KWD.ts +5 -0
  1182. package/src/generated/iso/KYD.ts +5 -0
  1183. package/src/generated/iso/KZT.ts +5 -0
  1184. package/src/generated/iso/LAK.ts +5 -0
  1185. package/src/generated/iso/LBP.ts +5 -0
  1186. package/src/generated/iso/LKR.ts +5 -0
  1187. package/src/generated/iso/LRD.ts +5 -0
  1188. package/src/generated/iso/LSL.ts +5 -0
  1189. package/src/generated/iso/LYD.ts +5 -0
  1190. package/src/generated/iso/MAD.ts +5 -0
  1191. package/src/generated/iso/MDL.ts +5 -0
  1192. package/src/generated/iso/MGA.ts +5 -0
  1193. package/src/generated/iso/MKD.ts +5 -0
  1194. package/src/generated/iso/MMK.ts +5 -0
  1195. package/src/generated/iso/MNT.ts +5 -0
  1196. package/src/generated/iso/MOP.ts +5 -0
  1197. package/src/generated/iso/MRU.ts +5 -0
  1198. package/src/generated/iso/MUR.ts +5 -0
  1199. package/src/generated/iso/MVR.ts +5 -0
  1200. package/src/generated/iso/MWK.ts +5 -0
  1201. package/src/generated/iso/MXN.ts +5 -0
  1202. package/src/generated/iso/MXV.ts +5 -0
  1203. package/src/generated/iso/MYR.ts +5 -0
  1204. package/src/generated/iso/MZN.ts +5 -0
  1205. package/src/generated/iso/NAD.ts +5 -0
  1206. package/src/generated/iso/NGN.ts +5 -0
  1207. package/src/generated/iso/NIO.ts +5 -0
  1208. package/src/generated/iso/NOK.ts +5 -0
  1209. package/src/generated/iso/NPR.ts +5 -0
  1210. package/src/generated/iso/NZD.ts +5 -0
  1211. package/src/generated/iso/OMR.ts +5 -0
  1212. package/src/generated/iso/PAB.ts +5 -0
  1213. package/src/generated/iso/PEN.ts +5 -0
  1214. package/src/generated/iso/PGK.ts +5 -0
  1215. package/src/generated/iso/PHP.ts +5 -0
  1216. package/src/generated/iso/PKR.ts +5 -0
  1217. package/src/generated/iso/PLN.ts +5 -0
  1218. package/src/generated/iso/PYG.ts +5 -0
  1219. package/src/generated/iso/QAR.ts +5 -0
  1220. package/src/generated/iso/RON.ts +5 -0
  1221. package/src/generated/iso/RSD.ts +5 -0
  1222. package/src/generated/iso/RUB.ts +5 -0
  1223. package/src/generated/iso/RWF.ts +5 -0
  1224. package/src/generated/iso/SAR.ts +5 -0
  1225. package/src/generated/iso/SBD.ts +5 -0
  1226. package/src/generated/iso/SCR.ts +5 -0
  1227. package/src/generated/iso/SDG.ts +5 -0
  1228. package/src/generated/iso/SEK.ts +5 -0
  1229. package/src/generated/iso/SGD.ts +5 -0
  1230. package/src/generated/iso/SHP.ts +5 -0
  1231. package/src/generated/iso/SLE.ts +5 -0
  1232. package/src/generated/iso/SOS.ts +5 -0
  1233. package/src/generated/iso/SRD.ts +5 -0
  1234. package/src/generated/iso/SSP.ts +5 -0
  1235. package/src/generated/iso/STN.ts +5 -0
  1236. package/src/generated/iso/SVC.ts +5 -0
  1237. package/src/generated/iso/SYP.ts +5 -0
  1238. package/src/generated/iso/SZL.ts +5 -0
  1239. package/src/generated/iso/THB.ts +5 -0
  1240. package/src/generated/iso/TJS.ts +5 -0
  1241. package/src/generated/iso/TMT.ts +5 -0
  1242. package/src/generated/iso/TND.ts +5 -0
  1243. package/src/generated/iso/TOP.ts +5 -0
  1244. package/src/generated/iso/TRY.ts +5 -0
  1245. package/src/generated/iso/TTD.ts +5 -0
  1246. package/src/generated/iso/TWD.ts +5 -0
  1247. package/src/generated/iso/TZS.ts +5 -0
  1248. package/src/generated/iso/UAH.ts +5 -0
  1249. package/src/generated/iso/UGX.ts +5 -0
  1250. package/src/generated/iso/USD.ts +5 -0
  1251. package/src/generated/iso/USN.ts +5 -0
  1252. package/src/generated/iso/UYI.ts +5 -0
  1253. package/src/generated/iso/UYU.ts +5 -0
  1254. package/src/generated/iso/UYW.ts +5 -0
  1255. package/src/generated/iso/UZS.ts +5 -0
  1256. package/src/generated/iso/VED.ts +5 -0
  1257. package/src/generated/iso/VES.ts +5 -0
  1258. package/src/generated/iso/VND.ts +5 -0
  1259. package/src/generated/iso/VUV.ts +5 -0
  1260. package/src/generated/iso/WST.ts +5 -0
  1261. package/src/generated/iso/XAD.ts +5 -0
  1262. package/src/generated/iso/XAF.ts +5 -0
  1263. package/src/generated/iso/XCD.ts +5 -0
  1264. package/src/generated/iso/XCG.ts +5 -0
  1265. package/src/generated/iso/XOF.ts +5 -0
  1266. package/src/generated/iso/XPF.ts +5 -0
  1267. package/src/generated/iso/YER.ts +5 -0
  1268. package/src/generated/iso/ZAR.ts +5 -0
  1269. package/src/generated/iso/ZMW.ts +5 -0
  1270. package/src/generated/iso/ZWG.ts +5 -0
  1271. package/src/generated/iso4217-numeric.ts +184 -0
  1272. package/src/generated/rbnf-de.ts +5 -0
  1273. package/src/generated/rbnf-en.ts +5 -0
  1274. package/src/generated/rbnf-es.ts +5 -0
  1275. package/src/generated/rbnf-fr.ts +5 -0
  1276. package/src/generated/rbnf-it.ts +5 -0
  1277. package/src/generated/rbnf-nl.ts +5 -0
  1278. package/src/generated/rbnf-pt.ts +5 -0
  1279. package/src/generated/territories.ts +277 -0
  1280. package/src/index.ts +3 -0
  1281. package/src/kysely.ts +4 -3
  1282. package/src/math.ts +167 -0
  1283. package/src/money.ts +138 -140
  1284. package/src/parse.ts +7 -7
  1285. package/src/plugins/adyen.ts +2 -0
  1286. package/src/plugins/all.ts +19 -1
  1287. package/src/plugins/allocate.ts +2 -0
  1288. package/src/plugins/braintree.ts +2 -0
  1289. package/src/plugins/cash.ts +2 -0
  1290. package/src/plugins/checkout.ts +2 -0
  1291. package/src/plugins/convert.ts +2 -0
  1292. package/src/plugins/core.ts +195 -0
  1293. package/src/plugins/exact.ts +2 -0
  1294. package/src/plugins/fixed-money.ts +57 -0
  1295. package/src/plugins/format.ts +2 -0
  1296. package/src/plugins/iso.ts +9 -0
  1297. package/src/plugins/klarna.ts +2 -0
  1298. package/src/plugins/math.ts +43 -0
  1299. package/src/plugins/paypal.ts +2 -0
  1300. package/src/plugins/prisma.ts +2 -0
  1301. package/src/plugins/stripe.ts +2 -0
  1302. package/src/plugins/tax.ts +2 -0
  1303. package/src/policy.ts +5 -8
  1304. package/src/pricing.ts +155 -0
  1305. package/src/prisma.ts +6 -1
  1306. package/src/provider.ts +2 -2
  1307. package/src/rate-text.ts +27 -1
  1308. package/src/rate.ts +2 -2
  1309. package/src/rbnf.ts +389 -0
  1310. package/src/rounding.ts +34 -0
  1311. package/src/scale.ts +42 -0
  1312. package/src/schema.ts +4 -7
  1313. package/src/territories.ts +102 -0
  1314. package/src/testing/arbitraries.ts +4 -4
  1315. package/src/testing/index.ts +1 -1
  1316. package/src/tiers.ts +284 -0
  1317. package/src/valibot.ts +4 -1
  1318. package/src/wire.ts +322 -0
  1319. package/src/words/de.ts +9 -0
  1320. package/src/words/en.ts +9 -0
  1321. package/src/words/es.ts +9 -0
  1322. package/src/words/fr.ts +9 -0
  1323. package/src/words/it.ts +9 -0
  1324. package/src/words/nl.ts +9 -0
  1325. package/src/words/pt.ts +9 -0
  1326. package/src/words.ts +168 -0
  1327. package/src/zod.ts +1 -1
  1328. package/dist/plugins/fixed.d.ts +0 -17
  1329. package/dist/plugins/fixed.d.ts.map +0 -1
  1330. package/dist/plugins/fixed.js +0 -13
  1331. package/dist/plugins/fixed.js.map +0 -1
  1332. package/src/plugins/fixed.ts +0 -29
@@ -0,0 +1,195 @@
1
+ /**
2
+ * The core Money methods (`a.add(b)`, `m.round('halfEven')`, `m.toDecimal()`...), installed on
3
+ * import. The root entry (`@ducatjs/money`) and `/all` import this, so methods are always there for
4
+ * them; `@ducatjs/money/fn` doesn't, so a program written with plain functions keeps only the
5
+ * functions it uses. Each method is a thin wrapper over the free function of the same name, so
6
+ * `a.add(b)` and `add(a, b)` are the same code. Operands are Money only: a bare number is never
7
+ * guessed to mean major or minor units.
8
+ */
9
+ // every ISO 4217 code, so the root entry and /all take any code as a string
10
+ import './iso.js';
11
+ import { formatScaled, type Factor } from '../decimal.js';
12
+ import type { Money } from '../index.js';
13
+ import {
14
+ abs,
15
+ add,
16
+ clamp,
17
+ compare,
18
+ divide,
19
+ equals,
20
+ installCoreMethods,
21
+ identical,
22
+ majorPart,
23
+ max,
24
+ min,
25
+ minorPart,
26
+ multiply,
27
+ negate,
28
+ round,
29
+ sign,
30
+ subtract,
31
+ toMinor,
32
+ toMinorNumber,
33
+ toScale,
34
+ type RoundingInput,
35
+ type RoundingPolicy,
36
+ } from '../money.js';
37
+ import type { RoundingMode } from '../rounding.js';
38
+ import { toBigInt } from '../scale.js';
39
+
40
+ declare module '../index.js' {
41
+ interface Money<C extends string> {
42
+ /** this + other (same currency; any scale) */
43
+ add(other: Money<C>): Money<C>;
44
+ /** this - other */
45
+ subtract(other: Money<C>): Money<C>;
46
+ /**
47
+ * this * factor, rounded to this scale. `factor` is exact: integer, decimal string ('1.075'),
48
+ * bigint or ratio().
49
+ */
50
+ multiply(factor: Factor, rounding?: RoundingInput): Money<C>;
51
+ /** this / divisor, rounded to this scale (or to a policy's scale and increment) */
52
+ divide(divisor: Factor, rounding?: RoundingInput): Money<C>;
53
+ negate(): Money<C>;
54
+ abs(): Money<C>;
55
+ /**
56
+ * Rounds to the currency's exponent (or `scale`), or to a rounding policy. A scale is never
57
+ * negative; round to tens or hundreds with a policy's `increment` or `roundToIncrement`.
58
+ */
59
+ round(rounding: RoundingMode, scale?: number): Money<C>;
60
+ round(policy: RoundingPolicy): Money<C>;
61
+ /**
62
+ * Changes the scale (an integer from 0 to 1000); decreasing it rounds (default 'halfExpand').
63
+ * For tens or hundreds, use an increment: a rounding policy or `roundToIncrement`.
64
+ */
65
+ toScale(scale: number, rounding?: RoundingMode): Money<C>;
66
+ /** -1, 0 or 1; throws on currency mismatch */
67
+ compare(other: Money<C>): -1 | 0 | 1;
68
+ /** same currency and value; a different currency is simply not equal */
69
+ equals(other: Money): boolean;
70
+ lessThan(other: Money<C>): boolean;
71
+ lessThanOrEqual(other: Money<C>): boolean;
72
+ greaterThan(other: Money<C>): boolean;
73
+ greaterThanOrEqual(other: Money<C>): boolean;
74
+ isZero(): boolean;
75
+ isPositive(): boolean;
76
+ isNegative(): boolean;
77
+ sign(): -1 | 0 | 1;
78
+ min(...others: Money<C>[]): Money<C>;
79
+ max(...others: Money<C>[]): Money<C>;
80
+ clamp(lo: Money<C>, hi: Money<C>): Money<C>;
81
+ /** Same currency, value and scale: 1.0 EUR is not identical to 1.00 EUR. */
82
+ identical(other: Money): boolean;
83
+ /**
84
+ * Applies `operation` to this amount and returns its result, so a rounding policy or a
85
+ * conversion reads as one step in a chain: `price.multiply('1.075').with(toCash)`.
86
+ */
87
+ with<R>(operation: (money: Money<C>) => R): R;
88
+ /** The whole major units, truncated toward zero: 12 for 12.34 EUR, -12 for -12.34 EUR. */
89
+ majorPart(): number | bigint;
90
+ /** The rest in 10^-scale units, with the amount's sign: 34 for 12.34 EUR, -34 for -12.34. */
91
+ minorPart(): number | bigint;
92
+ /** Exact decimal string in major units: "12.34" */
93
+ toDecimal(): string;
94
+ /**
95
+ * Units of the currency's minor unit as a bigint (cents for EUR), for BIGINT columns. Exact at
96
+ * any scale; throws RoundingError if the amount has non-zero digits below the minor unit.
97
+ */
98
+ toMinor(): bigint;
99
+ /** Like `toMinor()`, as a number; also throws a RangeError beyond 2^53. */
100
+ toMinorNumber(): number;
101
+ /** Units of 10^-scale as a bigint: 12340n for 12.340 EUR at scale 3. Pair it with the scale. */
102
+ toScaledUnits(): bigint;
103
+ }
104
+ }
105
+
106
+ installCoreMethods({
107
+ add(this: Money, other: Money) {
108
+ return add(this, other);
109
+ },
110
+ subtract(this: Money, other: Money) {
111
+ return subtract(this, other);
112
+ },
113
+ multiply(this: Money, factor: Factor, rounding?: RoundingInput) {
114
+ return multiply(this, factor, rounding);
115
+ },
116
+ divide(this: Money, divisor: Factor, rounding?: RoundingInput) {
117
+ return divide(this, divisor, rounding);
118
+ },
119
+ negate(this: Money) {
120
+ return negate(this);
121
+ },
122
+ abs(this: Money) {
123
+ return abs(this);
124
+ },
125
+ round(this: Money, rounding: RoundingInput, scale?: number) {
126
+ // the free function handles both; the cast only picks its implementation signature
127
+ return round(this, rounding as RoundingMode, scale);
128
+ },
129
+ toScale(this: Money, scale: number, rounding?: RoundingMode) {
130
+ return toScale(this, scale, rounding);
131
+ },
132
+ compare(this: Money, other: Money) {
133
+ return compare(this, other);
134
+ },
135
+ equals(this: Money, other: Money) {
136
+ return equals(this, other);
137
+ },
138
+ lessThan(this: Money, other: Money) {
139
+ return compare(this, other) < 0;
140
+ },
141
+ lessThanOrEqual(this: Money, other: Money) {
142
+ return compare(this, other) <= 0;
143
+ },
144
+ greaterThan(this: Money, other: Money) {
145
+ return compare(this, other) > 0;
146
+ },
147
+ greaterThanOrEqual(this: Money, other: Money) {
148
+ return compare(this, other) >= 0;
149
+ },
150
+ isZero(this: Money) {
151
+ return this.minor == 0;
152
+ },
153
+ isPositive(this: Money) {
154
+ return this.minor > 0;
155
+ },
156
+ isNegative(this: Money) {
157
+ return this.minor < 0;
158
+ },
159
+ sign(this: Money) {
160
+ return sign(this);
161
+ },
162
+ min(this: Money, ...others: Money[]) {
163
+ return min(this, ...others);
164
+ },
165
+ max(this: Money, ...others: Money[]) {
166
+ return max(this, ...others);
167
+ },
168
+ clamp(this: Money, lo: Money, hi: Money) {
169
+ return clamp(this, lo, hi);
170
+ },
171
+ identical(this: Money, other: Money) {
172
+ return identical(this, other);
173
+ },
174
+ with<R>(this: Money, operation: (money: Money) => R) {
175
+ return operation(this);
176
+ },
177
+ majorPart(this: Money) {
178
+ return majorPart(this);
179
+ },
180
+ minorPart(this: Money) {
181
+ return minorPart(this);
182
+ },
183
+ toDecimal(this: Money) {
184
+ return formatScaled(this.minor, this.scale);
185
+ },
186
+ toMinor(this: Money) {
187
+ return toMinor(this);
188
+ },
189
+ toMinorNumber(this: Money) {
190
+ return toMinorNumber(this);
191
+ },
192
+ toScaledUnits(this: Money) {
193
+ return toBigInt(this.minor);
194
+ },
195
+ });
@@ -2,6 +2,8 @@
2
2
  * `@ducatjs/money/exact`: exact rational amounts that round once. Importing this module adds
3
3
  * `Money#exact`.
4
4
  */
5
+ // every ISO 4217 code, as for every entry except /fn
6
+ import './iso.js';
5
7
  import { exact, type ExactMoney } from '../exact.js';
6
8
  import type { Money } from '../index.js';
7
9
  import { extendMoney } from '../money.js';
@@ -0,0 +1,57 @@
1
+ /**
2
+ * `@ducatjs/money/fixed/money`: Fixed and Money together. Everything in `@ducatjs/money/fixed`, plus
3
+ * the conversions between the two; importing this module adds `Money#toFixedPoint()` and
4
+ * `Fixed#toMoney()`.
5
+ */
6
+ // every ISO 4217 code, as for every entry except /fn
7
+ import './iso.js';
8
+ import { Fixed } from '../fixed.js';
9
+ import { fixedToMoney, moneyToFixed } from '../fixed-money.js';
10
+ import type { CurrencyInput, Money } from '../index.js';
11
+ import { extendMoney } from '../money.js';
12
+ import type { RoundingMode } from '../rounding.js';
13
+
14
+ export * from '../fixed.js';
15
+ export * from '../fixed-money.js';
16
+
17
+ declare module '../index.js' {
18
+ interface Money<C extends string> {
19
+ /**
20
+ * The exact Fixed of this amount, at its scale: `money('12.34', 'EUR').toFixedPoint()` is
21
+ * 12.34. Not `toFixed`, which Number, decimal.js and big.js all use for `toFixed(places):
22
+ * string`.
23
+ */
24
+ toFixedPoint(): Fixed;
25
+ }
26
+ }
27
+
28
+ declare module '../fixed.js' {
29
+ interface Fixed {
30
+ /**
31
+ * Money in `currency`, at its exponent. Throws RoundingError when that would drop digits,
32
+ * unless `rounding` is given: `fixed('1.005').toMoney('EUR', 'halfEven')` is 1.00 EUR.
33
+ */
34
+ toMoney<C extends CurrencyInput>(currency: C, rounding?: RoundingMode): Money<C>;
35
+ }
36
+ }
37
+
38
+ extendMoney(
39
+ {
40
+ toFixedPoint(this: Money) {
41
+ return moneyToFixed(this);
42
+ },
43
+ },
44
+ { owner: '@ducatjs/money/fixed/money' },
45
+ );
46
+
47
+ // Non-enumerable, like a class method. Loading the module again replaces it with the same function.
48
+ // This is outside extendMoney's owner registry, which is for Money; it's fine while this module is
49
+ // the only one that defines Fixed#toMoney.
50
+ Object.defineProperty(Fixed.prototype, 'toMoney', {
51
+ value: function toMoney(this: Fixed, currency: CurrencyInput, rounding?: RoundingMode) {
52
+ return fixedToMoney(this, currency, rounding);
53
+ },
54
+ writable: true,
55
+ configurable: true,
56
+ enumerable: false,
57
+ });
@@ -2,6 +2,8 @@
2
2
  * `@ducatjs/money/format`: locale formatting through Intl. Importing this module adds the methods
3
3
  * below.
4
4
  */
5
+ // every ISO 4217 code, as for every entry except /fn
6
+ import './iso.js';
5
7
  import { format, formatToParts } from '../format.js';
6
8
  import type { Money } from '../index.js';
7
9
  import { extendMoney } from '../money.js';
@@ -0,0 +1,9 @@
1
+ /**
2
+ * `@ducatjs/money/iso`: registers every ISO 4217 currency. Every entry that builds or reads Money
3
+ * imports it, so this matters only for `@ducatjs/money/fn`, which doesn't: a `/fn` program imports
4
+ * it to use any ISO code, or `@ducatjs/money/iso/EUR` (one module per code) to carry only the
5
+ * currencies it uses.
6
+ */
7
+ import { registerIsoCurrencies } from '../currency.js';
8
+
9
+ registerIsoCurrencies();
@@ -1,4 +1,6 @@
1
1
  /** `@ducatjs/money/klarna`: Klarna's amount view. Importing this module adds `toKlarna`. */
2
+ // every ISO 4217 code, as for every entry except /fn
3
+ import './iso.js';
2
4
  import { toKlarna, type KlarnaAmountOptions } from '../klarna.js';
3
5
  import type { Money } from '../index.js';
4
6
  import { extendMoney } from '../money.js';
@@ -0,0 +1,43 @@
1
+ /**
2
+ * `@ducatjs/money/math`: averages, ratios between amounts, integral division and scale trimming.
3
+ * Importing this module adds the methods below; `average` is a plain function, like `sum`.
4
+ */
5
+ // every ISO 4217 code, as for every entry except /fn
6
+ import './iso.js';
7
+ import type { Ratio } from '../decimal.js';
8
+ import { divideToIntegral, ratioOf, remainder, trimScale } from '../math.js';
9
+ import type { Money } from '../index.js';
10
+ import { extendMoney } from '../money.js';
11
+
12
+ export * from '../math.js';
13
+
14
+ declare module '../index.js' {
15
+ interface Money<C extends string> {
16
+ /** The exact ratio this / other, e.g. `part.ratioOf(total)` */
17
+ ratioOf(other: Money<C>): Ratio;
18
+ /** How many whole times `divisor` fits into this, truncated toward zero */
19
+ divideToIntegral(divisor: Money<C>): number | bigint;
20
+ /** What is left after taking `divisor` out a whole number of times (this amount's sign) */
21
+ remainder(divisor: Money<C>): Money<C>;
22
+ /** The smallest scale, not below `minimumScale` (default the ISO exponent), that is exact */
23
+ trimScale(minimumScale?: number): Money<C>;
24
+ }
25
+ }
26
+
27
+ extendMoney(
28
+ {
29
+ ratioOf(this: Money, other: Money) {
30
+ return ratioOf(this, other);
31
+ },
32
+ divideToIntegral(this: Money, divisor: Money) {
33
+ return divideToIntegral(this, divisor);
34
+ },
35
+ remainder(this: Money, divisor: Money) {
36
+ return remainder(this, divisor);
37
+ },
38
+ trimScale(this: Money, minimumScale?: number) {
39
+ return trimScale(this, minimumScale);
40
+ },
41
+ },
42
+ { owner: '@ducatjs/money/math' },
43
+ );
@@ -2,6 +2,8 @@
2
2
  * `@ducatjs/money/paypal`: PayPal's amount view. Importing this module adds `toPayPal` and
3
3
  * `toPayPalValue`.
4
4
  */
5
+ // every ISO 4217 code, as for every entry except /fn
6
+ import './iso.js';
5
7
  import type { Money } from '../index.js';
6
8
  import { extendMoney } from '../money.js';
7
9
  import { toPayPal, toPayPalValue, type PayPalAmountOptions } from '../paypal.js';
@@ -2,6 +2,8 @@
2
2
  * `@ducatjs/money/prisma`: Prisma and SQL column helpers. Importing this module adds
3
3
  * `toDecimalValue`.
4
4
  */
5
+ // every ISO 4217 code, as for every entry except /fn
6
+ import './iso.js';
5
7
  import type { Money } from '../index.js';
6
8
  import { extendMoney } from '../money.js';
7
9
  import { toDecimalValue } from '../prisma.js';
@@ -2,6 +2,8 @@
2
2
  * `@ducatjs/money/stripe`: Stripe's minor-unit view. Importing this module adds `toStripe` and
3
3
  * `toStripeAmount`.
4
4
  */
5
+ // every ISO 4217 code, as for every entry except /fn
6
+ import './iso.js';
5
7
  import type { Money } from '../index.js';
6
8
  import { extendMoney } from '../money.js';
7
9
  import { toStripe, toStripeAmount, type StripeAmountOptions } from '../stripe.js';
@@ -2,6 +2,8 @@
2
2
  * `@ducatjs/money/tax`: percentages, discounts and tax breakdowns. Importing this module adds the
3
3
  * methods below.
4
4
  */
5
+ // every ISO 4217 code, as for every entry except /fn
6
+ import './iso.js';
5
7
  import type { Factor } from '../decimal.js';
6
8
  import type { Money } from '../index.js';
7
9
  import { extendMoney, type RoundingInput } from '../money.js';
package/src/policy.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  * this entry (or `cashPolicy` from `@ducatjs/money/cash`).
6
6
  */
7
7
  import { currencyExponent, isCurrency } from './currency.js';
8
- import { MAX_DECIMAL_SCALE, type Ratio } from './decimal.js';
8
+ import { checkScale, type Ratio } from './decimal.js';
9
9
  import {
10
10
  CurrencyMismatchError,
11
11
  multiply,
@@ -31,8 +31,8 @@ export interface RoundingPolicyOptions {
31
31
  readonly currency?: string;
32
32
  }
33
33
 
34
- const ONE = ratio(1);
35
- const MODES = new Set<unknown>(Object.values(Rounding));
34
+ const ONE = /* @__PURE__ */ ratio(1);
35
+ const MODES = /* @__PURE__ */ new Set<unknown>(/* @__PURE__ */ Object.values(Rounding));
36
36
 
37
37
  /**
38
38
  * Builds a reusable rounding policy (see `RoundingPolicy`). The options are checked here, once, so
@@ -47,11 +47,8 @@ export function roundingPolicy(options: RoundingPolicyOptions = {}): RoundingPol
47
47
  const rounding = options.rounding ?? DEFAULT_ROUNDING;
48
48
  const currency = options.currency;
49
49
 
50
- if (
51
- scale !== undefined &&
52
- !(Number.isInteger(scale) && scale >= 0 && scale <= MAX_DECIMAL_SCALE)
53
- ) {
54
- throw new RangeError(`Invalid scale ${scale}`);
50
+ if (scale !== undefined) {
51
+ checkScale(scale);
55
52
  }
56
53
  if (!(Number.isSafeInteger(increment) && increment >= 1)) {
57
54
  throw new RangeError(`Invalid increment ${increment}; it must be a positive integer`);
package/src/pricing.ts ADDED
@@ -0,0 +1,155 @@
1
+ /**
2
+ * `@ducatjs/money/pricing`: retail price endings ("charm pricing") and, from `tiers.ts`, tiered
3
+ * and volume pricing. A rule such as "end in .99, rounding up" is a plain value passed explicitly,
4
+ * like a rounding policy, and every result is exact.
5
+ */
6
+ import { formatScaled, MAX_DECIMAL_SCALE, parseDecimal, pow10n } from './decimal.js';
7
+ import { make, type Money } from './money.js';
8
+ import { divideAndRound, divideAndRoundBigint, Rounding, type RoundingMode } from './rounding.js';
9
+
10
+ const MAX_SAFE_MINOR = Number.MAX_SAFE_INTEGER;
11
+ const MODES = /* @__PURE__ */ new Set<unknown>(/* @__PURE__ */ Object.values(Rounding));
12
+
13
+ /** Options for `priceEnding`. */
14
+ export interface PriceEndingOptions {
15
+ /**
16
+ * What prices end in, in major units, as a decimal string or an integer: `'0.99'` for 23.99,
17
+ * `'9.90'` (with `step: 10`) for 29.90, `0` (with `step: 5`) for whole multiples of 5. It must be
18
+ * at least 0 and less than `step`.
19
+ */
20
+ readonly ending: string | number;
21
+ /**
22
+ * The distance between two allowed prices, in major units (default 1): `'0.99'` with step 1 allows
23
+ * 22.99, 23.99, 24.99, ...; with step `'0.5'`, `'0.49'` allows 23.49, 23.99, 24.49, ...
24
+ */
25
+ readonly step?: string | number;
26
+ /**
27
+ * Which allowed price to pick: 'ceil' (default) the nearest one at or above the price, 'floor'
28
+ * the nearest at or below, 'halfCeil' the nearest (ties go up), or any other rounding mode, applied
29
+ * to the count of steps. 'unnecessary' throws unless the price already has the ending.
30
+ */
31
+ readonly rounding?: RoundingMode;
32
+ }
33
+
34
+ /**
35
+ * A price-ending rule, built by `priceEnding()`. It is a function from an amount to the amount
36
+ * with the ending, so `price.with(rule)` and `prices.map(rule)` work.
37
+ */
38
+ export interface PriceEnding {
39
+ /** `money` moved to the rule's ending, at `money`'s scale. */
40
+ <C extends string>(money: Money<C>): Money<C>;
41
+ /** The ending, as an exact decimal string in major units. */
42
+ readonly ending: string;
43
+ /** The step between allowed prices, as an exact decimal string in major units. */
44
+ readonly step: string;
45
+ /** How the allowed price is picked. */
46
+ readonly rounding: RoundingMode;
47
+ }
48
+
49
+ /** A decimal in major units: `digits` × 10^-scale. */
50
+ interface Decimal {
51
+ readonly digits: bigint;
52
+ readonly scale: number;
53
+ }
54
+
55
+ function readDecimal(name: string, value: string | number): Decimal {
56
+ if (typeof value === 'number') {
57
+ // integers only: a non-integer number would be read through its float form
58
+ if (!Number.isSafeInteger(value)) {
59
+ throw new RangeError(`Invalid ${name} ${value}; pass a decimal string such as '0.99'`);
60
+ }
61
+ return { digits: BigInt(value), scale: 0 };
62
+ }
63
+ if (typeof value !== 'string') {
64
+ throw new TypeError(`Invalid ${name} ${String(value)}`);
65
+ }
66
+ return parseDecimal(value);
67
+ }
68
+
69
+ /** The decimal in 10^-scale units, or undefined if it has more decimals than `scale`. */
70
+ function unitsAt(value: Decimal, scale: number): bigint | undefined {
71
+ if (value.scale <= scale) {
72
+ return value.digits * pow10n(scale - value.scale);
73
+ }
74
+ const divisor = pow10n(value.scale - scale);
75
+ return value.digits % divisor === 0n ? value.digits / divisor : undefined;
76
+ }
77
+
78
+ function decimalString(value: Decimal): string {
79
+ return formatScaled(value.digits, value.scale);
80
+ }
81
+
82
+ /**
83
+ * Builds a price-ending rule: the allowed prices are `ending + k × step` for every integer k, and
84
+ * the rule moves an amount to one of them, chosen by `rounding` (default 'ceil', the next allowed
85
+ * price at or above). The options are checked here, once.
86
+ *
87
+ * const charm = priceEnding({ ending: '0.99' })
88
+ * money('23.41', 'EUR').with(charm) // 23.99 EUR
89
+ * priceEnding({ ending: '9.90', step: 10 }) // 19.90, 29.90, ...
90
+ * priceEnding({ ending: 0, step: 5, rounding: 'halfCeil' }) // the nearest 5
91
+ *
92
+ * The result keeps the amount's scale. An ending or step with more decimals than the amount (0.99
93
+ * for a whole-yen price) throws a RangeError when the rule is applied.
94
+ */
95
+ export function priceEnding(options: PriceEndingOptions): PriceEnding {
96
+ const ending = readDecimal('ending', options.ending);
97
+ const step = readDecimal('step', options.step ?? 1);
98
+ const rounding = options.rounding ?? 'ceil';
99
+
100
+ if (step.digits <= 0n) {
101
+ throw new RangeError(`Invalid step ${decimalString(step)}; it must be positive`);
102
+ }
103
+ // compare at a common scale: 0 <= ending < step
104
+ const commonScale = Math.max(ending.scale, step.scale);
105
+ const endingUnits = unitsAt(ending, commonScale)!;
106
+ const stepUnits = unitsAt(step, commonScale)!;
107
+ if (endingUnits < 0n || endingUnits >= stepUnits) {
108
+ throw new RangeError(
109
+ `Invalid ending ${decimalString(ending)}; it must be at least 0 and less than the step ${decimalString(step)}`,
110
+ );
111
+ }
112
+ if (!MODES.has(rounding)) {
113
+ throw new RangeError(`Invalid rounding mode ${String(rounding)}`);
114
+ }
115
+
116
+ const apply = <C extends string>(money: Money<C>): Money<C> => {
117
+ const scale = money.scale;
118
+ const offset = unitsAt(ending, scale);
119
+ const stride = unitsAt(step, scale);
120
+ if (offset === undefined || stride === undefined || scale > MAX_DECIMAL_SCALE) {
121
+ throw new RangeError(
122
+ `A price ending ${decimalString(ending)} in steps of ${decimalString(step)} needs more than ${scale} decimal places for ${money.currency}`,
123
+ );
124
+ }
125
+
126
+ // The count of whole steps above the ending, rounded once, then back to an amount:
127
+ // ending + round((money - ending) / step) × step.
128
+ const minor = money.minor;
129
+ if (typeof minor === 'number') {
130
+ const offsetNumber = Number(offset);
131
+ const strideNumber = Number(stride);
132
+ const distance = minor - offsetNumber;
133
+ // With |distance| + stride within the safe range, |steps × stride| is at most that sum, so
134
+ // the product is exact; the sum with the offset is then checked like any other addition (a
135
+ // float sum beyond the safe range never rounds back into it).
136
+ if (distance + strideNumber <= MAX_SAFE_MINOR && distance - strideNumber >= -MAX_SAFE_MINOR) {
137
+ const steps = divideAndRound(distance, strideNumber, rounding);
138
+ const result = offsetNumber + steps * strideNumber;
139
+ if (result <= MAX_SAFE_MINOR && result >= -MAX_SAFE_MINOR) {
140
+ return make(money.currency, result + 0, scale);
141
+ }
142
+ }
143
+ }
144
+ const steps = divideAndRoundBigint(BigInt(minor) - offset, stride, rounding);
145
+ return make(money.currency, offset + steps * stride, scale);
146
+ };
147
+
148
+ return Object.assign(apply, {
149
+ ending: decimalString(ending),
150
+ step: decimalString(step),
151
+ rounding,
152
+ }) as PriceEnding;
153
+ }
154
+
155
+ export * from './tiers.js';
package/src/prisma.ts CHANGED
@@ -14,6 +14,7 @@ import {
14
14
  money,
15
15
  toDecimal,
16
16
  toMinor,
17
+ toScaledUnits,
17
18
  type CurrencyInput,
18
19
  type Money,
19
20
  type MoneyOptions,
@@ -185,7 +186,11 @@ export function toMinorColumns(
185
186
  if (options === undefined) {
186
187
  return { [amount]: toMinorAtIsoScale(money), [currency]: money.currency };
187
188
  }
188
- return { [amount]: toMinor(money), [currency]: money.currency, [options.scale]: money.scale };
189
+ return {
190
+ [amount]: toScaledUnits(money),
191
+ [currency]: money.currency,
192
+ [options.scale]: money.scale,
193
+ };
189
194
  }
190
195
 
191
196
  function toMinorAtIsoScale(money: Money): bigint {
package/src/provider.ts CHANGED
@@ -358,8 +358,8 @@ export function snapshots(
358
358
 
359
359
  for (let i = 0; i <= lookback; i++) {
360
360
  const day = new Date(firstDayMs - i * DAY_MS).toISOString().slice(0, 10);
361
- // Sequential on purpose: stop at the first day that has a table, without loading older
362
- // days. oxlint-disable-next-line no-await-in-loop
361
+ // Sequential on purpose: stop at the first day that has a table, without loading older days.
362
+ // oxlint-disable-next-line no-await-in-loop
363
363
  const table = await loadDay(day);
364
364
  // A table not yet published at the instant asked for is passed over like a missing one.
365
365
  const availableAt = (table as Partial<RateTable> | undefined)?.availableAt;
package/src/rate-text.ts CHANGED
@@ -3,7 +3,18 @@
3
3
 
4
4
  // What sources write for "no value this day": blank (ECB CSV, BoE), ND (Fed H.10), N/A (ECB CSV),
5
5
  // NA (IMF), and dashes and NaN in other files. Compared upper-cased.
6
- const MISSING_MARKERS = new Set(['', 'ND', 'N/A', 'NA', 'N.A.', '-', '–', '—', 'NAN', 'NULL']);
6
+ const MISSING_MARKERS = /* @__PURE__ */ new Set([
7
+ '',
8
+ 'ND',
9
+ 'N/A',
10
+ 'NA',
11
+ 'N.A.',
12
+ '-',
13
+ '–',
14
+ '—',
15
+ 'NAN',
16
+ 'NULL',
17
+ ]);
7
18
  const PLAIN_DECIMAL = /^\d+(?:\.\d+)?$/;
8
19
 
9
20
  /**
@@ -149,3 +160,18 @@ export function addDayRate(
149
160
  export function newestFirst<T extends { readonly asOf?: string }>(tables: T[]): T[] {
150
161
  return tables.sort((table, other) => other.asOf!.localeCompare(table.asOf!));
151
162
  }
163
+
164
+ /**
165
+ * @internal Checks an `availableAt` option, which untyped code could pass as anything: a string or a
166
+ * Date would otherwise be ignored on an empty file and fail obscurely, as "not a function", on the
167
+ * first day. Called once, before any parsing or fetching.
168
+ */
169
+ export function checkAvailableAt(availableAt: unknown): void {
170
+ if (
171
+ availableAt !== undefined &&
172
+ typeof availableAt !== 'boolean' &&
173
+ typeof availableAt !== 'function'
174
+ ) {
175
+ throw new TypeError(`availableAt must be a boolean or a function, got ${typeof availableAt}`);
176
+ }
177
+ }
package/src/rate.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  // Exchange rates as exact rationals with metadata. A Rate never loses digits: inverses,
2
2
  // compositions and margins are exact products of ratios, and rounding happens once, when an amount
3
3
  // is converted.
4
- import { currencyExponent } from './currency.js';
5
4
  import {
6
5
  formatScaled,
7
6
  POW10,
@@ -15,6 +14,7 @@ import {
15
14
  import {
16
15
  CurrencyMismatchError,
17
16
  make,
17
+ resolveScale,
18
18
  roundWithPolicy,
19
19
  type CurrencyInput,
20
20
  type Money,
@@ -410,7 +410,7 @@ export class Rate<From extends string = string, To extends string = string> {
410
410
  if (typeof rounding === 'function') {
411
411
  return convertWithPolicy(money, this.to, this.ratio, rounding, options);
412
412
  }
413
- const scale = options?.scale ?? currencyExponent(this.to);
413
+ const scale = resolveScale(this.to, options?.scale);
414
414
  const minor = multiplyByRatioAtScale(money.minor, this.ratio, scale - money.scale, rounding);
415
415
  return make(this.to, minor, scale);
416
416
  }