@classytic/stage 0.3.0 → 0.4.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 (431) hide show
  1. package/dist/_virtual/_rolldown/runtime.mjs +18 -0
  2. package/dist/atomic/aufbau.d.mts +144 -0
  3. package/dist/atomic/aufbau.mjs +384 -0
  4. package/dist/atomic/elements.d.mts +67 -0
  5. package/dist/atomic/elements.mjs +785 -0
  6. package/dist/atomic/emission.d.mts +112 -0
  7. package/dist/atomic/emission.mjs +179 -0
  8. package/dist/atomic/index.d.mts +8 -0
  9. package/dist/atomic/index.mjs +9 -0
  10. package/dist/atomic/periodic.d.mts +82 -0
  11. package/dist/atomic/periodic.mjs +231 -0
  12. package/dist/atomic/properties.d.mts +100 -0
  13. package/dist/atomic/properties.mjs +574 -0
  14. package/dist/atomic/shells.d.mts +137 -0
  15. package/dist/atomic/shells.mjs +170 -0
  16. package/dist/atomic/trends.d.mts +148 -0
  17. package/dist/atomic/trends.mjs +225 -0
  18. package/dist/chem/chromatography.d.mts +66 -0
  19. package/dist/chem/chromatography.mjs +63 -0
  20. package/dist/chem/complex.d.mts +114 -0
  21. package/dist/chem/complex.mjs +234 -0
  22. package/dist/chem/cycle.d.mts +75 -0
  23. package/dist/chem/cycle.mjs +145 -0
  24. package/dist/chem/equation.d.mts +86 -0
  25. package/dist/chem/equation.mjs +168 -0
  26. package/dist/chem/formula.d.mts +90 -0
  27. package/dist/chem/formula.mjs +201 -0
  28. package/dist/chem/functional-groups.d.mts +31 -0
  29. package/dist/chem/functional-groups.mjs +187 -0
  30. package/dist/chem/hazard.d.mts +94 -0
  31. package/dist/chem/hazard.mjs +329 -0
  32. package/dist/chem/index.d.mts +34 -33
  33. package/dist/chem/index.mjs +34 -28
  34. package/dist/chem/ionic.d.mts +98 -0
  35. package/dist/chem/ionic.mjs +156 -0
  36. package/dist/chem/layout.d.mts +46 -0
  37. package/dist/chem/layout.mjs +342 -0
  38. package/dist/chem/lewis.d.mts +79 -0
  39. package/dist/chem/lewis.mjs +163 -0
  40. package/dist/chem/molecular-orbital.d.mts +114 -0
  41. package/dist/chem/molecular-orbital.mjs +201 -0
  42. package/dist/chem/molecule.d.mts +154 -0
  43. package/dist/chem/molecule.mjs +282 -0
  44. package/dist/chem/nmr.d.mts +153 -0
  45. package/dist/chem/nmr.mjs +165 -0
  46. package/dist/chem/polymer.d.mts +65 -0
  47. package/dist/chem/polymer.mjs +179 -0
  48. package/dist/chem/redox.d.mts +138 -0
  49. package/dist/chem/redox.mjs +328 -0
  50. package/dist/chem/relations.d.mts +183 -0
  51. package/dist/chem/relations.mjs +299 -0
  52. package/dist/chem/skeleton.d.mts +51 -0
  53. package/dist/chem/skeleton.mjs +186 -0
  54. package/dist/chem/solution.d.mts +116 -0
  55. package/dist/chem/solution.mjs +186 -0
  56. package/dist/chem/species.d.mts +47 -0
  57. package/dist/chem/species.mjs +128 -0
  58. package/dist/chem/stereo.d.mts +108 -0
  59. package/dist/chem/stereo.mjs +286 -0
  60. package/dist/chem/stoichiometry.d.mts +95 -0
  61. package/dist/chem/stoichiometry.mjs +145 -0
  62. package/dist/chem/synthesis.d.mts +113 -0
  63. package/dist/chem/synthesis.mjs +281 -0
  64. package/dist/chem/vsepr.d.mts +80 -0
  65. package/dist/chem/vsepr.mjs +247 -0
  66. package/dist/circuit/ac.d.mts +163 -0
  67. package/dist/circuit/ac.mjs +452 -0
  68. package/dist/circuit/dc.d.mts +92 -0
  69. package/dist/circuit/dc.mjs +333 -0
  70. package/dist/circuit/index.d.mts +5 -92
  71. package/dist/circuit/index.mjs +5 -332
  72. package/dist/circuit/network.d.mts +99 -0
  73. package/dist/circuit/network.mjs +440 -0
  74. package/dist/circuit/topology.d.mts +102 -0
  75. package/dist/circuit/topology.mjs +143 -0
  76. package/dist/colour/absorption.d.mts +79 -0
  77. package/dist/colour/absorption.mjs +137 -0
  78. package/dist/colour/index.d.mts +6 -0
  79. package/dist/colour/index.mjs +7 -0
  80. package/dist/colour/name.d.mts +14 -0
  81. package/dist/colour/name.mjs +76 -0
  82. package/dist/colour/observer.d.mts +31 -0
  83. package/dist/colour/observer.mjs +46 -0
  84. package/dist/colour/spectrum.d.mts +61 -0
  85. package/dist/colour/spectrum.mjs +108 -0
  86. package/dist/colour/srgb.d.mts +49 -0
  87. package/dist/colour/srgb.mjs +108 -0
  88. package/dist/core/constants.d.mts +138 -0
  89. package/dist/core/constants.mjs +139 -0
  90. package/dist/core/index.d.mts +3 -1
  91. package/dist/core/index.mjs +3 -1
  92. package/dist/core/vec3.d.mts +94 -0
  93. package/dist/core/vec3.mjs +123 -0
  94. package/dist/core/worked.d.mts +35 -0
  95. package/dist/core/worked.mjs +44 -0
  96. package/dist/electro/cell.d.mts +102 -0
  97. package/dist/electro/cell.mjs +170 -0
  98. package/dist/electro/conductivity.d.mts +157 -0
  99. package/dist/electro/conductivity.mjs +156 -0
  100. package/dist/electro/couples.d.mts +114 -0
  101. package/dist/electro/couples.mjs +334 -0
  102. package/dist/electro/electrolysis.d.mts +96 -0
  103. package/dist/electro/electrolysis.mjs +274 -0
  104. package/dist/electro/faraday.d.mts +150 -0
  105. package/dist/electro/faraday.mjs +118 -0
  106. package/dist/electro/index.d.mts +6 -0
  107. package/dist/electro/index.mjs +7 -0
  108. package/dist/finance/accounting/adjustments.d.mts +17 -0
  109. package/dist/finance/accounting/adjustments.mjs +202 -0
  110. package/dist/finance/accounting/analysis.d.mts +8 -0
  111. package/dist/finance/accounting/analysis.mjs +205 -0
  112. package/dist/finance/accounting/clubs.d.mts +21 -0
  113. package/dist/finance/accounting/clubs.mjs +217 -0
  114. package/dist/finance/accounting/company-statements.d.mts +7 -0
  115. package/dist/finance/accounting/company-statements.mjs +150 -0
  116. package/dist/finance/accounting/harness.d.mts +7 -0
  117. package/dist/finance/accounting/harness.mjs +45 -0
  118. package/dist/finance/accounting/index.d.mts +18 -0
  119. package/dist/finance/accounting/index.mjs +18 -0
  120. package/dist/finance/accounting/journalize.d.mts +16 -0
  121. package/dist/finance/accounting/journalize.mjs +128 -0
  122. package/dist/finance/accounting/manufacturing.d.mts +8 -0
  123. package/dist/finance/accounting/manufacturing.mjs +236 -0
  124. package/dist/finance/accounting/partnership.d.mts +7 -0
  125. package/dist/finance/accounting/partnership.mjs +152 -0
  126. package/dist/finance/accounting/period-case.d.mts +6 -0
  127. package/dist/finance/accounting/period-case.mjs +71 -0
  128. package/dist/finance/accounting/post.d.mts +9 -0
  129. package/dist/finance/accounting/post.mjs +84 -0
  130. package/dist/finance/accounting/precision.d.mts +9 -0
  131. package/dist/finance/accounting/precision.mjs +15 -0
  132. package/dist/finance/accounting/rules.d.mts +21 -0
  133. package/dist/finance/accounting/rules.mjs +37 -0
  134. package/dist/finance/accounting/solve.d.mts +28 -0
  135. package/dist/finance/accounting/solve.mjs +92 -0
  136. package/dist/finance/accounting/statements.d.mts +7 -0
  137. package/dist/finance/accounting/statements.mjs +142 -0
  138. package/dist/finance/accounting/types.d.mts +649 -0
  139. package/dist/finance/accounting/validate.d.mts +7 -0
  140. package/dist/finance/accounting/validate.mjs +67 -0
  141. package/dist/finance/accounting/verification.d.mts +24 -0
  142. package/dist/finance/accounting/verification.mjs +386 -0
  143. package/dist/finance/bizsim.d.mts +21 -39
  144. package/dist/finance/bizsim.mjs +276 -97
  145. package/dist/finance/index.d.mts +20 -43
  146. package/dist/finance/index.mjs +19 -77
  147. package/dist/finance/investment-math.d.mts +7 -0
  148. package/dist/finance/investment-math.mjs +18 -0
  149. package/dist/finance/management-accounting/budgeting.d.mts +7 -0
  150. package/dist/finance/management-accounting/budgeting.mjs +189 -0
  151. package/dist/finance/management-accounting/cash-budget.d.mts +7 -0
  152. package/dist/finance/management-accounting/cash-budget.mjs +154 -0
  153. package/dist/finance/management-accounting/costing.d.mts +8 -0
  154. package/dist/finance/management-accounting/costing.mjs +175 -0
  155. package/dist/finance/management-accounting/decisions.d.mts +8 -0
  156. package/dist/finance/management-accounting/decisions.mjs +164 -0
  157. package/dist/finance/management-accounting/index.d.mts +13 -0
  158. package/dist/finance/management-accounting/index.mjs +13 -0
  159. package/dist/finance/management-accounting/integrated-budget.d.mts +8 -0
  160. package/dist/finance/management-accounting/integrated-budget.mjs +67 -0
  161. package/dist/finance/management-accounting/inventory-costing.d.mts +7 -0
  162. package/dist/finance/management-accounting/inventory-costing.mjs +173 -0
  163. package/dist/finance/management-accounting/investment-appraisal.d.mts +7 -0
  164. package/dist/finance/management-accounting/investment-appraisal.mjs +148 -0
  165. package/dist/finance/management-accounting/management-case.d.mts +8 -0
  166. package/dist/finance/management-accounting/management-case.mjs +91 -0
  167. package/dist/finance/management-accounting/master-budget.d.mts +7 -0
  168. package/dist/finance/management-accounting/master-budget.mjs +137 -0
  169. package/dist/finance/management-accounting/production-costing.d.mts +8 -0
  170. package/dist/finance/management-accounting/production-costing.mjs +214 -0
  171. package/dist/finance/management-accounting/types.d.mts +644 -0
  172. package/dist/finance/management-accounting/variances.d.mts +7 -0
  173. package/dist/finance/management-accounting/variances.mjs +150 -0
  174. package/dist/index.d.mts +6 -6
  175. package/dist/index.mjs +1 -1
  176. package/dist/math/analysis.d.mts +61 -0
  177. package/dist/math/analysis.mjs +187 -0
  178. package/dist/math/answer-check.d.mts +50 -0
  179. package/dist/math/answer-check.mjs +106 -0
  180. package/dist/math/calculus.d.mts +4 -9
  181. package/dist/math/calculus.mjs +216 -7
  182. package/dist/math/complex.d.mts +93 -0
  183. package/dist/math/complex.mjs +239 -0
  184. package/dist/math/expr.d.mts +23 -0
  185. package/dist/math/expr.mjs +36 -0
  186. package/dist/math/index.d.mts +8 -22
  187. package/dist/math/index.mjs +8 -37
  188. package/dist/math/latex.mjs +2 -1
  189. package/dist/math/parse.mjs +1 -1
  190. package/dist/math/poly.d.mts +55 -0
  191. package/dist/math/poly.mjs +273 -0
  192. package/dist/math/rearrange.d.mts +14 -0
  193. package/dist/math/rearrange.mjs +125 -0
  194. package/dist/math/solve.d.mts +21 -0
  195. package/dist/math/solve.mjs +75 -0
  196. package/dist/networking/addressing.d.mts +26 -0
  197. package/dist/networking/addressing.mjs +33 -0
  198. package/dist/networking/cloud/access.d.mts +36 -0
  199. package/dist/networking/cloud/access.mjs +95 -0
  200. package/dist/networking/cloud/containers.d.mts +43 -0
  201. package/dist/networking/cloud/containers.mjs +54 -0
  202. package/dist/networking/cloud/edge.d.mts +17 -0
  203. package/dist/networking/cloud/edge.mjs +31 -0
  204. package/dist/networking/cloud/failure-domains.d.mts +19 -0
  205. package/dist/networking/cloud/failure-domains.mjs +22 -0
  206. package/dist/networking/cloud/geo-routing.d.mts +22 -0
  207. package/dist/networking/cloud/geo-routing.mjs +64 -0
  208. package/dist/networking/cloud/index.d.mts +18 -0
  209. package/dist/networking/cloud/index.mjs +19 -0
  210. package/dist/networking/cloud/inference-reliability.d.mts +30 -0
  211. package/dist/networking/cloud/inference-reliability.mjs +76 -0
  212. package/dist/networking/cloud/inference.d.mts +118 -0
  213. package/dist/networking/cloud/inference.mjs +179 -0
  214. package/dist/networking/cloud/infrastructure.d.mts +45 -0
  215. package/dist/networking/cloud/infrastructure.mjs +96 -0
  216. package/dist/networking/cloud/observability.d.mts +24 -0
  217. package/dist/networking/cloud/observability.mjs +34 -0
  218. package/dist/networking/cloud/orchestration.d.mts +32 -0
  219. package/dist/networking/cloud/orchestration.mjs +38 -0
  220. package/dist/networking/cloud/recovery.d.mts +21 -0
  221. package/dist/networking/cloud/recovery.mjs +27 -0
  222. package/dist/networking/cloud/releases.d.mts +42 -0
  223. package/dist/networking/cloud/releases.mjs +135 -0
  224. package/dist/networking/cloud/scaling.d.mts +25 -0
  225. package/dist/networking/cloud/scaling.mjs +65 -0
  226. package/dist/networking/cloud/secrets.d.mts +39 -0
  227. package/dist/networking/cloud/secrets.mjs +68 -0
  228. package/dist/networking/cloud/server-deployment.d.mts +29 -0
  229. package/dist/networking/cloud/server-deployment.mjs +72 -0
  230. package/dist/networking/cloud/storage.d.mts +16 -0
  231. package/dist/networking/cloud/storage.mjs +58 -0
  232. package/dist/networking/cloud/vpc.d.mts +18 -0
  233. package/dist/networking/cloud/vpc.mjs +100 -0
  234. package/dist/networking/delivery.d.mts +34 -0
  235. package/dist/networking/delivery.mjs +52 -0
  236. package/dist/networking/index.d.mts +47 -0
  237. package/dist/networking/index.mjs +47 -0
  238. package/dist/networking/ipv6.d.mts +28 -0
  239. package/dist/networking/ipv6.mjs +17 -0
  240. package/dist/networking/journeys.d.mts +83 -0
  241. package/dist/networking/journeys.mjs +161 -0
  242. package/dist/networking/models/airtime.d.mts +87 -0
  243. package/dist/networking/models/airtime.mjs +130 -0
  244. package/dist/networking/models/cellular.d.mts +157 -0
  245. package/dist/networking/models/cellular.mjs +252 -0
  246. package/dist/networking/models/encapsulation.d.mts +98 -0
  247. package/dist/networking/models/encapsulation.mjs +132 -0
  248. package/dist/networking/models/handover.d.mts +116 -0
  249. package/dist/networking/models/handover.mjs +209 -0
  250. package/dist/networking/models/handshake.d.mts +90 -0
  251. package/dist/networking/models/handshake.mjs +122 -0
  252. package/dist/networking/models/index.d.mts +14 -0
  253. package/dist/networking/models/index.mjs +15 -0
  254. package/dist/networking/models/media.d.mts +82 -0
  255. package/dist/networking/models/media.mjs +188 -0
  256. package/dist/networking/models/satellite.d.mts +86 -0
  257. package/dist/networking/models/satellite.mjs +121 -0
  258. package/dist/networking/models/spectrum.d.mts +83 -0
  259. package/dist/networking/models/spectrum.mjs +235 -0
  260. package/dist/networking/models/switch.d.mts +80 -0
  261. package/dist/networking/models/switch.mjs +155 -0
  262. package/dist/networking/models/vlan.d.mts +62 -0
  263. package/dist/networking/models/vlan.mjs +100 -0
  264. package/dist/networking/models/vpn.d.mts +66 -0
  265. package/dist/networking/models/vpn.mjs +125 -0
  266. package/dist/networking/models/wifi-privacy.d.mts +82 -0
  267. package/dist/networking/models/wifi-privacy.mjs +130 -0
  268. package/dist/networking/models/wifi.d.mts +240 -0
  269. package/dist/networking/models/wifi.mjs +562 -0
  270. package/dist/networking/nat-traversal.d.mts +24 -0
  271. package/dist/networking/nat-traversal.mjs +38 -0
  272. package/dist/networking/protocols.d.mts +17 -0
  273. package/dist/networking/protocols.mjs +57 -0
  274. package/dist/networking/queue.d.mts +12 -0
  275. package/dist/networking/queue.mjs +18 -0
  276. package/dist/networking/route-learning.d.mts +23 -0
  277. package/dist/networking/route-learning.mjs +43 -0
  278. package/dist/networking/routing.d.mts +11 -0
  279. package/dist/networking/routing.mjs +25 -0
  280. package/dist/networking/signals.d.mts +26 -0
  281. package/dist/networking/signals.mjs +35 -0
  282. package/dist/networking/subnet.d.mts +49 -0
  283. package/dist/networking/subnet.mjs +89 -0
  284. package/dist/networking/tcp-reliability.d.mts +24 -0
  285. package/dist/networking/tcp-reliability.mjs +38 -0
  286. package/dist/networking/topology/contract.d.mts +123 -0
  287. package/dist/networking/topology/index.d.mts +4 -0
  288. package/dist/networking/topology/index.mjs +4 -0
  289. package/dist/networking/topology/presets.d.mts +7 -0
  290. package/dist/networking/topology/presets.mjs +302 -0
  291. package/dist/networking/topology/simulation.d.mts +8 -0
  292. package/dist/networking/topology/simulation.mjs +179 -0
  293. package/dist/networking/wireless.d.mts +11 -0
  294. package/dist/networking/wireless.mjs +17 -0
  295. package/dist/optics/imaging.d.mts +218 -0
  296. package/dist/optics/imaging.mjs +276 -0
  297. package/dist/optics/index.d.mts +7 -0
  298. package/dist/optics/index.mjs +8 -0
  299. package/dist/optics/laws.d.mts +70 -0
  300. package/dist/optics/laws.mjs +195 -0
  301. package/dist/optics/prism.d.mts +148 -0
  302. package/dist/optics/prism.mjs +197 -0
  303. package/dist/optics/refraction.d.mts +201 -0
  304. package/dist/optics/refraction.mjs +270 -0
  305. package/dist/optics/wave-optics.d.mts +171 -0
  306. package/dist/optics/wave-optics.mjs +259 -0
  307. package/dist/physics/ac/index.d.mts +183 -0
  308. package/dist/physics/ac/index.mjs +203 -0
  309. package/dist/physics/dynamics/forces.d.mts +98 -0
  310. package/dist/physics/dynamics/forces.mjs +153 -0
  311. package/dist/physics/dynamics/friction.d.mts +76 -0
  312. package/dist/physics/dynamics/friction.mjs +119 -0
  313. package/dist/physics/dynamics/system.d.mts +68 -0
  314. package/dist/physics/dynamics/system.mjs +125 -0
  315. package/dist/physics/electrostatics/index.d.mts +169 -0
  316. package/dist/physics/electrostatics/index.mjs +249 -0
  317. package/dist/physics/energy/centre-of-mass.d.mts +115 -0
  318. package/dist/physics/energy/centre-of-mass.mjs +180 -0
  319. package/dist/physics/energy/conservation.d.mts +81 -0
  320. package/dist/physics/energy/conservation.mjs +129 -0
  321. package/dist/physics/energy/power.d.mts +90 -0
  322. package/dist/physics/energy/power.mjs +167 -0
  323. package/dist/physics/energy/spring.d.mts +73 -0
  324. package/dist/physics/energy/spring.mjs +129 -0
  325. package/dist/physics/energy/store.d.mts +63 -0
  326. package/dist/physics/energy/store.mjs +108 -0
  327. package/dist/physics/energy/theorem.d.mts +65 -0
  328. package/dist/physics/energy/theorem.mjs +113 -0
  329. package/dist/physics/energy/work.d.mts +114 -0
  330. package/dist/physics/energy/work.mjs +219 -0
  331. package/dist/physics/gravitation/body.d.mts +85 -0
  332. package/dist/physics/gravitation/body.mjs +168 -0
  333. package/dist/physics/gravitation/kepler.d.mts +127 -0
  334. package/dist/physics/gravitation/kepler.mjs +216 -0
  335. package/dist/physics/gravitation/law.d.mts +117 -0
  336. package/dist/physics/gravitation/law.mjs +175 -0
  337. package/dist/physics/gravitation/orbit.d.mts +119 -0
  338. package/dist/physics/gravitation/orbit.mjs +202 -0
  339. package/dist/physics/gravitation/potential.d.mts +114 -0
  340. package/dist/physics/gravitation/potential.mjs +202 -0
  341. package/dist/physics/gravitation/variation.d.mts +97 -0
  342. package/dist/physics/gravitation/variation.mjs +175 -0
  343. package/dist/physics/index.d.mts +35 -0
  344. package/dist/physics/index.mjs +36 -0
  345. package/dist/physics/integral-sweep.d.mts +63 -0
  346. package/dist/physics/integral-sweep.mjs +126 -0
  347. package/dist/physics/kinematics/equations.d.mts +47 -0
  348. package/dist/physics/kinematics/equations.mjs +126 -0
  349. package/dist/physics/kinematics/free-fall.d.mts +53 -0
  350. package/dist/physics/kinematics/free-fall.mjs +71 -0
  351. package/dist/physics/kinematics/given.d.mts +16 -0
  352. package/dist/physics/kinematics/given.mjs +55 -0
  353. package/dist/physics/kinematics/roots.d.mts +41 -0
  354. package/dist/physics/kinematics/roots.mjs +72 -0
  355. package/dist/physics/kinematics/solve.d.mts +52 -0
  356. package/dist/physics/kinematics/solve.mjs +172 -0
  357. package/dist/physics/magnetism/biot-savart.d.mts +161 -0
  358. package/dist/physics/magnetism/biot-savart.mjs +353 -0
  359. package/dist/physics/magnetism/flux.d.mts +94 -0
  360. package/dist/physics/magnetism/flux.mjs +313 -0
  361. package/dist/physics/magnetism/geomagnetism.d.mts +151 -0
  362. package/dist/physics/magnetism/geomagnetism.mjs +184 -0
  363. package/dist/physics/magnetism/index.d.mts +12 -0
  364. package/dist/physics/magnetism/index.mjs +74 -0
  365. package/dist/physics/magnetism/lorentz.d.mts +28 -0
  366. package/dist/physics/magnetism/lorentz.mjs +88 -0
  367. package/dist/physics/magnetism/magnetic-force.d.mts +102 -0
  368. package/dist/physics/magnetism/magnetic-force.mjs +169 -0
  369. package/dist/physics/momentum/collide.d.mts +77 -0
  370. package/dist/physics/momentum/collide.mjs +115 -0
  371. package/dist/physics/momentum/impulse.d.mts +89 -0
  372. package/dist/physics/momentum/impulse.mjs +159 -0
  373. package/dist/physics/momentum/planar.d.mts +60 -0
  374. package/dist/physics/momentum/planar.mjs +110 -0
  375. package/dist/physics/projectile.d.mts +107 -0
  376. package/dist/physics/projectile.mjs +185 -0
  377. package/dist/physics/rotation/angular.d.mts +85 -0
  378. package/dist/physics/rotation/angular.mjs +130 -0
  379. package/dist/physics/rotation/circular.d.mts +79 -0
  380. package/dist/physics/rotation/circular.mjs +131 -0
  381. package/dist/physics/rotation/inertia.d.mts +164 -0
  382. package/dist/physics/rotation/inertia.mjs +332 -0
  383. package/dist/physics/rotation/torque.d.mts +65 -0
  384. package/dist/physics/rotation/torque.mjs +134 -0
  385. package/dist/physics/vectors.d.mts +64 -0
  386. package/dist/physics/vectors.mjs +114 -0
  387. package/dist/quantity/index.d.mts +119 -0
  388. package/dist/quantity/index.mjs +417 -0
  389. package/dist/relation/derive.d.mts +74 -0
  390. package/dist/relation/derive.mjs +73 -0
  391. package/dist/relation/index.d.mts +56 -0
  392. package/dist/relation/index.mjs +234 -0
  393. package/dist/scene/evaluators.mjs +1 -1
  394. package/dist/sim/thermal.mjs +45 -20
  395. package/dist/thermo/calorimetry.d.mts +207 -0
  396. package/dist/thermo/calorimetry.mjs +345 -0
  397. package/dist/thermo/cycles.d.mts +142 -0
  398. package/dist/thermo/cycles.mjs +256 -0
  399. package/dist/thermo/entropy.d.mts +87 -0
  400. package/dist/thermo/entropy.mjs +140 -0
  401. package/dist/thermo/expansion.d.mts +130 -0
  402. package/dist/thermo/expansion.mjs +178 -0
  403. package/dist/thermo/gas.d.mts +197 -0
  404. package/dist/thermo/gas.mjs +279 -0
  405. package/dist/thermo/heat-transfer.d.mts +164 -0
  406. package/dist/thermo/heat-transfer.mjs +217 -0
  407. package/dist/thermo/index.d.mts +9 -82
  408. package/dist/thermo/index.mjs +9 -132
  409. package/dist/thermo/processes.d.mts +95 -0
  410. package/dist/thermo/processes.mjs +154 -0
  411. package/dist/thermo/temperature.d.mts +174 -0
  412. package/dist/thermo/temperature.mjs +236 -0
  413. package/dist/waves/damping.d.mts +224 -0
  414. package/dist/waves/damping.mjs +317 -0
  415. package/dist/waves/doppler.d.mts +72 -0
  416. package/dist/waves/doppler.mjs +125 -0
  417. package/dist/waves/index.d.mts +10 -0
  418. package/dist/waves/index.mjs +10 -0
  419. package/dist/waves/pendulum.d.mts +130 -0
  420. package/dist/waves/pendulum.mjs +211 -0
  421. package/dist/waves/pitch.d.mts +125 -0
  422. package/dist/waves/pitch.mjs +158 -0
  423. package/dist/waves/shm.d.mts +170 -0
  424. package/dist/waves/shm.mjs +279 -0
  425. package/dist/waves/springs.d.mts +103 -0
  426. package/dist/waves/springs.mjs +176 -0
  427. package/dist/waves/superposition.d.mts +124 -0
  428. package/dist/waves/superposition.mjs +196 -0
  429. package/dist/waves/wave.d.mts +154 -0
  430. package/dist/waves/wave.mjs +178 -0
  431. package/package.json +74 -2
