@forgecharts/sdk 1.1.23 → 1.1.28

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 (562) hide show
  1. package/dist/__tests__/backwardCompatibility.test.d.ts +14 -0
  2. package/dist/__tests__/backwardCompatibility.test.d.ts.map +1 -0
  3. package/dist/__tests__/backwardCompatibility.test.js +159 -0
  4. package/dist/__tests__/backwardCompatibility.test.js.map +1 -0
  5. package/dist/__tests__/candleInvariant.test.d.ts +20 -0
  6. package/dist/__tests__/candleInvariant.test.d.ts.map +1 -0
  7. package/dist/__tests__/candleInvariant.test.js +415 -0
  8. package/dist/__tests__/candleInvariant.test.js.map +1 -0
  9. package/dist/__tests__/public-api-surface.d.ts +13 -0
  10. package/dist/__tests__/public-api-surface.d.ts.map +1 -0
  11. package/{src/__tests__/public-api-surface.ts → dist/__tests__/public-api-surface.js} +4 -42
  12. package/dist/__tests__/public-api-surface.js.map +1 -0
  13. package/dist/__tests__/timeframeBoundary.test.d.ts +17 -0
  14. package/dist/__tests__/timeframeBoundary.test.d.ts.map +1 -0
  15. package/dist/__tests__/timeframeBoundary.test.js +452 -0
  16. package/dist/__tests__/timeframeBoundary.test.js.map +1 -0
  17. package/dist/api/DrawingManager.d.ts +20 -0
  18. package/dist/api/DrawingManager.d.ts.map +1 -0
  19. package/dist/api/DrawingManager.js +190 -0
  20. package/dist/api/DrawingManager.js.map +1 -0
  21. package/dist/api/EventBus.d.ts +19 -0
  22. package/dist/api/EventBus.d.ts.map +1 -0
  23. package/dist/api/EventBus.js +44 -0
  24. package/dist/api/EventBus.js.map +1 -0
  25. package/dist/api/IndicatorDAG.d.ts +85 -0
  26. package/dist/api/IndicatorDAG.d.ts.map +1 -0
  27. package/dist/api/IndicatorDAG.js +316 -0
  28. package/dist/api/IndicatorDAG.js.map +1 -0
  29. package/dist/api/IndicatorRegistry.d.ts +22 -0
  30. package/dist/api/IndicatorRegistry.d.ts.map +1 -0
  31. package/dist/api/IndicatorRegistry.js +39 -0
  32. package/dist/api/IndicatorRegistry.js.map +1 -0
  33. package/dist/api/LayoutManager.d.ts +30 -0
  34. package/dist/api/LayoutManager.d.ts.map +1 -0
  35. package/dist/api/LayoutManager.js +51 -0
  36. package/dist/api/LayoutManager.js.map +1 -0
  37. package/dist/api/PaneManager.d.ts +42 -0
  38. package/dist/api/PaneManager.d.ts.map +1 -0
  39. package/dist/api/PaneManager.js +119 -0
  40. package/dist/api/PaneManager.js.map +1 -0
  41. package/dist/api/ReferenceAPI.d.ts +78 -0
  42. package/dist/api/ReferenceAPI.d.ts.map +1 -0
  43. package/dist/api/ReferenceAPI.js +153 -0
  44. package/dist/api/ReferenceAPI.js.map +1 -0
  45. package/dist/api/TChart.d.ts +345 -0
  46. package/dist/api/TChart.d.ts.map +1 -0
  47. package/dist/api/TChart.js +765 -0
  48. package/dist/api/TChart.js.map +1 -0
  49. package/{src/api/createChart.ts → dist/api/createChart.d.ts} +2 -7
  50. package/dist/api/createChart.d.ts.map +1 -0
  51. package/dist/api/createChart.js +42 -0
  52. package/dist/api/createChart.js.map +1 -0
  53. package/dist/api/drawing tools/fib gann menu/fibRetracement.d.ts +4 -0
  54. package/dist/api/drawing tools/fib gann menu/fibRetracement.d.ts.map +1 -0
  55. package/dist/api/drawing tools/fib gann menu/fibRetracement.js +22 -0
  56. package/dist/api/drawing tools/fib gann menu/fibRetracement.js.map +1 -0
  57. package/dist/api/drawing tools/lines menu/crossLine.d.ts +4 -0
  58. package/dist/api/drawing tools/lines menu/crossLine.d.ts.map +1 -0
  59. package/dist/api/drawing tools/lines menu/crossLine.js +16 -0
  60. package/dist/api/drawing tools/lines menu/crossLine.js.map +1 -0
  61. package/dist/api/drawing tools/lines menu/disjointChannel.d.ts +17 -0
  62. package/dist/api/drawing tools/lines menu/disjointChannel.d.ts.map +1 -0
  63. package/dist/api/drawing tools/lines menu/disjointChannel.js +59 -0
  64. package/dist/api/drawing tools/lines menu/disjointChannel.js.map +1 -0
  65. package/dist/api/drawing tools/lines menu/extendedLine.d.ts +4 -0
  66. package/dist/api/drawing tools/lines menu/extendedLine.d.ts.map +1 -0
  67. package/dist/api/drawing tools/lines menu/extendedLine.js +17 -0
  68. package/dist/api/drawing tools/lines menu/extendedLine.js.map +1 -0
  69. package/dist/api/drawing tools/lines menu/flatTopBottom.d.ts +4 -0
  70. package/dist/api/drawing tools/lines menu/flatTopBottom.d.ts.map +1 -0
  71. package/dist/api/drawing tools/lines menu/flatTopBottom.js +41 -0
  72. package/dist/api/drawing tools/lines menu/flatTopBottom.js.map +1 -0
  73. package/dist/api/drawing tools/lines menu/horizontal.d.ts +4 -0
  74. package/dist/api/drawing tools/lines menu/horizontal.d.ts.map +1 -0
  75. package/dist/api/drawing tools/lines menu/horizontal.js +19 -0
  76. package/dist/api/drawing tools/lines menu/horizontal.js.map +1 -0
  77. package/dist/api/drawing tools/lines menu/horizontalRay.d.ts +4 -0
  78. package/dist/api/drawing tools/lines menu/horizontalRay.d.ts.map +1 -0
  79. package/dist/api/drawing tools/lines menu/horizontalRay.js +20 -0
  80. package/dist/api/drawing tools/lines menu/horizontalRay.js.map +1 -0
  81. package/dist/api/drawing tools/lines menu/infoLine.d.ts +4 -0
  82. package/dist/api/drawing tools/lines menu/infoLine.d.ts.map +1 -0
  83. package/dist/api/drawing tools/lines menu/infoLine.js +107 -0
  84. package/dist/api/drawing tools/lines menu/infoLine.js.map +1 -0
  85. package/dist/api/drawing tools/lines menu/insidePitchfork.d.ts +4 -0
  86. package/dist/api/drawing tools/lines menu/insidePitchfork.d.ts.map +1 -0
  87. package/dist/api/drawing tools/lines menu/insidePitchfork.js +31 -0
  88. package/dist/api/drawing tools/lines menu/insidePitchfork.js.map +1 -0
  89. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.d.ts +4 -0
  90. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.d.ts.map +1 -0
  91. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.js +15 -0
  92. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.js.map +1 -0
  93. package/dist/api/drawing tools/lines menu/parallelChannel.d.ts +4 -0
  94. package/dist/api/drawing tools/lines menu/parallelChannel.d.ts.map +1 -0
  95. package/dist/api/drawing tools/lines menu/parallelChannel.js +43 -0
  96. package/dist/api/drawing tools/lines menu/parallelChannel.js.map +1 -0
  97. package/dist/api/drawing tools/lines menu/pitchfork.d.ts +4 -0
  98. package/dist/api/drawing tools/lines menu/pitchfork.d.ts.map +1 -0
  99. package/dist/api/drawing tools/lines menu/pitchfork.js +12 -0
  100. package/dist/api/drawing tools/lines menu/pitchfork.js.map +1 -0
  101. package/dist/api/drawing tools/lines menu/ray.d.ts +4 -0
  102. package/dist/api/drawing tools/lines menu/ray.d.ts.map +1 -0
  103. package/dist/api/drawing tools/lines menu/ray.js +23 -0
  104. package/dist/api/drawing tools/lines menu/ray.js.map +1 -0
  105. package/dist/api/drawing tools/lines menu/regressionTrend.d.ts +4 -0
  106. package/dist/api/drawing tools/lines menu/regressionTrend.d.ts.map +1 -0
  107. package/dist/api/drawing tools/lines menu/regressionTrend.js +127 -0
  108. package/dist/api/drawing tools/lines menu/regressionTrend.js.map +1 -0
  109. package/dist/api/drawing tools/lines menu/schiffPitchfork.d.ts +4 -0
  110. package/dist/api/drawing tools/lines menu/schiffPitchfork.d.ts.map +1 -0
  111. package/dist/api/drawing tools/lines menu/schiffPitchfork.js +15 -0
  112. package/dist/api/drawing tools/lines menu/schiffPitchfork.js.map +1 -0
  113. package/dist/api/drawing tools/lines menu/trendAngle.d.ts +4 -0
  114. package/dist/api/drawing tools/lines menu/trendAngle.d.ts.map +1 -0
  115. package/dist/api/drawing tools/lines menu/trendAngle.js +51 -0
  116. package/dist/api/drawing tools/lines menu/trendAngle.js.map +1 -0
  117. package/dist/api/drawing tools/lines menu/trendline.d.ts +4 -0
  118. package/dist/api/drawing tools/lines menu/trendline.d.ts.map +1 -0
  119. package/dist/api/drawing tools/lines menu/trendline.js +11 -0
  120. package/dist/api/drawing tools/lines menu/trendline.js.map +1 -0
  121. package/dist/api/drawing tools/lines menu/vertical.d.ts +4 -0
  122. package/dist/api/drawing tools/lines menu/vertical.d.ts.map +1 -0
  123. package/dist/api/drawing tools/lines menu/vertical.js +11 -0
  124. package/dist/api/drawing tools/lines menu/vertical.js.map +1 -0
  125. package/dist/api/drawing tools/pointers menu/crosshair.d.ts +16 -0
  126. package/dist/api/drawing tools/pointers menu/crosshair.d.ts.map +1 -0
  127. package/{src/api/drawing tools/pointers menu/crosshair.ts → dist/api/drawing tools/pointers menu/crosshair.js } +6 -7
  128. package/dist/api/drawing tools/pointers menu/crosshair.js.map +1 -0
  129. package/dist/api/drawing tools/pointers menu/cursor.d.ts +15 -0
  130. package/dist/api/drawing tools/pointers menu/cursor.d.ts.map +1 -0
  131. package/{src/api/drawing tools/pointers menu/cursor.ts → dist/api/drawing tools/pointers menu/cursor.js } +7 -8
  132. package/dist/api/drawing tools/pointers menu/cursor.js.map +1 -0
  133. package/dist/api/drawing tools/pointers menu/demonstration.d.ts +30 -0
  134. package/dist/api/drawing tools/pointers menu/demonstration.d.ts.map +1 -0
  135. package/{src/api/drawing tools/pointers menu/demonstration.ts → dist/api/drawing tools/pointers menu/demonstration.js } +9 -14
  136. package/dist/api/drawing tools/pointers menu/demonstration.js.map +1 -0
  137. package/dist/api/drawing tools/pointers menu/dot.d.ts +23 -0
  138. package/dist/api/drawing tools/pointers menu/dot.d.ts.map +1 -0
  139. package/{src/api/drawing tools/pointers menu/dot.ts → dist/api/drawing tools/pointers menu/dot.js } +8 -11
  140. package/dist/api/drawing tools/pointers menu/dot.js.map +1 -0
  141. package/dist/api/drawing tools/shapes menu/rectangle.d.ts +4 -0
  142. package/dist/api/drawing tools/shapes menu/rectangle.d.ts.map +1 -0
  143. package/dist/api/drawing tools/shapes menu/rectangle.js +19 -0
  144. package/dist/api/drawing tools/shapes menu/rectangle.js.map +1 -0
  145. package/dist/api/drawing tools/shapes menu/text.d.ts +4 -0
  146. package/dist/api/drawing tools/shapes menu/text.d.ts.map +1 -0
  147. package/dist/api/drawing tools/shapes menu/text.js +25 -0
  148. package/dist/api/drawing tools/shapes menu/text.js.map +1 -0
  149. package/dist/api/drawingUtils.d.ts +22 -0
  150. package/dist/api/drawingUtils.d.ts.map +1 -0
  151. package/dist/api/drawingUtils.js +83 -0
  152. package/dist/api/drawingUtils.js.map +1 -0
  153. package/dist/core/CanvasLayer.d.ts +26 -0
  154. package/dist/core/CanvasLayer.d.ts.map +1 -0
  155. package/dist/core/CanvasLayer.js +56 -0
  156. package/dist/core/CanvasLayer.js.map +1 -0
  157. package/dist/core/Chart.d.ts +164 -0
  158. package/dist/core/Chart.d.ts.map +1 -0
  159. package/dist/core/Chart.js +839 -0
  160. package/dist/core/Chart.js.map +1 -0
  161. package/dist/core/CoordTransform.d.ts +168 -0
  162. package/dist/core/CoordTransform.d.ts.map +1 -0
  163. package/dist/core/CoordTransform.js +224 -0
  164. package/dist/core/CoordTransform.js.map +1 -0
  165. package/dist/core/Crosshair.d.ts +30 -0
  166. package/dist/core/Crosshair.d.ts.map +1 -0
  167. package/dist/core/Crosshair.js +186 -0
  168. package/dist/core/Crosshair.js.map +1 -0
  169. package/dist/core/IndicatorEngine.d.ts +51 -0
  170. package/dist/core/IndicatorEngine.d.ts.map +1 -0
  171. package/dist/core/IndicatorEngine.js +181 -0
  172. package/dist/core/IndicatorEngine.js.map +1 -0
  173. package/dist/core/InteractionManager.d.ts +197 -0
  174. package/dist/core/InteractionManager.d.ts.map +1 -0
  175. package/dist/core/InteractionManager.js +698 -0
  176. package/dist/core/InteractionManager.js.map +1 -0
  177. package/dist/core/PriceScale.d.ts +27 -0
  178. package/dist/core/PriceScale.d.ts.map +1 -0
  179. package/dist/core/PriceScale.js +113 -0
  180. package/dist/core/PriceScale.js.map +1 -0
  181. package/dist/core/Series.d.ts +40 -0
  182. package/dist/core/Series.d.ts.map +1 -0
  183. package/dist/core/Series.js +114 -0
  184. package/dist/core/Series.js.map +1 -0
  185. package/dist/core/TimeScale.d.ts +43 -0
  186. package/dist/core/TimeScale.d.ts.map +1 -0
  187. package/dist/core/TimeScale.js +150 -0
  188. package/dist/core/TimeScale.js.map +1 -0
  189. package/dist/datafeed/DatafeedConnector.d.ts +89 -0
  190. package/dist/datafeed/DatafeedConnector.d.ts.map +1 -0
  191. package/dist/datafeed/DatafeedConnector.js +268 -0
  192. package/dist/datafeed/DatafeedConnector.js.map +1 -0
  193. package/dist/engine/CandleEngine.d.ts +207 -0
  194. package/dist/engine/CandleEngine.d.ts.map +1 -0
  195. package/dist/engine/CandleEngine.js +318 -0
  196. package/dist/engine/CandleEngine.js.map +1 -0
  197. package/dist/engine/__tests__/CandleEngine.test.d.ts +2 -0
  198. package/dist/engine/__tests__/CandleEngine.test.d.ts.map +1 -0
  199. package/dist/engine/__tests__/CandleEngine.test.js +300 -0
  200. package/dist/engine/__tests__/CandleEngine.test.js.map +1 -0
  201. package/dist/engine/candleInvariants.d.ts +66 -0
  202. package/dist/engine/candleInvariants.d.ts.map +1 -0
  203. package/dist/engine/candleInvariants.js +134 -0
  204. package/dist/engine/candleInvariants.js.map +1 -0
  205. package/{src/engine/mergeUtils.ts → dist/engine/mergeUtils.d.ts} +15 -52
  206. package/dist/engine/mergeUtils.d.ts.map +1 -0
  207. package/dist/engine/mergeUtils.js +64 -0
  208. package/dist/engine/mergeUtils.js.map +1 -0
  209. package/dist/engine/timeframeUtils.d.ts +80 -0
  210. package/dist/engine/timeframeUtils.d.ts.map +1 -0
  211. package/{src/engine/timeframeUtils.ts → dist/engine/timeframeUtils.js} +30 -48
  212. package/dist/engine/timeframeUtils.js.map +1 -0
  213. package/dist/index.d.ts +40 -0
  214. package/dist/index.d.ts.map +1 -0
  215. package/dist/index.js +49 -0
  216. package/dist/index.js.map +1 -0
  217. package/dist/internal.d.ts +29 -0
  218. package/dist/internal.d.ts.map +1 -0
  219. package/{src/internal.ts → dist/internal.js} +2 -11
  220. package/dist/internal.js.map +1 -0
  221. package/dist/licensing/ChartRuntimeResolver.d.ts +233 -0
  222. package/dist/licensing/ChartRuntimeResolver.d.ts.map +1 -0
  223. package/dist/licensing/ChartRuntimeResolver.js +310 -0
  224. package/dist/licensing/ChartRuntimeResolver.js.map +1 -0
  225. package/dist/licensing/LicenseManager.d.ts +55 -0
  226. package/dist/licensing/LicenseManager.d.ts.map +1 -0
  227. package/dist/licensing/LicenseManager.js +114 -0
  228. package/dist/licensing/LicenseManager.js.map +1 -0
  229. package/dist/licensing/__tests__/ChartRuntimeResolver.test.d.ts +13 -0
  230. package/dist/licensing/__tests__/ChartRuntimeResolver.test.d.ts.map +1 -0
  231. package/dist/licensing/__tests__/ChartRuntimeResolver.test.js +177 -0
  232. package/dist/licensing/__tests__/ChartRuntimeResolver.test.js.map +1 -0
  233. package/dist/licensing/__tests__/LicenseManager.test.d.ts +12 -0
  234. package/dist/licensing/__tests__/LicenseManager.test.d.ts.map +1 -0
  235. package/dist/licensing/__tests__/LicenseManager.test.js +153 -0
  236. package/dist/licensing/__tests__/LicenseManager.test.js.map +1 -0
  237. package/dist/licensing/licenseTypes.d.ts +18 -0
  238. package/dist/licensing/licenseTypes.d.ts.map +1 -0
  239. package/dist/licensing/licenseTypes.js +2 -0
  240. package/dist/licensing/licenseTypes.js.map +1 -0
  241. package/dist/pine/PineCompiler.d.ts +35 -0
  242. package/dist/pine/PineCompiler.d.ts.map +1 -0
  243. package/dist/pine/PineCompiler.js +44 -0
  244. package/dist/pine/PineCompiler.js.map +1 -0
  245. package/dist/pine/diagnostics.d.ts +20 -0
  246. package/dist/pine/diagnostics.d.ts.map +1 -0
  247. package/dist/pine/diagnostics.js +11 -0
  248. package/dist/pine/diagnostics.js.map +1 -0
  249. package/{src/pine/index.ts → dist/pine/index.d.ts} +4 -3
  250. package/dist/pine/index.d.ts.map +1 -0
  251. package/dist/pine/index.js +5 -0
  252. package/dist/pine/index.js.map +1 -0
  253. package/dist/pine/pine-ast.d.ts +142 -0
  254. package/dist/pine/pine-ast.d.ts.map +1 -0
  255. package/dist/pine/pine-ast.js +19 -0
  256. package/dist/pine/pine-ast.js.map +1 -0
  257. package/dist/pine/pine-lexer.d.ts +41 -0
  258. package/dist/pine/pine-lexer.d.ts.map +1 -0
  259. package/dist/pine/pine-lexer.js +249 -0
  260. package/dist/pine/pine-lexer.js.map +1 -0
  261. package/dist/pine/pine-parser.d.ts +51 -0
  262. package/dist/pine/pine-parser.d.ts.map +1 -0
  263. package/dist/pine/pine-parser.js +416 -0
  264. package/dist/pine/pine-parser.js.map +1 -0
  265. package/dist/pine/pine-transpiler.d.ts +33 -0
  266. package/dist/pine/pine-transpiler.d.ts.map +1 -0
  267. package/dist/pine/pine-transpiler.js +260 -0
  268. package/dist/pine/pine-transpiler.js.map +1 -0
  269. package/dist/pixi/LayerName.d.ts +18 -0
  270. package/dist/pixi/LayerName.d.ts.map +1 -0
  271. package/dist/pixi/LayerName.js +35 -0
  272. package/dist/pixi/LayerName.js.map +1 -0
  273. package/dist/pixi/PixiCandlestickRenderer.d.ts +23 -0
  274. package/dist/pixi/PixiCandlestickRenderer.d.ts.map +1 -0
  275. package/dist/pixi/PixiCandlestickRenderer.js +107 -0
  276. package/dist/pixi/PixiCandlestickRenderer.js.map +1 -0
  277. package/dist/pixi/PixiChart.d.ts +72 -0
  278. package/dist/pixi/PixiChart.d.ts.map +1 -0
  279. package/dist/pixi/PixiChart.js +367 -0
  280. package/dist/pixi/PixiChart.js.map +1 -0
  281. package/dist/pixi/PixiCrosshairRenderer.d.ts +29 -0
  282. package/dist/pixi/PixiCrosshairRenderer.d.ts.map +1 -0
  283. package/dist/pixi/PixiCrosshairRenderer.js +110 -0
  284. package/dist/pixi/PixiCrosshairRenderer.js.map +1 -0
  285. package/dist/pixi/PixiDrawingRenderer.d.ts +17 -0
  286. package/dist/pixi/PixiDrawingRenderer.d.ts.map +1 -0
  287. package/dist/pixi/PixiDrawingRenderer.js +111 -0
  288. package/dist/pixi/PixiDrawingRenderer.js.map +1 -0
  289. package/dist/pixi/PixiGridRenderer.d.ts +22 -0
  290. package/dist/pixi/PixiGridRenderer.d.ts.map +1 -0
  291. package/dist/pixi/PixiGridRenderer.js +114 -0
  292. package/dist/pixi/PixiGridRenderer.js.map +1 -0
  293. package/dist/pixi/PixiLayerManager.d.ts +56 -0
  294. package/dist/pixi/PixiLayerManager.d.ts.map +1 -0
  295. package/dist/pixi/PixiLayerManager.js +92 -0
  296. package/dist/pixi/PixiLayerManager.js.map +1 -0
  297. package/dist/react/canvas/ChartCanvas.d.ts +85 -0
  298. package/dist/react/canvas/ChartCanvas.d.ts.map +1 -0
  299. package/dist/react/canvas/ChartCanvas.js +604 -0
  300. package/dist/react/canvas/ChartCanvas.js.map +1 -0
  301. package/dist/react/canvas/ChartContextMenu.d.ts +18 -0
  302. package/dist/react/canvas/ChartContextMenu.d.ts.map +1 -0
  303. package/dist/react/canvas/ChartContextMenu.js +5 -0
  304. package/dist/react/canvas/ChartContextMenu.js.map +1 -0
  305. package/dist/react/canvas/ChartSettingsDialog.d.ts +25 -0
  306. package/dist/react/canvas/ChartSettingsDialog.d.ts.map +1 -0
  307. package/dist/react/canvas/ChartSettingsDialog.js +28 -0
  308. package/dist/react/canvas/ChartSettingsDialog.js.map +1 -0
  309. package/dist/react/canvas/IndicatorLabel.d.ts +21 -0
  310. package/dist/react/canvas/IndicatorLabel.d.ts.map +1 -0
  311. package/dist/react/canvas/IndicatorLabel.js +196 -0
  312. package/dist/react/canvas/IndicatorLabel.js.map +1 -0
  313. package/dist/react/canvas/IndicatorPane.d.ts +32 -0
  314. package/dist/react/canvas/IndicatorPane.d.ts.map +1 -0
  315. package/dist/react/canvas/IndicatorPane.js +395 -0
  316. package/dist/react/canvas/IndicatorPane.js.map +1 -0
  317. package/dist/react/canvas/PointerOverlay.d.ts +23 -0
  318. package/dist/react/canvas/PointerOverlay.d.ts.map +1 -0
  319. package/dist/react/canvas/PointerOverlay.js +61 -0
  320. package/dist/react/canvas/PointerOverlay.js.map +1 -0
  321. package/dist/react/canvas/toolbars/LeftToolbar.d.ts +19 -0
  322. package/dist/react/canvas/toolbars/LeftToolbar.d.ts.map +1 -0
  323. package/dist/react/canvas/toolbars/LeftToolbar.js +407 -0
  324. package/dist/react/canvas/toolbars/LeftToolbar.js.map +1 -0
  325. package/dist/react/hooks/useChartCapabilities.d.ts +21 -0
  326. package/dist/react/hooks/useChartCapabilities.d.ts.map +1 -0
  327. package/dist/react/hooks/useChartCapabilities.js +66 -0
  328. package/dist/react/hooks/useChartCapabilities.js.map +1 -0
  329. package/dist/react/index.d.ts +30 -0
  330. package/dist/react/index.d.ts.map +1 -0
  331. package/dist/react/index.js +28 -0
  332. package/dist/react/index.js.map +1 -0
  333. package/dist/react/internal.d.ts +38 -0
  334. package/dist/react/internal.d.ts.map +1 -0
  335. package/dist/react/internal.js +44 -0
  336. package/dist/react/internal.js.map +1 -0
  337. package/dist/react/shell/ManagedAppShell.d.ts +91 -0
  338. package/dist/react/shell/ManagedAppShell.d.ts.map +1 -0
  339. package/dist/react/shell/ManagedAppShell.js +440 -0
  340. package/dist/react/shell/ManagedAppShell.js.map +1 -0
  341. package/dist/react/trading/TradingBridge.d.ts +86 -0
  342. package/dist/react/trading/TradingBridge.d.ts.map +1 -0
  343. package/dist/react/trading/TradingBridge.js +73 -0
  344. package/dist/react/trading/TradingBridge.js.map +1 -0
  345. package/dist/react/workspace/ChartWorkspace.d.ts +73 -0
  346. package/dist/react/workspace/ChartWorkspace.d.ts.map +1 -0
  347. package/dist/react/workspace/ChartWorkspace.js +42 -0
  348. package/dist/react/workspace/ChartWorkspace.js.map +1 -0
  349. package/dist/react/workspace/FloatingPanel.d.ts +18 -0
  350. package/dist/react/workspace/FloatingPanel.d.ts.map +1 -0
  351. package/dist/react/workspace/FloatingPanel.js +82 -0
  352. package/dist/react/workspace/FloatingPanel.js.map +1 -0
  353. package/dist/react/workspace/IndicatorsDialog.d.ts +8 -0
  354. package/dist/react/workspace/IndicatorsDialog.d.ts.map +1 -0
  355. package/dist/react/workspace/IndicatorsDialog.js +121 -0
  356. package/dist/react/workspace/IndicatorsDialog.js.map +1 -0
  357. package/dist/react/workspace/LayoutMenu.d.ts +33 -0
  358. package/dist/react/workspace/LayoutMenu.d.ts.map +1 -0
  359. package/dist/react/workspace/LayoutMenu.js +113 -0
  360. package/dist/react/workspace/LayoutMenu.js.map +1 -0
  361. package/dist/react/workspace/SymbolSearchDialog.d.ts +10 -0
  362. package/dist/react/workspace/SymbolSearchDialog.d.ts.map +1 -0
  363. package/dist/react/workspace/SymbolSearchDialog.js +245 -0
  364. package/dist/react/workspace/SymbolSearchDialog.js.map +1 -0
  365. package/dist/react/workspace/TabBar.d.ts +17 -0
  366. package/dist/react/workspace/TabBar.d.ts.map +1 -0
  367. package/dist/react/workspace/TabBar.js +29 -0
  368. package/dist/react/workspace/TabBar.js.map +1 -0
  369. package/dist/react/workspace/toolbars/BottomToolbar.d.ts +19 -0
  370. package/dist/react/workspace/toolbars/BottomToolbar.d.ts.map +1 -0
  371. package/dist/react/workspace/toolbars/BottomToolbar.js +236 -0
  372. package/dist/react/workspace/toolbars/BottomToolbar.js.map +1 -0
  373. package/dist/react/workspace/toolbars/RightToolbar.d.ts +8 -0
  374. package/dist/react/workspace/toolbars/RightToolbar.d.ts.map +1 -0
  375. package/dist/react/workspace/toolbars/RightToolbar.js +18 -0
  376. package/dist/react/workspace/toolbars/RightToolbar.js.map +1 -0
  377. package/dist/react/workspace/toolbars/TopToolbar.d.ts +41 -0
  378. package/dist/react/workspace/toolbars/TopToolbar.d.ts.map +1 -0
  379. package/dist/react/workspace/toolbars/TopToolbar.js +82 -0
  380. package/dist/react/workspace/toolbars/TopToolbar.js.map +1 -0
  381. package/dist/renderers/CandlestickRenderer.d.ts +13 -0
  382. package/dist/renderers/CandlestickRenderer.d.ts.map +1 -0
  383. package/dist/renderers/CandlestickRenderer.js +98 -0
  384. package/dist/renderers/CandlestickRenderer.js.map +1 -0
  385. package/dist/renderers/HistogramRenderer.d.ts +11 -0
  386. package/dist/renderers/HistogramRenderer.d.ts.map +1 -0
  387. package/dist/renderers/HistogramRenderer.js +50 -0
  388. package/dist/renderers/HistogramRenderer.js.map +1 -0
  389. package/dist/renderers/LineRenderer.d.ts +12 -0
  390. package/dist/renderers/LineRenderer.d.ts.map +1 -0
  391. package/dist/renderers/LineRenderer.js +64 -0
  392. package/dist/renderers/LineRenderer.js.map +1 -0
  393. package/dist/theme/colors.d.ts +4 -0
  394. package/dist/theme/colors.d.ts.map +1 -0
  395. package/dist/theme/colors.js +19 -0
  396. package/dist/theme/colors.js.map +1 -0
  397. package/dist/tools/barDivergenceCheck.d.ts +120 -0
  398. package/dist/tools/barDivergenceCheck.d.ts.map +1 -0
  399. package/dist/tools/barDivergenceCheck.js +200 -0
  400. package/dist/tools/barDivergenceCheck.js.map +1 -0
  401. package/dist/trading/TradingOverlayStore.d.ts +86 -0
  402. package/dist/trading/TradingOverlayStore.d.ts.map +1 -0
  403. package/dist/trading/TradingOverlayStore.js +139 -0
  404. package/dist/trading/TradingOverlayStore.js.map +1 -0
  405. package/dist/trading/UnmanagedIngestion.d.ts +91 -0
  406. package/dist/trading/UnmanagedIngestion.d.ts.map +1 -0
  407. package/dist/trading/UnmanagedIngestion.js +114 -0
  408. package/dist/trading/UnmanagedIngestion.js.map +1 -0
  409. package/dist/trading/__tests__/ManagedTradingController.test.d.ts +18 -0
  410. package/dist/trading/__tests__/ManagedTradingController.test.d.ts.map +1 -0
  411. package/dist/trading/__tests__/ManagedTradingController.test.js +271 -0
  412. package/dist/trading/__tests__/ManagedTradingController.test.js.map +1 -0
  413. package/dist/trading/__tests__/TradingOverlayStore.test.d.ts +16 -0
  414. package/dist/trading/__tests__/TradingOverlayStore.test.d.ts.map +1 -0
  415. package/dist/trading/__tests__/TradingOverlayStore.test.js +267 -0
  416. package/dist/trading/__tests__/TradingOverlayStore.test.js.map +1 -0
  417. package/dist/trading/__tests__/UnmanagedIngestion.test.d.ts +16 -0
  418. package/dist/trading/__tests__/UnmanagedIngestion.test.d.ts.map +1 -0
  419. package/dist/trading/__tests__/UnmanagedIngestion.test.js +170 -0
  420. package/dist/trading/__tests__/UnmanagedIngestion.test.js.map +1 -0
  421. package/dist/trading/managed/ManagedTradingController.d.ts +110 -0
  422. package/dist/trading/managed/ManagedTradingController.d.ts.map +1 -0
  423. package/dist/trading/managed/ManagedTradingController.js +247 -0
  424. package/dist/trading/managed/ManagedTradingController.js.map +1 -0
  425. package/dist/trading/managed/managedCapabilities.d.ts +45 -0
  426. package/dist/trading/managed/managedCapabilities.d.ts.map +1 -0
  427. package/dist/trading/managed/managedCapabilities.js +79 -0
  428. package/dist/trading/managed/managedCapabilities.js.map +1 -0
  429. package/dist/trading/managed/managedTypes.d.ts +122 -0
  430. package/dist/trading/managed/managedTypes.d.ts.map +1 -0
  431. package/dist/trading/managed/managedTypes.js +13 -0
  432. package/dist/trading/managed/managedTypes.js.map +1 -0
  433. package/dist/trading/tradingTypes.d.ts +89 -0
  434. package/dist/trading/tradingTypes.d.ts.map +1 -0
  435. package/dist/trading/tradingTypes.js +8 -0
  436. package/dist/trading/tradingTypes.js.map +1 -0
  437. package/dist/tscript/TScriptIndicator.d.ts +41 -0
  438. package/dist/tscript/TScriptIndicator.d.ts.map +1 -0
  439. package/dist/tscript/TScriptIndicator.js +47 -0
  440. package/dist/tscript/TScriptIndicator.js.map +1 -0
  441. package/dist/tscript/ast.d.ts +89 -0
  442. package/dist/tscript/ast.d.ts.map +1 -0
  443. package/dist/tscript/ast.js +22 -0
  444. package/dist/tscript/ast.js.map +1 -0
  445. package/dist/tscript/lexer.d.ts +36 -0
  446. package/dist/tscript/lexer.d.ts.map +1 -0
  447. package/dist/tscript/lexer.js +187 -0
  448. package/dist/tscript/lexer.js.map +1 -0
  449. package/dist/tscript/parser.d.ts +50 -0
  450. package/dist/tscript/parser.d.ts.map +1 -0
  451. package/dist/tscript/parser.js +318 -0
  452. package/dist/tscript/parser.js.map +1 -0
  453. package/dist/tscript/runtime.d.ts +123 -0
  454. package/dist/tscript/runtime.d.ts.map +1 -0
  455. package/dist/tscript/runtime.js +475 -0
  456. package/dist/tscript/runtime.js.map +1 -0
  457. package/dist/tscript/series.d.ts +49 -0
  458. package/dist/tscript/series.d.ts.map +1 -0
  459. package/dist/tscript/series.js +79 -0
  460. package/dist/tscript/series.js.map +1 -0
  461. package/dist/types/IChart.d.ts +48 -0
  462. package/dist/types/IChart.d.ts.map +1 -0
  463. package/dist/types/IChart.js +2 -0
  464. package/dist/types/IChart.js.map +1 -0
  465. package/{src/types/IRenderer.ts → dist/types/IRenderer.d.ts} +2 -8
  466. package/dist/types/IRenderer.d.ts.map +1 -0
  467. package/dist/types/IRenderer.js +2 -0
  468. package/dist/types/IRenderer.js.map +1 -0
  469. package/dist/types/ISeries.d.ts +26 -0
  470. package/dist/types/ISeries.d.ts.map +1 -0
  471. package/dist/types/ISeries.js +2 -0
  472. package/dist/types/ISeries.js.map +1 -0
  473. package/package.json +32 -4
  474. package/src/__tests__/backwardCompatibility.test.ts +0 -191
  475. package/src/__tests__/candleInvariant.test.ts +0 -500
  476. package/src/__tests__/timeframeBoundary.test.ts +0 -583
  477. package/src/api/DrawingManager.ts +0 -188
  478. package/src/api/EventBus.ts +0 -53
  479. package/src/api/IndicatorDAG.ts +0 -389
  480. package/src/api/IndicatorRegistry.ts +0 -47
  481. package/src/api/LayoutManager.ts +0 -72
  482. package/src/api/PaneManager.ts +0 -129
  483. package/src/api/ReferenceAPI.ts +0 -195
  484. package/src/api/TChart.ts +0 -881
  485. package/src/api/drawing tools/fib gann menu/fibRetracement.ts +0 -27
  486. package/src/api/drawing tools/lines menu/crossLine.ts +0 -21
  487. package/src/api/drawing tools/lines menu/disjointChannel.ts +0 -74
  488. package/src/api/drawing tools/lines menu/extendedLine.ts +0 -22
  489. package/src/api/drawing tools/lines menu/flatTopBottom.ts +0 -45
  490. package/src/api/drawing tools/lines menu/horizontal.ts +0 -24
  491. package/src/api/drawing tools/lines menu/horizontalRay.ts +0 -25
  492. package/src/api/drawing tools/lines menu/infoLine.ts +0 -127
  493. package/src/api/drawing tools/lines menu/insidePitchfork.ts +0 -21
  494. package/src/api/drawing tools/lines menu/modifiedSchiffPitchfork.ts +0 -18
  495. package/src/api/drawing tools/lines menu/parallelChannel.ts +0 -47
  496. package/src/api/drawing tools/lines menu/pitchfork.ts +0 -15
  497. package/src/api/drawing tools/lines menu/ray.ts +0 -28
  498. package/src/api/drawing tools/lines menu/regressionTrend.ts +0 -157
  499. package/src/api/drawing tools/lines menu/schiffPitchfork.ts +0 -18
  500. package/src/api/drawing tools/lines menu/trendAngle.ts +0 -64
  501. package/src/api/drawing tools/lines menu/trendline.ts +0 -16
  502. package/src/api/drawing tools/lines menu/vertical.ts +0 -16
  503. package/src/api/drawing tools/shapes menu/rectangle.ts +0 -24
  504. package/src/api/drawing tools/shapes menu/text.ts +0 -30
  505. package/src/api/drawingUtils.ts +0 -82
  506. package/src/core/CanvasLayer.ts +0 -77
  507. package/src/core/Chart.ts +0 -917
  508. package/src/core/CoordTransform.ts +0 -282
  509. package/src/core/Crosshair.ts +0 -207
  510. package/src/core/IndicatorEngine.ts +0 -216
  511. package/src/core/InteractionManager.ts +0 -899
  512. package/src/core/PriceScale.ts +0 -133
  513. package/src/core/Series.ts +0 -132
  514. package/src/core/TimeScale.ts +0 -175
  515. package/src/datafeed/DatafeedConnector.ts +0 -300
  516. package/src/engine/CandleEngine.ts +0 -458
  517. package/src/engine/__tests__/CandleEngine.test.ts +0 -402
  518. package/src/engine/candleInvariants.ts +0 -172
  519. package/src/index.ts +0 -190
  520. package/src/licensing/ChartRuntimeResolver.ts +0 -380
  521. package/src/licensing/LicenseManager.ts +0 -131
  522. package/src/licensing/__tests__/ChartRuntimeResolver.test.ts +0 -207
  523. package/src/licensing/__tests__/LicenseManager.test.ts +0 -180
  524. package/src/licensing/licenseTypes.ts +0 -19
  525. package/src/pine/PineCompiler.ts +0 -68
  526. package/src/pine/diagnostics.ts +0 -30
  527. package/src/pine/pine-ast.ts +0 -163
  528. package/src/pine/pine-lexer.ts +0 -265
  529. package/src/pine/pine-parser.ts +0 -439
  530. package/src/pine/pine-transpiler.ts +0 -301
  531. package/src/pixi/LayerName.ts +0 -35
  532. package/src/pixi/PixiCandlestickRenderer.ts +0 -125
  533. package/src/pixi/PixiChart.ts +0 -425
  534. package/src/pixi/PixiCrosshairRenderer.ts +0 -134
  535. package/src/pixi/PixiDrawingRenderer.ts +0 -121
  536. package/src/pixi/PixiGridRenderer.ts +0 -136
  537. package/src/pixi/PixiLayerManager.ts +0 -102
  538. package/src/renderers/CandlestickRenderer.ts +0 -130
  539. package/src/renderers/HistogramRenderer.ts +0 -63
  540. package/src/renderers/LineRenderer.ts +0 -77
  541. package/src/theme/colors.ts +0 -21
  542. package/src/tools/barDivergenceCheck.ts +0 -305
  543. package/src/trading/TradingOverlayStore.ts +0 -161
  544. package/src/trading/UnmanagedIngestion.ts +0 -156
  545. package/src/trading/__tests__/ManagedTradingController.test.ts +0 -338
  546. package/src/trading/__tests__/TradingOverlayStore.test.ts +0 -323
  547. package/src/trading/__tests__/UnmanagedIngestion.test.ts +0 -205
  548. package/src/trading/managed/ManagedTradingController.ts +0 -292
  549. package/src/trading/managed/managedCapabilities.ts +0 -98
  550. package/src/trading/managed/managedTypes.ts +0 -151
  551. package/src/trading/tradingTypes.ts +0 -135
  552. package/src/tscript/TScriptIndicator.ts +0 -54
  553. package/src/tscript/ast.ts +0 -105
  554. package/src/tscript/lexer.ts +0 -190
  555. package/src/tscript/parser.ts +0 -334
  556. package/src/tscript/runtime.ts +0 -525
  557. package/src/tscript/series.ts +0 -84
  558. package/src/types/IChart.ts +0 -56
  559. package/src/types/ISeries.ts +0 -30
  560. package/tsconfig.json +0 -22
  561. package/tsup.config.ts +0 -15
  562. package/vitest.config.ts +0 -25
