openalgo-script 0.1.0-alpha.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 (997) hide show
  1. package/CHANGELOG.md +1249 -0
  2. package/README.md +288 -255
  3. package/dist/adapters/charts/alerts.d.ts +70 -0
  4. package/dist/adapters/charts/alerts.d.ts.map +1 -0
  5. package/dist/adapters/charts/alerts.js +52 -0
  6. package/dist/adapters/charts/alerts.js.map +1 -0
  7. package/dist/adapters/charts/bars.d.ts +39 -0
  8. package/dist/adapters/charts/bars.d.ts.map +1 -0
  9. package/dist/adapters/charts/bars.js +32 -0
  10. package/dist/adapters/charts/bars.js.map +1 -0
  11. package/dist/adapters/charts/candles.d.ts +40 -0
  12. package/dist/adapters/charts/candles.d.ts.map +1 -0
  13. package/dist/adapters/charts/candles.js +85 -0
  14. package/dist/adapters/charts/candles.js.map +1 -0
  15. package/dist/adapters/charts/colours.d.ts +47 -0
  16. package/dist/adapters/charts/colours.d.ts.map +1 -0
  17. package/dist/adapters/charts/colours.js +80 -0
  18. package/dist/adapters/charts/colours.js.map +1 -0
  19. package/dist/adapters/charts/columns.d.ts +37 -0
  20. package/dist/adapters/charts/columns.d.ts.map +1 -0
  21. package/dist/adapters/charts/columns.js +56 -0
  22. package/dist/adapters/charts/columns.js.map +1 -0
  23. package/dist/adapters/charts/contract.d.ts +278 -0
  24. package/dist/adapters/charts/contract.d.ts.map +1 -0
  25. package/dist/adapters/charts/contract.js +2 -0
  26. package/dist/adapters/charts/contract.js.map +1 -0
  27. package/dist/adapters/charts/descriptor.d.ts +48 -0
  28. package/dist/adapters/charts/descriptor.d.ts.map +1 -0
  29. package/dist/adapters/charts/descriptor.js +111 -0
  30. package/dist/adapters/charts/descriptor.js.map +1 -0
  31. package/dist/adapters/charts/drawings.d.ts +43 -0
  32. package/dist/adapters/charts/drawings.d.ts.map +1 -0
  33. package/dist/adapters/charts/drawings.js +172 -0
  34. package/dist/adapters/charts/drawings.js.map +1 -0
  35. package/dist/adapters/charts/errors.d.ts +28 -0
  36. package/dist/adapters/charts/errors.d.ts.map +1 -0
  37. package/dist/adapters/charts/errors.js +21 -0
  38. package/dist/adapters/charts/errors.js.map +1 -0
  39. package/dist/adapters/charts/fields.d.ts +33 -0
  40. package/dist/adapters/charts/fields.d.ts.map +1 -0
  41. package/dist/adapters/charts/fields.js +51 -0
  42. package/dist/adapters/charts/fields.js.map +1 -0
  43. package/dist/adapters/charts/fills.d.ts +23 -0
  44. package/dist/adapters/charts/fills.d.ts.map +1 -0
  45. package/dist/adapters/charts/fills.js +48 -0
  46. package/dist/adapters/charts/fills.js.map +1 -0
  47. package/dist/adapters/charts/index.d.ts +37 -0
  48. package/dist/adapters/charts/index.d.ts.map +1 -0
  49. package/dist/adapters/charts/index.js +33 -0
  50. package/dist/adapters/charts/index.js.map +1 -0
  51. package/dist/adapters/charts/levels.d.ts +39 -0
  52. package/dist/adapters/charts/levels.d.ts.map +1 -0
  53. package/dist/adapters/charts/levels.js +61 -0
  54. package/dist/adapters/charts/levels.js.map +1 -0
  55. package/dist/adapters/charts/markers.d.ts +41 -0
  56. package/dist/adapters/charts/markers.d.ts.map +1 -0
  57. package/dist/adapters/charts/markers.js +75 -0
  58. package/dist/adapters/charts/markers.js.map +1 -0
  59. package/dist/adapters/charts/paint.d.ts +61 -0
  60. package/dist/adapters/charts/paint.d.ts.map +1 -0
  61. package/dist/adapters/charts/paint.js +47 -0
  62. package/dist/adapters/charts/paint.js.map +1 -0
  63. package/dist/adapters/charts/plots.d.ts +39 -0
  64. package/dist/adapters/charts/plots.d.ts.map +1 -0
  65. package/dist/adapters/charts/plots.js +117 -0
  66. package/dist/adapters/charts/plots.js.map +1 -0
  67. package/dist/adapters/charts/produced.d.ts +57 -0
  68. package/dist/adapters/charts/produced.d.ts.map +1 -0
  69. package/dist/adapters/charts/produced.js +11 -0
  70. package/dist/adapters/charts/produced.js.map +1 -0
  71. package/dist/adapters/charts/requests.d.ts +114 -0
  72. package/dist/adapters/charts/requests.d.ts.map +1 -0
  73. package/dist/adapters/charts/requests.js +277 -0
  74. package/dist/adapters/charts/requests.js.map +1 -0
  75. package/dist/adapters/charts/run.d.ts +147 -0
  76. package/dist/adapters/charts/run.d.ts.map +1 -0
  77. package/dist/adapters/charts/run.js +148 -0
  78. package/dist/adapters/charts/run.js.map +1 -0
  79. package/dist/adapters/charts/settings.d.ts +78 -0
  80. package/dist/adapters/charts/settings.d.ts.map +1 -0
  81. package/dist/adapters/charts/settings.js +225 -0
  82. package/dist/adapters/charts/settings.js.map +1 -0
  83. package/dist/adapters/charts/surfaces.d.ts +204 -0
  84. package/dist/adapters/charts/surfaces.d.ts.map +1 -0
  85. package/dist/adapters/charts/surfaces.js +2 -0
  86. package/dist/adapters/charts/surfaces.js.map +1 -0
  87. package/dist/adapters/charts/tables.d.ts +65 -0
  88. package/dist/adapters/charts/tables.d.ts.map +1 -0
  89. package/dist/adapters/charts/tables.js +84 -0
  90. package/dist/adapters/charts/tables.js.map +1 -0
  91. package/dist/core/catalogue/catalogue.generated.d.ts +98 -10
  92. package/dist/core/catalogue/catalogue.generated.d.ts.map +1 -1
  93. package/dist/core/catalogue/catalogue.generated.js +17 -9
  94. package/dist/core/catalogue/catalogue.generated.js.map +1 -1
  95. package/dist/core/catalogue/values.generated.d.ts +25 -0
  96. package/dist/core/catalogue/values.generated.d.ts.map +1 -1
  97. package/dist/core/check/arguments.d.ts +41 -0
  98. package/dist/core/check/arguments.d.ts.map +1 -0
  99. package/dist/core/check/arguments.js +84 -0
  100. package/dist/core/check/arguments.js.map +1 -0
  101. package/dist/core/check/call-sites.d.ts +22 -0
  102. package/dist/core/check/call-sites.d.ts.map +1 -0
  103. package/dist/core/check/call-sites.js +329 -0
  104. package/dist/core/check/call-sites.js.map +1 -0
  105. package/dist/core/check/call-warmup.d.ts +37 -0
  106. package/dist/core/check/call-warmup.d.ts.map +1 -0
  107. package/dist/core/check/call-warmup.js +97 -0
  108. package/dist/core/check/call-warmup.js.map +1 -0
  109. package/dist/core/check/calls.d.ts +33 -0
  110. package/dist/core/check/calls.d.ts.map +1 -0
  111. package/dist/core/check/calls.js +348 -0
  112. package/dist/core/check/calls.js.map +1 -0
  113. package/dist/core/check/check.d.ts +23 -0
  114. package/dist/core/check/check.d.ts.map +1 -0
  115. package/dist/core/check/check.js +163 -0
  116. package/dist/core/check/check.js.map +1 -0
  117. package/dist/core/check/checked.d.ts +198 -0
  118. package/dist/core/check/checked.d.ts.map +1 -0
  119. package/dist/core/check/checked.js +19 -0
  120. package/dist/core/check/checked.js.map +1 -0
  121. package/dist/core/check/checker.d.ts +182 -0
  122. package/dist/core/check/checker.d.ts.map +1 -0
  123. package/dist/core/check/checker.js +280 -0
  124. package/dist/core/check/checker.js.map +1 -0
  125. package/dist/core/check/conditional.d.ts +35 -0
  126. package/dist/core/check/conditional.d.ts.map +1 -0
  127. package/dist/core/check/conditional.js +100 -0
  128. package/dist/core/check/conditional.js.map +1 -0
  129. package/dist/core/check/constant.d.ts +47 -0
  130. package/dist/core/check/constant.d.ts.map +1 -0
  131. package/dist/core/check/constant.js +101 -0
  132. package/dist/core/check/constant.js.map +1 -0
  133. package/dist/core/check/declaration.d.ts +33 -0
  134. package/dist/core/check/declaration.d.ts.map +1 -0
  135. package/dist/core/check/declaration.js +181 -0
  136. package/dist/core/check/declaration.js.map +1 -0
  137. package/dist/core/check/expressions.d.ts +36 -0
  138. package/dist/core/check/expressions.d.ts.map +1 -0
  139. package/dist/core/check/expressions.js +398 -0
  140. package/dist/core/check/expressions.js.map +1 -0
  141. package/dist/core/check/functions.d.ts +31 -0
  142. package/dist/core/check/functions.d.ts.map +1 -0
  143. package/dist/core/check/functions.js +238 -0
  144. package/dist/core/check/functions.js.map +1 -0
  145. package/dist/core/check/handles.d.ts +48 -0
  146. package/dist/core/check/handles.d.ts.map +1 -0
  147. package/dist/core/check/handles.js +43 -0
  148. package/dist/core/check/handles.js.map +1 -0
  149. package/dist/core/check/index.d.ts +30 -0
  150. package/dist/core/check/index.d.ts.map +1 -0
  151. package/dist/core/check/index.js +26 -0
  152. package/dist/core/check/index.js.map +1 -0
  153. package/dist/core/check/library-bars.d.ts +7 -0
  154. package/dist/core/check/library-bars.d.ts.map +1 -0
  155. package/dist/core/check/library-bars.js +181 -0
  156. package/dist/core/check/library-bars.js.map +1 -0
  157. package/dist/core/check/library-orders.d.ts +5 -0
  158. package/dist/core/check/library-orders.d.ts.map +1 -0
  159. package/dist/core/check/library-orders.js +250 -0
  160. package/dist/core/check/library-orders.js.map +1 -0
  161. package/dist/core/check/library-output.d.ts +7 -0
  162. package/dist/core/check/library-output.d.ts.map +1 -0
  163. package/dist/core/check/library-output.js +195 -0
  164. package/dist/core/check/library-output.js.map +1 -0
  165. package/dist/core/check/library-series.d.ts +3 -0
  166. package/dist/core/check/library-series.d.ts.map +1 -0
  167. package/dist/core/check/library-series.js +415 -0
  168. package/dist/core/check/library-series.js.map +1 -0
  169. package/dist/core/check/library.d.ts +204 -0
  170. package/dist/core/check/library.d.ts.map +1 -0
  171. package/dist/core/check/library.js +198 -0
  172. package/dist/core/check/library.js.map +1 -0
  173. package/dist/core/check/literals.d.ts +19 -0
  174. package/dist/core/check/literals.d.ts.map +1 -0
  175. package/dist/core/check/literals.js +22 -0
  176. package/dist/core/check/literals.js.map +1 -0
  177. package/dist/core/check/outputs.d.ts +31 -0
  178. package/dist/core/check/outputs.d.ts.map +1 -0
  179. package/dist/core/check/outputs.js +113 -0
  180. package/dist/core/check/outputs.js.map +1 -0
  181. package/dist/core/check/statements.d.ts +25 -0
  182. package/dist/core/check/statements.d.ts.map +1 -0
  183. package/dist/core/check/statements.js +377 -0
  184. package/dist/core/check/statements.js.map +1 -0
  185. package/dist/core/check/suggest.d.ts +25 -0
  186. package/dist/core/check/suggest.d.ts.map +1 -0
  187. package/dist/core/check/suggest.js +61 -0
  188. package/dist/core/check/suggest.js.map +1 -0
  189. package/dist/core/check/surface.d.ts +38 -0
  190. package/dist/core/check/surface.d.ts.map +1 -0
  191. package/dist/core/check/surface.js +100 -0
  192. package/dist/core/check/surface.js.map +1 -0
  193. package/dist/core/check/tags.d.ts +4 -0
  194. package/dist/core/check/tags.d.ts.map +1 -0
  195. package/dist/core/check/tags.js +54 -0
  196. package/dist/core/check/tags.js.map +1 -0
  197. package/dist/core/check/types.d.ts +153 -0
  198. package/dist/core/check/types.d.ts.map +1 -0
  199. package/dist/core/check/types.js +221 -0
  200. package/dist/core/check/types.js.map +1 -0
  201. package/dist/core/check/warmup.d.ts +73 -0
  202. package/dist/core/check/warmup.d.ts.map +1 -0
  203. package/dist/core/check/warmup.js +62 -0
  204. package/dist/core/check/warmup.js.map +1 -0
  205. package/dist/core/diagnostics/collector.d.ts +12 -0
  206. package/dist/core/diagnostics/collector.d.ts.map +1 -1
  207. package/dist/core/diagnostics/collector.js +27 -1
  208. package/dist/core/diagnostics/collector.js.map +1 -1
  209. package/dist/core/emit/calls.d.ts +38 -0
  210. package/dist/core/emit/calls.d.ts.map +1 -0
  211. package/dist/core/emit/calls.js +347 -0
  212. package/dist/core/emit/calls.js.map +1 -0
  213. package/dist/core/emit/canonical.d.ts +39 -0
  214. package/dist/core/emit/canonical.d.ts.map +1 -0
  215. package/dist/core/emit/canonical.js +71 -0
  216. package/dist/core/emit/canonical.js.map +1 -0
  217. package/dist/core/emit/channels.d.ts +28 -0
  218. package/dist/core/emit/channels.d.ts.map +1 -0
  219. package/dist/core/emit/channels.js +110 -0
  220. package/dist/core/emit/channels.js.map +1 -0
  221. package/dist/core/emit/code.d.ts +75 -0
  222. package/dist/core/emit/code.d.ts.map +1 -0
  223. package/dist/core/emit/code.js +104 -0
  224. package/dist/core/emit/code.js.map +1 -0
  225. package/dist/core/emit/colours.d.ts +35 -0
  226. package/dist/core/emit/colours.d.ts.map +1 -0
  227. package/dist/core/emit/colours.js +50 -0
  228. package/dist/core/emit/colours.js.map +1 -0
  229. package/dist/core/emit/context.d.ts +271 -0
  230. package/dist/core/emit/context.d.ts.map +1 -0
  231. package/dist/core/emit/context.js +358 -0
  232. package/dist/core/emit/context.js.map +1 -0
  233. package/dist/core/emit/defaults.d.ts +45 -0
  234. package/dist/core/emit/defaults.d.ts.map +1 -0
  235. package/dist/core/emit/defaults.js +116 -0
  236. package/dist/core/emit/defaults.js.map +1 -0
  237. package/dist/core/emit/emit.d.ts +13 -0
  238. package/dist/core/emit/emit.d.ts.map +1 -0
  239. package/dist/core/emit/emit.js +281 -0
  240. package/dist/core/emit/emit.js.map +1 -0
  241. package/dist/core/emit/events.d.ts +21 -0
  242. package/dist/core/emit/events.d.ts.map +1 -0
  243. package/dist/core/emit/events.js +112 -0
  244. package/dist/core/emit/events.js.map +1 -0
  245. package/dist/core/emit/expressions.d.ts +23 -0
  246. package/dist/core/emit/expressions.d.ts.map +1 -0
  247. package/dist/core/emit/expressions.js +253 -0
  248. package/dist/core/emit/expressions.js.map +1 -0
  249. package/dist/core/emit/functions.d.ts +30 -0
  250. package/dist/core/emit/functions.d.ts.map +1 -0
  251. package/dist/core/emit/functions.js +171 -0
  252. package/dist/core/emit/functions.js.map +1 -0
  253. package/dist/core/emit/gaps.d.ts +34 -0
  254. package/dist/core/emit/gaps.d.ts.map +1 -0
  255. package/dist/core/emit/gaps.js +16 -0
  256. package/dist/core/emit/gaps.js.map +1 -0
  257. package/dist/core/emit/index.d.ts +29 -0
  258. package/dist/core/emit/index.d.ts.map +1 -0
  259. package/dist/core/emit/index.js +23 -0
  260. package/dist/core/emit/index.js.map +1 -0
  261. package/dist/core/emit/inputs.d.ts +47 -0
  262. package/dist/core/emit/inputs.d.ts.map +1 -0
  263. package/dist/core/emit/inputs.js +150 -0
  264. package/dist/core/emit/inputs.js.map +1 -0
  265. package/dist/core/emit/layout.d.ts +73 -0
  266. package/dist/core/emit/layout.d.ts.map +1 -0
  267. package/dist/core/emit/layout.js +126 -0
  268. package/dist/core/emit/layout.js.map +1 -0
  269. package/dist/core/emit/meta.d.ts +14 -0
  270. package/dist/core/emit/meta.d.ts.map +1 -0
  271. package/dist/core/emit/meta.js +68 -0
  272. package/dist/core/emit/meta.js.map +1 -0
  273. package/dist/core/emit/opcodes.d.ts +28 -0
  274. package/dist/core/emit/opcodes.d.ts.map +1 -0
  275. package/dist/core/emit/opcodes.js +137 -0
  276. package/dist/core/emit/opcodes.js.map +1 -0
  277. package/dist/core/emit/outputs.d.ts +67 -0
  278. package/dist/core/emit/outputs.d.ts.map +1 -0
  279. package/dist/core/emit/outputs.js +293 -0
  280. package/dist/core/emit/outputs.js.map +1 -0
  281. package/dist/core/emit/pool.d.ts +33 -0
  282. package/dist/core/emit/pool.d.ts.map +1 -0
  283. package/dist/core/emit/pool.js +79 -0
  284. package/dist/core/emit/pool.js.map +1 -0
  285. package/dist/core/emit/program.d.ts +333 -0
  286. package/dist/core/emit/program.d.ts.map +1 -0
  287. package/dist/core/emit/program.js +15 -0
  288. package/dist/core/emit/program.js.map +1 -0
  289. package/dist/core/emit/registers.d.ts +35 -0
  290. package/dist/core/emit/registers.d.ts.map +1 -0
  291. package/dist/core/emit/registers.js +170 -0
  292. package/dist/core/emit/registers.js.map +1 -0
  293. package/dist/core/emit/request-scope.d.ts +36 -0
  294. package/dist/core/emit/request-scope.d.ts.map +1 -0
  295. package/dist/core/emit/request-scope.js +41 -0
  296. package/dist/core/emit/request-scope.js.map +1 -0
  297. package/dist/core/emit/requests.d.ts +69 -0
  298. package/dist/core/emit/requests.d.ts.map +1 -0
  299. package/dist/core/emit/requests.js +230 -0
  300. package/dist/core/emit/requests.js.map +1 -0
  301. package/dist/core/emit/requires.d.ts +4 -0
  302. package/dist/core/emit/requires.d.ts.map +1 -0
  303. package/dist/core/emit/requires.js +71 -0
  304. package/dist/core/emit/requires.js.map +1 -0
  305. package/dist/core/emit/sha256.d.ts +24 -0
  306. package/dist/core/emit/sha256.d.ts.map +1 -0
  307. package/dist/core/emit/sha256.js +109 -0
  308. package/dist/core/emit/sha256.js.map +1 -0
  309. package/dist/core/emit/statements.d.ts +20 -0
  310. package/dist/core/emit/statements.d.ts.map +1 -0
  311. package/dist/core/emit/statements.js +393 -0
  312. package/dist/core/emit/statements.js.map +1 -0
  313. package/dist/core/emit/values.d.ts +80 -0
  314. package/dist/core/emit/values.d.ts.map +1 -0
  315. package/dist/core/emit/values.js +242 -0
  316. package/dist/core/emit/values.js.map +1 -0
  317. package/dist/core/engine/alerts.d.ts +66 -0
  318. package/dist/core/engine/alerts.d.ts.map +1 -0
  319. package/dist/core/engine/alerts.js +119 -0
  320. package/dist/core/engine/alerts.js.map +1 -0
  321. package/dist/core/engine/arithmetic.d.ts +82 -0
  322. package/dist/core/engine/arithmetic.d.ts.map +1 -0
  323. package/dist/core/engine/arithmetic.js +141 -0
  324. package/dist/core/engine/arithmetic.js.map +1 -0
  325. package/dist/core/engine/bars.d.ts +95 -0
  326. package/dist/core/engine/bars.d.ts.map +1 -0
  327. package/dist/core/engine/bars.js +133 -0
  328. package/dist/core/engine/bars.js.map +1 -0
  329. package/dist/core/engine/budget.d.ts +162 -0
  330. package/dist/core/engine/budget.d.ts.map +1 -0
  331. package/dist/core/engine/budget.js +188 -0
  332. package/dist/core/engine/budget.js.map +1 -0
  333. package/dist/core/engine/channels.d.ts +106 -0
  334. package/dist/core/engine/channels.d.ts.map +1 -0
  335. package/dist/core/engine/channels.js +99 -0
  336. package/dist/core/engine/channels.js.map +1 -0
  337. package/dist/core/engine/drawings.d.ts +64 -0
  338. package/dist/core/engine/drawings.d.ts.map +1 -0
  339. package/dist/core/engine/drawings.js +67 -0
  340. package/dist/core/engine/drawings.js.map +1 -0
  341. package/dist/core/engine/engine.d.ts +140 -0
  342. package/dist/core/engine/engine.d.ts.map +1 -0
  343. package/dist/core/engine/engine.js +405 -0
  344. package/dist/core/engine/engine.js.map +1 -0
  345. package/dist/core/engine/errors.d.ts +64 -0
  346. package/dist/core/engine/errors.d.ts.map +1 -0
  347. package/dist/core/engine/errors.js +63 -0
  348. package/dist/core/engine/errors.js.map +1 -0
  349. package/dist/core/engine/frames.d.ts +48 -0
  350. package/dist/core/engine/frames.d.ts.map +1 -0
  351. package/dist/core/engine/frames.js +41 -0
  352. package/dist/core/engine/frames.js.map +1 -0
  353. package/dist/core/engine/grids.d.ts +25 -0
  354. package/dist/core/engine/grids.d.ts.map +1 -0
  355. package/dist/core/engine/grids.js +77 -0
  356. package/dist/core/engine/grids.js.map +1 -0
  357. package/dist/core/engine/guard.d.ts +4 -0
  358. package/dist/core/engine/guard.d.ts.map +1 -0
  359. package/dist/core/engine/guard.js +46 -0
  360. package/dist/core/engine/guard.js.map +1 -0
  361. package/dist/core/engine/host.d.ts +219 -0
  362. package/dist/core/engine/host.d.ts.map +1 -0
  363. package/dist/core/engine/host.js +38 -0
  364. package/dist/core/engine/host.js.map +1 -0
  365. package/dist/core/engine/index.d.ts +49 -0
  366. package/dist/core/engine/index.d.ts.map +1 -0
  367. package/dist/core/engine/index.js +33 -0
  368. package/dist/core/engine/index.js.map +1 -0
  369. package/dist/core/engine/inputs.d.ts +77 -0
  370. package/dist/core/engine/inputs.d.ts.map +1 -0
  371. package/dist/core/engine/inputs.js +205 -0
  372. package/dist/core/engine/inputs.js.map +1 -0
  373. package/dist/core/engine/ledger/call.d.ts +63 -0
  374. package/dist/core/engine/ledger/call.d.ts.map +1 -0
  375. package/dist/core/engine/ledger/call.js +136 -0
  376. package/dist/core/engine/ledger/call.js.map +1 -0
  377. package/dist/core/engine/ledger/closable.d.ts +155 -0
  378. package/dist/core/engine/ledger/closable.d.ts.map +1 -0
  379. package/dist/core/engine/ledger/closable.js +173 -0
  380. package/dist/core/engine/ledger/closable.js.map +1 -0
  381. package/dist/core/engine/ledger/holdings.d.ts +194 -0
  382. package/dist/core/engine/ledger/holdings.d.ts.map +1 -0
  383. package/dist/core/engine/ledger/holdings.js +237 -0
  384. package/dist/core/engine/ledger/holdings.js.map +1 -0
  385. package/dist/core/engine/ledger/index.d.ts +19 -0
  386. package/dist/core/engine/ledger/index.d.ts.map +1 -0
  387. package/dist/core/engine/ledger/index.js +2 -0
  388. package/dist/core/engine/ledger/index.js.map +1 -0
  389. package/dist/core/engine/ledger/intent.d.ts +106 -0
  390. package/dist/core/engine/ledger/intent.d.ts.map +1 -0
  391. package/dist/core/engine/ledger/intent.js +21 -0
  392. package/dist/core/engine/ledger/intent.js.map +1 -0
  393. package/dist/core/engine/ledger/ledger.d.ts +143 -0
  394. package/dist/core/engine/ledger/ledger.d.ts.map +1 -0
  395. package/dist/core/engine/ledger/ledger.js +237 -0
  396. package/dist/core/engine/ledger/ledger.js.map +1 -0
  397. package/dist/core/engine/ledger/place.d.ts +75 -0
  398. package/dist/core/engine/ledger/place.d.ts.map +1 -0
  399. package/dist/core/engine/ledger/place.js +174 -0
  400. package/dist/core/engine/ledger/place.js.map +1 -0
  401. package/dist/core/engine/ledger/positions.d.ts +68 -0
  402. package/dist/core/engine/ledger/positions.d.ts.map +1 -0
  403. package/dist/core/engine/ledger/positions.js +114 -0
  404. package/dist/core/engine/ledger/positions.js.map +1 -0
  405. package/dist/core/engine/ledger/refuse.d.ts +43 -0
  406. package/dist/core/engine/ledger/refuse.d.ts.map +1 -0
  407. package/dist/core/engine/ledger/refuse.js +329 -0
  408. package/dist/core/engine/ledger/refuse.js.map +1 -0
  409. package/dist/core/engine/ledger/row.d.ts +176 -0
  410. package/dist/core/engine/ledger/row.d.ts.map +1 -0
  411. package/dist/core/engine/ledger/row.js +169 -0
  412. package/dist/core/engine/ledger/row.js.map +1 -0
  413. package/dist/core/engine/ledger/sizing.d.ts +142 -0
  414. package/dist/core/engine/ledger/sizing.d.ts.map +1 -0
  415. package/dist/core/engine/ledger/sizing.js +223 -0
  416. package/dist/core/engine/ledger/sizing.js.map +1 -0
  417. package/dist/core/engine/library/arrays.d.ts +14 -0
  418. package/dist/core/engine/library/arrays.d.ts.map +1 -0
  419. package/dist/core/engine/library/arrays.js +285 -0
  420. package/dist/core/engine/library/arrays.js.map +1 -0
  421. package/dist/core/engine/library/averages.d.ts +9 -0
  422. package/dist/core/engine/library/averages.d.ts.map +1 -0
  423. package/dist/core/engine/library/averages.js +41 -0
  424. package/dist/core/engine/library/averages.js.map +1 -0
  425. package/dist/core/engine/library/binding.d.ts +230 -0
  426. package/dist/core/engine/library/binding.d.ts.map +1 -0
  427. package/dist/core/engine/library/binding.js +109 -0
  428. package/dist/core/engine/library/binding.js.map +1 -0
  429. package/dist/core/engine/library/chart.d.ts +3 -0
  430. package/dist/core/engine/library/chart.d.ts.map +1 -0
  431. package/dist/core/engine/library/chart.js +83 -0
  432. package/dist/core/engine/library/chart.js.map +1 -0
  433. package/dist/core/engine/library/colours.d.ts +26 -0
  434. package/dist/core/engine/library/colours.d.ts.map +1 -0
  435. package/dist/core/engine/library/colours.js +81 -0
  436. package/dist/core/engine/library/colours.js.map +1 -0
  437. package/dist/core/engine/library/dates.d.ts +3 -0
  438. package/dist/core/engine/library/dates.d.ts.map +1 -0
  439. package/dist/core/engine/library/dates.js +75 -0
  440. package/dist/core/engine/library/dates.js.map +1 -0
  441. package/dist/core/engine/library/index.d.ts +13 -0
  442. package/dist/core/engine/library/index.d.ts.map +1 -0
  443. package/dist/core/engine/library/index.js +86 -0
  444. package/dist/core/engine/library/index.js.map +1 -0
  445. package/dist/core/engine/library/maths.d.ts +3 -0
  446. package/dist/core/engine/library/maths.d.ts.map +1 -0
  447. package/dist/core/engine/library/maths.js +89 -0
  448. package/dist/core/engine/library/maths.js.map +1 -0
  449. package/dist/core/engine/library/objects.d.ts +3 -0
  450. package/dist/core/engine/library/objects.d.ts.map +1 -0
  451. package/dist/core/engine/library/objects.js +199 -0
  452. package/dist/core/engine/library/objects.js.map +1 -0
  453. package/dist/core/engine/library/oscillators.d.ts +3 -0
  454. package/dist/core/engine/library/oscillators.d.ts.map +1 -0
  455. package/dist/core/engine/library/oscillators.js +29 -0
  456. package/dist/core/engine/library/oscillators.js.map +1 -0
  457. package/dist/core/engine/library/ranges.d.ts +3 -0
  458. package/dist/core/engine/library/ranges.d.ts.map +1 -0
  459. package/dist/core/engine/library/ranges.js +23 -0
  460. package/dist/core/engine/library/ranges.js.map +1 -0
  461. package/dist/core/engine/library/series.d.ts +3 -0
  462. package/dist/core/engine/library/series.d.ts.map +1 -0
  463. package/dist/core/engine/library/series.js +46 -0
  464. package/dist/core/engine/library/series.js.map +1 -0
  465. package/dist/core/engine/library/state.d.ts +35 -0
  466. package/dist/core/engine/library/state.d.ts.map +1 -0
  467. package/dist/core/engine/library/state.js +19 -0
  468. package/dist/core/engine/library/state.js.map +1 -0
  469. package/dist/core/engine/library/studies.d.ts +3 -0
  470. package/dist/core/engine/library/studies.d.ts.map +1 -0
  471. package/dist/core/engine/library/studies.js +35 -0
  472. package/dist/core/engine/library/studies.js.map +1 -0
  473. package/dist/core/engine/library/text.d.ts +6 -0
  474. package/dist/core/engine/library/text.d.ts.map +1 -0
  475. package/dist/core/engine/library/text.js +280 -0
  476. package/dist/core/engine/library/text.js.map +1 -0
  477. package/dist/core/engine/library/trend.d.ts +3 -0
  478. package/dist/core/engine/library/trend.d.ts.map +1 -0
  479. package/dist/core/engine/library/trend.js +29 -0
  480. package/dist/core/engine/library/trend.js.map +1 -0
  481. package/dist/core/engine/library/volume.d.ts +3 -0
  482. package/dist/core/engine/library/volume.d.ts.map +1 -0
  483. package/dist/core/engine/library/volume.js +51 -0
  484. package/dist/core/engine/library/volume.js.map +1 -0
  485. package/dist/core/engine/load.d.ts +45 -0
  486. package/dist/core/engine/load.d.ts.map +1 -0
  487. package/dist/core/engine/load.js +60 -0
  488. package/dist/core/engine/load.js.map +1 -0
  489. package/dist/core/engine/machine.d.ts +107 -0
  490. package/dist/core/engine/machine.d.ts.map +1 -0
  491. package/dist/core/engine/machine.js +337 -0
  492. package/dist/core/engine/machine.js.map +1 -0
  493. package/dist/core/engine/memory.d.ts +60 -0
  494. package/dist/core/engine/memory.d.ts.map +1 -0
  495. package/dist/core/engine/memory.js +92 -0
  496. package/dist/core/engine/memory.js.map +1 -0
  497. package/dist/core/engine/operations.d.ts +62 -0
  498. package/dist/core/engine/operations.d.ts.map +1 -0
  499. package/dist/core/engine/operations.js +149 -0
  500. package/dist/core/engine/operations.js.map +1 -0
  501. package/dist/core/engine/orders.d.ts +56 -0
  502. package/dist/core/engine/orders.d.ts.map +1 -0
  503. package/dist/core/engine/orders.js +83 -0
  504. package/dist/core/engine/orders.js.map +1 -0
  505. package/dist/core/engine/registers.d.ts +50 -0
  506. package/dist/core/engine/registers.d.ts.map +1 -0
  507. package/dist/core/engine/registers.js +85 -0
  508. package/dist/core/engine/registers.js.map +1 -0
  509. package/dist/core/engine/request-body.d.ts +138 -0
  510. package/dist/core/engine/request-body.d.ts.map +1 -0
  511. package/dist/core/engine/request-body.js +227 -0
  512. package/dist/core/engine/request-body.js.map +1 -0
  513. package/dist/core/engine/request-plan.d.ts +79 -0
  514. package/dist/core/engine/request-plan.d.ts.map +1 -0
  515. package/dist/core/engine/request-plan.js +228 -0
  516. package/dist/core/engine/request-plan.js.map +1 -0
  517. package/dist/core/engine/requests.d.ts +105 -0
  518. package/dist/core/engine/requests.d.ts.map +1 -0
  519. package/dist/core/engine/requests.js +260 -0
  520. package/dist/core/engine/requests.js.map +1 -0
  521. package/dist/core/engine/results.d.ts +40 -0
  522. package/dist/core/engine/results.d.ts.map +1 -0
  523. package/dist/core/engine/results.js +2 -0
  524. package/dist/core/engine/results.js.map +1 -0
  525. package/dist/core/engine/series.d.ts +61 -0
  526. package/dist/core/engine/series.d.ts.map +1 -0
  527. package/dist/core/engine/series.js +41 -0
  528. package/dist/core/engine/series.js.map +1 -0
  529. package/dist/core/engine/session/hours.d.ts +49 -0
  530. package/dist/core/engine/session/hours.d.ts.map +1 -0
  531. package/dist/core/engine/session/hours.js +31 -0
  532. package/dist/core/engine/session/hours.js.map +1 -0
  533. package/dist/core/engine/session/index.d.ts +17 -0
  534. package/dist/core/engine/session/index.d.ts.map +1 -0
  535. package/dist/core/engine/session/index.js +3 -0
  536. package/dist/core/engine/session/index.js.map +1 -0
  537. package/dist/core/engine/session/record.d.ts +56 -0
  538. package/dist/core/engine/session/record.d.ts.map +1 -0
  539. package/dist/core/engine/session/record.js +165 -0
  540. package/dist/core/engine/session/record.js.map +1 -0
  541. package/dist/core/engine/session/spec.d.ts +19 -0
  542. package/dist/core/engine/session/spec.d.ts.map +1 -0
  543. package/dist/core/engine/session/spec.js +31 -0
  544. package/dist/core/engine/session/spec.js.map +1 -0
  545. package/dist/core/engine/timeframe.d.ts +59 -0
  546. package/dist/core/engine/timeframe.d.ts.map +1 -0
  547. package/dist/core/engine/timeframe.js +140 -0
  548. package/dist/core/engine/timeframe.js.map +1 -0
  549. package/dist/core/engine/types.d.ts +15 -0
  550. package/dist/core/engine/types.d.ts.map +1 -0
  551. package/dist/core/engine/types.js +2 -0
  552. package/dist/core/engine/types.js.map +1 -0
  553. package/dist/core/engine/values/heap.d.ts +134 -0
  554. package/dist/core/engine/values/heap.d.ts.map +1 -0
  555. package/dist/core/engine/values/heap.js +230 -0
  556. package/dist/core/engine/values/heap.js.map +1 -0
  557. package/dist/core/engine/values/index.d.ts +13 -0
  558. package/dist/core/engine/values/index.d.ts.map +1 -0
  559. package/dist/core/engine/values/index.js +3 -0
  560. package/dist/core/engine/values/index.js.map +1 -0
  561. package/dist/core/engine/values/value.d.ts +82 -0
  562. package/dist/core/engine/values/value.d.ts.map +1 -0
  563. package/dist/core/engine/values/value.js +134 -0
  564. package/dist/core/engine/values/value.js.map +1 -0
  565. package/dist/core/engine/verify-budgets.d.ts +35 -0
  566. package/dist/core/engine/verify-budgets.d.ts.map +1 -0
  567. package/dist/core/engine/verify-budgets.js +172 -0
  568. package/dist/core/engine/verify-budgets.js.map +1 -0
  569. package/dist/core/engine/verify-code.d.ts +32 -0
  570. package/dist/core/engine/verify-code.d.ts.map +1 -0
  571. package/dist/core/engine/verify-code.js +278 -0
  572. package/dist/core/engine/verify-code.js.map +1 -0
  573. package/dist/core/engine/verify-requests.d.ts +44 -0
  574. package/dist/core/engine/verify-requests.d.ts.map +1 -0
  575. package/dist/core/engine/verify-requests.js +220 -0
  576. package/dist/core/engine/verify-requests.js.map +1 -0
  577. package/dist/core/engine/verify-shape.d.ts +46 -0
  578. package/dist/core/engine/verify-shape.d.ts.map +1 -0
  579. package/dist/core/engine/verify-shape.js +147 -0
  580. package/dist/core/engine/verify-shape.js.map +1 -0
  581. package/dist/core/engine/verify-tables.d.ts +19 -0
  582. package/dist/core/engine/verify-tables.d.ts.map +1 -0
  583. package/dist/core/engine/verify-tables.js +171 -0
  584. package/dist/core/engine/verify-tables.js.map +1 -0
  585. package/dist/core/engine/verify.d.ts +19 -0
  586. package/dist/core/engine/verify.d.ts.map +1 -0
  587. package/dist/core/engine/verify.js +309 -0
  588. package/dist/core/engine/verify.js.map +1 -0
  589. package/dist/core/index.d.ts +62 -6
  590. package/dist/core/index.d.ts.map +1 -1
  591. package/dist/core/index.js +49 -6
  592. package/dist/core/index.js.map +1 -1
  593. package/dist/core/parse/expressions.js +1 -1
  594. package/dist/core/parse/expressions.js.map +1 -1
  595. package/dist/core/parse/names.d.ts +7 -1
  596. package/dist/core/parse/names.d.ts.map +1 -1
  597. package/dist/core/parse/names.js +28 -2
  598. package/dist/core/parse/names.js.map +1 -1
  599. package/dist/core/stdlib/averages/exponential.d.ts +51 -0
  600. package/dist/core/stdlib/averages/exponential.d.ts.map +1 -0
  601. package/dist/core/stdlib/averages/exponential.js +72 -0
  602. package/dist/core/stdlib/averages/exponential.js.map +1 -0
  603. package/dist/core/stdlib/averages/index.d.ts +7 -0
  604. package/dist/core/stdlib/averages/index.d.ts.map +1 -0
  605. package/dist/core/stdlib/averages/index.js +5 -0
  606. package/dist/core/stdlib/averages/index.js.map +1 -0
  607. package/dist/core/stdlib/averages/select.d.ts +35 -0
  608. package/dist/core/stdlib/averages/select.d.ts.map +1 -0
  609. package/dist/core/stdlib/averages/select.js +43 -0
  610. package/dist/core/stdlib/averages/select.js.map +1 -0
  611. package/dist/core/stdlib/averages/shaped.d.ts +61 -0
  612. package/dist/core/stdlib/averages/shaped.d.ts.map +1 -0
  613. package/dist/core/stdlib/averages/shaped.js +126 -0
  614. package/dist/core/stdlib/averages/shaped.js.map +1 -0
  615. package/dist/core/stdlib/averages/simple.d.ts +58 -0
  616. package/dist/core/stdlib/averages/simple.d.ts.map +1 -0
  617. package/dist/core/stdlib/averages/simple.js +92 -0
  618. package/dist/core/stdlib/averages/simple.js.map +1 -0
  619. package/dist/core/stdlib/calendar/civil.d.ts +56 -0
  620. package/dist/core/stdlib/calendar/civil.d.ts.map +1 -0
  621. package/dist/core/stdlib/calendar/civil.js +70 -0
  622. package/dist/core/stdlib/calendar/civil.js.map +1 -0
  623. package/dist/core/stdlib/calendar/fields.d.ts +36 -0
  624. package/dist/core/stdlib/calendar/fields.d.ts.map +1 -0
  625. package/dist/core/stdlib/calendar/fields.js +93 -0
  626. package/dist/core/stdlib/calendar/fields.js.map +1 -0
  627. package/dist/core/stdlib/calendar/format.d.ts +19 -0
  628. package/dist/core/stdlib/calendar/format.d.ts.map +1 -0
  629. package/dist/core/stdlib/calendar/format.js +51 -0
  630. package/dist/core/stdlib/calendar/format.js.map +1 -0
  631. package/dist/core/stdlib/calendar/index.d.ts +7 -0
  632. package/dist/core/stdlib/calendar/index.d.ts.map +1 -0
  633. package/dist/core/stdlib/calendar/index.js +5 -0
  634. package/dist/core/stdlib/calendar/index.js.map +1 -0
  635. package/dist/core/stdlib/calendar/zone.d.ts +53 -0
  636. package/dist/core/stdlib/calendar/zone.d.ts.map +1 -0
  637. package/dist/core/stdlib/calendar/zone.js +138 -0
  638. package/dist/core/stdlib/calendar/zone.js.map +1 -0
  639. package/dist/core/stdlib/index.d.ts +57 -0
  640. package/dist/core/stdlib/index.d.ts.map +1 -0
  641. package/dist/core/stdlib/index.js +51 -0
  642. package/dist/core/stdlib/index.js.map +1 -0
  643. package/dist/core/stdlib/maths/arithmetic.d.ts +38 -0
  644. package/dist/core/stdlib/maths/arithmetic.d.ts.map +1 -0
  645. package/dist/core/stdlib/maths/arithmetic.js +66 -0
  646. package/dist/core/stdlib/maths/arithmetic.js.map +1 -0
  647. package/dist/core/stdlib/maths/elementary.d.ts +65 -0
  648. package/dist/core/stdlib/maths/elementary.d.ts.map +1 -0
  649. package/dist/core/stdlib/maths/elementary.js +93 -0
  650. package/dist/core/stdlib/maths/elementary.js.map +1 -0
  651. package/dist/core/stdlib/maths/index.d.ts +4 -0
  652. package/dist/core/stdlib/maths/index.d.ts.map +1 -0
  653. package/dist/core/stdlib/maths/index.js +4 -0
  654. package/dist/core/stdlib/maths/index.js.map +1 -0
  655. package/dist/core/stdlib/maths/rounding.d.ts +43 -0
  656. package/dist/core/stdlib/maths/rounding.d.ts.map +1 -0
  657. package/dist/core/stdlib/maths/rounding.js +62 -0
  658. package/dist/core/stdlib/maths/rounding.js.map +1 -0
  659. package/dist/core/stdlib/momentum/convergence.d.ts +36 -0
  660. package/dist/core/stdlib/momentum/convergence.d.ts.map +1 -0
  661. package/dist/core/stdlib/momentum/convergence.js +48 -0
  662. package/dist/core/stdlib/momentum/convergence.js.map +1 -0
  663. package/dist/core/stdlib/momentum/index.d.ts +6 -0
  664. package/dist/core/stdlib/momentum/index.d.ts.map +1 -0
  665. package/dist/core/stdlib/momentum/index.js +6 -0
  666. package/dist/core/stdlib/momentum/index.js.map +1 -0
  667. package/dist/core/stdlib/momentum/pressure.d.ts +43 -0
  668. package/dist/core/stdlib/momentum/pressure.d.ts.map +1 -0
  669. package/dist/core/stdlib/momentum/pressure.js +103 -0
  670. package/dist/core/stdlib/momentum/pressure.js.map +1 -0
  671. package/dist/core/stdlib/momentum/rates.d.ts +74 -0
  672. package/dist/core/stdlib/momentum/rates.d.ts.map +1 -0
  673. package/dist/core/stdlib/momentum/rates.js +134 -0
  674. package/dist/core/stdlib/momentum/rates.js.map +1 -0
  675. package/dist/core/stdlib/momentum/rsi.d.ts +21 -0
  676. package/dist/core/stdlib/momentum/rsi.d.ts.map +1 -0
  677. package/dist/core/stdlib/momentum/rsi.js +30 -0
  678. package/dist/core/stdlib/momentum/rsi.js.map +1 -0
  679. package/dist/core/stdlib/momentum/stochastic.d.ts +44 -0
  680. package/dist/core/stdlib/momentum/stochastic.d.ts.map +1 -0
  681. package/dist/core/stdlib/momentum/stochastic.js +97 -0
  682. package/dist/core/stdlib/momentum/stochastic.js.map +1 -0
  683. package/dist/core/stdlib/series/changes.d.ts +59 -0
  684. package/dist/core/stdlib/series/changes.d.ts.map +1 -0
  685. package/dist/core/stdlib/series/changes.js +129 -0
  686. package/dist/core/stdlib/series/changes.js.map +1 -0
  687. package/dist/core/stdlib/series/conditions.d.ts +34 -0
  688. package/dist/core/stdlib/series/conditions.d.ts.map +1 -0
  689. package/dist/core/stdlib/series/conditions.js +52 -0
  690. package/dist/core/stdlib/series/conditions.js.map +1 -0
  691. package/dist/core/stdlib/series/extremes.d.ts +29 -0
  692. package/dist/core/stdlib/series/extremes.d.ts.map +1 -0
  693. package/dist/core/stdlib/series/extremes.js +62 -0
  694. package/dist/core/stdlib/series/extremes.js.map +1 -0
  695. package/dist/core/stdlib/series/index.d.ts +9 -0
  696. package/dist/core/stdlib/series/index.d.ts.map +1 -0
  697. package/dist/core/stdlib/series/index.js +7 -0
  698. package/dist/core/stdlib/series/index.js.map +1 -0
  699. package/dist/core/stdlib/series/pivots.d.ts +25 -0
  700. package/dist/core/stdlib/series/pivots.d.ts.map +1 -0
  701. package/dist/core/stdlib/series/pivots.js +42 -0
  702. package/dist/core/stdlib/series/pivots.js.map +1 -0
  703. package/dist/core/stdlib/series/statistics.d.ts +64 -0
  704. package/dist/core/stdlib/series/statistics.d.ts.map +1 -0
  705. package/dist/core/stdlib/series/statistics.js +148 -0
  706. package/dist/core/stdlib/series/statistics.js.map +1 -0
  707. package/dist/core/stdlib/series/totals.d.ts +68 -0
  708. package/dist/core/stdlib/series/totals.d.ts.map +1 -0
  709. package/dist/core/stdlib/series/totals.js +115 -0
  710. package/dist/core/stdlib/series/totals.js.map +1 -0
  711. package/dist/core/stdlib/trend/directional.d.ts +69 -0
  712. package/dist/core/stdlib/trend/directional.d.ts.map +1 -0
  713. package/dist/core/stdlib/trend/directional.js +151 -0
  714. package/dist/core/stdlib/trend/directional.js.map +1 -0
  715. package/dist/core/stdlib/trend/index.d.ts +4 -0
  716. package/dist/core/stdlib/trend/index.d.ts.map +1 -0
  717. package/dist/core/stdlib/trend/index.js +4 -0
  718. package/dist/core/stdlib/trend/index.js.map +1 -0
  719. package/dist/core/stdlib/trend/psar.d.ts +33 -0
  720. package/dist/core/stdlib/trend/psar.d.ts.map +1 -0
  721. package/dist/core/stdlib/trend/psar.js +86 -0
  722. package/dist/core/stdlib/trend/psar.js.map +1 -0
  723. package/dist/core/stdlib/trend/supertrend.d.ts +30 -0
  724. package/dist/core/stdlib/trend/supertrend.d.ts.map +1 -0
  725. package/dist/core/stdlib/trend/supertrend.js +65 -0
  726. package/dist/core/stdlib/trend/supertrend.js.map +1 -0
  727. package/dist/core/stdlib/values/bar.d.ts +39 -0
  728. package/dist/core/stdlib/values/bar.d.ts.map +1 -0
  729. package/dist/core/stdlib/values/bar.js +33 -0
  730. package/dist/core/stdlib/values/bar.js.map +1 -0
  731. package/dist/core/stdlib/values/index.d.ts +11 -0
  732. package/dist/core/stdlib/values/index.d.ts.map +1 -0
  733. package/dist/core/stdlib/values/index.js +6 -0
  734. package/dist/core/stdlib/values/index.js.map +1 -0
  735. package/dist/core/stdlib/values/lookback.d.ts +83 -0
  736. package/dist/core/stdlib/values/lookback.d.ts.map +1 -0
  737. package/dist/core/stdlib/values/lookback.js +134 -0
  738. package/dist/core/stdlib/values/lookback.js.map +1 -0
  739. package/dist/core/stdlib/values/region.d.ts +55 -0
  740. package/dist/core/stdlib/values/region.d.ts.map +1 -0
  741. package/dist/core/stdlib/values/region.js +73 -0
  742. package/dist/core/stdlib/values/region.js.map +1 -0
  743. package/dist/core/stdlib/values/tail.d.ts +44 -0
  744. package/dist/core/stdlib/values/tail.d.ts.map +1 -0
  745. package/dist/core/stdlib/values/tail.js +23 -0
  746. package/dist/core/stdlib/values/tail.js.map +1 -0
  747. package/dist/core/stdlib/values/value.d.ts +64 -0
  748. package/dist/core/stdlib/values/value.d.ts.map +1 -0
  749. package/dist/core/stdlib/values/value.js +61 -0
  750. package/dist/core/stdlib/values/value.js.map +1 -0
  751. package/dist/core/stdlib/volatility/bands.d.ts +50 -0
  752. package/dist/core/stdlib/volatility/bands.d.ts.map +1 -0
  753. package/dist/core/stdlib/volatility/bands.js +101 -0
  754. package/dist/core/stdlib/volatility/bands.js.map +1 -0
  755. package/dist/core/stdlib/volatility/deviation.d.ts +43 -0
  756. package/dist/core/stdlib/volatility/deviation.d.ts.map +1 -0
  757. package/dist/core/stdlib/volatility/deviation.js +75 -0
  758. package/dist/core/stdlib/volatility/deviation.js.map +1 -0
  759. package/dist/core/stdlib/volatility/index.d.ts +6 -0
  760. package/dist/core/stdlib/volatility/index.d.ts.map +1 -0
  761. package/dist/core/stdlib/volatility/index.js +5 -0
  762. package/dist/core/stdlib/volatility/index.js.map +1 -0
  763. package/dist/core/stdlib/volatility/measures.d.ts +48 -0
  764. package/dist/core/stdlib/volatility/measures.d.ts.map +1 -0
  765. package/dist/core/stdlib/volatility/measures.js +73 -0
  766. package/dist/core/stdlib/volatility/measures.js.map +1 -0
  767. package/dist/core/stdlib/volatility/range.d.ts +69 -0
  768. package/dist/core/stdlib/volatility/range.d.ts.map +1 -0
  769. package/dist/core/stdlib/volatility/range.js +86 -0
  770. package/dist/core/stdlib/volatility/range.js.map +1 -0
  771. package/dist/core/stdlib/volume/accumulation.d.ts +61 -0
  772. package/dist/core/stdlib/volume/accumulation.d.ts.map +1 -0
  773. package/dist/core/stdlib/volume/accumulation.js +127 -0
  774. package/dist/core/stdlib/volume/accumulation.js.map +1 -0
  775. package/dist/core/stdlib/volume/flow.d.ts +60 -0
  776. package/dist/core/stdlib/volume/flow.d.ts.map +1 -0
  777. package/dist/core/stdlib/volume/flow.js +125 -0
  778. package/dist/core/stdlib/volume/flow.js.map +1 -0
  779. package/dist/core/stdlib/volume/index.d.ts +5 -0
  780. package/dist/core/stdlib/volume/index.d.ts.map +1 -0
  781. package/dist/core/stdlib/volume/index.js +4 -0
  782. package/dist/core/stdlib/volume/index.js.map +1 -0
  783. package/dist/core/stdlib/volume/weighted.d.ts +52 -0
  784. package/dist/core/stdlib/volume/weighted.d.ts.map +1 -0
  785. package/dist/core/stdlib/volume/weighted.js +64 -0
  786. package/dist/core/stdlib/volume/weighted.js.map +1 -0
  787. package/dist/core/version/index.d.ts +2 -0
  788. package/dist/core/version/index.d.ts.map +1 -0
  789. package/dist/core/version/index.js +2 -0
  790. package/dist/core/version/index.js.map +1 -0
  791. package/dist/core/version/version.generated.d.ts +10 -0
  792. package/dist/core/version/version.generated.d.ts.map +1 -0
  793. package/dist/core/version/version.generated.js +14 -0
  794. package/dist/core/version/version.generated.js.map +1 -0
  795. package/package.json +88 -52
  796. package/spec/errors.json +3403 -3204
  797. package/src/adapters/charts/alerts.ts +116 -0
  798. package/src/adapters/charts/bars.ts +63 -0
  799. package/src/adapters/charts/candles.ts +137 -0
  800. package/src/adapters/charts/colours.ts +113 -0
  801. package/src/adapters/charts/columns.ts +99 -0
  802. package/src/adapters/charts/contract.ts +320 -0
  803. package/src/adapters/charts/descriptor.ts +199 -0
  804. package/src/adapters/charts/drawings.ts +213 -0
  805. package/src/adapters/charts/errors.ts +45 -0
  806. package/src/adapters/charts/fields.ts +74 -0
  807. package/src/adapters/charts/fills.ts +71 -0
  808. package/src/adapters/charts/index.ts +78 -0
  809. package/src/adapters/charts/levels.ts +92 -0
  810. package/src/adapters/charts/markers.ts +119 -0
  811. package/src/adapters/charts/paint.ts +101 -0
  812. package/src/adapters/charts/plots.ts +185 -0
  813. package/src/adapters/charts/produced.ts +68 -0
  814. package/src/adapters/charts/requests.ts +357 -0
  815. package/src/adapters/charts/run.ts +327 -0
  816. package/src/adapters/charts/settings.ts +273 -0
  817. package/src/adapters/charts/surfaces.ts +238 -0
  818. package/src/adapters/charts/tables.ts +155 -0
  819. package/src/core/catalogue/catalogue.generated.ts +17 -9
  820. package/src/core/catalogue/values.generated.ts +8 -0
  821. package/src/core/check/arguments.ts +126 -0
  822. package/src/core/check/call-sites.ts +385 -0
  823. package/src/core/check/call-warmup.ts +121 -0
  824. package/src/core/check/calls.ts +412 -0
  825. package/src/core/check/check.ts +183 -0
  826. package/src/core/check/checked.ts +228 -0
  827. package/src/core/check/checker.ts +393 -0
  828. package/src/core/check/conditional.ts +143 -0
  829. package/src/core/check/constant.ts +127 -0
  830. package/src/core/check/declaration.ts +230 -0
  831. package/src/core/check/expressions.ts +471 -0
  832. package/src/core/check/functions.ts +283 -0
  833. package/src/core/check/handles.ts +75 -0
  834. package/src/core/check/index.ts +67 -0
  835. package/src/core/check/library-bars.ts +194 -0
  836. package/src/core/check/library-orders.ts +290 -0
  837. package/src/core/check/library-output.ts +241 -0
  838. package/src/core/check/library-series.ts +457 -0
  839. package/src/core/check/library.ts +374 -0
  840. package/src/core/check/literals.ts +35 -0
  841. package/src/core/check/outputs.ts +152 -0
  842. package/src/core/check/statements.ts +465 -0
  843. package/src/core/check/suggest.ts +63 -0
  844. package/src/core/check/surface.ts +115 -0
  845. package/src/core/check/tags.ts +94 -0
  846. package/src/core/check/types.ts +260 -0
  847. package/src/core/check/warmup.ts +100 -0
  848. package/src/core/diagnostics/collector.ts +27 -1
  849. package/src/core/emit/calls.ts +415 -0
  850. package/src/core/emit/canonical.ts +81 -0
  851. package/src/core/emit/channels.ts +144 -0
  852. package/src/core/emit/code.ts +155 -0
  853. package/src/core/emit/colours.ts +75 -0
  854. package/src/core/emit/context.ts +461 -0
  855. package/src/core/emit/defaults.ts +150 -0
  856. package/src/core/emit/emit.ts +313 -0
  857. package/src/core/emit/events.ts +141 -0
  858. package/src/core/emit/expressions.ts +292 -0
  859. package/src/core/emit/functions.ts +195 -0
  860. package/src/core/emit/gaps.ts +44 -0
  861. package/src/core/emit/index.ts +74 -0
  862. package/src/core/emit/inputs.ts +179 -0
  863. package/src/core/emit/layout.ts +165 -0
  864. package/src/core/emit/meta.ts +104 -0
  865. package/src/core/emit/opcodes.ts +160 -0
  866. package/src/core/emit/outputs.ts +357 -0
  867. package/src/core/emit/pool.ts +102 -0
  868. package/src/core/emit/program.ts +385 -0
  869. package/src/core/emit/registers.ts +179 -0
  870. package/src/core/emit/request-scope.ts +52 -0
  871. package/src/core/emit/requests.ts +258 -0
  872. package/src/core/emit/requires.ts +91 -0
  873. package/src/core/emit/sha256.ts +119 -0
  874. package/src/core/emit/statements.ts +438 -0
  875. package/src/core/emit/values.ts +284 -0
  876. package/src/core/engine/alerts.ts +152 -0
  877. package/src/core/engine/arithmetic.ts +165 -0
  878. package/src/core/engine/bars.ts +224 -0
  879. package/src/core/engine/budget.ts +284 -0
  880. package/src/core/engine/channels.ts +171 -0
  881. package/src/core/engine/drawings.ts +127 -0
  882. package/src/core/engine/engine.ts +498 -0
  883. package/src/core/engine/errors.ts +100 -0
  884. package/src/core/engine/frames.ts +85 -0
  885. package/src/core/engine/grids.ts +98 -0
  886. package/src/core/engine/guard.ts +71 -0
  887. package/src/core/engine/host.ts +251 -0
  888. package/src/core/engine/index.ts +93 -0
  889. package/src/core/engine/inputs.ts +263 -0
  890. package/src/core/engine/ledger/call.ts +218 -0
  891. package/src/core/engine/ledger/closable.ts +269 -0
  892. package/src/core/engine/ledger/holdings.ts +354 -0
  893. package/src/core/engine/ledger/index.ts +28 -0
  894. package/src/core/engine/ledger/intent.ts +112 -0
  895. package/src/core/engine/ledger/ledger.ts +314 -0
  896. package/src/core/engine/ledger/place.ts +277 -0
  897. package/src/core/engine/ledger/positions.ts +123 -0
  898. package/src/core/engine/ledger/refuse.ts +378 -0
  899. package/src/core/engine/ledger/row.ts +318 -0
  900. package/src/core/engine/ledger/sizing.ts +292 -0
  901. package/src/core/engine/library/arrays.ts +316 -0
  902. package/src/core/engine/library/averages.ts +97 -0
  903. package/src/core/engine/library/binding.ts +325 -0
  904. package/src/core/engine/library/chart.ts +115 -0
  905. package/src/core/engine/library/colours.ts +111 -0
  906. package/src/core/engine/library/dates.ts +109 -0
  907. package/src/core/engine/library/index.ts +103 -0
  908. package/src/core/engine/library/maths.ts +134 -0
  909. package/src/core/engine/library/objects.ts +265 -0
  910. package/src/core/engine/library/oscillators.ts +124 -0
  911. package/src/core/engine/library/ranges.ts +51 -0
  912. package/src/core/engine/library/series.ts +236 -0
  913. package/src/core/engine/library/state.ts +47 -0
  914. package/src/core/engine/library/studies.ts +150 -0
  915. package/src/core/engine/library/text.ts +303 -0
  916. package/src/core/engine/library/trend.ts +79 -0
  917. package/src/core/engine/library/volume.ts +101 -0
  918. package/src/core/engine/load.ts +104 -0
  919. package/src/core/engine/machine.ts +446 -0
  920. package/src/core/engine/memory.ts +129 -0
  921. package/src/core/engine/operations.ts +171 -0
  922. package/src/core/engine/orders.ts +121 -0
  923. package/src/core/engine/registers.ts +104 -0
  924. package/src/core/engine/request-body.ts +328 -0
  925. package/src/core/engine/request-plan.ts +270 -0
  926. package/src/core/engine/requests.ts +382 -0
  927. package/src/core/engine/results.ts +41 -0
  928. package/src/core/engine/series.ts +82 -0
  929. package/src/core/engine/session/hours.ts +86 -0
  930. package/src/core/engine/session/index.ts +17 -0
  931. package/src/core/engine/session/record.ts +191 -0
  932. package/src/core/engine/session/spec.ts +45 -0
  933. package/src/core/engine/timeframe.ts +161 -0
  934. package/src/core/engine/types.ts +47 -0
  935. package/src/core/engine/values/heap.ts +295 -0
  936. package/src/core/engine/values/index.ts +34 -0
  937. package/src/core/engine/values/value.ts +158 -0
  938. package/src/core/engine/verify-budgets.ts +202 -0
  939. package/src/core/engine/verify-code.ts +332 -0
  940. package/src/core/engine/verify-requests.ts +255 -0
  941. package/src/core/engine/verify-shape.ts +164 -0
  942. package/src/core/engine/verify-tables.ts +176 -0
  943. package/src/core/engine/verify.ts +341 -0
  944. package/src/core/index.ts +129 -6
  945. package/src/core/parse/expressions.ts +1 -1
  946. package/src/core/parse/functions.ts +109 -109
  947. package/src/core/parse/names.ts +29 -2
  948. package/src/core/parse/switches.ts +105 -105
  949. package/src/core/stdlib/averages/exponential.ts +119 -0
  950. package/src/core/stdlib/averages/index.ts +45 -0
  951. package/src/core/stdlib/averages/select.ts +71 -0
  952. package/src/core/stdlib/averages/shaped.ts +161 -0
  953. package/src/core/stdlib/averages/simple.ts +139 -0
  954. package/src/core/stdlib/calendar/civil.ts +89 -0
  955. package/src/core/stdlib/calendar/fields.ts +124 -0
  956. package/src/core/stdlib/calendar/format.ts +71 -0
  957. package/src/core/stdlib/calendar/index.ts +15 -0
  958. package/src/core/stdlib/calendar/zone.ts +161 -0
  959. package/src/core/stdlib/index.ts +400 -0
  960. package/src/core/stdlib/maths/arithmetic.ts +74 -0
  961. package/src/core/stdlib/maths/elementary.ts +124 -0
  962. package/src/core/stdlib/maths/index.ts +43 -0
  963. package/src/core/stdlib/maths/rounding.ts +78 -0
  964. package/src/core/stdlib/momentum/convergence.ts +82 -0
  965. package/src/core/stdlib/momentum/index.ts +47 -0
  966. package/src/core/stdlib/momentum/pressure.ts +141 -0
  967. package/src/core/stdlib/momentum/rates.ts +188 -0
  968. package/src/core/stdlib/momentum/rsi.ts +49 -0
  969. package/src/core/stdlib/momentum/stochastic.ts +147 -0
  970. package/src/core/stdlib/series/changes.ts +177 -0
  971. package/src/core/stdlib/series/conditions.ts +74 -0
  972. package/src/core/stdlib/series/extremes.ts +92 -0
  973. package/src/core/stdlib/series/index.ts +83 -0
  974. package/src/core/stdlib/series/pivots.ts +63 -0
  975. package/src/core/stdlib/series/statistics.ts +207 -0
  976. package/src/core/stdlib/series/totals.ts +164 -0
  977. package/src/core/stdlib/trend/directional.ts +196 -0
  978. package/src/core/stdlib/trend/index.ts +13 -0
  979. package/src/core/stdlib/trend/psar.ts +131 -0
  980. package/src/core/stdlib/trend/supertrend.ts +100 -0
  981. package/src/core/stdlib/values/bar.ts +54 -0
  982. package/src/core/stdlib/values/index.ts +14 -0
  983. package/src/core/stdlib/values/lookback.ts +198 -0
  984. package/src/core/stdlib/values/region.ts +86 -0
  985. package/src/core/stdlib/values/tail.ts +58 -0
  986. package/src/core/stdlib/values/value.ts +82 -0
  987. package/src/core/stdlib/volatility/bands.ts +178 -0
  988. package/src/core/stdlib/volatility/deviation.ts +111 -0
  989. package/src/core/stdlib/volatility/index.ts +48 -0
  990. package/src/core/stdlib/volatility/measures.ts +96 -0
  991. package/src/core/stdlib/volatility/range.ts +143 -0
  992. package/src/core/stdlib/volume/accumulation.ts +152 -0
  993. package/src/core/stdlib/volume/flow.ts +173 -0
  994. package/src/core/stdlib/volume/index.ts +43 -0
  995. package/src/core/stdlib/volume/weighted.ts +101 -0
  996. package/src/core/version/index.ts +1 -0
  997. package/src/core/version/version.generated.ts +15 -0