@@ -0,0 +1,24 @@
1
+ import { AccountingDiagnostic, AccountingPolicy, BankReconciliationItem, BankReconciliationResult, ControlAccountFacts, ControlAccountResult, ExplanationStep, JournalEntry, SuspenseCorrectionFact, SuspenseReconstructionFacts, SuspenseReconstructionResult, TrialBalanceErrorDiagnosis, TrialBalanceErrorType } from "./types.mjs";
2
+
3
+ //#region src/finance/accounting/verification.d.ts
4
+ declare function reconcileBank({
5
+ cashBookBalance,
6
+ bankStatementBalance,
7
+ items,
8
+ policy
9
+ }: {
10
+ cashBookBalance: number;
11
+ bankStatementBalance: number;
12
+ items: readonly BankReconciliationItem[];
13
+ policy?: AccountingPolicy;
14
+ }): BankReconciliationResult;
15
+ declare function solveControlAccount(facts: ControlAccountFacts, policy?: AccountingPolicy): ControlAccountResult;
16
+ declare function diagnoseTrialBalanceError(type: TrialBalanceErrorType): TrialBalanceErrorDiagnosis;
17
+ declare function createSuspenseCorrection(fact: SuspenseCorrectionFact, policy?: AccountingPolicy): {
18
+ entry?: JournalEntry;
19
+ diagnostics: AccountingDiagnostic[];
20
+ trace: ExplanationStep[];
21
+ };
22
+ declare function reconstructSuspenseAccount(facts: SuspenseReconstructionFacts, policy?: AccountingPolicy): SuspenseReconstructionResult;
23
+ //#endregion
24
+ export { createSuspenseCorrection, diagnoseTrialBalanceError, reconcileBank, reconstructSuspenseAccount, solveControlAccount };
@@ -0,0 +1,386 @@
1
+ import { DEFAULT_ACCOUNTING_POLICY, fromMinor, toMinor } from "./precision.mjs";
2
+
3
+ //#region src/finance/accounting/verification.ts
4
+ function rounded(value, policy) {
5
+ return fromMinor(toMinor(value, policy), policy);
6
+ }
7
+ function invalidAmount(id, label) {
8
+ return {
9
+ code: "invalid-adjustment",
10
+ severity: "error",
11
+ entryId: id,
12
+ message: `${label} must be a finite non-negative amount.`
13
+ };
14
+ }
15
+ function invalidBalance(id, label) {
16
+ return {
17
+ code: "invalid-adjustment",
18
+ severity: "error",
19
+ entryId: id,
20
+ message: `${label} must be finite; use a negative value for an overdraft.`
21
+ };
22
+ }
23
+ function reconcileBank({ cashBookBalance, bankStatementBalance, items, policy = DEFAULT_ACCOUNTING_POLICY }) {
24
+ const diagnostics = [];
25
+ if (!Number.isFinite(cashBookBalance)) diagnostics.push(invalidBalance("bank-reconciliation", "Cash book balance"));
26
+ if (!Number.isFinite(bankStatementBalance)) diagnostics.push(invalidBalance("bank-reconciliation", "Bank statement balance"));
27
+ for (const item of items) if (!Number.isFinite(item.amount) || item.amount < 0) diagnostics.push(invalidAmount(item.id, item.label ?? item.type));
28
+ if (diagnostics.length > 0) return {
29
+ adjustedCashBookBalance: 0,
30
+ reconciledBankStatementBalance: 0,
31
+ difference: 0,
32
+ reconciles: false,
33
+ cashBookAdjustments: [],
34
+ timingDifferences: [],
35
+ diagnostics,
36
+ trace: []
37
+ };
38
+ const cashBookAdjustments = items.flatMap((item) => {
39
+ if (item.type === "bank-credit") return [{
40
+ id: item.id,
41
+ label: item.label ?? "Credit shown by bank",
42
+ amount: item.amount
43
+ }];
44
+ if (item.type === "bank-debit") return [{
45
+ id: item.id,
46
+ label: item.label ?? "Debit shown by bank",
47
+ amount: -item.amount
48
+ }];
49
+ if (item.type === "cashbook-correction") return [{
50
+ id: item.id,
51
+ label: item.label ?? "Cash book correction",
52
+ amount: item.direction === "increase" ? item.amount : -item.amount
53
+ }];
54
+ return [];
55
+ });
56
+ const timingDifferences = items.flatMap((item) => {
57
+ if (item.type === "deposit-in-transit") return [{
58
+ id: item.id,
59
+ label: item.label ?? "Deposit in transit",
60
+ amount: item.amount
61
+ }];
62
+ if (item.type === "unpresented-cheque") return [{
63
+ id: item.id,
64
+ label: item.label ?? "Unpresented cheque",
65
+ amount: -item.amount
66
+ }];
67
+ return [];
68
+ });
69
+ const adjustedCashBookBalance = rounded(cashBookBalance + cashBookAdjustments.reduce((sum, item) => sum + item.amount, 0), policy);
70
+ const reconciledBankStatementBalance = rounded(bankStatementBalance + timingDifferences.reduce((sum, item) => sum + item.amount, 0), policy);
71
+ const difference = rounded(adjustedCashBookBalance - reconciledBankStatementBalance, policy);
72
+ const trace = [
73
+ {
74
+ id: "bank:cashbook",
75
+ kind: "derive",
76
+ rule: "Update the cash book only for bank-originated items and cash-book errors.",
77
+ working: `${cashBookBalance} + (${cashBookAdjustments.map((item) => item.amount).join(" + ") || 0})`,
78
+ result: adjustedCashBookBalance
79
+ },
80
+ {
81
+ id: "bank:timing",
82
+ kind: "derive",
83
+ rule: "Use timing differences only in the reconciliation statement.",
84
+ working: `${bankStatementBalance} + (${timingDifferences.map((item) => item.amount).join(" + ") || 0})`,
85
+ result: reconciledBankStatementBalance
86
+ },
87
+ {
88
+ id: "bank:check",
89
+ kind: "check",
90
+ rule: "The adjusted cash book and reconciled bank statement should agree.",
91
+ working: `${adjustedCashBookBalance} − ${reconciledBankStatementBalance}`,
92
+ result: difference === 0
93
+ }
94
+ ];
95
+ return {
96
+ adjustedCashBookBalance,
97
+ reconciledBankStatementBalance,
98
+ difference,
99
+ reconciles: difference === 0,
100
+ cashBookAdjustments,
101
+ timingDifferences,
102
+ diagnostics,
103
+ trace
104
+ };
105
+ }
106
+ function solveControlAccount(facts, policy = DEFAULT_ACCOUNTING_POLICY) {
107
+ const diagnostics = [
108
+ facts.openingBalance,
109
+ facts.creditTransactions,
110
+ facts.cashSettled,
111
+ facts.returns,
112
+ facts.discounts,
113
+ facts.contra,
114
+ facts.writeOffs ?? 0,
115
+ facts.dishonouredPayments ?? 0,
116
+ facts.otherCharges ?? 0
117
+ ].some((value) => !Number.isFinite(value) || value < 0) ? [invalidAmount(`${facts.kind}-control`, "Control-account movement")] : [];
118
+ if (diagnostics.length > 0) return {
119
+ closingBalance: 0,
120
+ movements: [],
121
+ diagnostics,
122
+ trace: []
123
+ };
124
+ const increases = facts.openingBalance + facts.creditTransactions + (facts.dishonouredPayments ?? 0) + (facts.otherCharges ?? 0);
125
+ const decreases = facts.cashSettled + facts.returns + facts.discounts + facts.contra + (facts.writeOffs ?? 0);
126
+ const closingBalance = rounded(increases - decreases, policy);
127
+ const increaseSide = facts.kind === "receivables" ? "debit" : "credit";
128
+ const decreaseSide = facts.kind === "receivables" ? "credit" : "debit";
129
+ const movements = [
130
+ {
131
+ label: "Opening balance",
132
+ side: increaseSide,
133
+ amount: facts.openingBalance
134
+ },
135
+ {
136
+ label: facts.kind === "receivables" ? "Credit sales" : "Credit purchases",
137
+ side: increaseSide,
138
+ amount: facts.creditTransactions
139
+ },
140
+ {
141
+ label: "Dishonoured payments",
142
+ side: increaseSide,
143
+ amount: facts.dishonouredPayments ?? 0
144
+ },
145
+ {
146
+ label: "Other charges",
147
+ side: increaseSide,
148
+ amount: facts.otherCharges ?? 0
149
+ },
150
+ {
151
+ label: "Cash settled",
152
+ side: decreaseSide,
153
+ amount: facts.cashSettled
154
+ },
155
+ {
156
+ label: "Returns",
157
+ side: decreaseSide,
158
+ amount: facts.returns
159
+ },
160
+ {
161
+ label: "Discounts",
162
+ side: decreaseSide,
163
+ amount: facts.discounts
164
+ },
165
+ {
166
+ label: "Contra",
167
+ side: decreaseSide,
168
+ amount: facts.contra
169
+ },
170
+ {
171
+ label: "Write-offs",
172
+ side: decreaseSide,
173
+ amount: facts.writeOffs ?? 0
174
+ }
175
+ ].filter((item) => item.amount !== 0);
176
+ const expected = facts.expectedClosingBalance;
177
+ const difference = expected == null ? void 0 : rounded(closingBalance - expected, policy);
178
+ const trace = [{
179
+ id: `${facts.kind}:derive`,
180
+ kind: "derive",
181
+ rule: `Closing ${facts.kind} control balance = opening balance + credit transactions and restorations − settlements and reductions.`,
182
+ working: `${increases} − ${decreases}`,
183
+ result: closingBalance
184
+ }];
185
+ if (expected != null) trace.push({
186
+ id: `${facts.kind}:check`,
187
+ kind: "check",
188
+ rule: "Compare the control account with the independently prepared list balance.",
189
+ working: `${closingBalance} − ${expected}`,
190
+ result: difference === 0
191
+ });
192
+ return {
193
+ closingBalance,
194
+ expectedClosingBalance: expected,
195
+ difference,
196
+ agrees: difference == null ? void 0 : difference === 0,
197
+ movements,
198
+ diagnostics,
199
+ trace
200
+ };
201
+ }
202
+ const ERROR_RULES = {
203
+ "complete-omission": {
204
+ affectsAgreement: false,
205
+ requiresSuspense: false,
206
+ reason: "Neither the debit nor credit was recorded."
207
+ },
208
+ commission: {
209
+ affectsAgreement: false,
210
+ requiresSuspense: false,
211
+ reason: "Both sides were recorded, but the correct class contains the wrong personal account."
212
+ },
213
+ principle: {
214
+ affectsAgreement: false,
215
+ requiresSuspense: false,
216
+ reason: "Both sides were recorded, but an account of the wrong category was used."
217
+ },
218
+ "original-entry": {
219
+ affectsAgreement: false,
220
+ requiresSuspense: false,
221
+ reason: "The same incorrect amount was entered on both sides."
222
+ },
223
+ "complete-reversal": {
224
+ affectsAgreement: false,
225
+ requiresSuspense: false,
226
+ reason: "Equal debit and credit amounts were posted to the opposite sides."
227
+ },
228
+ compensating: {
229
+ affectsAgreement: false,
230
+ requiresSuspense: false,
231
+ reason: "Independent errors cancel by the same amount."
232
+ },
233
+ "one-sided-entry": {
234
+ affectsAgreement: true,
235
+ requiresSuspense: true,
236
+ reason: "Only one half of the double entry was recorded."
237
+ },
238
+ "unequal-entry": {
239
+ affectsAgreement: true,
240
+ requiresSuspense: true,
241
+ reason: "The debit and credit amounts differ."
242
+ },
243
+ "casting-error": {
244
+ affectsAgreement: true,
245
+ requiresSuspense: true,
246
+ reason: "A book or account total was added incorrectly on one side."
247
+ },
248
+ "balance-omitted": {
249
+ affectsAgreement: true,
250
+ requiresSuspense: true,
251
+ reason: "An account balance was omitted from the trial balance."
252
+ }
253
+ };
254
+ function diagnoseTrialBalanceError(type) {
255
+ return {
256
+ type,
257
+ ...ERROR_RULES[type]
258
+ };
259
+ }
260
+ function createSuspenseCorrection(fact, policy = DEFAULT_ACCOUNTING_POLICY) {
261
+ if (!Number.isFinite(fact.amount) || fact.amount <= 0) return {
262
+ diagnostics: [invalidAmount(fact.id, "Suspense correction")],
263
+ trace: []
264
+ };
265
+ const amount = rounded(fact.amount, policy);
266
+ const otherSide = fact.missingSide === "debit" ? "credit" : "debit";
267
+ return {
268
+ entry: {
269
+ id: fact.id,
270
+ narration: fact.narration ?? "Clear suspense difference",
271
+ lines: [{
272
+ accountId: fact.affectedAccountId,
273
+ side: fact.missingSide,
274
+ amount
275
+ }, {
276
+ accountId: fact.suspenseAccountId,
277
+ side: otherSide,
278
+ amount
279
+ }]
280
+ },
281
+ diagnostics: [],
282
+ trace: [{
283
+ id: `${fact.id}:suspense`,
284
+ kind: "journalize",
285
+ rule: "Post the missing side and use the opposite suspense entry to clear the temporary difference.",
286
+ working: `${fact.missingSide} ${fact.affectedAccountId}; ${otherSide} ${fact.suspenseAccountId}`,
287
+ result: amount
288
+ }]
289
+ };
290
+ }
291
+ function reconstructSuspenseAccount(facts, policy = DEFAULT_ACCOUNTING_POLICY) {
292
+ const diagnostics = [];
293
+ if (!Number.isFinite(facts.trialBalanceDebitTotal) || facts.trialBalanceDebitTotal < 0) diagnostics.push(invalidAmount("suspense-reconstruction", "Trial balance debit total"));
294
+ if (!Number.isFinite(facts.trialBalanceCreditTotal) || facts.trialBalanceCreditTotal < 0) diagnostics.push(invalidAmount("suspense-reconstruction", "Trial balance credit total"));
295
+ const duplicateIds = facts.errors.filter((error, index) => facts.errors.findIndex((candidate) => candidate.id === error.id) !== index);
296
+ for (const error of duplicateIds) diagnostics.push({
297
+ code: "invalid-adjustment",
298
+ severity: "error",
299
+ entryId: error.id,
300
+ message: `Duplicate suspense error id: ${error.id}.`
301
+ });
302
+ for (const error of facts.errors) if (!diagnoseTrialBalanceError(error.errorType).requiresSuspense) diagnostics.push({
303
+ code: "invalid-adjustment",
304
+ severity: "error",
305
+ entryId: error.id,
306
+ message: `${error.errorType} does not affect trial-balance agreement and must not be posted through suspense.`
307
+ });
308
+ if (diagnostics.length > 0) return {
309
+ openingBalance: {
310
+ side: "zero",
311
+ amount: 0
312
+ },
313
+ corrections: [],
314
+ movements: [],
315
+ closingBalance: {
316
+ side: "zero",
317
+ amount: 0
318
+ },
319
+ clears: false,
320
+ diagnostics,
321
+ trace: []
322
+ };
323
+ const debitTotal = toMinor(facts.trialBalanceDebitTotal, policy);
324
+ const difference = toMinor(facts.trialBalanceCreditTotal, policy) - debitTotal;
325
+ const openingBalance = {
326
+ side: difference === 0 ? "zero" : difference > 0 ? "debit" : "credit",
327
+ amount: fromMinor(Math.abs(difference), policy)
328
+ };
329
+ const movements = openingBalance.side === "zero" ? [] : [{
330
+ id: "opening-suspense",
331
+ label: "Trial balance difference",
332
+ side: openingBalance.side,
333
+ amount: openingBalance.amount
334
+ }];
335
+ const corrections = [];
336
+ const trace = [{
337
+ id: "suspense:opening",
338
+ kind: "derive",
339
+ rule: "Place the trial-balance difference on the smaller side so the trial balance agrees temporarily.",
340
+ working: `${facts.trialBalanceDebitTotal} debit compared with ${facts.trialBalanceCreditTotal} credit`,
341
+ result: `${openingBalance.side} ${openingBalance.amount}`
342
+ }];
343
+ for (const error of facts.errors) {
344
+ const correction = createSuspenseCorrection({
345
+ ...error,
346
+ suspenseAccountId: facts.suspenseAccountId
347
+ }, policy);
348
+ diagnostics.push(...correction.diagnostics);
349
+ trace.push(...correction.trace);
350
+ if (!correction.entry) continue;
351
+ corrections.push(correction.entry);
352
+ const suspenseLine = correction.entry.lines.find((line) => line.accountId === facts.suspenseAccountId);
353
+ movements.push({
354
+ id: error.id,
355
+ label: error.label ?? error.narration ?? error.errorType,
356
+ side: suspenseLine.side,
357
+ amount: suspenseLine.amount
358
+ });
359
+ }
360
+ const debitMovements = movements.filter((movement) => movement.side === "debit").reduce((sum, movement) => sum + toMinor(movement.amount, policy), 0);
361
+ const creditMovements = movements.filter((movement) => movement.side === "credit").reduce((sum, movement) => sum + toMinor(movement.amount, policy), 0);
362
+ const residual = debitMovements - creditMovements;
363
+ const closingBalance = {
364
+ side: residual === 0 ? "zero" : residual > 0 ? "debit" : "credit",
365
+ amount: fromMinor(Math.abs(residual), policy)
366
+ };
367
+ trace.push({
368
+ id: "suspense:closing",
369
+ kind: "check",
370
+ rule: "All agreement-affecting corrections clear suspense only when its debit and credit movements are equal.",
371
+ working: `${fromMinor(debitMovements, policy)} debit − ${fromMinor(creditMovements, policy)} credit`,
372
+ result: residual === 0
373
+ });
374
+ return {
375
+ openingBalance,
376
+ corrections,
377
+ movements,
378
+ closingBalance,
379
+ clears: residual === 0,
380
+ diagnostics,
381
+ trace
382
+ };
383
+ }
384
+
385
+ //#endregion
386
+ export { createSuspenseCorrection, diagnoseTrialBalanceError, reconcileBank, reconstructSuspenseAccount, solveControlAccount };
@@ -1,37 +1,21 @@
1
+ import { AccountingSolution, JournalEntry } from "./accounting/types.mjs";
2
+
1
3
  //#region src/finance/bizsim.d.ts
