@ducatjs/money 0.0.0 → 0.2.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 (398) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +51 -0
  3. package/README.md +1034 -3
  4. package/assets/CREDITS.md +12 -0
  5. package/data/adyen-fx.json +19 -0
  6. package/data/adyen.json +171 -0
  7. package/data/braintree.json +223 -0
  8. package/data/cash-rounding.json +520 -0
  9. package/data/checkout.json +230 -0
  10. package/data/cldr-cash.json +101 -0
  11. package/data/historic.json +78 -0
  12. package/data/iso4217-list-one.xml +1956 -0
  13. package/data/iso4217-list-three.xml +1185 -0
  14. package/data/klarna.json +95 -0
  15. package/data/paypal.json +65 -0
  16. package/data/stripe-fx.json +17 -0
  17. package/data/stripe.json +285 -0
  18. package/dist/adyen-fx.d.ts +25 -0
  19. package/dist/adyen-fx.d.ts.map +1 -0
  20. package/dist/adyen-fx.js +140 -0
  21. package/dist/adyen-fx.js.map +1 -0
  22. package/dist/adyen.d.ts +25 -0
  23. package/dist/adyen.d.ts.map +1 -0
  24. package/dist/adyen.js +34 -0
  25. package/dist/adyen.js.map +1 -0
  26. package/dist/allocate.d.ts +72 -0
  27. package/dist/allocate.d.ts.map +1 -0
  28. package/dist/allocate.js +314 -0
  29. package/dist/allocate.js.map +1 -0
  30. package/dist/bag.d.ts +58 -0
  31. package/dist/bag.d.ts.map +1 -0
  32. package/dist/bag.js +122 -0
  33. package/dist/bag.js.map +1 -0
  34. package/dist/boc.d.ts +31 -0
  35. package/dist/boc.d.ts.map +1 -0
  36. package/dist/boc.js +114 -0
  37. package/dist/boc.js.map +1 -0
  38. package/dist/boe.d.ts +33 -0
  39. package/dist/boe.d.ts.map +1 -0
  40. package/dist/boe.js +114 -0
  41. package/dist/boe.js.map +1 -0
  42. package/dist/braintree.d.ts +34 -0
  43. package/dist/braintree.d.ts.map +1 -0
  44. package/dist/braintree.js +45 -0
  45. package/dist/braintree.js.map +1 -0
  46. package/dist/cash.d.ts +64 -0
  47. package/dist/cash.d.ts.map +1 -0
  48. package/dist/cash.js +134 -0
  49. package/dist/cash.js.map +1 -0
  50. package/dist/checkout.d.ts +42 -0
  51. package/dist/checkout.d.ts.map +1 -0
  52. package/dist/checkout.js +52 -0
  53. package/dist/checkout.js.map +1 -0
  54. package/dist/convert.d.ts +52 -0
  55. package/dist/convert.d.ts.map +1 -0
  56. package/dist/convert.js +65 -0
  57. package/dist/convert.js.map +1 -0
  58. package/dist/currency.d.ts +22 -0
  59. package/dist/currency.d.ts.map +1 -0
  60. package/dist/currency.js +38 -0
  61. package/dist/currency.js.map +1 -0
  62. package/dist/decimal.d.ts +52 -0
  63. package/dist/decimal.d.ts.map +1 -0
  64. package/dist/decimal.js +251 -0
  65. package/dist/decimal.js.map +1 -0
  66. package/dist/drizzle/mysql.d.ts +105 -0
  67. package/dist/drizzle/mysql.d.ts.map +1 -0
  68. package/dist/drizzle/mysql.js +60 -0
  69. package/dist/drizzle/mysql.js.map +1 -0
  70. package/dist/drizzle/pg.d.ts +103 -0
  71. package/dist/drizzle/pg.d.ts.map +1 -0
  72. package/dist/drizzle/pg.js +60 -0
  73. package/dist/drizzle/pg.js.map +1 -0
  74. package/dist/drizzle/sqlite.d.ts +102 -0
  75. package/dist/drizzle/sqlite.d.ts.map +1 -0
  76. package/dist/drizzle/sqlite.js +59 -0
  77. package/dist/drizzle/sqlite.js.map +1 -0
  78. package/dist/ecb.d.ts +52 -0
  79. package/dist/ecb.d.ts.map +1 -0
  80. package/dist/ecb.js +285 -0
  81. package/dist/ecb.js.map +1 -0
  82. package/dist/exact.d.ts +62 -0
  83. package/dist/exact.d.ts.map +1 -0
  84. package/dist/exact.js +147 -0
  85. package/dist/exact.js.map +1 -0
  86. package/dist/fed.d.ts +35 -0
  87. package/dist/fed.d.ts.map +1 -0
  88. package/dist/fed.js +134 -0
  89. package/dist/fed.js.map +1 -0
  90. package/dist/fetch.d.ts +103 -0
  91. package/dist/fetch.d.ts.map +1 -0
  92. package/dist/fetch.js +222 -0
  93. package/dist/fetch.js.map +1 -0
  94. package/dist/fixed.d.ts +121 -0
  95. package/dist/fixed.d.ts.map +1 -0
  96. package/dist/fixed.js +420 -0
  97. package/dist/fixed.js.map +1 -0
  98. package/dist/fn.d.ts +34 -0
  99. package/dist/fn.d.ts.map +1 -0
  100. package/dist/fn.js +37 -0
  101. package/dist/fn.js.map +1 -0
  102. package/dist/format.d.ts +13 -0
  103. package/dist/format.d.ts.map +1 -0
  104. package/dist/format.js +90 -0
  105. package/dist/format.js.map +1 -0
  106. package/dist/generated/adyen.d.ts +3 -0
  107. package/dist/generated/adyen.d.ts.map +1 -0
  108. package/dist/generated/adyen.js +144 -0
  109. package/dist/generated/adyen.js.map +1 -0
  110. package/dist/generated/braintree.d.ts +3 -0
  111. package/dist/generated/braintree.d.ts.map +1 -0
  112. package/dist/generated/braintree.js +140 -0
  113. package/dist/generated/braintree.js.map +1 -0
  114. package/dist/generated/cash.d.ts +14 -0
  115. package/dist/generated/cash.d.ts.map +1 -0
  116. package/dist/generated/cash.js +465 -0
  117. package/dist/generated/cash.js.map +1 -0
  118. package/dist/generated/checkout.d.ts +3 -0
  119. package/dist/generated/checkout.d.ts.map +1 -0
  120. package/dist/generated/checkout.js +151 -0
  121. package/dist/generated/checkout.js.map +1 -0
  122. package/dist/generated/historic.d.ts +337 -0
  123. package/dist/generated/historic.d.ts.map +1 -0
  124. package/dist/generated/historic.js +66 -0
  125. package/dist/generated/historic.js.map +1 -0
  126. package/dist/generated/iso4217.d.ts +174 -0
  127. package/dist/generated/iso4217.d.ts.map +1 -0
  128. package/dist/generated/iso4217.js +175 -0
  129. package/dist/generated/iso4217.js.map +1 -0
  130. package/dist/generated/kernel.d.ts +17 -0
  131. package/dist/generated/kernel.d.ts.map +1 -0
  132. package/dist/generated/kernel.js +208 -0
  133. package/dist/generated/kernel.js.map +1 -0
  134. package/dist/generated/klarna.d.ts +3 -0
  135. package/dist/generated/klarna.d.ts.map +1 -0
  136. package/dist/generated/klarna.js +21 -0
  137. package/dist/generated/klarna.js.map +1 -0
  138. package/dist/generated/paypal.d.ts +3 -0
  139. package/dist/generated/paypal.d.ts.map +1 -0
  140. package/dist/generated/paypal.js +31 -0
  141. package/dist/generated/paypal.js.map +1 -0
  142. package/dist/generated/stripe.d.ts +8 -0
  143. package/dist/generated/stripe.d.ts.map +1 -0
  144. package/dist/generated/stripe.js +150 -0
  145. package/dist/generated/stripe.js.map +1 -0
  146. package/dist/historic.d.ts +40 -0
  147. package/dist/historic.d.ts.map +1 -0
  148. package/dist/historic.js +43 -0
  149. package/dist/historic.js.map +1 -0
  150. package/dist/history.d.ts +96 -0
  151. package/dist/history.d.ts.map +1 -0
  152. package/dist/history.js +213 -0
  153. package/dist/history.js.map +1 -0
  154. package/dist/hmrc.d.ts +28 -0
  155. package/dist/hmrc.d.ts.map +1 -0
  156. package/dist/hmrc.js +108 -0
  157. package/dist/hmrc.js.map +1 -0
  158. package/dist/index.d.ts +11 -0
  159. package/dist/index.d.ts.map +1 -0
  160. package/dist/index.js +11 -0
  161. package/dist/index.js.map +1 -0
  162. package/dist/klarna.d.ts +31 -0
  163. package/dist/klarna.d.ts.map +1 -0
  164. package/dist/klarna.js +38 -0
  165. package/dist/klarna.js.map +1 -0
  166. package/dist/kysely.d.ts +120 -0
  167. package/dist/kysely.d.ts.map +1 -0
  168. package/dist/kysely.js +309 -0
  169. package/dist/kysely.js.map +1 -0
  170. package/dist/money.d.ts +302 -0
  171. package/dist/money.d.ts.map +1 -0
  172. package/dist/money.js +703 -0
  173. package/dist/money.js.map +1 -0
  174. package/dist/parse.d.ts +55 -0
  175. package/dist/parse.d.ts.map +1 -0
  176. package/dist/parse.js +419 -0
  177. package/dist/parse.js.map +1 -0
  178. package/dist/paypal.d.ts +41 -0
  179. package/dist/paypal.d.ts.map +1 -0
  180. package/dist/paypal.js +58 -0
  181. package/dist/paypal.js.map +1 -0
  182. package/dist/pg.d.ts +100 -0
  183. package/dist/pg.d.ts.map +1 -0
  184. package/dist/pg.js +343 -0
  185. package/dist/pg.js.map +1 -0
  186. package/dist/plugins/adyen.d.ts +15 -0
  187. package/dist/plugins/adyen.d.ts.map +1 -0
  188. package/dist/plugins/adyen.js +10 -0
  189. package/dist/plugins/adyen.js.map +1 -0
  190. package/dist/plugins/all.d.ts +29 -0
  191. package/dist/plugins/all.d.ts.map +1 -0
  192. package/dist/plugins/all.js +30 -0
  193. package/dist/plugins/all.js.map +1 -0
  194. package/dist/plugins/allocate.d.ts +20 -0
  195. package/dist/plugins/allocate.d.ts.map +1 -0
  196. package/dist/plugins/allocate.js +26 -0
  197. package/dist/plugins/allocate.js.map +1 -0
  198. package/dist/plugins/braintree.d.ts +12 -0
  199. package/dist/plugins/braintree.d.ts.map +1 -0
  200. package/dist/plugins/braintree.js +12 -0
  201. package/dist/plugins/braintree.js.map +1 -0
  202. package/dist/plugins/cash.d.ts +19 -0
  203. package/dist/plugins/cash.d.ts.map +1 -0
  204. package/dist/plugins/cash.js +16 -0
  205. package/dist/plugins/cash.js.map +1 -0
  206. package/dist/plugins/checkout.d.ts +21 -0
  207. package/dist/plugins/checkout.d.ts.map +1 -0
  208. package/dist/plugins/checkout.js +16 -0
  209. package/dist/plugins/checkout.js.map +1 -0
  210. package/dist/plugins/convert.d.ts +19 -0
  211. package/dist/plugins/convert.d.ts.map +1 -0
  212. package/dist/plugins/convert.js +13 -0
  213. package/dist/plugins/convert.js.map +1 -0
  214. package/dist/plugins/exact.d.ts +15 -0
  215. package/dist/plugins/exact.d.ts.map +1 -0
  216. package/dist/plugins/exact.js +13 -0
  217. package/dist/plugins/exact.js.map +1 -0
  218. package/dist/plugins/fixed.d.ts +17 -0
  219. package/dist/plugins/fixed.d.ts.map +1 -0
  220. package/dist/plugins/fixed.js +13 -0
  221. package/dist/plugins/fixed.js.map +1 -0
  222. package/dist/plugins/format.d.ts +9 -0
  223. package/dist/plugins/format.d.ts.map +1 -0
  224. package/dist/plugins/format.js +16 -0
  225. package/dist/plugins/format.js.map +1 -0
  226. package/dist/plugins/klarna.d.ts +10 -0
  227. package/dist/plugins/klarna.d.ts.map +1 -0
  228. package/dist/plugins/klarna.js +10 -0
  229. package/dist/plugins/klarna.js.map +1 -0
  230. package/dist/plugins/paypal.d.ts +14 -0
  231. package/dist/plugins/paypal.d.ts.map +1 -0
  232. package/dist/plugins/paypal.js +16 -0
  233. package/dist/plugins/paypal.js.map +1 -0
  234. package/dist/plugins/prisma.d.ts +8 -0
  235. package/dist/plugins/prisma.d.ts.map +1 -0
  236. package/dist/plugins/prisma.js +13 -0
  237. package/dist/plugins/prisma.js.map +1 -0
  238. package/dist/plugins/stripe.d.ts +14 -0
  239. package/dist/plugins/stripe.d.ts.map +1 -0
  240. package/dist/plugins/stripe.js +16 -0
  241. package/dist/plugins/stripe.js.map +1 -0
  242. package/dist/plugins/tax.d.ts +20 -0
  243. package/dist/plugins/tax.d.ts.map +1 -0
  244. package/dist/plugins/tax.js +18 -0
  245. package/dist/plugins/tax.js.map +1 -0
  246. package/dist/policy.d.ts +34 -0
  247. package/dist/policy.d.ts.map +1 -0
  248. package/dist/policy.js +90 -0
  249. package/dist/policy.js.map +1 -0
  250. package/dist/prisma.d.ts +77 -0
  251. package/dist/prisma.d.ts.map +1 -0
  252. package/dist/prisma.js +76 -0
  253. package/dist/prisma.js.map +1 -0
  254. package/dist/processor.d.ts +28 -0
  255. package/dist/processor.d.ts.map +1 -0
  256. package/dist/processor.js +118 -0
  257. package/dist/processor.js.map +1 -0
  258. package/dist/provider.d.ts +103 -0
  259. package/dist/provider.d.ts.map +1 -0
  260. package/dist/provider.js +280 -0
  261. package/dist/provider.js.map +1 -0
  262. package/dist/rate-text.d.ts +38 -0
  263. package/dist/rate-text.d.ts.map +1 -0
  264. package/dist/rate-text.js +143 -0
  265. package/dist/rate-text.js.map +1 -0
  266. package/dist/rate.d.ts +175 -0
  267. package/dist/rate.d.ts.map +1 -0
  268. package/dist/rate.js +371 -0
  269. package/dist/rate.js.map +1 -0
  270. package/dist/rounding-error.d.ts +9 -0
  271. package/dist/rounding-error.d.ts.map +1 -0
  272. package/dist/rounding-error.js +9 -0
  273. package/dist/rounding-error.js.map +1 -0
  274. package/dist/rounding.d.ts +50 -0
  275. package/dist/rounding.d.ts.map +1 -0
  276. package/dist/rounding.js +87 -0
  277. package/dist/rounding.js.map +1 -0
  278. package/dist/schema.d.ts +43 -0
  279. package/dist/schema.d.ts.map +1 -0
  280. package/dist/schema.js +77 -0
  281. package/dist/schema.js.map +1 -0
  282. package/dist/sql.d.ts +54 -0
  283. package/dist/sql.d.ts.map +1 -0
  284. package/dist/sql.js +131 -0
  285. package/dist/sql.js.map +1 -0
  286. package/dist/stripe-fx.d.ts +22 -0
  287. package/dist/stripe-fx.d.ts.map +1 -0
  288. package/dist/stripe-fx.js +30 -0
  289. package/dist/stripe-fx.js.map +1 -0
  290. package/dist/stripe.d.ts +36 -0
  291. package/dist/stripe.d.ts.map +1 -0
  292. package/dist/stripe.js +39 -0
  293. package/dist/stripe.js.map +1 -0
  294. package/dist/tax.d.ts +33 -0
  295. package/dist/tax.d.ts.map +1 -0
  296. package/dist/tax.js +55 -0
  297. package/dist/tax.js.map +1 -0
  298. package/dist/testing/arbitraries.d.ts +43 -0
  299. package/dist/testing/arbitraries.d.ts.map +1 -0
  300. package/dist/testing/arbitraries.js +98 -0
  301. package/dist/testing/arbitraries.js.map +1 -0
  302. package/dist/testing/index.d.ts +67 -0
  303. package/dist/testing/index.d.ts.map +1 -0
  304. package/dist/testing/index.js +159 -0
  305. package/dist/testing/index.js.map +1 -0
  306. package/dist/testing/jest.d.ts +2 -0
  307. package/dist/testing/jest.d.ts.map +1 -0
  308. package/dist/testing/jest.js +15 -0
  309. package/dist/testing/jest.js.map +1 -0
  310. package/dist/testing/vitest.d.ts +7 -0
  311. package/dist/testing/vitest.d.ts.map +1 -0
  312. package/dist/testing/vitest.js +12 -0
  313. package/dist/testing/vitest.js.map +1 -0
  314. package/dist/valibot.d.ts +33 -0
  315. package/dist/valibot.d.ts.map +1 -0
  316. package/dist/valibot.js +61 -0
  317. package/dist/valibot.js.map +1 -0
  318. package/dist/zod.d.ts +36 -0
  319. package/dist/zod.d.ts.map +1 -0
  320. package/dist/zod.js +58 -0
  321. package/dist/zod.js.map +1 -0
  322. package/package.json +280 -5
  323. package/src/adyen-fx.ts +175 -0
  324. package/src/adyen.ts +46 -0
  325. package/src/allocate.ts +393 -0
  326. package/src/bag.ts +170 -0
  327. package/src/boc.ts +136 -0
  328. package/src/boe.ts +131 -0
  329. package/src/braintree.ts +71 -0
  330. package/src/cash.ts +183 -0
  331. package/src/checkout.ts +77 -0
  332. package/src/convert.ts +177 -0
  333. package/src/currency.ts +61 -0
  334. package/src/decimal.ts +283 -0
  335. package/src/drizzle/mysql.ts +78 -0
  336. package/src/drizzle/pg.ts +78 -0
  337. package/src/drizzle/sqlite.ts +70 -0
  338. package/src/ecb.ts +328 -0
  339. package/src/exact.ts +182 -0
  340. package/src/fed.ts +146 -0
  341. package/src/fetch.ts +306 -0
  342. package/src/fixed.ts +558 -0
  343. package/src/fn.ts +94 -0
  344. package/src/format.ts +106 -0
  345. package/src/generated/adyen.ts +144 -0
  346. package/src/generated/braintree.ts +140 -0
  347. package/src/generated/cash.ts +478 -0
  348. package/src/generated/checkout.ts +151 -0
  349. package/src/generated/historic.ts +67 -0
  350. package/src/generated/iso4217.ts +179 -0
  351. package/src/generated/kernel.ts +230 -0
  352. package/src/generated/klarna.ts +21 -0
  353. package/src/generated/paypal.ts +31 -0
  354. package/src/generated/stripe.ts +150 -0
  355. package/src/historic.ts +77 -0
  356. package/src/history.ts +333 -0
  357. package/src/hmrc.ts +125 -0
  358. package/src/index.ts +41 -0
  359. package/src/klarna.ts +54 -0
  360. package/src/kysely.ts +588 -0
  361. package/src/money.ts +979 -0
  362. package/src/parse.ts +511 -0
  363. package/src/paypal.ts +93 -0
  364. package/src/pg.ts +410 -0
  365. package/src/plugins/adyen.ts +25 -0
  366. package/src/plugins/all.ts +57 -0
  367. package/src/plugins/allocate.ts +53 -0
  368. package/src/plugins/braintree.ts +23 -0
  369. package/src/plugins/cash.ts +33 -0
  370. package/src/plugins/checkout.ts +32 -0
  371. package/src/plugins/convert.ts +49 -0
  372. package/src/plugins/exact.ts +23 -0
  373. package/src/plugins/fixed.ts +28 -0
  374. package/src/plugins/format.ts +28 -0
  375. package/src/plugins/klarna.ts +21 -0
  376. package/src/plugins/paypal.ts +29 -0
  377. package/src/plugins/prisma.ts +24 -0
  378. package/src/plugins/stripe.ts +29 -0
  379. package/src/plugins/tax.ts +40 -0
  380. package/src/policy.ts +124 -0
  381. package/src/prisma.ts +199 -0
  382. package/src/processor.ts +181 -0
  383. package/src/provider.ts +389 -0
  384. package/src/rate-text.ts +151 -0
  385. package/src/rate.ts +546 -0
  386. package/src/rounding-error.ts +8 -0
  387. package/src/rounding.ts +122 -0
  388. package/src/schema.ts +119 -0
  389. package/src/sql.ts +178 -0
  390. package/src/stripe-fx.ts +49 -0
  391. package/src/stripe.ts +69 -0
  392. package/src/tax.ts +102 -0
  393. package/src/testing/arbitraries.ts +134 -0
  394. package/src/testing/index.ts +247 -0
  395. package/src/testing/jest.ts +18 -0
  396. package/src/testing/vitest.ts +18 -0
  397. package/src/valibot.ts +87 -0
  398. package/src/zod.ts +78 -0