@@ -0,0 +1,247 @@
1
+ /**
2
+ * ManagedTradingController
3
+ *
4
+ * The single managed-mode entry point for order routing.
5
+ *
6
+ * Responsibilities:
7
+ * 1. Enforce license/capability gates before any action.
8
+ * 2. Delegate execution to the registered IExecutionProvider.
9
+ * 3. Write results (orders, fills, positions) into the shared TradingOverlayStore
10
+ * so managed and unmanaged modes share one visual layer.
11
+ *
12
+ * STUB STATUS
13
+ * ──────────────────────────────────────────────────────────────────────────────
14
+ * All execution methods are implemented as stubs that:
15
+ * a) enforce license gates (will throw today if called without managed mode)
16
+ * b) throw NotImplementedError when no provider is registered
17
+ * c) are annotated with TODO markers for the implementation phase
18
+ *
19
+ * To implement a real provider, create a class implementing IExecutionProvider
20
+ * and call:
21
+ * controller.registerProvider(new MyBrokerProvider(...));
22
+ *
23
+ * The controller will then delegate to it automatically.
24
+ * ──────────────────────────────────────────────────────────────────────────────
25
+ */
26
+ import { assertCanPlaceOrders, assertCanUseBrackets, assertCanUseManagedTrading, } from './managedCapabilities';
27
+ // ── Internal helpers ──────────────────────────────────────────────────────────
28
+ function notImplemented(method) {
29
+ throw new Error(`[ForgeCharts:ManagedTrading] ${method} — no execution provider is registered. ` +
30
+ 'Call controller.registerProvider(provider) before using managed trading methods.');
31
+ }
32
+ function makeId() {
33
+ return `order_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
34
+ }
35
+ // ── Controller ────────────────────────────────────────────────────────────────
36
+ export class ManagedTradingController {
37
+ _provider = null;
38
+ _store;
39
+ constructor(store) {
40
+ this._store = store;
41
+ }
42
+ // ── Provider registration ─────────────────────────────────────────────────
43
+ /**
44
+ * Register the execution provider that will handle order routing.
45
+ *
46
+ * Call this before any order placement methods. Only one provider may be
47
+ * active at a time — calling this again replaces the previous provider.
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * import { RithmicProvider } from '@forgecharts/rithmic';
52
+ * controller.registerProvider(new RithmicProvider(credentials));
53
+ * ```
54
+ */
55
+ registerProvider(provider) {
56
+ assertCanUseManagedTrading();
57
+ this._provider = provider;
58
+ }
59
+ /** Returns the id of the currently registered provider, or null if none. */
60
+ getProviderId() {
61
+ return this._provider?.providerId ?? null;
62
+ }
63
+ /** True when a provider is registered and managed trading is licensed. */
64
+ isReady() {
65
+ return this._provider !== null;
66
+ }
67
+ // ── Order placement ───────────────────────────────────────────────────────
68
+ /**
69
+ * Place a single order via the registered execution provider.
70
+ *
71
+ * On success:
72
+ * - Upserts a ChartOrder into the overlay store (status: 'pending' → 'open').
73
+ * - Returns the provider acknowledgement.
74
+ *
75
+ * @throws If not in managed mode, orderEntry feature is off, or no provider.
76
+ *
77
+ * TODO: After provider.placeOrder resolves, subscribe to order status updates
78
+ * (provider event stream) and call _store.upsertOrder() as status changes.
79
+ */
80
+ async placeOrder(input) {
81
+ assertCanPlaceOrders();
82
+ if (!this._provider)
83
+ notImplemented('placeOrder');
84
+ // Create an optimistic overlay entry immediately
85
+ const clientId = makeId();
86
+ const overlayOrder = {
87
+ id: clientId,
88
+ role: input.type === 'stop_market' || input.type === 'stop_limit' ? 'stop' : 'entry',
89
+ side: input.side,
90
+ status: 'pending',
91
+ price: input.limitPrice ?? input.stopPrice ?? 0,
92
+ qty: input.qty,
93
+ timestamp: Date.now(),
94
+ ...(input.groupId !== undefined ? { groupId: input.groupId } : {}),
95
+ ...(input.label !== undefined ? { label: input.label } : {}),
96
+ ...(input.meta !== undefined ? { meta: input.meta } : {}),
97
+ };
98
+ this._store.upsertOrder(overlayOrder);
99
+ try {
100
+ // TODO: provider.placeOrder should also start streaming status updates
101
+ const ack = await this._provider.placeOrder(input);
102
+ // Update overlay with provider-assigned id
103
+ this._store.upsertOrder({ ...overlayOrder, id: ack.orderId, status: 'open' });
104
+ // Remove the optimistic entry now the real id is known
105
+ if (ack.orderId !== clientId)
106
+ this._store.removeOrder(clientId);
107
+ return ack;
108
+ }
109
+ catch (err) {
110
+ // Roll back optimistic entry on placement failure
111
+ this._store.upsertOrder({ ...overlayOrder, status: 'rejected' });
112
+ throw err;
113
+ }
114
+ }
115
+ /**
116
+ * Cancel a working order by its provider-assigned id.
117
+ *
118
+ * On success:
119
+ * - Updates the order status in the overlay store to 'cancelled'.
120
+ *
121
+ * @throws If not in managed mode, orderEntry feature is off, or no provider.
122
+ *
123
+ * TODO: Remove the overlay entry after a configurable delay (so the line
124
+ * visually fades out rather than disappearing instantly).
125
+ */
126
+ async cancelOrder(orderId) {
127
+ assertCanPlaceOrders();
128
+ if (!this._provider)
129
+ notImplemented('cancelOrder');
130
+ await this._provider.cancelOrder(orderId);
131
+ // Reflect cancellation in overlay
132
+ const existing = this._store.getOrders().find(o => o.id === orderId);
133
+ if (existing) {
134
+ this._store.upsertOrder({ ...existing, status: 'cancelled' });
135
+ }
136
+ }
137
+ /**
138
+ * Modify a working order in place.
139
+ *
140
+ * On success:
141
+ * - Updates the ChartOrder price/qty in the overlay store.
142
+ *
143
+ * @throws If not in managed mode, orderEntry feature is off, or no provider.
144
+ *
145
+ * TODO: Validate that the modified price is within instrument tick constraints
146
+ * before forwarding to the provider.
147
+ */
148
+ async modifyOrder(orderId, updates) {
149
+ assertCanPlaceOrders();
150
+ if (!this._provider)
151
+ notImplemented('modifyOrder');
152
+ const ack = await this._provider.modifyOrder(orderId, updates);
153
+ // Reflect modifications in overlay
154
+ const existing = this._store.getOrders().find(o => o.id === orderId);
155
+ if (existing) {
156
+ this._store.upsertOrder({
157
+ ...existing,
158
+ ...(updates.limitPrice !== undefined ? { price: updates.limitPrice } : {}),
159
+ ...(updates.qty !== undefined ? { qty: updates.qty } : {}),
160
+ ...(updates.label !== undefined ? { label: updates.label } : {}),
161
+ });
162
+ }
163
+ return ack;
164
+ }
165
+ /**
166
+ * Place a bracket order: entry + stop-loss + optional take-profit.
167
+ *
168
+ * On success:
169
+ * - Upserts all bracket legs as ChartOrders sharing the same groupId.
170
+ * - Returns acknowledgements for each leg.
171
+ *
172
+ * @throws If not in managed mode, bracketOrders feature is off, or no provider.
173
+ *
174
+ * TODO: Expose drag handles for each bracket leg in the chart overlay so
175
+ * users can adjust prices before confirming.
176
+ */
177
+ async placeBracketOrder(input) {
178
+ assertCanUseBrackets();
179
+ if (!this._provider)
180
+ notImplemented('placeBracketOrder');
181
+ const groupId = input.entry.groupId ?? makeId();
182
+ const ack = await this._provider.placeBracketOrder({
183
+ ...input,
184
+ entry: { ...input.entry, groupId },
185
+ });
186
+ // Upsert all bracket legs into the overlay store
187
+ this._store.upsertOrder({
188
+ id: ack.entry.orderId,
189
+ role: 'entry',
190
+ side: input.entry.side,
191
+ status: 'open',
192
+ price: input.entry.limitPrice ?? input.entry.stopPrice ?? 0,
193
+ qty: input.entry.qty,
194
+ groupId,
195
+ label: input.entry.label ?? 'Entry',
196
+ timestamp: ack.entry.timestamp,
197
+ });
198
+ this._store.upsertOrder({
199
+ id: ack.stopLoss.orderId,
200
+ role: 'stop_loss',
201
+ side: input.entry.side === 'buy' ? 'sell' : 'buy',
202
+ status: 'open',
203
+ price: input.stopLossPrice,
204
+ qty: input.entry.qty,
205
+ groupId,
206
+ label: 'Stop Loss',
207
+ timestamp: ack.stopLoss.timestamp,
208
+ });
209
+ if (ack.takeProfit && input.takeProfitPrice !== undefined) {
210
+ this._store.upsertOrder({
211
+ id: ack.takeProfit.orderId,
212
+ role: 'take_profit',
213
+ side: input.entry.side === 'buy' ? 'sell' : 'buy',
214
+ status: 'open',
215
+ price: input.takeProfitPrice,
216
+ qty: input.entry.qty,
217
+ groupId,
218
+ label: 'Take Profit',
219
+ timestamp: ack.takeProfit.timestamp,
220
+ });
221
+ }
222
+ return ack;
223
+ }
224
+ // ── Fill reporting ─────────────────────────────────────────────────────────
225
+ /**
226
+ * Report an execution fill received from the provider's event stream.
227
+ *
228
+ * Writes the fill into the overlay store and updates the parent order status.
229
+ * Called by the provider adapter whenever a fill notification arrives.
230
+ *
231
+ * TODO: Also update the related ChartPosition (create new or update qty/avgPrice).
232
+ */
233
+ reportFill(fill) {
234
+ assertCanUseManagedTrading();
235
+ this._store.pushExecution(fill);
236
+ // Update parent order status if fill is total
237
+ if (fill.orderId) {
238
+ const order = this._store.getOrders().find(o => o.id === fill.orderId);
239
+ if (order) {
240
+ // TODO: track partially-filled qty; use 'partial' when qty > fill.qty
241
+ this._store.upsertOrder({ ...order, status: 'filled' });
242
+ }
243
+ }
244
+ // TODO: upsert ChartPosition based on fill side/qty/price
245
+ }
246
+ }
247
+ //# sourceMappingURL=ManagedTradingController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManagedTradingController.js","sourceRoot":"","sources":["../../../src/trading/managed/ManagedTradingController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * managedCapabilities.ts
3
+ *
4
+ * Feature-gate helpers specific to managed trading.
5
+ * Thin wrappers around ChartRuntimeResolver that produce clear, actionable
6
+ * error messages when a managed method is called without a suitable license.
7
+ *
8
+ * Usage (inside a managed trading method):
9
+ *
10
+ * assertManagedMode(); // throws if not in managed mode
11
+ * assertCanPlaceOrders(); // throws if orderEntry flag is off
12
+ * assertCanUseBrackets(); // throws if bracketOrders flag is off
13
+ * assertCanUseDraggableOrders(); // throws if draggableOrders flag is off
14
+ */
15
+ /**
16
+ * Asserts that the active license is in managed mode.
17
+ * @throws {Error} with a clear message if mode is unmanaged.
18
+ */
19
+ export declare function assertManagedMode(): void;
20
+ /**
21
+ * Asserts that the license permits order placement (orderEntry feature).
22
+ * Implicitly checks managed mode first.
23
+ */
24
+ export declare function assertCanPlaceOrders(): void;
25
+ /**
26
+ * Asserts that the license permits bracket / OCO orders.
27
+ * Implicitly checks managed mode and order entry first.
28
+ */
29
+ export declare function assertCanUseBrackets(): void;
30
+ /**
31
+ * Asserts that the license permits drag-to-price order placement.
32
+ * Implicitly checks managed mode and order entry first.
33
+ */
34
+ export declare function assertCanUseDraggableOrders(): void;
35
+ /**
36
+ * Asserts that the license permits the managed trading service hooks.
37
+ * Implicitly checks managed mode first.
38
+ */
39
+ export declare function assertCanUseManagedTrading(): void;
40
+ export declare const isManagedCapable: () => boolean;
41
+ export declare const canPlaceOrders: () => boolean;
42
+ export declare const canPlaceBrackets: () => boolean;
43
+ export declare const canUseDraggable: () => boolean;
44
+ export declare const canUseManagedTradingHook: () => boolean;
45
+ //# sourceMappingURL=managedCapabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managedCapabilities.d.ts","sourceRoot":"","sources":["../../../src/trading/managed/managedCapabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAQxC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAQ3C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAQ3C;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAQlD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAQjD;AAID,eAAO,MAAM,gBAAgB,QAAe,OAAqC,CAAC;AAClF,eAAO,MAAM,cAAc,QAAiB,OAAsE,CAAC;AACnH,eAAO,MAAM,gBAAgB,QAAe,OAA+D,CAAC;AAC5G,eAAO,MAAM,eAAe,QAAgB,OAAiE,CAAC;AAC9G,eAAO,MAAM,wBAAwB,QAAO,OAA0E,CAAC"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * managedCapabilities.ts
3
+ *
4
+ * Feature-gate helpers specific to managed trading.
5
+ * Thin wrappers around ChartRuntimeResolver that produce clear, actionable
6
+ * error messages when a managed method is called without a suitable license.
7
+ *
8
+ * Usage (inside a managed trading method):
9
+ *
10
+ * assertManagedMode(); // throws if not in managed mode
11
+ * assertCanPlaceOrders(); // throws if orderEntry flag is off
12
+ * assertCanUseBrackets(); // throws if bracketOrders flag is off
13
+ * assertCanUseDraggableOrders(); // throws if draggableOrders flag is off
14
+ */
15
+ import { ChartRuntimeResolver } from '../../licensing/ChartRuntimeResolver';
16
+ const resolver = () => ChartRuntimeResolver.getInstance();
17
+ // ── Guard helpers (throw on failure) ─────────────────────────────────────────
18
+ /**
19
+ * Asserts that the active license is in managed mode.
20
+ * @throws {Error} with a clear message if mode is unmanaged.
21
+ */
22
+ export function assertManagedMode() {
23
+ if (!resolver().isManagedMode()) {
24
+ throw new Error('[ForgeCharts] This feature requires a managed-mode license. ' +
25
+ 'The current license is in unmanaged mode (or no license is installed). ' +
26
+ 'Install a managed license via LicenseManager.validateLicense().');
27
+ }
28
+ }
29
+ /**
30
+ * Asserts that the license permits order placement (orderEntry feature).
31
+ * Implicitly checks managed mode first.
32
+ */
33
+ export function assertCanPlaceOrders() {
34
+ assertManagedMode();
35
+ if (!resolver().canUseOrderEntry()) {
36
+ throw new Error('[ForgeCharts] Order entry is not enabled on the active license. ' +
37
+ 'Contact your license provider to enable the orderEntry feature.');
38
+ }
39
+ }
40
+ /**
41
+ * Asserts that the license permits bracket / OCO orders.
42
+ * Implicitly checks managed mode and order entry first.
43
+ */
44
+ export function assertCanUseBrackets() {
45
+ assertCanPlaceOrders();
46
+ if (!resolver().canUseBracketOrders()) {
47
+ throw new Error('[ForgeCharts] Bracket orders are not enabled on the active license. ' +
48
+ 'Contact your license provider to enable the bracketOrders feature.');
49
+ }
50
+ }
51
+ /**
52
+ * Asserts that the license permits drag-to-price order placement.
53
+ * Implicitly checks managed mode and order entry first.
54
+ */
55
+ export function assertCanUseDraggableOrders() {
56
+ assertCanPlaceOrders();
57
+ if (!resolver().canUseDraggableOrders()) {
58
+ throw new Error('[ForgeCharts] Draggable orders are not enabled on the active license. ' +
59
+ 'Contact your license provider to enable the draggableOrders feature.');
60
+ }
61
+ }
62
+ /**
63
+ * Asserts that the license permits the managed trading service hooks.
64
+ * Implicitly checks managed mode first.
65
+ */
66
+ export function assertCanUseManagedTrading() {
67
+ assertManagedMode();
68
+ if (!resolver().canUseManagedTrading()) {
69
+ throw new Error('[ForgeCharts] Managed trading is not enabled on the active license. ' +
70
+ 'Contact your license provider to enable the managedTrading feature.');
71
+ }
72
+ }
73
+ // ── Boolean helpers (for conditional rendering, no throw) ────────────────────
74
+ export const isManagedCapable = () => resolver().isManagedMode();
75
+ export const canPlaceOrders = () => resolver().isManagedMode() && resolver().canUseOrderEntry();
76
+ export const canPlaceBrackets = () => canPlaceOrders() && resolver().canUseBracketOrders();
77
+ export const canUseDraggable = () => canPlaceOrders() && resolver().canUseDraggableOrders();
78
+ export const canUseManagedTradingHook = () => resolver().isManagedMode() && resolver().canUseManagedTrading();
79
+ //# sourceMappingURL=managedCapabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managedCapabilities.js","sourceRoot":"","sources":["../../../src/trading/managed/managedCapabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAE5E,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;AAE1D,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,8DAA8D;YAC9D,yEAAyE;YACzE,iEAAiE,CAClE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,iBAAiB,EAAE,CAAC;IACpB,IAAI,CAAC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,kEAAkE;YAClE,iEAAiE,CAClE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,oBAAoB,EAAE,CAAC;IACvB,IAAI,CAAC,QAAQ,EAAE,CAAC,mBAAmB,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,sEAAsE;YACtE,oEAAoE,CACrE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B;IACzC,oBAAoB,EAAE,CAAC;IACvB,IAAI,CAAC,QAAQ,EAAE,CAAC,qBAAqB,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,wEAAwE;YACxE,sEAAsE,CACvE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B;IACxC,iBAAiB,EAAE,CAAC;IACpB,IAAI,CAAC,QAAQ,EAAE,CAAC,oBAAoB,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,sEAAsE;YACtE,qEAAqE,CACtE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,MAAM,gBAAgB,GAAW,GAAY,EAAE,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,CAAC;AAClF,MAAM,CAAC,MAAM,cAAc,GAAa,GAAY,EAAE,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,IAAI,QAAQ,EAAE,CAAC,gBAAgB,EAAE,CAAC;AACnH,MAAM,CAAC,MAAM,gBAAgB,GAAW,GAAY,EAAE,CAAC,cAAc,EAAE,IAAI,QAAQ,EAAE,CAAC,mBAAmB,EAAE,CAAC;AAC5G,MAAM,CAAC,MAAM,eAAe,GAAY,GAAY,EAAE,CAAC,cAAc,EAAE,IAAI,QAAQ,EAAE,CAAC,qBAAqB,EAAE,CAAC;AAC9G,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAY,EAAE,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,IAAI,QAAQ,EAAE,CAAC,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * managedTypes.ts
3
+ *
4
+ * Input/output types specific to the managed trading flow.
5
+ * These are the shapes that callers pass into ManagedTradingController and
6
+ * that execution providers will eventually consume.
7
+ *
8
+ * Shared overlay types (ChartOrder, ChartPosition, ExecutionFill) are in
9
+ * ../tradingTypes — managed trading WRITES to those shapes, it does not
10
+ * define its own parallel set.
11
+ */
12
+ import type { OrderSide } from '../tradingTypes';
13
+ /** Time-in-force policy for managed orders. */
14
+ export type TimeInForce = 'GTC' | 'IOC' | 'FOK' | 'GTD' | 'DAY';
15
+ /** Managed order type. */
16
+ export type ManagedOrderType = 'market' | 'limit' | 'stop_market' | 'stop_limit';
17
+ /**
18
+ * Input to placeOrder().
19
+ * The controller normalises this into a ChartOrder for the overlay store.
20
+ */
21
+ export interface PlaceOrderInput {
22
+ /** Symbol / instrument identifier (e.g. 'BTCUSDT', 'ES', 'AAPL'). */
23
+ symbol: string;
24
+ side: OrderSide;
25
+ type: ManagedOrderType;
26
+ /** Required for limit and stop-limit orders. */
27
+ limitPrice?: number;
28
+ /** Required for stop-market and stop-limit orders. */
29
+ stopPrice?: number;
30
+ qty: number;
31
+ timeInForce?: TimeInForce;
32
+ /**
33
+ * Group identifier for bracket legs.
34
+ * The SDK does not enforce OCO execution — the execution provider is responsible.
35
+ */
36
+ groupId?: string;
37
+ /** Human-readable label shown on the chart overlay. */
38
+ label?: string;
39
+ /** Arbitrary passthrough metadata forwarded to the execution provider. */
40
+ meta?: Record<string, unknown>;
41
+ }
42
+ /**
43
+ * Input to modifyOrder().
44
+ * Only fields that are explicitly set will be forwarded to the provider.
45
+ */
46
+ export interface ModifyOrderInput {
47
+ limitPrice?: number;
48
+ stopPrice?: number;
49
+ qty?: number;
50
+ label?: string;
51
+ }
52
+ /**
53
+ * Input to placeBracketOrder().
54
+ * Places an entry order plus linked stop-loss and/or take-profit in one call.
55
+ * All three legs share a `groupId` so they are visually associated on the chart.
56
+ */
57
+ export interface PlaceBracketOrderInput {
58
+ /** The entry leg — type/side/price/qty. Provider may require limit or stop. */
59
+ entry: PlaceOrderInput;
60
+ /** Stop-loss price. Required field — brackets must have a risk leg. */
61
+ stopLossPrice: number;
62
+ /**
63
+ * Take-profit price.
64
+ * Optional — some workflows only manage downside.
65
+ */
66
+ takeProfitPrice?: number;
67
+ }
68
+ /**
69
+ * Returned by placeOrder() and placeBracketOrder() once acknowledged by the
70
+ * execution provider (even if not yet filled).
71
+ */
72
+ export interface OrderAck {
73
+ /** Provider-assigned order id. */
74
+ orderId: string;
75
+ /** Optional provider-assigned client order id. */
76
+ clientOrderId?: string;
77
+ /** Timestamp (ms) when the ack was received from the provider. */
78
+ timestamp: number;
79
+ }
80
+ /** Returned by placeBracketOrder — one ack per submitted leg. */
81
+ export interface BracketOrderAck {
82
+ entry: OrderAck;
83
+ stopLoss: OrderAck;
84
+ takeProfit?: OrderAck;
85
+ /** Shared group id linking all legs on the chart overlay. */
86
+ groupId: string;
87
+ }
88
+ /**
89
+ * IExecutionProvider
90
+ *
91
+ * The contract every broker / exchange adapter must implement.
92
+ * ManagedTradingController delegates all actual order routing to whichever
93
+ * provider is registered at runtime.
94
+ *
95
+ * Providers are NOT implemented here — this interface is the extension point.
96
+ */
97
+ export interface IExecutionProvider {
98
+ /** Unique provider identifier (e.g. 'rithmic', 'binance', 'interactive-brokers'). */
99
+ readonly providerId: string;
100
+ /**
101
+ * Submit a new order to the venue.
102
+ * Must resolve with an OrderAck once the venue acknowledges.
103
+ */
104
+ placeOrder(input: PlaceOrderInput): Promise<OrderAck>;
105
+ /**
106
+ * Cancel a working order by its provider-assigned id.
107
+ * Must resolve once the cancellation is acknowledged.
108
+ */
109
+ cancelOrder(orderId: string): Promise<void>;
110
+ /**
111
+ * Modify a working order in place.
112
+ * Partial updates — only fields present in `updates` are changed.
113
+ */
114
+ modifyOrder(orderId: string, updates: ModifyOrderInput): Promise<OrderAck>;
115
+ /**
116
+ * Place a bracket order (entry + stop-loss + optional take-profit).
117
+ * Providers may implement this as a single atomic request or as multiple
118
+ * linked orders — the contract is the same from the controller's perspective.
119
+ */
120
+ placeBracketOrder(input: PlaceBracketOrderInput): Promise<BracketOrderAck>;
121
+ }
122
+ //# sourceMappingURL=managedTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managedTypes.d.ts","sourceRoot":"","sources":["../../../src/trading/managed/managedTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,+CAA+C;AAC/C,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAEhE,0BAA0B;AAC1B,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,YAAY,CAAC;AAEjF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,SAAS,CAAC;IAEhB,IAAI,EAAE,gBAAgB,CAAC;IAEvB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,GAAG,EAAE,MAAM,CAAC;IAEZ,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAG,MAAM,CAAC;IACpB,GAAG,CAAC,EAAS,MAAM,CAAC;IACpB,KAAK,CAAC,EAAO,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,+EAA+E;IAC/E,KAAK,EAAE,eAAe,CAAC;IAEvB,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAID;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAQ,QAAQ,CAAC;IACtB,QAAQ,EAAK,QAAQ,CAAC;IACtB,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,6DAA6D;IAC7D,OAAO,EAAM,MAAM,CAAC;CACrB;AAID;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,qFAAqF;IACrF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtD;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5C;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3E;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC5E"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * managedTypes.ts
3
+ *
4
+ * Input/output types specific to the managed trading flow.
5
+ * These are the shapes that callers pass into ManagedTradingController and
6
+ * that execution providers will eventually consume.
7
+ *
8
+ * Shared overlay types (ChartOrder, ChartPosition, ExecutionFill) are in
9
+ * ../tradingTypes — managed trading WRITES to those shapes, it does not
10
+ * define its own parallel set.
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=managedTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managedTypes.js","sourceRoot":"","sources":["../../../src/trading/managed/managedTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Shared trading overlay types used by both unmanaged and managed modes.
3
+ *
4
+ * These are the canonical data shapes the overlay engine, ingestion layer,
5
+ * and future managed trading service all operate on.
6
+ */
7
+ /**
8
+ * Normalised candle data accepted by the unmanaged ingestion API.
9
+ * `time` may be Unix seconds or milliseconds — the engine auto-detects.
10
+ */
11
+ export interface CandleInput {
12
+ time: number;
13
+ open: number;
14
+ high: number;
15
+ low: number;
16
+ close: number;
17
+ volume?: number;
18
+ /** True when the candle is confirmed closed (next candle has opened). */
19
+ isClosed?: boolean;
20
+ }
21
+ /** Visual role of the order line on the chart. */
22
+ export type OrderRole = 'entry' | 'stop_loss' | 'take_profit' | 'limit' | 'stop' | 'other';
23
+ /** Order side. */
24
+ export type OrderSide = 'buy' | 'sell';
25
+ /** Lifecycle status of the order. */
26
+ export type OrderStatus = 'pending' | 'open' | 'filled' | 'partial' | 'cancelled' | 'rejected' | 'expired';
27
+ export interface ChartOrder {
28
+ /** Unique order identifier — used as the primary key for upsert / remove. */
29
+ id: string;
30
+ /** Visual role — drives line colour and label. */
31
+ role: OrderRole;
32
+ side: OrderSide;
33
+ status: OrderStatus;
34
+ /** Limit / trigger price in the chart's native price unit. */
35
+ price: number;
36
+ /** Order quantity in the instrument's native lot / contract unit. */
37
+ qty: number;
38
+ /**
39
+ * Optional group identifier.
40
+ * Orders sharing a `groupId` are visually associated (e.g. bracket legs).
41
+ * The SDK does NOT manage execution rules — grouping is visual only.
42
+ */
43
+ groupId?: string;
44
+ /** Human-readable label shown next to the order line. */
45
+ label?: string;
46
+ /** ISO-8601 string or Unix timestamp (ms) when the order was placed. */
47
+ timestamp?: number | string;
48
+ /** Arbitrary client metadata — not used by the renderer. */
49
+ meta?: Record<string, unknown>;
50
+ }
51
+ export type PositionSide = 'long' | 'short';
52
+ export type PositionStatus = 'open' | 'closed' | 'partial';
53
+ export interface ChartPosition {
54
+ /** Unique position identifier. */
55
+ id: string;
56
+ side: PositionSide;
57
+ status: PositionStatus;
58
+ /** Average entry price. */
59
+ entryPrice: number;
60
+ /** Net open quantity (absolute value; sign is encoded in `side`). */
61
+ qty: number;
62
+ /** Current mark / last price (used to compute unrealized P&L). */
63
+ markPrice?: number;
64
+ /** Unrealized P&L in the account's currency. */
65
+ unrealizedPnl?: number;
66
+ /** Optional: link associated order ids (e.g. stop-loss, take-profit). */
67
+ linkedOrderIds?: string[];
68
+ /** Human-readable label. */
69
+ label?: string;
70
+ /** Arbitrary client metadata. */
71
+ meta?: Record<string, unknown>;
72
+ }
73
+ export type FillSide = 'buy' | 'sell';
74
+ export interface ExecutionFill {
75
+ /** Unique fill / execution identifier. */
76
+ id: string;
77
+ /** ID of the parent order, if known. */
78
+ orderId?: string;
79
+ side: FillSide;
80
+ /** Execution price. */
81
+ price: number;
82
+ /** Filled quantity. */
83
+ qty: number;
84
+ /** Unix timestamp in milliseconds when the fill was reported. */
85
+ timestamp: number;
86
+ /** Arbitrary client metadata. */
87
+ meta?: Record<string, unknown>;
88
+ }
89
+ //# sourceMappingURL=tradingTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tradingTypes.d.ts","sourceRoot":"","sources":["../../src/trading/tradingTypes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAK,MAAM,CAAC;IAChB,IAAI,EAAK,MAAM,CAAC;IAChB,IAAI,EAAK,MAAM,CAAC;IAChB,GAAG,EAAM,MAAM,CAAC;IAChB,KAAK,EAAI,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,kDAAkD;AAClD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3F,kBAAkB;AAClB,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvC,qCAAqC;AACrC,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,MAAM,GACN,QAAQ,GACR,SAAS,GACT,WAAW,GACX,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,UAAU;IACzB,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IAEX,kDAAkD;IAClD,IAAI,EAAE,SAAS,CAAC;IAEhB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IAEpB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IAEd,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAID,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;IAEvB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IAEnB,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC;IAEZ,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAID,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AAEtC,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IAEX,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,IAAI,EAAE,QAAQ,CAAC;IAEf,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IAEd,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IAEZ,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Shared trading overlay types used by both unmanaged and managed modes.
3
+ *
4
+ * These are the canonical data shapes the overlay engine, ingestion layer,
5
+ * and future managed trading service all operate on.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=tradingTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tradingTypes.js","sourceRoot":"","sources":["../../src/trading/tradingTypes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}