2
- /**
3
- * bizsim — a tiny, always-balanced business-simulation engine (part of `finance`).
4
- *
5
- * This is the PRIMITIVE a "run a business" story lesson is built on: a teacher/creator
6
- * authors a scenario as a sequence of business ACTIONS (invest capital, take a loan,
7
- * buy equipment, buy stock, sell, pay an expense, depreciate, close the period). Each
8
- * action is a pure, DOUBLE-ENTRY-BALANCED transform of the business state, so the
9
- * derived income statement and balance sheet are always correct and the balance sheet
10
- * always balances — no accounting knowledge required to author, and it scales all the
11
- * way to financial analysis (ratios) at the end.
12
- *
13
- * The engine is content-neutral: it knows nothing about samosas, apps or coffee — the
14
- * creator supplies the story and the numbers.
15
- */
4
+ interface BizOpeningBalances {
5
+ cash?: number;
6
+ inventoryQty?: number;
7
+ inventoryValue?: number;
8
+ equipment?: number;
9
+ loan?: number;
10
+ capital?: number;
11
+ retained?: number;
12
+ }
13
+ /** Journal is the accounting authority; quantity is the operational inventory fact. */
16
14
  interface BizState {
17
- cash: number;
18
- /** Stock on hand: quantity and its value at cost. */
15
+ entries: readonly JournalEntry[];
19
16
  inventoryQty: number;
20
- inventoryValue: number;
21
- /** Fixed assets at book value. */
22
- equipment: number;
23
- /** Liabilities (loans). */
24
- loan: number;
25
- /** Owner capital contributed. */
26
- capital: number;
27
- /** Accumulated profit from closed periods. */
28
- retained: number;
29
- /** Current open-period tallies (become net profit at closePeriod). */
30
- revenue: number;
31
- cogs: number;
32
- expenses: number;
17
+ nextEntryNumber: number;
33
18
  }