@@ -0,0 +1,269 @@
1
+ /**
2
+ * What is left to reduce and which side reduces it, `stdlib.md` 17.1 and 17.2.
3
+ *
4
+ * **Both questions are about a part rather than about the leg**, and the leg is
5
+ * the case of a part that no tag names. A leg can be long under one tag and
6
+ * short under another, and then its net answers neither question for either of
7
+ * them: `close(tag)` taking its side from the net sent an order that added to
8
+ * the part it was told to flatten, and a count taken from the net did not see
9
+ * the close already on its way to that part.
10
+ *
11
+ * **What is available to reduce is the settled position less everything already
12
+ * working against it.** A position is folded from settled fills and from
13
+ * nothing else (17.8), which is right and is what makes this file necessary: an
14
+ * order the destination has not answered has filled nothing, so the leg still
15
+ * reads what it held before that order left. Measured against that alone, every
16
+ * reducing order sends the whole position again.
17
+ *
18
+ * **The scope is the run and the position, not the bar.** That correction is
19
+ * the whole of this file's history and it was arrived at twice. The first
20
+ * reading counted the orders of one call, and `close()` twice on one bar took a
21
+ * leg holding three long to three short. The second counted the orders of one
22
+ * bar, and the same two closes one bar apart did the same thing: the bar's own
23
+ * record was emptied when the bar index changed, so bar three asked what the leg
24
+ * held, was told three, and sent three. With a destination slower than the chart
25
+ * the plainest exit a strategy can write,
26
+ *
27
+ * if bar.index > 0 and pos.size > 0
28
+ * close()
29
+ *
30
+ * sent one close per bar for the length of the run, and a flat exit became a
31
+ * short position that grew without limit. The script was not wrong: `pos.size`
32
+ * is folded from settled fills and correctly still read three.
33
+ *
34
+ * So the record is not the call's and not the bar's. It is the ledger's, which
35
+ * is the run's, and the ledger already holds it: a row carries a status and a
36
+ * filled quantity, and an order the destination still has is exactly a row that
37
+ * is neither terminal nor fully filled (`row.ts`, `workingUnits`). A bar-scoped
38
+ * rule is the special case of this one where nothing has been answered yet, so
39
+ * this subsumes it rather than sitting beside it, and the bar keeps no record of
40
+ * its own.
41
+ *
42
+ * Four cases decide the shape, and each is a case a strategy meets:
43
+ *
44
+ * - **A partial fill.** Three sold with one filled leaves two working, not
45
+ * three and not none, because the one that filled has already moved the leg.
46
+ * - **A rejection.** The row ends, the working quantity is released, and the
47
+ * script may close again. That is correct, and it is why a frame matters.
48
+ * - **A destination that never answers.** The strategy cannot close again,
49
+ * which is right: it already has a close working, and a second one would sell
50
+ * a position it is already selling. `cancel` is the way out, and it works
51
+ * because the cancellation comes back as a frame that ends the row.
52
+ * - **An entry working against the same leg.** An unsettled `buy` adds nothing
53
+ * to what a close may reduce. Nothing has settled, so there is nothing extra
54
+ * to close, and counting it would send a close for a position that may never
55
+ * exist.
56
+ *
57
+ * **In units, because a position is.** A quantity the script stated is in the
58
+ * declaration's own unit (`host-interface.md` 7.1), so it is a number this file
59
+ * can read only where that unit is units. In lots, cash or an equity percent
60
+ * the two are different kinds of number and the lot size that would join them
61
+ * is the fact OS7005 is deferred on.
62
+ *
63
+ * **What is done with an order it cannot read is the only reading that cannot
64
+ * cross zero: that the order took the whole of the part.** Counted as nothing,
65
+ * `close(qty = 1)` in lots followed by a bare close on the same bar sent the
66
+ * position a second time and the leg ended short, which is the defect this file
67
+ * exists for wearing a different unit. Counted as everything, the second close
68
+ * sends nothing, which leaves the strategy holding a position it may believe it
69
+ * closed. That is the worse-of-two choice `stdlib.md` 17.1 already makes: an
70
+ * order that crosses zero is the failure the sentence is unconditional about,
71
+ * and a close that sends nothing is the idempotence the same section describes.
72
+ *
73
+ * So what is left carries whether it was counted or assumed. The mapping reads
74
+ * the number, because sending nothing is safe either way. The refusal reads
75
+ * both, because a refusal may only name a number it measured: an assumed zero
76
+ * is not a fact about the leg and OS7017 is not raised on one.
77
+ */
78
+ import type { OrderSide } from './intent.js';
79
+ import { isTerminal, workingUnits } from './row.js';
80
+ import type { LedgerRow } from './row.js';
81
+
82
+ /**
83
+ * The side that reduces a position, or nothing when there is none to reduce.
84
+ *
85
+ * One fact with two readers. The mapping uses it to give a close its direction,
86
+ * and the arithmetic below uses it to tell an order that is on its way out of
87
+ * the position from one that is on its way in, which is the difference between
88
+ * a reduction that is still working and an entry that holds nothing.
89
+ */
90
+ export function closingSide(size: number): OrderSide | undefined {
91
+ if (size > 0) return 'sell';
92
+ if (size < 0) return 'buy';
93
+ return undefined;
94
+ }
95
+
96
+ /**
97
+ * What the arithmetic below needs: the leg and the rows of its own ledger.
98
+ *
99
+ * Narrower than the context the mapping is given, so that this file states what
100
+ * it reads rather than importing the whole of it.
101
+ */
102
+ export interface Closing {
103
+ /** The leg's net position in units, folded from settled fills. */
104
+ size(): number;
105
+ /** The rows this strategy placed, newest last. */
106
+ rows(): readonly LedgerRow[];
107
+ }
108
+
109
+ /** The settled units held under one tag, signed the way a position is. */
110
+ function heldUnder(ctx: Closing, tag: string): number {
111
+ let held = 0;
112
+ for (const row of ctx.rows()) {
113
+ if (row.tag !== tag) continue;
114
+ held += row.side === 'buy' ? row.filledQty : -row.filledQty;
115
+ }
116
+ return held;
117
+ }
118
+
119
+ /**
120
+ * What the part a call names holds, signed the way a position is.
121
+ *
122
+ * The leg where the call names no tag, and the settled quantity of that tag's
123
+ * own rows where it names one. **One function because it is one question**, and
124
+ * every number this file produces about a part is taken from it: how much is
125
+ * there to close, which side reduces it, and how much of it an order the engine
126
+ * cannot read is assumed to have taken.
127
+ */
128
+ function holdingOf(ctx: Closing, tag: string | null): number {
129
+ return tag === null ? ctx.size() : heldUnder(ctx, tag);
130
+ }
131
+
132
+ /**
133
+ * The side that reduces the part a call names, or nothing where it holds none.
134
+ *
135
+ * **The direction of a close comes from the part it was told to flatten**, and
136
+ * taking it from the leg is how a call named `close` opened a position: a leg
137
+ * holding ten long under one tag and four short under another is a net six
138
+ * long, so `close(tag)` on the short part was answered with a sell, which took
139
+ * that part to eight short and cut the other one to six. `stdlib.md` 17.2 says
140
+ * the call flattens the part of the position carrying one tag, and says of the
141
+ * reading that takes the leg's net that it would let close open a position.
142
+ *
143
+ * A part whose own rows have netted to nothing has no side and the call sends
144
+ * nothing, which is 17.2's idempotence and the same answer a flat leg gives a
145
+ * bare close.
146
+ */
147
+ export function closingFor(ctx: Closing, tag: string | null): OrderSide | undefined {
148
+ return closingSide(holdingOf(ctx, tag));
149
+ }
150
+
151
+ /** What one part of the leg can still close, and whether that was measured. */
152
+ export interface Closable {
153
+ /** The units a close may still send against it. */
154
+ readonly units: number;
155
+ /** Whether every order counted against it stated a quantity in units. */
156
+ readonly counted: boolean;
157
+ }
158
+
159
+ /**
160
+ * The units already working against the position, across the whole run.
161
+ *
162
+ * Every reduction comes out of the leg, and a reduction naming a tag comes out
163
+ * of that tag as well, so the leg is asked with no tag and a part is asked with
164
+ * its own.
165
+ *
166
+ * **Only an order on the side that reduces what the leg holds now**, and
167
+ * **every** order on that side. A row records what it reduced at the moment it
168
+ * was sent, and a leg that has changed sign since is being reduced from the
169
+ * other side: an order still working on the old side is adding to the leg
170
+ * rather than taking from it, and subtracting it would leave a close sending
171
+ * less than there is to close. The same sentence read the other way is the
172
+ * half that was missing. An order recorded as adding to a position, on a leg
173
+ * that has since gone the other way, is a reduction now whatever it was then,
174
+ * and leaving it out let a close be sized against a position an entry was
175
+ * already coming to take off: `buy(qty = 5)` unanswered on a leg the sells
176
+ * after it took short offered a close the whole twelve, five of which were
177
+ * already on their way.
178
+ *
179
+ * **The side is the part's own**, which is the leg's where no tag names one. A
180
+ * part can sit on the side its leg is not on, and then the orders that reduce
181
+ * it are the ones the leg's net calls additions: measured from the leg, the
182
+ * count for a short part under a long leg counted the sells that were adding to
183
+ * it and missed the buys that were taking it off.
184
+ *
185
+ * `holdings.ts` makes the same reading per position reference, and the two
186
+ * agree by construction: what a close may send across the leg is never more
187
+ * than the positions on that side can give it.
188
+ */
189
+ function committed(ctx: Closing, tag: string | null): Closable {
190
+ const held = holdingOf(ctx, tag);
191
+ const side = closingSide(held);
192
+ if (side === undefined) return { units: 0, counted: true };
193
+ let units = 0;
194
+ let counted = true;
195
+ for (const row of ctx.rows()) {
196
+ if (row.side !== side || isTerminal(row.status)) continue;
197
+ const reduces = row.reduces;
198
+ if (reduces !== null) {
199
+ if (tag !== null && reduces.part !== tag) continue;
200
+ const working = workingUnits(row);
201
+ if (working === 0) continue;
202
+ units += working;
203
+ counted = counted && reduces.counted;
204
+ continue;
205
+ }
206
+ // An order that was an entry when it left. Its own tag is what names it,
207
+ // because a reduction's `part` is the tag a close named and an entry named
208
+ // no part of anything.
209
+ if (tag !== null && row.tag !== tag) continue;
210
+ if (row.units === null) {
211
+ // A quantity in the declaration's own unit, working against this part and
212
+ // unreadable as a number of units. Taken to cover the whole of what is
213
+ // there, which is the reading `stdlib.md` 17.1 already makes for the
214
+ // other order it cannot read: a close that sends nothing over an order
215
+ // that crosses zero.
216
+ units += Math.abs(held);
217
+ counted = false;
218
+ continue;
219
+ }
220
+ units += Math.max(0, row.units - row.filledQty);
221
+ }
222
+ return { units, counted };
223
+ }
224
+
225
+ /**
226
+ * What a `close` can still close, in units, whether or not it names a quantity.
227
+ *
228
+ * The whole leg where the call names no tag, and the part that tag entered
229
+ * where it names one, less what is already working against it. Zero while the
230
+ * leg is flat, zero for a tag whose rows have netted to nothing, and zero once
231
+ * the orders already sent have the whole of it going.
232
+ *
233
+ * **A part on the leg's own side is bounded by the leg**, so that closing a
234
+ * part can never take the leg through zero: the part is what the call names,
235
+ * and the leg is what the order comes out of.
236
+ *
237
+ * **A part on the other side is not**, and bounding it there was the second
238
+ * half of taking a direction from the net. Closing a short part under a long
239
+ * leg is a buy, which moves the leg away from zero rather than towards it, so
240
+ * there is nothing for the leg's own number to bound: measured against it, a
241
+ * part holding ten short on a leg netting two long was offered two, and on a
242
+ * leg netting nothing at all it was offered nothing. What that order may
243
+ * actually send is still bounded per position by what has settled there
244
+ * (`holdings.ts`), so a part whose reference has already returned to zero sends
245
+ * nothing rather than opening it again.
246
+ *
247
+ * Both readers ask this one question. The quantity a script states is refused
248
+ * against this number (OS7017) and the quantity the engine works out for itself
249
+ * is this number. Two readings of what a part holds would be one fact in two
250
+ * files, and the refusal would be about a quantity the mapping was not going to
251
+ * send.
252
+ */
253
+ export function closable(ctx: Closing, tag: string | null): Closable {
254
+ const spent = committed(ctx, null);
255
+ const leg = Math.max(0, Math.abs(ctx.size()) - spent.units);
256
+ if (tag === null) return { units: leg, counted: spent.counted };
257
+ const held = heldUnder(ctx, tag);
258
+ const own = committed(ctx, tag);
259
+ const part = Math.max(0, Math.abs(held) - own.units);
260
+ if (Math.sign(held) !== Math.sign(ctx.size())) return { units: part, counted: own.counted };
261
+ return part <= leg
262
+ ? { units: part, counted: own.counted }
263
+ : { units: leg, counted: spent.counted };
264
+ }
265
+
266
+ /** What a close can still close, for the mapping, which sends a number. */
267
+ export function closableUnits(ctx: Closing, tag: string | null): number {
268
+ return closable(ctx, tag).units;
269
+ }
@@ -0,0 +1,354 @@
1
+ /**
2
+ * What a leg holds, one entry per position reference, including what is still
3
+ * working, `stdlib.md` 17.1 and 17.7.
4
+ *
5
+ * **This file answers which position an order is sent against.** Three rounds
6
+ * corrected how much a reducing order may send, against the call, against the
7
+ * bar and then against the run. None of them asked which position reference an
8
+ * order carries, and the mapping was still deciding it from `ctx.size()`, which
9
+ * is the leg's net folded from settled fills. That number cannot answer the
10
+ * question, and the plainest script there is shows why:
11
+ *
12
+ * if bar.index == 0
13
+ * buy(qty = 6)
14
+ * if bar.index == 1
15
+ * sell(qty = 9)
16
+ *
17
+ * With the destination silent the leg's settled net is zero on bar one, so the
18
+ * sell was not seen as opposing anything and went on the reference the buy was
19
+ * already on. Both filled, and reference 1 opened six long and settled three
20
+ * short: one reference holding both signs, which is the one failure 17.1 names,
21
+ * because a fill arriving late can no longer say which position it settled.
22
+ *
23
+ * **So a reference is measured by what is on it, settled and working
24
+ * together.** An order the destination has not answered has moved no position
25
+ * figure, and the ledger's rows are where it is visible (`row.ts`). A reference
26
+ * with six units of buy still to come is a long position whether or not any of
27
+ * it has settled, and an opposing order has to take those six off it before it
28
+ * opens anything new: otherwise nothing can ever bring that reference back to
29
+ * zero, which is 17.7's sentence about how a position ends.
30
+ *
31
+ * **Two numbers, because two questions are asked and they are not the same
32
+ * question.**
33
+ *
34
+ * - `units` is what an opposing order may take, and it counts what is working.
35
+ * The order is being sent either way, at the size the script wrote; the only
36
+ * thing being decided is which reference each unit lands on, and the answer
37
+ * that lets every reference return to zero is the one that puts the units
38
+ * where the quantity they cancel is.
39
+ * - `settled` is what a close may send, and it counts only what has settled,
40
+ * less what is already working against it. A close chooses its own quantity,
41
+ * so a close counting a working entry would sell units that may never exist.
42
+ * That is `closable.ts`'s rule, and this is the same rule read per reference
43
+ * instead of per leg.
44
+ *
45
+ * **What this costs, stated rather than discovered.** An entry that opposes an
46
+ * unanswered entry is sent against it, so if the first order is rejected and
47
+ * the second fills, that reference settles on the side it did not open on. No
48
+ * engine avoids that without holding an order back until the destination
49
+ * answers, which is an engine that stops trading when a destination is slow.
50
+ * What 17.1 asks for is kept either way: every order names exactly one
51
+ * position, so every fill, however late, says which position it settled.
52
+ */
53
+ import type { OrderSide } from './intent.js';
54
+ import { isTerminal } from './row.js';
55
+ import type { LedgerRow } from './row.js';
56
+
57
+ /** One position reference a leg holds, and what may still be done to it. */
58
+ export interface Holding {
59
+ readonly ref: number;
60
+ /** The side it is on: `buy` for a long position, `sell` for a short one. */
61
+ readonly side: OrderSide;
62
+ /**
63
+ * The units an opposing order may take from it, settled and working
64
+ * together, or absent where the engine cannot read one of its quantities.
65
+ *
66
+ * Absent is not zero. It means the reference holds something on `side` whose
67
+ * size is stated in the declaration's own unit, which is the fact OS7005 is
68
+ * deferred on, so an opposing order cannot be divided against it.
69
+ */
70
+ readonly units: number | null;
71
+ /** The settled units nothing is working against, which is what a close sends. */
72
+ readonly settled: number;
73
+ }
74
+
75
+ /** What this file reads: the rows of the ledger and the position book. */
76
+ export interface Book {
77
+ /** The rows this strategy placed, newest last. */
78
+ rows(): readonly LedgerRow[];
79
+ /** The settled size of one position reference, signed the way a position is. */
80
+ sizeOf(ref: number): number;
81
+ }
82
+
83
+ /** One reference under construction, before it is decided what it holds. */
84
+ interface Tally {
85
+ /** Settled, signed, from the position book, which is the fold's owner. */
86
+ readonly settled: number;
87
+ /** Working units, signed, over the orders whose quantity is readable. */
88
+ working: number;
89
+ /**
90
+ * Working units on the side that reduces what has settled here, unsigned.
91
+ *
92
+ * **Which side that is depends on what settled, not on what an order was
93
+ * when it left.** A row records what it reduced at the moment it was sent,
94
+ * and a position that has moved since is being reduced from the other side:
95
+ * an order recorded as adding is a reduction now, and a reduction recorded
96
+ * then is adding now. Counting by the record instead of by the direction
97
+ * offered a close seven units against a reference holding two short, which
98
+ * took that reference's own book to five long. `closable.ts` makes the same
99
+ * correction one scope out, on the leg.
100
+ */
101
+ against: number;
102
+ /** The side of a working order whose quantity is not readable, or none. */
103
+ unreadable: OrderSide | null;
104
+ /** Whether a quantity it cannot read is working against what settled here. */
105
+ blocked: boolean;
106
+ }
107
+
108
+ function sideOf(signed: number): OrderSide {
109
+ return signed > 0 ? 'buy' : 'sell';
110
+ }
111
+
112
+ /**
113
+ * Every position reference this leg holds, oldest first.
114
+ *
115
+ * Oldest first is the order the references were minted in, which is the order
116
+ * the rows first name them in, and it is the order a reducing order takes them
117
+ * in: the position opened first is the position closed first.
118
+ *
119
+ * A reference with nothing left on it is not here. It has no room for an
120
+ * opposing order and nothing for a close to send, and it is either already back
121
+ * at zero or has its whole quantity spoken for by orders that are still going.
122
+ */
123
+ export function holdings(ctx: Book): readonly Holding[] {
124
+ const tallies = new Map<number, Tally>();
125
+ const minted: number[] = [];
126
+
127
+ for (const row of ctx.rows()) {
128
+ let tally = tallies.get(row.positionRef);
129
+ if (tally === undefined) {
130
+ tally = {
131
+ settled: ctx.sizeOf(row.positionRef),
132
+ working: 0,
133
+ against: 0,
134
+ unreadable: null,
135
+ blocked: false,
136
+ };
137
+ tallies.set(row.positionRef, tally);
138
+ minted.push(row.positionRef);
139
+ }
140
+ // An order that has ended has nothing more coming from it, whatever it
141
+ // filled: the fill is already in the settled figure above, and the rest is
142
+ // released. That is how a strategy whose order was rejected gets its room
143
+ // back.
144
+ if (isTerminal(row.status)) continue;
145
+ const sign = row.side === 'buy' ? 1 : -1;
146
+ // **Every row is read the same way, by the order's own quantity in units**,
147
+ // because this sum is compared against what has settled on this reference
148
+ // and both halves have to fall together when a fill arrives.
149
+ //
150
+ // A reduction used to be read by what it claimed of the leg when it was
151
+ // sent (`row.ts`, `Reduction`), which is a number about the leg rather than
152
+ // about the order: a second stated close claims nothing, because the first
153
+ // already spoke for the whole leg, and it still fills and still takes what
154
+ // it filled off what has settled here. The settled half fell, the claimed
155
+ // half did not, the sum went negative, the reference read as the side it is
156
+ // not on, and an entry opposing it was handed it as an order that adds. It
157
+ // then opened long and settled short with every order answered in full.
158
+ const remaining = row.units === null ? null : Math.max(0, row.units - row.filledQty);
159
+ const reduces = Math.sign(tally.settled) === -sign;
160
+ if (remaining === null) {
161
+ tally.unreadable = row.side;
162
+ // Nothing is sent against a position an order the engine cannot read is
163
+ // working against. Between a close that sends nothing and an order that
164
+ // crosses zero, `stdlib.md` 17.1 has already chosen.
165
+ if (reduces) tally.blocked = true;
166
+ continue;
167
+ }
168
+ tally.working += sign * remaining;
169
+ if (reduces) tally.against += remaining;
170
+ }
171
+
172
+ const held: Holding[] = [];
173
+ for (const ref of minted) {
174
+ const tally = tallies.get(ref) as Tally;
175
+ const outstanding = tally.settled + tally.working;
176
+ if (outstanding === 0 && tally.unreadable === null) continue;
177
+ const side = outstanding === 0 ? (tally.unreadable as OrderSide) : sideOf(outstanding);
178
+ // A reference holding a quantity the engine cannot read holds an unknown
179
+ // number of units, and understating it is the safe half of that: an
180
+ // opposing order divided against too small a number opens the remainder on
181
+ // a reference of its own, which crosses nothing.
182
+ const units = outstanding === 0 ? null : Math.abs(outstanding);
183
+ // **What a close may send is what settled here and is not already coming
184
+ // off**, and only where what settled is on this side. A reference whose
185
+ // working orders run past its settled quantity reads as the other side,
186
+ // because that is what it will hold, and nothing of that side has settled
187
+ // yet: a reference two long with nine of sell working offered a close seven
188
+ // units to send against it, which took its own book to five long.
189
+ const facing = side === 'buy' ? 1 : -1;
190
+ const settled =
191
+ tally.blocked || Math.sign(tally.settled) !== facing
192
+ ? 0
193
+ : Math.max(0, Math.abs(tally.settled) - tally.against);
194
+ held.push({ ref, side, units, settled });
195
+ }
196
+ return held;
197
+ }
198
+
199
+ /**
200
+ * The references an order of this side reduces, oldest first.
201
+ *
202
+ * A reference is reduced by the side it is not on, which is the same test a
203
+ * close makes on the leg as a whole and is why `closingSide` and this agree.
204
+ */
205
+ export function opposing(book: readonly Holding[], side: OrderSide): readonly Holding[] {
206
+ return book.filter((one) => one.side !== side);
207
+ }
208
+
209
+ /**
210
+ * The position an order the engine cannot size is sent against, `stdlib.md`
211
+ * 17.1, or none where the leg names no position at all.
212
+ *
213
+ * **A close is never minted a position of its own.** It is named for reducing,
214
+ * so it goes on the position it is closing, and where the engine cannot read
215
+ * the quantity it states, that position is the one the order may take past
216
+ * zero: the one shape of 17.1 an engine does not keep, waiting on the lot size
217
+ * OS7005 is deferred on.
218
+ *
219
+ * **What has settled comes first, and the book's own list second.** A reference
220
+ * whose settled quantity is entirely spoken for by orders that are still going
221
+ * is not in the book above, because it has nothing left for an engine-sized
222
+ * close to send. An order the engine cannot size is not choosing a quantity, so
223
+ * that exclusion does not apply to it: the position it is closing is still that
224
+ * one. Taking the book's answer alone sent a close on a reference an entry was
225
+ * opening on the other side, which is an order named close adding to a
226
+ * position: with the leg's whole long inside a close the destination still had,
227
+ * `close(qty = 1)` in cash was handed the reference a short entry had just
228
+ * opened, and was a sell on it.
229
+ *
230
+ * A reference with nothing settled either way is the second answer rather than
231
+ * the first, because a position being opened is a position under 17.1 and an
232
+ * order that reduces the leg has to name one of them.
233
+ */
234
+ export function outgoingFor(
235
+ ctx: Book,
236
+ book: readonly Holding[],
237
+ side: OrderSide,
238
+ ): number | null {
239
+ const facing = side === 'buy' ? -1 : 1;
240
+ const seen = new Set<number>();
241
+ for (const row of ctx.rows()) {
242
+ if (seen.has(row.positionRef)) continue;
243
+ seen.add(row.positionRef);
244
+ if (Math.sign(ctx.sizeOf(row.positionRef)) === facing) return row.positionRef;
245
+ }
246
+ return opposing(book, side)[0]?.ref ?? null;
247
+ }
248
+
249
+ /**
250
+ * The position a bracket protects, or none where the leg holds none,
251
+ * `stdlib.md` 17.7 and `host-interface.md` 7.1.
252
+ *
253
+ * **Holding first, opening second, which is the order 17.7 states them in.** A
254
+ * bracket appends no row and moves no position, so it has nothing of its own to
255
+ * name: it names what the leg has, and what the leg has is what its own fills
256
+ * settled. Only where nothing has settled at all is the answer the position the
257
+ * leg is opening, which is the ordinary shape of an `exit()` written beside the
258
+ * entry it protects.
259
+ *
260
+ * **The newest of them where the leg holds more than one**, which it does
261
+ * whenever an order that opposes it is outstanding. The newest is the one an
262
+ * entry on that side would join (`joining`), so a bracket set after an entry
263
+ * names the position that entry is in.
264
+ *
265
+ * **Derived here rather than kept as the last reference minted.** A stored slot
266
+ * answered neither question: it was set by the mint and cleared when that one
267
+ * reference returned to zero, so a leg whose newer position closed while an
268
+ * older one was still held was reported as holding none, and `exit()` handed a
269
+ * host `0` with ten units on the books. The mirror of it is the same slot read
270
+ * the other way: a reference minted for an order the destination then refused
271
+ * stayed the answer, and the bracket named a position that never opened while
272
+ * the leg's own sat on another reference. Neither needs a slot to answer, and
273
+ * both are wrong in the direction a host cannot check: `0` says the leg holds
274
+ * nothing, and 7.1 tells a host to look a reference up only when it is not `0`.
275
+ */
276
+ export function protecting(ctx: Book): number | null {
277
+ let held: number | null = null;
278
+ const seen = new Set<number>();
279
+ for (const row of ctx.rows()) {
280
+ if (seen.has(row.positionRef)) continue;
281
+ seen.add(row.positionRef);
282
+ // Rows are oldest first and references are minted in order, so the last one
283
+ // this loop keeps is the newest reference something has settled on.
284
+ if (ctx.sizeOf(row.positionRef) !== 0) held = row.positionRef;
285
+ }
286
+ if (held !== null) return held;
287
+ const book = holdings(ctx);
288
+ return book.length === 0 ? null : (book[book.length - 1] as Holding).ref;
289
+ }
290
+
291
+ /**
292
+ * The reference an order that adds to a position joins, or none to mint one.
293
+ *
294
+ * The newest open reference on that side, so that two entries sent on two bars
295
+ * before either fills belong to one position rather than to two, which is what
296
+ * `stdlib.md` 17.7 means by a reference being kept while a position is being
297
+ * opened.
298
+ *
299
+ * **A reference whose whole quantity is already going is not open to join.** A
300
+ * leg long ten with a close of ten working is on its way out: an entry joining
301
+ * it would settle into a position that reaches zero and ends, and 17.7's
302
+ * sentence would then have to happen twice for one reference. The entry takes a
303
+ * reference of its own, and if the close is rejected the leg simply holds two
304
+ * positions on one side, each of which a close can still send.
305
+ */
306
+ export function joining(book: readonly Holding[], side: OrderSide): number | null {
307
+ for (let index = book.length - 1; index >= 0; index -= 1) {
308
+ const one = book[index] as Holding;
309
+ if (one.side === side) return one.ref;
310
+ }
311
+ return null;
312
+ }
313
+
314
+ /** One order of a call: the units it sends and the reference it sends them on. */
315
+ export interface Share {
316
+ readonly ref: number;
317
+ readonly units: number;
318
+ }
319
+
320
+ /**
321
+ * How a quantity is divided across the references it reduces, oldest first.
322
+ *
323
+ * **A reducing order that spans two positions is two orders**, for the reason
324
+ * 17.1 already gives for a flip: one order against two positions would leave a
325
+ * late fill with no way to say which of them it settled. A leg holds more than
326
+ * one position whenever an order that opposes it is outstanding, and before
327
+ * this the whole of a leg's closable quantity was attached to a single
328
+ * reference with nothing asking whether that reference could absorb it.
329
+ *
330
+ * `room` is which of the two numbers a holding offers is the ceiling here: what
331
+ * an opposing order may take, or what has settled. The caller chooses, because
332
+ * the caller knows whether the quantity is the script's or the engine's.
333
+ *
334
+ * What is left over when every reference is full is the caller's to open or to
335
+ * drop. Nothing is ever sent past a reference's own ceiling.
336
+ */
337
+ export function divide(
338
+ book: readonly Holding[],
339
+ side: OrderSide,
340
+ units: number,
341
+ room: (one: Holding) => number | null,
342
+ ): { readonly shares: readonly Share[]; readonly left: number } {
343
+ const shares: Share[] = [];
344
+ let left = units;
345
+ for (const one of opposing(book, side)) {
346
+ if (left <= 0) break;
347
+ const ceiling = room(one);
348
+ if (ceiling === null || ceiling <= 0) continue;
349
+ const take = Math.min(left, ceiling);
350
+ shares.push({ ref: one.ref, units: take });
351
+ left -= take;
352
+ }
353
+ return { shares, left };
354
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The ledger: what this strategy sent, and what became of it.
3
+ *
4
+ * One module because it is one fact with three faces. An intent leaves, a row
5
+ * records it, a frame folds into that row, and the position every `pos` call
6
+ * reads is the sum of the fills those frames settled. Splitting them would put
7
+ * the fold in one place and the field names it folds into in another, which is
8
+ * how a cumulative quantity becomes a double counted one.
9
+ *
10
+ * The door carries the shapes that cross a boundary and the one class that
11
+ * holds state. The fold, the position book, the mapping from a call to an
12
+ * order and the refusals stay behind it: they are one algorithm with one
13
+ * caller.
14
+ */
15
+ export type {
16
+ Identity,
17
+ IntentBar,
18
+ IntentKind,
19
+ OrderFrame,
20
+ OrderIntent,
21
+ OrderSide,
22
+ OrderType,
23
+ } from './intent.js';
24
+
25
+ export { Ledger } from './ledger.js';
26
+ export type { LedgerOptions, PlacedCall } from './ledger.js';
27
+
28
+ export type { FrameOutcome, FrameRefusal, LedgerRow, OrderStatus } from './row.js';