@@ -0,0 +1,175 @@
1
+ // GENERATED by scripts/gen-currencies.mjs from data/iso4217-list-one.xml. Do not edit by hand.
2
+ /* eslint-disable */
3
+ /** Publication date of the ISO 4217 List One snapshot the table was generated from. */
4
+ export const ISO_4217_PUBLISHED = "2026-09-17";
5
+ /** ISO 4217 minor-unit exponent for every active code that has one (165 codes). */
6
+ export const ISO_EXPONENTS = {
7
+ AED: 2,
8
+ AFN: 2,
9
+ ALL: 2,
10
+ AMD: 2,
11
+ AOA: 2,
12
+ ARS: 2,
13
+ AUD: 2,
14
+ AWG: 2,
15
+ AZN: 2,
16
+ BAM: 2,
17
+ BBD: 2,
18
+ BDT: 2,
19
+ BHD: 3,
20
+ BIF: 0,
21
+ BMD: 2,
22
+ BND: 2,
23
+ BOB: 2,
24
+ BOV: 2,
25
+ BRL: 2,
26
+ BSD: 2,
27
+ BTN: 2,
28
+ BWP: 2,
29
+ BYN: 2,
30
+ BZD: 2,
31
+ CAD: 2,
32
+ CDF: 2,
33
+ CHE: 2,
34
+ CHF: 2,
35
+ CHW: 2,
36
+ CLF: 4,
37
+ CLP: 0,
38
+ CNY: 2,
39
+ COP: 2,
40
+ COU: 2,
41
+ CRC: 2,
42
+ CUP: 2,
43
+ CVE: 2,
44
+ CZK: 2,
45
+ DJF: 0,
46
+ DKK: 2,
47
+ DOP: 2,
48
+ DZD: 2,
49
+ EGP: 2,
50
+ ERN: 2,
51
+ ETB: 2,
52
+ EUR: 2,
53
+ FJD: 2,
54
+ FKP: 2,
55
+ GBP: 2,
56
+ GEL: 2,
57
+ GHS: 2,
58
+ GIP: 2,
59
+ GMD: 2,
60
+ GNF: 0,
61
+ GTQ: 2,
62
+ GYD: 2,
63
+ HKD: 2,
64
+ HNL: 2,
65
+ HTG: 2,
66
+ HUF: 2,
67
+ IDR: 2,
68
+ ILS: 2,
69
+ INR: 2,
70
+ IQD: 3,
71
+ IRR: 2,
72
+ ISK: 0,
73
+ JMD: 2,
74
+ JOD: 3,
75
+ JPY: 0,
76
+ KES: 2,
77
+ KGS: 2,
78
+ KHR: 2,
79
+ KMF: 0,
80
+ KPW: 2,
81
+ KRW: 0,
82
+ KWD: 3,
83
+ KYD: 2,
84
+ KZT: 2,
85
+ LAK: 2,
86
+ LBP: 2,
87
+ LKR: 2,
88
+ LRD: 2,
89
+ LSL: 2,
90
+ LYD: 3,
91
+ MAD: 2,
92
+ MDL: 2,
93
+ MGA: 2,
94
+ MKD: 2,
95
+ MMK: 2,
96
+ MNT: 2,
97
+ MOP: 2,
98
+ MRU: 2,
99
+ MUR: 2,
100
+ MVR: 2,
101
+ MWK: 2,
102
+ MXN: 2,
103
+ MXV: 2,
104
+ MYR: 2,
105
+ MZN: 2,
106
+ NAD: 2,
107
+ NGN: 2,
108
+ NIO: 2,
109
+ NOK: 2,
110
+ NPR: 2,
111
+ NZD: 2,
112
+ OMR: 3,
113
+ PAB: 2,
114
+ PEN: 2,
115
+ PGK: 2,
116
+ PHP: 2,
117
+ PKR: 2,
118
+ PLN: 2,
119
+ PYG: 0,
120
+ QAR: 2,
121
+ RON: 2,
122
+ RSD: 2,
123
+ RUB: 2,
124
+ RWF: 0,
125
+ SAR: 2,
126
+ SBD: 2,
127
+ SCR: 2,
128
+ SDG: 2,
129
+ SEK: 2,
130
+ SGD: 2,
131
+ SHP: 2,
132
+ SLE: 2,
133
+ SOS: 2,
134
+ SRD: 2,
135
+ SSP: 2,
136
+ STN: 2,
137
+ SVC: 2,
138
+ SYP: 2,
139
+ SZL: 2,
140
+ THB: 2,
141
+ TJS: 2,
142
+ TMT: 2,
143
+ TND: 3,
144
+ TOP: 2,
145
+ TRY: 2,
146
+ TTD: 2,
147
+ TWD: 2,
148
+ TZS: 2,
149
+ UAH: 2,
150
+ UGX: 0,
151
+ USD: 2,
152
+ USN: 2,
153
+ UYI: 0,
154
+ UYU: 2,
155
+ UYW: 4,
156
+ UZS: 2,
157
+ VED: 2,
158
+ VES: 2,
159
+ VND: 0,
160
+ VUV: 0,
161
+ WST: 2,
162
+ XAD: 2,
163
+ XAF: 0,
164
+ XCD: 2,
165
+ XCG: 2,
166
+ XOF: 0,
167
+ XPF: 0,
168
+ YER: 2,
169
+ ZAR: 2,
170
+ ZMW: 2,
171
+ ZWG: 2,
172
+ };
173
+ /** Active codes whose minor unit is "N.A." (precious metals, SDR, testing): not monetary, not in ISO_EXPONENTS. */
174
+ export const ISO_NON_MONETARY = ["XAG", "XAU", "XBA", "XBB", "XBC", "XBD", "XDR", "XPD", "XPT", "XSU", "XTS", "XUA", "XXX"];
175
+ //# sourceMappingURL=iso4217.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iso4217.js","sourceRoot":"","sources":["../../src/generated/iso4217.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,oBAAoB;AAEpB,uFAAuF;AACvF,MAAM,CAAC,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAE/C,mFAAmF;AACnF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;CACE,CAAC;AAIX,mHAAmH;AACnH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAU,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { RoundingMode } from '../rounding.js';
2
+ /**
3
+ * `dividend / divisor` rounded with `mode`; `divisor` must be positive.
4
+ *
5
+ * Each `case` is printed from the Lean kernel for that mode, which is proved correct in
6
+ * proofs/Ducat/Rounding.lean: `kernel_sound` (the result satisfies the specification `Rounds`),
7
+ * `rounds_unique` (only one value does) and `kernel_fails_iff` (it throws only for 'unnecessary' on an
8
+ * inexact division), hence `kernel_correct`. Unknown modes throw a RangeError.
9
+ */
10
+ export declare function divideAndRoundBigint(dividend: bigint, divisor: bigint, mode: RoundingMode): bigint;
11
+ /**
12
+ * The same switch over `number`: rounds the truncated `quotient` of `dividend / divisor`, where
13
+ * `remainder = dividend - quotient * divisor` exactly and `divisor` is positive. Every input must be a safe
14
+ * integer. This copy is not proved; test/kernel.test.ts compares it with the `bigint` one.
15
+ */
16
+ export declare function roundTruncatedQuotient(dividend: number, divisor: number, quotient: number, remainder: number, mode: RoundingMode): number;
17
+ //# sourceMappingURL=kernel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../src/generated/kernel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAInD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,YAAY,GACjB,MAAM,CAIR;AA2GD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GACjB,MAAM,CAwFR"}
@@ -0,0 +1,208 @@
1
+ // lean-sources sha256:69cb179d69b98bf06518e6abae249369e163ca9ac7c318064680c59920517601 content sha256:dc3d761f86eb9b865b2cfa6a6dba6e6b3853afdab3ec5c8811415f9942c6231c
2
+ // GENERATED from proofs/Ducat/Rounding.lean by `pnpm gen:kernel`. Do not edit.
3
+ import { RoundingError } from '../rounding-error.js';
4
+ const ROUNDING_NECESSARY = 'Rounding necessary: the result is not exact; pass a rounding mode';
5
+ /**
6
+ * `dividend / divisor` rounded with `mode`; `divisor` must be positive.
7
+ *
8
+ * Each `case` is printed from the Lean kernel for that mode, which is proved correct in
9
+ * proofs/Ducat/Rounding.lean: `kernel_sound` (the result satisfies the specification `Rounds`),
10
+ * `rounds_unique` (only one value does) and `kernel_fails_iff` (it throws only for 'unnecessary' on an
11
+ * inexact division), hence `kernel_correct`. Unknown modes throw a RangeError.
12
+ */
13
+ export function divideAndRoundBigint(dividend, divisor, mode) {
14
+ const quotient = dividend / divisor;
15
+ const remainder = dividend - quotient * divisor;
16
+ return roundTruncatedQuotientBigint(dividend, divisor, quotient, remainder, mode);
17
+ }
18
+ /**
19
+ * Rounds the truncated `quotient` of `dividend / divisor` (with `remainder = dividend - quotient * divisor`)
20
+ * with `mode`; `divisor` must be positive.
21
+ *
22
+ * Each `case` is printed from the Lean kernel for that mode, which is proved correct in
23
+ * proofs/Ducat/Rounding.lean: `kernel_sound` (the result satisfies the specification `Rounds`),
24
+ * `rounds_unique` (only one value does) and `kernel_fails_iff` (it throws only for 'unnecessary' on an
25
+ * inexact division), hence `kernel_correct`. Unknown modes throw a RangeError.
26
+ */
27
+ function roundTruncatedQuotientBigint(dividend, divisor, quotient, remainder, mode) {
28
+ if (remainder === 0n) {
29
+ return quotient;
30
+ }
31
+ const twiceRemainder = remainder < 0n ? -2n * remainder : 2n * remainder;
32
+ switch (mode) {
33
+ // rounds to the nearest integer, ties away from zero
34
+ case 'halfExpand': {
35
+ if (divisor <= twiceRemainder) {
36
+ if (dividend < 0n) {
37
+ return quotient - 1n;
38
+ }
39
+ return quotient + 1n;
40
+ }
41
+ return quotient;
42
+ }
43
+ // rounds to the nearest integer, ties to the even neighbour
44
+ case 'halfEven': {
45
+ if (divisor < twiceRemainder || (twiceRemainder === divisor && quotient % 2n !== 0n)) {
46
+ if (dividend < 0n) {
47
+ return quotient - 1n;
48
+ }
49
+ return quotient + 1n;
50
+ }
51
+ return quotient;
52
+ }
53
+ // rounds to the nearest integer, ties towards zero
54
+ case 'halfTrunc': {
55
+ if (divisor < twiceRemainder) {
56
+ if (dividend < 0n) {
57
+ return quotient - 1n;
58
+ }
59
+ return quotient + 1n;
60
+ }
61
+ return quotient;
62
+ }
63
+ // rounds to the nearest integer, ties towards +infinity
64
+ case 'halfCeil': {
65
+ if (divisor < twiceRemainder || (twiceRemainder === divisor && !(dividend < 0n))) {
66
+ if (dividend < 0n) {
67
+ return quotient - 1n;
68
+ }
69
+ return quotient + 1n;
70
+ }
71
+ return quotient;
72
+ }
73
+ // rounds to the nearest integer, ties towards -infinity
74
+ case 'halfFloor': {
75
+ if (divisor < twiceRemainder || (twiceRemainder === divisor && dividend < 0n)) {
76
+ if (dividend < 0n) {
77
+ return quotient - 1n;
78
+ }
79
+ return quotient + 1n;
80
+ }
81
+ return quotient;
82
+ }
83
+ // rounds towards zero
84
+ case 'trunc': {
85
+ return quotient;
86
+ }
87
+ // rounds away from zero
88
+ case 'expand': {
89
+ if (dividend < 0n) {
90
+ return quotient - 1n;
91
+ }
92
+ return quotient + 1n;
93
+ }
94
+ // rounds towards +infinity
95
+ case 'ceil': {
96
+ if (dividend < 0n) {
97
+ return quotient;
98
+ }
99
+ return quotient + 1n;
100
+ }
101
+ // rounds towards -infinity
102
+ case 'floor': {
103
+ if (!(dividend < 0n)) {
104
+ return quotient;
105
+ }
106
+ return quotient - 1n;
107
+ }
108
+ // rounds not at all: throws RoundingError unless the division is exact
109
+ case 'unnecessary': {
110
+ throw new RoundingError(ROUNDING_NECESSARY);
111
+ }
112
+ }
113
+ throw new RangeError(`Unknown rounding mode "${String(mode)}"`);
114
+ }
115
+ /**
116
+ * The same switch over `number`: rounds the truncated `quotient` of `dividend / divisor`, where
117
+ * `remainder = dividend - quotient * divisor` exactly and `divisor` is positive. Every input must be a safe
118
+ * integer. This copy is not proved; test/kernel.test.ts compares it with the `bigint` one.
119
+ */
120
+ export function roundTruncatedQuotient(dividend, divisor, quotient, remainder, mode) {
121
+ if (remainder === 0) {
122
+ return quotient;
123
+ }
124
+ const twiceRemainder = remainder < 0 ? -2 * remainder : 2 * remainder;
125
+ switch (mode) {
126
+ // rounds to the nearest integer, ties away from zero
127
+ case 'halfExpand': {
128
+ if (divisor <= twiceRemainder) {
129
+ if (dividend < 0) {
130
+ return quotient - 1;
131
+ }
132
+ return quotient + 1;
133
+ }
134
+ return quotient;
135
+ }
136
+ // rounds to the nearest integer, ties to the even neighbour
137
+ case 'halfEven': {
138
+ if (divisor < twiceRemainder || (twiceRemainder === divisor && quotient % 2 !== 0)) {
139
+ if (dividend < 0) {
140
+ return quotient - 1;
141
+ }
142
+ return quotient + 1;
143
+ }
144
+ return quotient;
145
+ }
146
+ // rounds to the nearest integer, ties towards zero
147
+ case 'halfTrunc': {
148
+ if (divisor < twiceRemainder) {
149
+ if (dividend < 0) {
150
+ return quotient - 1;
151
+ }
152
+ return quotient + 1;
153
+ }
154
+ return quotient;
155
+ }
156
+ // rounds to the nearest integer, ties towards +infinity
157
+ case 'halfCeil': {
158
+ if (divisor < twiceRemainder || (twiceRemainder === divisor && !(dividend < 0))) {
159
+ if (dividend < 0) {
160
+ return quotient - 1;
161
+ }
162
+ return quotient + 1;
163
+ }
164
+ return quotient;
165
+ }
166
+ // rounds to the nearest integer, ties towards -infinity
167
+ case 'halfFloor': {
168
+ if (divisor < twiceRemainder || (twiceRemainder === divisor && dividend < 0)) {
169
+ if (dividend < 0) {
170
+ return quotient - 1;
171
+ }
172
+ return quotient + 1;
173
+ }
174
+ return quotient;
175
+ }
176
+ // rounds towards zero
177
+ case 'trunc': {
178
+ return quotient;
179
+ }
180
+ // rounds away from zero
181
+ case 'expand': {
182
+ if (dividend < 0) {
183
+ return quotient - 1;
184
+ }
185
+ return quotient + 1;
186
+ }
187
+ // rounds towards +infinity
188
+ case 'ceil': {
189
+ if (dividend < 0) {
190
+ return quotient;
191
+ }
192
+ return quotient + 1;
193
+ }
194
+ // rounds towards -infinity
195
+ case 'floor': {
196
+ if (!(dividend < 0)) {
197
+ return quotient;
198
+ }
199
+ return quotient - 1;
200
+ }
201
+ // rounds not at all: throws RoundingError unless the division is exact
202
+ case 'unnecessary': {
203
+ throw new RoundingError(ROUNDING_NECESSARY);
204
+ }
205
+ }
206
+ throw new RangeError(`Unknown rounding mode "${String(mode)}"`);
207
+ }
208
+ //# sourceMappingURL=kernel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../../src/generated/kernel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Klarna purchase currencies and their ISO 4217 exponents (amounts are integer minor units). */
2
+ export declare const KLARNA_EXPONENTS: Readonly<Record<string, number>>;
3
+ //# sourceMappingURL=klarna.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"klarna.d.ts","sourceRoot":"","sources":["../../src/generated/klarna.ts"],"names":[],"mappings":"AAGA,iGAAiG;AACjG,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgB7D,CAAC"}
@@ -0,0 +1,21 @@
1
+ // GENERATED by scripts/gen-currencies.mjs from data/klarna.json (https://docs.klarna.com/acquirer/klarna/get-started/integration-resilience/data-types/, retrieved 2026-11-07). Do not edit by hand.
2
+ /* eslint-disable */
3
+ /** Klarna purchase currencies and their ISO 4217 exponents (amounts are integer minor units). */
4
+ export const KLARNA_EXPONENTS = {
5
+ AUD: 2,
6
+ CAD: 2,
7
+ CHF: 2,
8
+ CZK: 2,
9
+ DKK: 2,
10
+ EUR: 2,
11
+ GBP: 2,
12
+ HUF: 2,
13
+ MXN: 2,
14
+ NOK: 2,
15
+ NZD: 2,
16
+ PLN: 2,
17
+ RON: 2,
18
+ SEK: 2,
19
+ USD: 2,
20
+ };
21
+ //# sourceMappingURL=klarna.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"klarna.js","sourceRoot":"","sources":["../../src/generated/klarna.ts"],"names":[],"mappings":"AAAA,qMAAqM;AACrM,oBAAoB;AAEpB,iGAAiG;AACjG,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IAChE,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;CACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** PayPal decimals per currency (`value` is a decimal string). HUF, JPY and TWD take none. */
2
+ export declare const PAYPAL_EXPONENTS: Readonly<Record<string, number>>;
3
+ //# sourceMappingURL=paypal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paypal.d.ts","sourceRoot":"","sources":["../../src/generated/paypal.ts"],"names":[],"mappings":"AAGA,8FAA8F;AAC9F,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0B7D,CAAC"}
@@ -0,0 +1,31 @@
1
+ // GENERATED by scripts/gen-currencies.mjs from data/paypal.json (https://developer.paypal.com/api/rest/reference/currency-codes/, retrieved 2026-11-07). Do not edit by hand.
2
+ /* eslint-disable */
3
+ /** PayPal decimals per currency (`value` is a decimal string). HUF, JPY and TWD take none. */
4
+ export const PAYPAL_EXPONENTS = {
5
+ AUD: 2,
6
+ BRL: 2,
7
+ CAD: 2,
8
+ CHF: 2,
9
+ CNY: 2,
10
+ CZK: 2,
11
+ DKK: 2,
12
+ EUR: 2,
13
+ GBP: 2,
14
+ HKD: 2,
15
+ HUF: 0,
16
+ ILS: 2,
17
+ JPY: 0,
18
+ MXN: 2,
19
+ MYR: 2,
20
+ NOK: 2,
21
+ NZD: 2,
22
+ PHP: 2,
23
+ PLN: 2,
24
+ RUB: 2,
25
+ SEK: 2,
26
+ SGD: 2,
27
+ THB: 2,
28
+ TWD: 0,
29
+ USD: 2,
30
+ };
31
+ //# sourceMappingURL=paypal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paypal.js","sourceRoot":"","sources":["../../src/generated/paypal.ts"],"names":[],"mappings":"AAAA,8KAA8K;AAC9K,oBAAoB;AAEpB,8FAA8F;AAC9F,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IAChE,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;CACP,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Stripe presentment currencies: [API exponent, charge amount multiple, payout amount multiple].
3
+ * A multiple of 100 means "send a two-decimal value whose decimal part is always 00" (ISK, UGX)
4
+ * or, for payouts only, whole units (HUF, TWD). A multiple of 10 is the three-decimal rule
5
+ * (last digit must be 0).
6
+ */
7
+ export declare const STRIPE_RULES: Readonly<Record<string, readonly [exponent: number, chargeMultiple: number, payoutMultiple: number]>>;
8
+ //# sourceMappingURL=stripe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe.d.ts","sourceRoot":"","sources":["../../src/generated/stripe.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CA4I9H,CAAC"}
@@ -0,0 +1,150 @@
1
+ // GENERATED by scripts/gen-currencies.mjs from data/stripe.json (https://docs.stripe.com/currencies, retrieved 2026-11-07). Do not edit by hand.
2
+ /* eslint-disable */
3
+ /**
4
+ * Stripe presentment currencies: [API exponent, charge amount multiple, payout amount multiple].
5
+ * A multiple of 100 means "send a two-decimal value whose decimal part is always 00" (ISK, UGX)
6
+ * or, for payouts only, whole units (HUF, TWD). A multiple of 10 is the three-decimal rule
7
+ * (last digit must be 0).
8
+ */
9
+ export const STRIPE_RULES = {
10
+ AED: [2, 1, 1],
11
+ AFN: [2, 1, 1],
12
+ ALL: [2, 1, 1],
13
+ AMD: [2, 1, 1],
14
+ ANG: [2, 1, 1],
15
+ AOA: [2, 1, 1],
16
+ ARS: [2, 1, 1],
17
+ AUD: [2, 1, 1],
18
+ AWG: [2, 1, 1],
19
+ AZN: [2, 1, 1],
20
+ BAM: [2, 1, 1],
21
+ BBD: [2, 1, 1],
22
+ BDT: [2, 1, 1],
23
+ BHD: [3, 10, 10],
24
+ BIF: [0, 1, 1],
25
+ BMD: [2, 1, 1],
26
+ BND: [2, 1, 1],
27
+ BOB: [2, 1, 1],
28
+ BRL: [2, 1, 1],
29
+ BSD: [2, 1, 1],
30
+ BWP: [2, 1, 1],
31
+ BYN: [2, 1, 1],
32
+ BZD: [2, 1, 1],
33
+ CAD: [2, 1, 1],
34
+ CDF: [2, 1, 1],
35
+ CHF: [2, 1, 1],
36
+ CLP: [0, 1, 1],
37
+ CNY: [2, 1, 1],
38
+ COP: [2, 1, 1],
39
+ CRC: [2, 1, 1],
40
+ CVE: [2, 1, 1],
41
+ CZK: [2, 1, 1],
42
+ DJF: [0, 1, 1],
43
+ DKK: [2, 1, 1],
44
+ DOP: [2, 1, 1],
45
+ DZD: [2, 1, 1],
46
+ EGP: [2, 1, 1],
47
+ ETB: [2, 1, 1],
48
+ EUR: [2, 1, 1],
49
+ FJD: [2, 1, 1],
50
+ FKP: [2, 1, 1],
51
+ GBP: [2, 1, 1],
52
+ GEL: [2, 1, 1],
53
+ GIP: [2, 1, 1],
54
+ GMD: [2, 1, 1],
55
+ GNF: [0, 1, 1],
56
+ GTQ: [2, 1, 1],
57
+ GYD: [2, 1, 1],
58
+ HKD: [2, 1, 1],
59
+ HNL: [2, 1, 1],
60
+ HTG: [2, 1, 1],
61
+ HUF: [2, 1, 100],
62
+ IDR: [2, 1, 1],
63
+ ILS: [2, 1, 1],
64
+ INR: [2, 1, 1],
65
+ ISK: [2, 100, 100],
66
+ JMD: [2, 1, 1],
67
+ JOD: [3, 10, 10],
68
+ JPY: [0, 1, 1],
69
+ KES: [2, 1, 1],
70
+ KGS: [2, 1, 1],
71
+ KHR: [2, 1, 1],
72
+ KMF: [0, 1, 1],
73
+ KRW: [0, 1, 1],
74
+ KWD: [3, 10, 10],
75
+ KYD: [2, 1, 1],
76
+ KZT: [2, 1, 1],
77
+ LAK: [2, 1, 1],
78
+ LBP: [2, 1, 1],
79
+ LKR: [2, 1, 1],
80
+ LRD: [2, 1, 1],
81
+ LSL: [2, 1, 1],
82
+ MAD: [2, 1, 1],
83
+ MDL: [2, 1, 1],
84
+ MGA: [0, 1, 1],
85
+ MKD: [2, 1, 1],
86
+ MMK: [2, 1, 1],
87
+ MNT: [2, 1, 1],
88
+ MOP: [2, 1, 1],
89
+ MUR: [2, 1, 1],
90
+ MVR: [2, 1, 1],
91
+ MWK: [2, 1, 1],
92
+ MXN: [2, 1, 1],
93
+ MYR: [2, 1, 1],
94
+ MZN: [2, 1, 1],
95
+ NAD: [2, 1, 1],
96
+ NGN: [2, 1, 1],
97
+ NIO: [2, 1, 1],
98
+ NOK: [2, 1, 1],
99
+ NPR: [2, 1, 1],
100
+ NZD: [2, 1, 1],
101
+ OMR: [3, 10, 10],
102
+ PAB: [2, 1, 1],
103
+ PEN: [2, 1, 1],
104
+ PGK: [2, 1, 1],
105
+ PHP: [2, 1, 1],
106
+ PKR: [2, 1, 1],
107
+ PLN: [2, 1, 1],
108
+ PYG: [0, 1, 1],
109
+ QAR: [2, 1, 1],
110
+ RON: [2, 1, 1],
111
+ RSD: [2, 1, 1],
112
+ RUB: [2, 1, 1],
113
+ RWF: [0, 1, 1],
114
+ SAR: [2, 1, 1],
115
+ SBD: [2, 1, 1],
116
+ SCR: [2, 1, 1],
117
+ SEK: [2, 1, 1],
118
+ SGD: [2, 1, 1],
119
+ SHP: [2, 1, 1],
120
+ SLE: [2, 1, 1],
121
+ SOS: [2, 1, 1],
122
+ SRD: [2, 1, 1],
123
+ STD: [2, 1, 1],
124
+ SZL: [2, 1, 1],
125
+ THB: [2, 1, 1],
126
+ TJS: [2, 1, 1],
127
+ TND: [3, 10, 10],
128
+ TOP: [2, 1, 1],
129
+ TRY: [2, 1, 1],
130
+ TTD: [2, 1, 1],
131
+ TWD: [2, 1, 100],
132
+ TZS: [2, 1, 1],
133
+ UAH: [2, 1, 1],
134
+ UGX: [2, 100, 100],
135
+ USD: [2, 1, 1],
136
+ UYU: [2, 1, 1],
137
+ UZS: [2, 1, 1],
138
+ VND: [0, 1, 1],
139
+ VUV: [0, 1, 1],
140
+ WST: [2, 1, 1],
141
+ XAF: [0, 1, 1],
142
+ XCD: [2, 1, 1],
143
+ XCG: [2, 1, 1],
144
+ XOF: [0, 1, 1],
145
+ XPF: [0, 1, 1],
146
+ YER: [2, 1, 1],
147
+ ZAR: [2, 1, 1],
148
+ ZMW: [2, 1, 1],
149
+ };
150
+ //# sourceMappingURL=stripe.js.map