34
- declare const initialBiz: (over?: Partial<BizState>) => BizState;
35
19
  type BizAction = {
36
20
  type: 'invest';
37
21
  amount: number;
@@ -61,10 +45,9 @@ type BizAction = {
61
45
  } | {
62
46
  type: 'closePeriod';
63
47
  };
64
- /** Apply one action; pure and balance-preserving (assets = liabilities + equity). */
65
- declare function applyBiz(s: BizState, a: BizAction): BizState;
66
- /** Run a whole authored scenario from an (optional) starting state. */
67
- declare function runBiz(actions: BizAction[], init?: Partial<BizState>): BizState;
48
+ declare function initialBiz(opening?: BizOpeningBalances): BizState;
49
+ declare function applyBiz(state: BizState, action: BizAction): BizState;
50
+ declare function runBiz(actions: readonly BizAction[], opening?: BizOpeningBalances): BizState;
68
51
  interface IncomeStatement {
69
52
  revenue: number;
70
53
  cogs: number;
@@ -72,8 +55,7 @@ interface IncomeStatement {
72
55
  expenses: number;
73
56
  netProfit: number;
74
57
  }
75
- /** Income statement for the current open period. */
76
- declare function incomeStatement(s: BizState): IncomeStatement;
58
+ declare function incomeStatement(state: BizState): IncomeStatement;
77
59
  interface BalanceSheet {
78
60
  cash: number;
79
61
  inventory: number;
@@ -87,7 +69,7 @@ interface BalanceSheet {
87
69
  totalLiabilitiesEquity: number;
88
70
  balances: boolean;
89
71
  }
90
- /** Balance sheet; `balances` is always true by construction (a self-check). */
91
- declare function balanceSheet(s: BizState): BalanceSheet;
72
+ declare function balanceSheet(state: BizState): BalanceSheet;
73
+ declare function businessBooks(state: BizState): AccountingSolution;
92
74
  //#endregion
93
- export { BalanceSheet, BizAction, BizState, IncomeStatement, applyBiz, balanceSheet, incomeStatement, initialBiz, runBiz };
75
+ export { BalanceSheet, BizAction, BizOpeningBalances, BizState, IncomeStatement, applyBiz, balanceSheet, businessBooks, incomeStatement, initialBiz, runBiz };