@tradecanvas/core 1.3.0 → 1.7.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 (439) hide show
  1. package/dist/axis/GridRenderer.d.ts.map +1 -1
  2. package/dist/axis/PriceAxis.d.ts +10 -1
  3. package/dist/axis/PriceAxis.d.ts.map +1 -1
  4. package/dist/axis/TimeAxis.d.ts +9 -4
  5. package/dist/axis/TimeAxis.d.ts.map +1 -1
  6. package/dist/charts/AreaRenderer.d.ts.map +1 -1
  7. package/dist/charts/BarRenderer.d.ts.map +1 -1
  8. package/dist/charts/BaselineRenderer.d.ts.map +1 -1
  9. package/dist/charts/CandlestickRenderer.d.ts.map +1 -1
  10. package/dist/charts/CompareRenderer.d.ts +21 -4
  11. package/dist/charts/CompareRenderer.d.ts.map +1 -1
  12. package/dist/charts/EquivolumeRenderer.d.ts.map +1 -1
  13. package/dist/charts/HLCAreaRenderer.d.ts.map +1 -1
  14. package/dist/charts/HiLoRenderer.d.ts +14 -0
  15. package/dist/charts/HiLoRenderer.d.ts.map +1 -0
  16. package/dist/charts/HollowCandleRenderer.d.ts.map +1 -1
  17. package/dist/charts/KagiRenderer.d.ts.map +1 -1
  18. package/dist/charts/LineRenderer.d.ts.map +1 -1
  19. package/dist/charts/LineWithMarkersRenderer.d.ts.map +1 -1
  20. package/dist/charts/MarketProfileRenderer.d.ts.map +1 -1
  21. package/dist/charts/PeriodLevelsRenderer.d.ts.map +1 -1
  22. package/dist/charts/PivotMarkersRenderer.d.ts.map +1 -1
  23. package/dist/charts/PointAndFigureRenderer.d.ts.map +1 -1
  24. package/dist/charts/RenkoRenderer.d.ts.map +1 -1
  25. package/dist/charts/StepLineRenderer.d.ts.map +1 -1
  26. package/dist/charts/VolumeCandleRenderer.d.ts.map +1 -1
  27. package/dist/charts/VolumeProfileRenderer.d.ts.map +1 -1
  28. package/dist/charts/VolumeRenderer.d.ts.map +1 -1
  29. package/dist/charts/denseBars.d.ts +28 -0
  30. package/dist/charts/denseBars.d.ts.map +1 -0
  31. package/dist/charts/index.d.ts +3 -0
  32. package/dist/charts/index.d.ts.map +1 -1
  33. package/dist/charts/transforms/kagi.d.ts +3 -2
  34. package/dist/charts/transforms/kagi.d.ts.map +1 -1
  35. package/dist/charts/transforms/renko.d.ts.map +1 -1
  36. package/dist/drawings/DrawingBase.d.ts +30 -1
  37. package/dist/drawings/DrawingBase.d.ts.map +1 -1
  38. package/dist/drawings/DrawingCreator.d.ts +51 -0
  39. package/dist/drawings/DrawingCreator.d.ts.map +1 -0
  40. package/dist/drawings/DrawingDrag.d.ts +36 -0
  41. package/dist/drawings/DrawingDrag.d.ts.map +1 -0
  42. package/dist/drawings/DrawingManager.d.ts +176 -32
  43. package/dist/drawings/DrawingManager.d.ts.map +1 -1
  44. package/dist/drawings/DrawingSelection.d.ts +28 -0
  45. package/dist/drawings/DrawingSelection.d.ts.map +1 -0
  46. package/dist/drawings/drawingHistory.d.ts +12 -0
  47. package/dist/drawings/drawingHistory.d.ts.map +1 -0
  48. package/dist/drawings/drawingShortcuts.d.ts +11 -0
  49. package/dist/drawings/drawingShortcuts.d.ts.map +1 -0
  50. package/dist/drawings/drawingState.d.ts +29 -0
  51. package/dist/drawings/drawingState.d.ts.map +1 -0
  52. package/dist/drawings/index.d.ts +2 -1
  53. package/dist/drawings/index.d.ts.map +1 -1
  54. package/dist/drawings/magnetSnap.d.ts +12 -0
  55. package/dist/drawings/magnetSnap.d.ts.map +1 -0
  56. package/dist/drawings/tools/AnchoredVWAP.d.ts.map +1 -1
  57. package/dist/drawings/tools/Circle.d.ts +1 -0
  58. package/dist/drawings/tools/Circle.d.ts.map +1 -1
  59. package/dist/drawings/tools/ElliottWave.d.ts +128 -3
  60. package/dist/drawings/tools/ElliottWave.d.ts.map +1 -1
  61. package/dist/drawings/tools/Ellipse.d.ts +1 -0
  62. package/dist/drawings/tools/Ellipse.d.ts.map +1 -1
  63. package/dist/drawings/tools/ExtendedLine.d.ts +1 -0
  64. package/dist/drawings/tools/ExtendedLine.d.ts.map +1 -1
  65. package/dist/drawings/tools/FibChannel.d.ts +7 -0
  66. package/dist/drawings/tools/FibChannel.d.ts.map +1 -1
  67. package/dist/drawings/tools/FibExtension.d.ts +20 -0
  68. package/dist/drawings/tools/FibExtension.d.ts.map +1 -1
  69. package/dist/drawings/tools/FibRetracement.d.ts +28 -0
  70. package/dist/drawings/tools/FibRetracement.d.ts.map +1 -1
  71. package/dist/drawings/tools/FibSpeedResistanceFan.d.ts +9 -1
  72. package/dist/drawings/tools/FibSpeedResistanceFan.d.ts.map +1 -1
  73. package/dist/drawings/tools/FibTimeZones.d.ts +16 -0
  74. package/dist/drawings/tools/FibTimeZones.d.ts.map +1 -1
  75. package/dist/drawings/tools/HorizontalLine.d.ts +1 -0
  76. package/dist/drawings/tools/HorizontalLine.d.ts.map +1 -1
  77. package/dist/drawings/tools/HorizontalRay.d.ts +1 -0
  78. package/dist/drawings/tools/HorizontalRay.d.ts.map +1 -1
  79. package/dist/drawings/tools/Measure.d.ts.map +1 -1
  80. package/dist/drawings/tools/ParallelChannel.d.ts +12 -0
  81. package/dist/drawings/tools/ParallelChannel.d.ts.map +1 -1
  82. package/dist/drawings/tools/PriceLabel.d.ts +1 -0
  83. package/dist/drawings/tools/PriceLabel.d.ts.map +1 -1
  84. package/dist/drawings/tools/PriceRange.d.ts.map +1 -1
  85. package/dist/drawings/tools/Ray.d.ts +1 -0
  86. package/dist/drawings/tools/Ray.d.ts.map +1 -1
  87. package/dist/drawings/tools/Rectangle.d.ts +1 -0
  88. package/dist/drawings/tools/Rectangle.d.ts.map +1 -1
  89. package/dist/drawings/tools/RegressionChannel.d.ts +1 -0
  90. package/dist/drawings/tools/RegressionChannel.d.ts.map +1 -1
  91. package/dist/drawings/tools/RiskReward.d.ts +59 -6
  92. package/dist/drawings/tools/RiskReward.d.ts.map +1 -1
  93. package/dist/drawings/tools/TextAnnotation.d.ts +1 -0
  94. package/dist/drawings/tools/TextAnnotation.d.ts.map +1 -1
  95. package/dist/drawings/tools/TrendLine.d.ts +3 -0
  96. package/dist/drawings/tools/TrendLine.d.ts.map +1 -1
  97. package/dist/drawings/tools/Triangle.d.ts +1 -0
  98. package/dist/drawings/tools/Triangle.d.ts.map +1 -1
  99. package/dist/drawings/tools/VolumeProfileRange.d.ts +1 -0
  100. package/dist/drawings/tools/VolumeProfileRange.d.ts.map +1 -1
  101. package/dist/drawings/tools/annotations.d.ts +113 -0
  102. package/dist/drawings/tools/annotations.d.ts.map +1 -0
  103. package/dist/drawings/tools/cycles.d.ts +37 -0
  104. package/dist/drawings/tools/cycles.d.ts.map +1 -0
  105. package/dist/drawings/tools/fibGeometry.d.ts +202 -0
  106. package/dist/drawings/tools/fibGeometry.d.ts.map +1 -0
  107. package/dist/drawings/tools/forecast.d.ts +85 -0
  108. package/dist/drawings/tools/forecast.d.ts.map +1 -0
  109. package/dist/drawings/tools/freehand.d.ts +81 -0
  110. package/dist/drawings/tools/freehand.d.ts.map +1 -0
  111. package/dist/drawings/tools/index.d.ts +7 -0
  112. package/dist/drawings/tools/index.d.ts.map +1 -1
  113. package/dist/drawings/tools/labels.d.ts +6 -3
  114. package/dist/drawings/tools/labels.d.ts.map +1 -1
  115. package/dist/drawings/tools/options.d.ts +8 -0
  116. package/dist/drawings/tools/options.d.ts.map +1 -0
  117. package/dist/drawings/tools/patterns.d.ts +32 -0
  118. package/dist/drawings/tools/patterns.d.ts.map +1 -1
  119. package/dist/drawings/tools/priceLevels.d.ts +29 -0
  120. package/dist/drawings/tools/priceLevels.d.ts.map +1 -0
  121. package/dist/drawings/tools/textBox.d.ts +39 -0
  122. package/dist/drawings/tools/textBox.d.ts.map +1 -0
  123. package/dist/engine/RenderEngine.d.ts +25 -0
  124. package/dist/engine/RenderEngine.d.ts.map +1 -1
  125. package/dist/events/EventBus.d.ts +2 -0
  126. package/dist/events/EventBus.d.ts.map +1 -1
  127. package/dist/features/AlertManager.d.ts +117 -6
  128. package/dist/features/AlertManager.d.ts.map +1 -1
  129. package/dist/features/ChartState.d.ts +36 -12
  130. package/dist/features/ChartState.d.ts.map +1 -1
  131. package/dist/features/DataExporter.d.ts +7 -2
  132. package/dist/features/DataExporter.d.ts.map +1 -1
  133. package/dist/features/ReplayManager.d.ts +23 -1
  134. package/dist/features/ReplayManager.d.ts.map +1 -1
  135. package/dist/features/SignalMarkerManager.d.ts +8 -0
  136. package/dist/features/SignalMarkerManager.d.ts.map +1 -1
  137. package/dist/features/TradeZoneManager.d.ts.map +1 -1
  138. package/dist/features/UndoRedoManager.d.ts +30 -1
  139. package/dist/features/UndoRedoManager.d.ts.map +1 -1
  140. package/dist/features/index.d.ts +5 -2
  141. package/dist/features/index.d.ts.map +1 -1
  142. package/dist/index.cjs +11 -9
  143. package/dist/index.cjs.map +1 -1
  144. package/dist/index.js +10730 -5082
  145. package/dist/index.js.map +1 -1
  146. package/dist/indicators/IndicatorBase.d.ts +5 -1
  147. package/dist/indicators/IndicatorBase.d.ts.map +1 -1
  148. package/dist/indicators/IndicatorEngine.d.ts +123 -11
  149. package/dist/indicators/IndicatorEngine.d.ts.map +1 -1
  150. package/dist/indicators/PointwiseIndicator.d.ts +25 -0
  151. package/dist/indicators/PointwiseIndicator.d.ts.map +1 -0
  152. package/dist/indicators/index.d.ts +32 -0
  153. package/dist/indicators/index.d.ts.map +1 -1
  154. package/dist/indicators/math.d.ts +47 -0
  155. package/dist/indicators/math.d.ts.map +1 -0
  156. package/dist/indicators/overlay/ALMA.d.ts +20 -0
  157. package/dist/indicators/overlay/ALMA.d.ts.map +1 -0
  158. package/dist/indicators/overlay/Alligator.d.ts +2 -14
  159. package/dist/indicators/overlay/Alligator.d.ts.map +1 -1
  160. package/dist/indicators/overlay/AnchoredVWAP.d.ts +2 -9
  161. package/dist/indicators/overlay/AnchoredVWAP.d.ts.map +1 -1
  162. package/dist/indicators/overlay/BollingerBands.d.ts +2 -10
  163. package/dist/indicators/overlay/BollingerBands.d.ts.map +1 -1
  164. package/dist/indicators/overlay/ChandeKrollStop.d.ts +16 -0
  165. package/dist/indicators/overlay/ChandeKrollStop.d.ts.map +1 -0
  166. package/dist/indicators/overlay/ChandelierExit.d.ts +2 -10
  167. package/dist/indicators/overlay/ChandelierExit.d.ts.map +1 -1
  168. package/dist/indicators/overlay/DEMA.d.ts +11 -0
  169. package/dist/indicators/overlay/DEMA.d.ts.map +1 -0
  170. package/dist/indicators/overlay/DonchianChannel.d.ts +2 -9
  171. package/dist/indicators/overlay/DonchianChannel.d.ts.map +1 -1
  172. package/dist/indicators/overlay/EMA.d.ts +2 -9
  173. package/dist/indicators/overlay/EMA.d.ts.map +1 -1
  174. package/dist/indicators/overlay/Envelope.d.ts +2 -10
  175. package/dist/indicators/overlay/Envelope.d.ts.map +1 -1
  176. package/dist/indicators/overlay/GuppyMMA.d.ts +11 -0
  177. package/dist/indicators/overlay/GuppyMMA.d.ts.map +1 -0
  178. package/dist/indicators/overlay/HullMA.d.ts +2 -9
  179. package/dist/indicators/overlay/HullMA.d.ts.map +1 -1
  180. package/dist/indicators/overlay/Ichimoku.d.ts +2 -12
  181. package/dist/indicators/overlay/Ichimoku.d.ts.map +1 -1
  182. package/dist/indicators/overlay/KAMA.d.ts +15 -0
  183. package/dist/indicators/overlay/KAMA.d.ts.map +1 -0
  184. package/dist/indicators/overlay/KeltnerChannel.d.ts +2 -11
  185. package/dist/indicators/overlay/KeltnerChannel.d.ts.map +1 -1
  186. package/dist/indicators/overlay/LSMA.d.ts +19 -0
  187. package/dist/indicators/overlay/LSMA.d.ts.map +1 -0
  188. package/dist/indicators/overlay/LinearRegressionChannel.d.ts +2 -10
  189. package/dist/indicators/overlay/LinearRegressionChannel.d.ts.map +1 -1
  190. package/dist/indicators/overlay/MACross.d.ts +9 -0
  191. package/dist/indicators/overlay/MACross.d.ts.map +1 -0
  192. package/dist/indicators/overlay/MARibbon.d.ts +8 -0
  193. package/dist/indicators/overlay/MARibbon.d.ts.map +1 -0
  194. package/dist/indicators/overlay/MTFMovingAverage.d.ts +2 -10
  195. package/dist/indicators/overlay/MTFMovingAverage.d.ts.map +1 -1
  196. package/dist/indicators/overlay/McGinleyDynamic.d.ts +13 -0
  197. package/dist/indicators/overlay/McGinleyDynamic.d.ts.map +1 -0
  198. package/dist/indicators/overlay/ParabolicSAR.d.ts +2 -10
  199. package/dist/indicators/overlay/ParabolicSAR.d.ts.map +1 -1
  200. package/dist/indicators/overlay/PivotPoints.d.ts +2 -9
  201. package/dist/indicators/overlay/PivotPoints.d.ts.map +1 -1
  202. package/dist/indicators/overlay/SMA.d.ts +2 -9
  203. package/dist/indicators/overlay/SMA.d.ts.map +1 -1
  204. package/dist/indicators/overlay/SMMA.d.ts +13 -0
  205. package/dist/indicators/overlay/SMMA.d.ts.map +1 -0
  206. package/dist/indicators/overlay/SessionVWAP.d.ts +2 -9
  207. package/dist/indicators/overlay/SessionVWAP.d.ts.map +1 -1
  208. package/dist/indicators/overlay/StandardErrorBands.d.ts +12 -0
  209. package/dist/indicators/overlay/StandardErrorBands.d.ts.map +1 -0
  210. package/dist/indicators/overlay/Supertrend.d.ts +2 -10
  211. package/dist/indicators/overlay/Supertrend.d.ts.map +1 -1
  212. package/dist/indicators/overlay/TEMA.d.ts +2 -9
  213. package/dist/indicators/overlay/TEMA.d.ts.map +1 -1
  214. package/dist/indicators/overlay/VWAP.d.ts +2 -7
  215. package/dist/indicators/overlay/VWAP.d.ts.map +1 -1
  216. package/dist/indicators/overlay/VWMA.d.ts +2 -9
  217. package/dist/indicators/overlay/VWMA.d.ts.map +1 -1
  218. package/dist/indicators/overlay/WMA.d.ts +2 -9
  219. package/dist/indicators/overlay/WMA.d.ts.map +1 -1
  220. package/dist/indicators/overlay/WilliamsFractals.d.ts +15 -0
  221. package/dist/indicators/overlay/WilliamsFractals.d.ts.map +1 -0
  222. package/dist/indicators/overlay/ZigZag.d.ts +2 -9
  223. package/dist/indicators/overlay/ZigZag.d.ts.map +1 -1
  224. package/dist/indicators/panel/ADX.d.ts +2 -10
  225. package/dist/indicators/panel/ADX.d.ts.map +1 -1
  226. package/dist/indicators/panel/ATR.d.ts +2 -10
  227. package/dist/indicators/panel/ATR.d.ts.map +1 -1
  228. package/dist/indicators/panel/AcceleratorOscillator.d.ts +5 -10
  229. package/dist/indicators/panel/AcceleratorOscillator.d.ts.map +1 -1
  230. package/dist/indicators/panel/AccumulationDistribution.d.ts +2 -8
  231. package/dist/indicators/panel/AccumulationDistribution.d.ts.map +1 -1
  232. package/dist/indicators/panel/Aroon.d.ts +2 -10
  233. package/dist/indicators/panel/Aroon.d.ts.map +1 -1
  234. package/dist/indicators/panel/AverageDayRange.d.ts +9 -0
  235. package/dist/indicators/panel/AverageDayRange.d.ts.map +1 -0
  236. package/dist/indicators/panel/AwesomeOscillator.d.ts +2 -11
  237. package/dist/indicators/panel/AwesomeOscillator.d.ts.map +1 -1
  238. package/dist/indicators/panel/BalanceOfPower.d.ts +2 -10
  239. package/dist/indicators/panel/BalanceOfPower.d.ts.map +1 -1
  240. package/dist/indicators/panel/BollingerBandWidth.d.ts +18 -0
  241. package/dist/indicators/panel/BollingerBandWidth.d.ts.map +1 -0
  242. package/dist/indicators/panel/BollingerPercentB.d.ts +21 -0
  243. package/dist/indicators/panel/BollingerPercentB.d.ts.map +1 -0
  244. package/dist/indicators/panel/CCI.d.ts +2 -10
  245. package/dist/indicators/panel/CCI.d.ts.map +1 -1
  246. package/dist/indicators/panel/CMF.d.ts +2 -10
  247. package/dist/indicators/panel/CMF.d.ts.map +1 -1
  248. package/dist/indicators/panel/ChaikinOscillator.d.ts +2 -11
  249. package/dist/indicators/panel/ChaikinOscillator.d.ts.map +1 -1
  250. package/dist/indicators/panel/ChaikinVolatility.d.ts +2 -11
  251. package/dist/indicators/panel/ChaikinVolatility.d.ts.map +1 -1
  252. package/dist/indicators/panel/ChandeMomentum.d.ts +2 -10
  253. package/dist/indicators/panel/ChandeMomentum.d.ts.map +1 -1
  254. package/dist/indicators/panel/ChoppinessIndex.d.ts +2 -10
  255. package/dist/indicators/panel/ChoppinessIndex.d.ts.map +1 -1
  256. package/dist/indicators/panel/ConnorsRSI.d.ts +2 -12
  257. package/dist/indicators/panel/ConnorsRSI.d.ts.map +1 -1
  258. package/dist/indicators/panel/Coppock.d.ts +2 -12
  259. package/dist/indicators/panel/Coppock.d.ts.map +1 -1
  260. package/dist/indicators/panel/DetrendedPriceOscillator.d.ts +2 -10
  261. package/dist/indicators/panel/DetrendedPriceOscillator.d.ts.map +1 -1
  262. package/dist/indicators/panel/DisparityIndex.d.ts +2 -10
  263. package/dist/indicators/panel/DisparityIndex.d.ts.map +1 -1
  264. package/dist/indicators/panel/EaseOfMovement.d.ts +2 -12
  265. package/dist/indicators/panel/EaseOfMovement.d.ts.map +1 -1
  266. package/dist/indicators/panel/ElderRay.d.ts +3 -9
  267. package/dist/indicators/panel/ElderRay.d.ts.map +1 -1
  268. package/dist/indicators/panel/FisherTransform.d.ts +2 -10
  269. package/dist/indicators/panel/FisherTransform.d.ts.map +1 -1
  270. package/dist/indicators/panel/ForceIndex.d.ts +2 -10
  271. package/dist/indicators/panel/ForceIndex.d.ts.map +1 -1
  272. package/dist/indicators/panel/HistoricalVolatility.d.ts +22 -0
  273. package/dist/indicators/panel/HistoricalVolatility.d.ts.map +1 -0
  274. package/dist/indicators/panel/KST.d.ts +2 -18
  275. package/dist/indicators/panel/KST.d.ts.map +1 -1
  276. package/dist/indicators/panel/Klinger.d.ts +2 -12
  277. package/dist/indicators/panel/Klinger.d.ts.map +1 -1
  278. package/dist/indicators/panel/LinearRegressionSlope.d.ts +9 -0
  279. package/dist/indicators/panel/LinearRegressionSlope.d.ts.map +1 -0
  280. package/dist/indicators/panel/MACD.d.ts +2 -12
  281. package/dist/indicators/panel/MACD.d.ts.map +1 -1
  282. package/dist/indicators/panel/MFI.d.ts +2 -10
  283. package/dist/indicators/panel/MFI.d.ts.map +1 -1
  284. package/dist/indicators/panel/MassIndex.d.ts +2 -11
  285. package/dist/indicators/panel/MassIndex.d.ts.map +1 -1
  286. package/dist/indicators/panel/Momentum.d.ts +9 -0
  287. package/dist/indicators/panel/Momentum.d.ts.map +1 -0
  288. package/dist/indicators/panel/NetVolume.d.ts +11 -0
  289. package/dist/indicators/panel/NetVolume.d.ts.map +1 -0
  290. package/dist/indicators/panel/OBV.d.ts +2 -8
  291. package/dist/indicators/panel/OBV.d.ts.map +1 -1
  292. package/dist/indicators/panel/PercentagePriceOscillator.d.ts +2 -12
  293. package/dist/indicators/panel/PercentagePriceOscillator.d.ts.map +1 -1
  294. package/dist/indicators/panel/PrettyGoodOscillator.d.ts +2 -10
  295. package/dist/indicators/panel/PrettyGoodOscillator.d.ts.map +1 -1
  296. package/dist/indicators/panel/PriceVolumeTrend.d.ts +2 -8
  297. package/dist/indicators/panel/PriceVolumeTrend.d.ts.map +1 -1
  298. package/dist/indicators/panel/Qstick.d.ts +2 -10
  299. package/dist/indicators/panel/Qstick.d.ts.map +1 -1
  300. package/dist/indicators/panel/ROC.d.ts +2 -10
  301. package/dist/indicators/panel/ROC.d.ts.map +1 -1
  302. package/dist/indicators/panel/RSI.d.ts +2 -10
  303. package/dist/indicators/panel/RSI.d.ts.map +1 -1
  304. package/dist/indicators/panel/RelativeMomentumIndex.d.ts +2 -11
  305. package/dist/indicators/panel/RelativeMomentumIndex.d.ts.map +1 -1
  306. package/dist/indicators/panel/RelativeVigor.d.ts +2 -10
  307. package/dist/indicators/panel/RelativeVigor.d.ts.map +1 -1
  308. package/dist/indicators/panel/RelativeVolatilityIndex.d.ts +12 -0
  309. package/dist/indicators/panel/RelativeVolatilityIndex.d.ts.map +1 -0
  310. package/dist/indicators/panel/SchaffTrendCycle.d.ts +2 -12
  311. package/dist/indicators/panel/SchaffTrendCycle.d.ts.map +1 -1
  312. package/dist/indicators/panel/StandardError.d.ts +9 -0
  313. package/dist/indicators/panel/StandardError.d.ts.map +1 -0
  314. package/dist/indicators/panel/StdDev.d.ts +2 -10
  315. package/dist/indicators/panel/StdDev.d.ts.map +1 -1
  316. package/dist/indicators/panel/Stochastic.d.ts +2 -12
  317. package/dist/indicators/panel/Stochastic.d.ts.map +1 -1
  318. package/dist/indicators/panel/StochasticMomentumIndex.d.ts +12 -0
  319. package/dist/indicators/panel/StochasticMomentumIndex.d.ts.map +1 -0
  320. package/dist/indicators/panel/StochasticRSI.d.ts +2 -13
  321. package/dist/indicators/panel/StochasticRSI.d.ts.map +1 -1
  322. package/dist/indicators/panel/TRIX.d.ts +2 -11
  323. package/dist/indicators/panel/TRIX.d.ts.map +1 -1
  324. package/dist/indicators/panel/TSI.d.ts +2 -12
  325. package/dist/indicators/panel/TSI.d.ts.map +1 -1
  326. package/dist/indicators/panel/TrendStrengthIndex.d.ts +9 -0
  327. package/dist/indicators/panel/TrendStrengthIndex.d.ts.map +1 -0
  328. package/dist/indicators/panel/UlcerIndex.d.ts +15 -0
  329. package/dist/indicators/panel/UlcerIndex.d.ts.map +1 -0
  330. package/dist/indicators/panel/UltimateOscillator.d.ts +2 -12
  331. package/dist/indicators/panel/UltimateOscillator.d.ts.map +1 -1
  332. package/dist/indicators/panel/VROC.d.ts +2 -10
  333. package/dist/indicators/panel/VROC.d.ts.map +1 -1
  334. package/dist/indicators/panel/VolumeDelta.d.ts +2 -10
  335. package/dist/indicators/panel/VolumeDelta.d.ts.map +1 -1
  336. package/dist/indicators/panel/VolumeOscillator.d.ts +11 -0
  337. package/dist/indicators/panel/VolumeOscillator.d.ts.map +1 -0
  338. package/dist/indicators/panel/VolumeProfile.d.ts +2 -9
  339. package/dist/indicators/panel/VolumeProfile.d.ts.map +1 -1
  340. package/dist/indicators/panel/Vortex.d.ts +2 -10
  341. package/dist/indicators/panel/Vortex.d.ts.map +1 -1
  342. package/dist/indicators/panel/WilliamsAD.d.ts +2 -10
  343. package/dist/indicators/panel/WilliamsAD.d.ts.map +1 -1
  344. package/dist/indicators/panel/WilliamsR.d.ts +2 -10
  345. package/dist/indicators/panel/WilliamsR.d.ts.map +1 -1
  346. package/dist/indicators/plots.d.ts +49 -0
  347. package/dist/indicators/plots.d.ts.map +1 -0
  348. package/dist/indicators/registry.d.ts.map +1 -1
  349. package/dist/indicators/sources.d.ts +37 -0
  350. package/dist/indicators/sources.d.ts.map +1 -0
  351. package/dist/indicators/symbols/SymbolSeriesStore.d.ts +21 -0
  352. package/dist/indicators/symbols/SymbolSeriesStore.d.ts.map +1 -0
  353. package/dist/indicators/symbols/symbolIndicators.d.ts +34 -0
  354. package/dist/indicators/symbols/symbolIndicators.d.ts.map +1 -0
  355. package/dist/interaction/CrosshairHandler.d.ts +31 -4
  356. package/dist/interaction/CrosshairHandler.d.ts.map +1 -1
  357. package/dist/interaction/CrosshairTooltip.d.ts +16 -9
  358. package/dist/interaction/CrosshairTooltip.d.ts.map +1 -1
  359. package/dist/interaction/InteractionManager.d.ts +69 -1
  360. package/dist/interaction/InteractionManager.d.ts.map +1 -1
  361. package/dist/interaction/PaneResizeHandler.d.ts.map +1 -1
  362. package/dist/interaction/PinnedTooltip.d.ts +9 -1
  363. package/dist/interaction/PinnedTooltip.d.ts.map +1 -1
  364. package/dist/interaction/PriceAxisAddButton.d.ts +17 -0
  365. package/dist/interaction/PriceAxisAddButton.d.ts.map +1 -0
  366. package/dist/interaction/ZoomHandler.d.ts +8 -0
  367. package/dist/interaction/ZoomHandler.d.ts.map +1 -1
  368. package/dist/interaction/index.d.ts +2 -0
  369. package/dist/interaction/index.d.ts.map +1 -1
  370. package/dist/realtime/CurrentPriceLine.d.ts.map +1 -1
  371. package/dist/realtime/StreamManager.d.ts +5 -0
  372. package/dist/realtime/StreamManager.d.ts.map +1 -1
  373. package/dist/realtime/TickAggregator.d.ts.map +1 -1
  374. package/dist/realtime/TickBars.d.ts +58 -0
  375. package/dist/realtime/TickBars.d.ts.map +1 -0
  376. package/dist/realtime/adapters/BinanceAdapter.d.ts +24 -1
  377. package/dist/realtime/adapters/BinanceAdapter.d.ts.map +1 -1
  378. package/dist/realtime/adapters/BybitAdapter.d.ts +3 -1
  379. package/dist/realtime/adapters/BybitAdapter.d.ts.map +1 -1
  380. package/dist/realtime/adapters/CoinbaseAdapter.d.ts.map +1 -1
  381. package/dist/realtime/adapters/KrakenAdapter.d.ts.map +1 -1
  382. package/dist/realtime/adapters/MockAdapter.d.ts +19 -1
  383. package/dist/realtime/adapters/MockAdapter.d.ts.map +1 -1
  384. package/dist/realtime/adapters/PollingAdapter.d.ts +14 -1
  385. package/dist/realtime/adapters/PollingAdapter.d.ts.map +1 -1
  386. package/dist/realtime/adapters/ResamplingAdapter.d.ts +84 -0
  387. package/dist/realtime/adapters/ResamplingAdapter.d.ts.map +1 -0
  388. package/dist/realtime/adapters/WebSocketAdapter.d.ts +14 -1
  389. package/dist/realtime/adapters/WebSocketAdapter.d.ts.map +1 -1
  390. package/dist/realtime/adapters/binanceTypes.d.ts +10 -1
  391. package/dist/realtime/adapters/binanceTypes.d.ts.map +1 -1
  392. package/dist/realtime/adapters/index.d.ts +1 -0
  393. package/dist/realtime/adapters/index.d.ts.map +1 -1
  394. package/dist/realtime/index.d.ts +1 -0
  395. package/dist/realtime/index.d.ts.map +1 -1
  396. package/dist/trading/BracketTool.d.ts.map +1 -1
  397. package/dist/trading/OrderDraftTool.d.ts.map +1 -1
  398. package/dist/trading/OrderRenderer.d.ts +2 -1
  399. package/dist/trading/OrderRenderer.d.ts.map +1 -1
  400. package/dist/trading/PaperExecutionAdapter.d.ts +17 -3
  401. package/dist/trading/PaperExecutionAdapter.d.ts.map +1 -1
  402. package/dist/trading/PositionRenderer.d.ts +6 -1
  403. package/dist/trading/PositionRenderer.d.ts.map +1 -1
  404. package/dist/trading/TradingContextMenu.d.ts +1 -1
  405. package/dist/trading/TradingContextMenu.d.ts.map +1 -1
  406. package/dist/trading/TradingManager.d.ts +23 -2
  407. package/dist/trading/TradingManager.d.ts.map +1 -1
  408. package/dist/trading/fillMarks.d.ts +14 -0
  409. package/dist/trading/fillMarks.d.ts.map +1 -0
  410. package/dist/trading/lineButtons.d.ts +31 -0
  411. package/dist/trading/lineButtons.d.ts.map +1 -0
  412. package/dist/trading/positionFormat.d.ts +1 -1
  413. package/dist/trading/positionFormat.d.ts.map +1 -1
  414. package/dist/ui/BarCountdown.d.ts.map +1 -1
  415. package/dist/ui/ChartLegend.d.ts +6 -0
  416. package/dist/ui/ChartLegend.d.ts.map +1 -1
  417. package/dist/ui/PriceLines.d.ts +38 -0
  418. package/dist/ui/PriceLines.d.ts.map +1 -0
  419. package/dist/ui/SessionBreaks.d.ts +4 -1
  420. package/dist/ui/SessionBreaks.d.ts.map +1 -1
  421. package/dist/ui/SessionShading.d.ts +2 -0
  422. package/dist/ui/SessionShading.d.ts.map +1 -1
  423. package/dist/ui/axisValueLabels.d.ts +35 -0
  424. package/dist/ui/axisValueLabels.d.ts.map +1 -0
  425. package/dist/ui/index.d.ts +6 -1
  426. package/dist/ui/index.d.ts.map +1 -1
  427. package/dist/ui/sessionHours.d.ts +12 -2
  428. package/dist/ui/sessionHours.d.ts.map +1 -1
  429. package/dist/ui/shapes.d.ts +9 -0
  430. package/dist/ui/shapes.d.ts.map +1 -0
  431. package/dist/viewport/ScaleMapping.d.ts +20 -0
  432. package/dist/viewport/ScaleMapping.d.ts.map +1 -1
  433. package/dist/viewport/Viewport.d.ts +38 -2
  434. package/dist/viewport/Viewport.d.ts.map +1 -1
  435. package/dist/viewport/index.d.ts +4 -2
  436. package/dist/viewport/index.d.ts.map +1 -1
  437. package/dist/viewport/rangePresets.d.ts +12 -0
  438. package/dist/viewport/rangePresets.d.ts.map +1 -0
  439. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { DataAdapter, DataAdapterConfig, DataAdapterEventType, DataAdapterListener, ConnectionState, OHLCBar, TimeFrame } from '@tradecanvas/commons';
1
+ import { DataAdapter, DataAdapterConfig, DataAdapterEventType, DataAdapterListener, ConnectionState, OHLCBar, Quote, Trade, SymbolInfo, SymbolSearchOptions, TimeFrame } from '@tradecanvas/commons';
2
2
  export interface MockAdapterOptions {
3
3
  /** Base price to generate data around */
4
4
  basePrice?: number;
@@ -10,6 +10,8 @@ export interface MockAdapterOptions {
10
10
  historySize?: number;
11
11
  /** Custom history generator */
12
12
  historyGenerator?: (symbol: string, timeframe: TimeFrame, limit: number) => OHLCBar[];
13
+ /** Symbols `searchSymbols` and `resolveSymbol` know. */
14
+ symbols?: SymbolInfo[];
13
15
  }
14
16
  /**
15
17
  * Mock data adapter for testing, demos, and markets without free APIs.
@@ -28,11 +30,27 @@ export declare class MockAdapter implements DataAdapter {
28
30
  private options;
29
31
  private tickTimer;
30
32
  private currentPrice;
33
+ /** Open of the oldest bar handed out per symbol, where its next older page ends. */
34
+ private oldestOpen;
31
35
  constructor(options?: MockAdapterOptions);
32
36
  connect(config: DataAdapterConfig): void;
33
37
  disconnect(): void;
34
38
  getConnectionState(): ConnectionState;
39
+ /**
40
+ * Made-up quotes: a random walk per symbol around `basePrice` (each symbol
41
+ * starting at a price of its own), every symbol quoted at once and then each
42
+ * `tickInterval`.
43
+ */
44
+ subscribeQuotes(symbols: readonly string[], onQuotes: (quotes: Quote[]) => void): () => void;
45
+ /** Made-up recent trades: a walk around `basePrice`, a second apart, oldest first. */
46
+ fetchTrades(symbol: string, limit?: number): Promise<Trade[]>;
47
+ /** Made-up live trades, a few each `tickInterval`. */
48
+ subscribeTrades(symbol: string, onTrades: (trades: Trade[]) => void): () => void;
35
49
  fetchHistory(symbol: string, timeframe: TimeFrame, limit?: number): Promise<OHLCBar[]>;
50
+ /** Make up `limit` bars before `before` (ms) that lead into the oldest bar handed out. */
51
+ fetchHistoryBefore(symbol: string, timeframe: TimeFrame, before: number, limit: number): Promise<OHLCBar[]>;
52
+ searchSymbols(query: string, options?: SymbolSearchOptions): Promise<SymbolInfo[]>;
53
+ resolveSymbol(symbol: string): Promise<SymbolInfo | null>;
36
54
  on<T = unknown>(event: DataAdapterEventType, listener: DataAdapterListener<T>): void;
37
55
  off<T = unknown>(event: DataAdapterEventType, listener: DataAdapterListener<T>): void;
38
56
  dispose(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"MockAdapter.d.ts","sourceRoot":"","sources":["../../../src/realtime/adapters/MockAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,OAAO,EACP,SAAS,EACV,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;CACvF;AAED;;;;;;;;GAQG;AACH,qBAAa,WAAY,YAAW,WAAW;IAC7C,QAAQ,CAAC,IAAI,UAAU;IAEvB,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,SAAS,CAA6D;IAC9E,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,YAAY,CAAS;gBAEjB,OAAO,CAAC,EAAE,kBAAkB;IAWxC,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAOxC,UAAU,IAAI,IAAI;IAMlB,kBAAkB,IAAI,eAAe;IAI/B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAO5F,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAMpF,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIrF,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,YAAY;IAgCpB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,SAAS;CAOlB"}
1
+ {"version":3,"file":"MockAdapter.d.ts","sourceRoot":"","sources":["../../../src/realtime/adapters/MockAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,OAAO,EACP,KAAK,EACL,KAAK,EACL,UAAU,EACV,mBAAmB,EACnB,SAAS,EACV,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;IACtF,wDAAwD;IACxD,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,qBAAa,WAAY,YAAW,WAAW;IAC7C,QAAQ,CAAC,IAAI,UAAU;IAEvB,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,SAAS,CAA6D;IAC9E,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,YAAY,CAAS;IAC7B,oFAAoF;IACpF,OAAO,CAAC,UAAU,CAA6B;gBAEnC,OAAO,CAAC,EAAE,kBAAkB;IAWxC,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAOxC,UAAU,IAAI,IAAI;IAMlB,kBAAkB,IAAI,eAAe;IAIrC;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IA+B5F,sFAAsF;IAChF,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAajE,sDAAsD;IACtD,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAc1E,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAQ5F,0FAA0F;IACpF,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAkB3G,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIlF,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAI/D,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAMpF,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIrF,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,YAAY;IAgCpB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,SAAS;CAOlB"}
@@ -1,9 +1,17 @@
1
- import { DataAdapter, DataAdapterConfig, DataAdapterEventType, DataAdapterListener, ConnectionState, OHLCBar, TimeFrame } from '@tradecanvas/commons';
1
+ import { DataAdapter, DataAdapterConfig, DataAdapterEventType, DataAdapterListener, ConnectionState, OHLCBar, SymbolInfo, SymbolSearchOptions, TimeFrame } from '@tradecanvas/commons';
2
2
  export interface PollingAdapterOptions {
3
3
  /** Adapter name, e.g. `'coinbase'`. */
4
4
  name: string;
5
+ /** Timeframes the feed serves; charts build the others from these. Leave out if it serves all. */
6
+ supportedTimeframes?: readonly TimeFrame[];
5
7
  /** Fetch recent bars (ascending by time). Drives both history and polling. */
6
8
  fetchBars: (symbol: string, timeframe: TimeFrame, limit: number) => Promise<OHLCBar[]>;
9
+ /** Fetch bars older than `before`, ascending — enables scrolling back for more history. */
10
+ fetchHistoryBefore?: (symbol: string, timeframe: TimeFrame, before: number, limit: number) => Promise<OHLCBar[]>;
11
+ /** Symbols matching a query, best first — for a symbol search box. */
12
+ searchSymbols?: (query: string, options?: SymbolSearchOptions) => Promise<SymbolInfo[]>;
13
+ /** What the feed knows about a symbol, or null. */
14
+ resolveSymbol?: (symbol: string) => Promise<SymbolInfo | null>;
7
15
  /** Poll interval in ms (default 5000). */
8
16
  intervalMs?: number;
9
17
  /** Bars to request each poll — ≥2 so a rollover's closing bar is included (default 2). */
@@ -27,12 +35,17 @@ export interface PollingAdapterOptions {
27
35
  */
28
36
  export declare class PollingAdapter implements DataAdapter {
29
37
  readonly name: string;
38
+ readonly supportedTimeframes?: readonly TimeFrame[];
30
39
  private state;
31
40
  private listeners;
32
41
  private config;
33
42
  private timer;
34
43
  private lastBarTime;
35
44
  private readonly opts;
45
+ /** Present when the options give a way to fetch older bars. */
46
+ readonly fetchHistoryBefore?: (symbol: string, timeframe: TimeFrame, before: number, limit: number) => Promise<OHLCBar[]>;
47
+ readonly searchSymbols?: (query: string, options?: SymbolSearchOptions) => Promise<SymbolInfo[]>;
48
+ readonly resolveSymbol?: (symbol: string) => Promise<SymbolInfo | null>;
36
49
  constructor(opts: PollingAdapterOptions);
37
50
  connect(config: DataAdapterConfig): void;
38
51
  disconnect(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"PollingAdapter.d.ts","sourceRoot":"","sources":["../../../src/realtime/adapters/PollingAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,OAAO,EACP,SAAS,EACV,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,qBAAqB;IACpC,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACvF,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kFAAkF;IAClF,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACtD,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC3C;AAED;;;;;;;;;;GAUG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,SAAS,CAA6D;IAC9E,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;gBAEjC,IAAI,EAAE,qBAAqB;IAKvC,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAQxC,UAAU,IAAI,IAAI;IAMlB,kBAAkB,IAAI,eAAe;IAIrC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAItF,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IASpF,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIrF,OAAO,IAAI,IAAI;IAKf,4EAA4E;IACtE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B3B,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,SAAS;CAOlB"}
1
+ {"version":3,"file":"PollingAdapter.d.ts","sourceRoot":"","sources":["../../../src/realtime/adapters/PollingAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { ConnectionState, DataAdapter, DataAdapterConfig, DataAdapterEventType, DataAdapterListener, NewsItem, OHLCBar, Quote, SymbolInfo, SymbolSearchOptions, TimeFrame, Trade } from '@tradecanvas/commons';
2
+ /** Most requests one history call makes to the feed; beyond it fewer bars come back. */
3
+ export declare const MAX_BASE_REQUESTS = 10;
4
+ /** Most base bars one target bar may take (1440 = a day from minutes). */
5
+ export declare const MAX_BASE_RATIO = 1440;
6
+ /**
7
+ * The adapter itself when it serves every timeframe (no
8
+ * `supportedTimeframes`), else one `ResamplingAdapter` around it — the same
9
+ * one on every call.
10
+ */
11
+ export declare function withResampling(adapter: DataAdapter): DataAdapter;
12
+ /**
13
+ * Whether `adapter` can serve `timeframe`: it serves every timeframe, lists
14
+ * it, or can build it from one it lists without needing more than
15
+ * `MAX_BASE_RATIO` of its bars per bar.
16
+ */
17
+ export declare function servesTimeframe(adapter: DataAdapter, timeframe: TimeFrame): boolean;
18
+ /**
19
+ * Serves timeframes a feed lacks by building them from one it has: 7m from
20
+ * 1m, 90m from 30m, a quarter from months.
21
+ *
22
+ * - History is fetched in the base timeframe, paging back through
23
+ * `fetchHistoryBefore` when one request holds too few bars (at most
24
+ * `MAX_BASE_REQUESTS` requests), and merged per bucket.
25
+ * - Live base bars are kept by time within the forming bucket, so a feed
26
+ * that never flags a bar closed, or repeats a frame, still builds it right.
27
+ * The bucket closes with its last base bar, or when the next bucket's first
28
+ * bar arrives. It starts from the base bars history served for it.
29
+ * - Timeframes the feed has pass straight through; one it cannot build is
30
+ * refused rather than served as another.
31
+ */
32
+ export declare class ResamplingAdapter implements DataAdapter {
33
+ private readonly inner;
34
+ private readonly baseTimeframes;
35
+ readonly name: string;
36
+ readonly fetchHistoryBefore?: (symbol: string, timeframe: TimeFrame, before: number, limit: number) => Promise<OHLCBar[]>;
37
+ readonly searchSymbols?: (query: string, options?: SymbolSearchOptions) => Promise<SymbolInfo[]>;
38
+ readonly resolveSymbol?: (symbol: string) => Promise<SymbolInfo | null>;
39
+ readonly subscribeQuotes?: (symbols: readonly string[], onQuotes: (quotes: Quote[]) => void) => () => void;
40
+ readonly fetchNews?: (symbol: string, limit?: number) => Promise<NewsItem[]>;
41
+ readonly fetchTrades?: (symbol: string, limit?: number) => Promise<Trade[]>;
42
+ readonly subscribeTrades?: (symbol: string, onTrades: (trades: Trade[]) => void) => () => void;
43
+ private readonly listeners;
44
+ private readonly unsubscribe;
45
+ /** The live subscription: target and base timeframes when they differ. */
46
+ private live;
47
+ private bucket;
48
+ /** The forming bucket's base bars, by time. */
49
+ private parts;
50
+ private tail;
51
+ /** Bumped by connect and disconnect: history paging in progress stops. */
52
+ private generation;
53
+ constructor(inner: DataAdapter, baseTimeframes: readonly TimeFrame[]);
54
+ /** The timeframe to fetch for `timeframe`: itself when served, else the closest one that builds it. */
55
+ baseFor(timeframe: TimeFrame): TimeFrame;
56
+ connect(config: DataAdapterConfig): void;
57
+ disconnect(): void;
58
+ getConnectionState(): ConnectionState;
59
+ fetchHistory(symbol: string, timeframe: TimeFrame, limit?: number): Promise<OHLCBar[]>;
60
+ on<T = unknown>(event: DataAdapterEventType, listener: DataAdapterListener<T>): void;
61
+ off<T = unknown>(event: DataAdapterEventType, listener: DataAdapterListener<T>): void;
62
+ dispose(): void;
63
+ private historyBefore;
64
+ /** Base bars for `limit` target bars, plus one bucket for a partial first one. */
65
+ private baseBarsFor;
66
+ /**
67
+ * Page back until `want` base bars are in, the history starts, the feed
68
+ * stops going back, the request budget is spent, or the adapter
69
+ * (re)connected or disconnected meanwhile.
70
+ */
71
+ private extendBack;
72
+ /** Merge into target buckets, drop a first bucket the bars start inside, keep the newest `limit`. */
73
+ private toTarget;
74
+ /** Keep the newest bucket's base bars, for the live stream to resume from. */
75
+ private rememberTail;
76
+ private resumeFromHistory;
77
+ private onBar;
78
+ /** The current bucket: its base bars merged in time order. */
79
+ private composed;
80
+ private resetBucket;
81
+ private listen;
82
+ private emit;
83
+ }
84
+ //# sourceMappingURL=ResamplingAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResamplingAdapter.d.ts","sourceRoot":"","sources":["../../../src/realtime/adapters/ResamplingAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DataAdapter, DataAdapterConfig, DataAdapterEventType, DataAdapterListener, ConnectionState, OHLCBar, RawTick, TimeFrame } from '@tradecanvas/commons';
1
+ import { DataAdapter, DataAdapterConfig, DataAdapterEventType, DataAdapterListener, ConnectionState, OHLCBar, SymbolInfo, SymbolSearchOptions, RawTick, TimeFrame } from '@tradecanvas/commons';
2
2
  /** Minimal structural subset of the browser WebSocket this base depends on. */
3
3
  export interface WebSocketLike {
4
4
  onopen: ((ev: unknown) => void) | null;
@@ -24,10 +24,18 @@ export interface WsParseResult {
24
24
  export interface WebSocketAdapterOptions {
25
25
  /** Adapter name, e.g. `'bybit'`. */
26
26
  name: string;
27
+ /** Timeframes the feed serves; charts build the others from these. Leave out if it serves all. */
28
+ supportedTimeframes?: readonly TimeFrame[];
27
29
  /** Build the WS URL for a connection. */
28
30
  wsUrl: (config: DataAdapterConfig) => string;
29
31
  /** Fetch historical bars (REST), ascending by time. */
30
32
  fetchHistory: (symbol: string, timeframe: TimeFrame, limit: number) => Promise<OHLCBar[]>;
33
+ /** Fetch bars older than `before`, ascending — enables scrolling back for more history. */
34
+ fetchHistoryBefore?: (symbol: string, timeframe: TimeFrame, before: number, limit: number) => Promise<OHLCBar[]>;
35
+ /** Symbols matching a query, best first — for a symbol search box. */
36
+ searchSymbols?: (query: string, options?: SymbolSearchOptions) => Promise<SymbolInfo[]>;
37
+ /** What the feed knows about a symbol, or null. */
38
+ resolveSymbol?: (symbol: string) => Promise<SymbolInfo | null>;
31
39
  /** Decode a raw frame into a bar/tick; return null/undefined to ignore. */
32
40
  parseMessage: (raw: unknown, config: DataAdapterConfig) => WsParseResult | null | undefined;
33
41
  /** Message(s) to send on open to subscribe (sent as JSON unless a string). */
@@ -56,11 +64,16 @@ export interface WebSocketAdapterOptions {
56
64
  */
57
65
  export declare class WebSocketAdapter implements DataAdapter {
58
66
  readonly name: string;
67
+ readonly supportedTimeframes?: readonly TimeFrame[];
59
68
  protected ws: WebSocketLike | null;
60
69
  protected state: ConnectionState;
61
70
  protected config: DataAdapterConfig | null;
62
71
  private listeners;
63
72
  private readonly opts;
73
+ /** Present when the options give a way to fetch older bars. */
74
+ readonly fetchHistoryBefore?: (symbol: string, timeframe: TimeFrame, before: number, limit: number) => Promise<OHLCBar[]>;
75
+ readonly searchSymbols?: (query: string, options?: SymbolSearchOptions) => Promise<SymbolInfo[]>;
76
+ readonly resolveSymbol?: (symbol: string) => Promise<SymbolInfo | null>;
64
77
  constructor(opts: WebSocketAdapterOptions);
65
78
  connect(config: DataAdapterConfig): void;
66
79
  disconnect(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"WebSocketAdapter.d.ts","sourceRoot":"","sources":["../../../src/realtime/adapters/WebSocketAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebSocketAdapter.d.ts","sourceRoot":"","sources":["../../../src/realtime/adapters/WebSocketAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { OHLCBar } from '@tradecanvas/commons';
1
+ import { OHLCBar, Quote, Trade } from '@tradecanvas/commons';
2
2
  /**
3
3
  * Binance REST `/klines` returns a 12-element array per kline.
4
4
  * Index map (per Binance docs):
@@ -55,4 +55,13 @@ export declare function parseWsKline(raw: unknown): {
55
55
  bar: OHLCBar;
56
56
  closed: boolean;
57
57
  } | null;
58
+ /**
59
+ * A 24 h mini-ticker frame (the combined stream's `{ stream, data }` or the
60
+ * bare event) as a quote: the change is over the last 24 hours.
61
+ */
62
+ export declare function parseMiniTicker(raw: unknown): Quote | null;
63
+ /** A REST 24 h ticker (`/ticker/24hr`) as a quote. */
64
+ export declare function parseRestTicker(raw: unknown): Quote | null;
65
+ /** An aggregate trade (REST `aggTrades` row or stream frame) as a trade. */
66
+ export declare function parseAggTrade(raw: unknown): Trade | null;
58
67
  //# sourceMappingURL=binanceTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"binanceTypes.d.ts","sourceRoot":"","sources":["../../../src/realtime/adapters/binanceTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS;IACtC,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC;AAEF,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,OAAO,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,cAAc,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAc3D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,OAAO,GACX;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAe1C"}
1
+ {"version":3,"file":"binanceTypes.d.ts","sourceRoot":"","sources":["../../../src/realtime/adapters/binanceTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGlE;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS;IACtC,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC;AAEF,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,OAAO,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,cAAc,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAc3D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,OAAO,GACX;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAe1C;AAuBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,CAc1D;AAED,sDAAsD;AACtD,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,CAiB1D;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,CAOxD"}
@@ -11,4 +11,5 @@ export { BybitAdapter } from './BybitAdapter.js';
11
11
  export type { BybitAdapterOptions } from './BybitAdapter.js';
12
12
  export { KrakenAdapter } from './KrakenAdapter.js';
13
13
  export type { KrakenAdapterOptions } from './KrakenAdapter.js';
14
+ export { ResamplingAdapter, withResampling, servesTimeframe, MAX_BASE_REQUESTS, MAX_BASE_RATIO } from './ResamplingAdapter.js';
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/realtime/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EACV,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/realtime/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EACV,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
@@ -2,6 +2,7 @@ export { Emitter } from './Emitter.js';
2
2
  export { TickAggregator } from './TickAggregator.js';
3
3
  export { ReconnectManager } from './ReconnectManager.js';
4
4
  export { StreamManager } from './StreamManager.js';
5
+ export { TickBarBuilder, TickBarAdapter, withTickBars, hasTrades } from './TickBars.js';
5
6
  export type { StreamEvents } from './StreamManager.js';
6
7
  export { CurrentPriceLine } from './CurrentPriceLine.js';
7
8
  export { ReplayController } from './ReplayController.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/realtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,YAAY,GACb,MAAM,uBAAuB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/realtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACxF,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,YAAY,GACb,MAAM,uBAAuB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"BracketTool.d.ts","sourceRoot":"","sources":["../../src/trading/BracketTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGnF,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,sBAA2B,GAChC,YAAY,CASd;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAI7D;AAID;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,QAAQ,CAAyB;gBAE7B,QAAQ,GAAE,sBAA2B;IAIjD,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK3C,MAAM,IAAI,IAAI;IAKd,QAAQ,IAAI,OAAO;IAInB,QAAQ,IAAI,YAAY,GAAG,IAAI;IAI/B,kDAAkD;IAClD,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI;IAgBlE,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAOvD,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAOlD,OAAO,IAAI,IAAI;IAIf,UAAU,IAAI,OAAO;IAIrB,OAAO,CAAC,OAAO;IAKf,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,SAAI,GAAG,IAAI;CA4CvG"}
1
+ {"version":3,"file":"BracketTool.d.ts","sourceRoot":"","sources":["../../src/trading/BracketTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAInF,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,sBAA2B,GAChC,YAAY,CASd;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAI7D;AAID;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,QAAQ,CAAyB;gBAE7B,QAAQ,GAAE,sBAA2B;IAIjD,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK3C,MAAM,IAAI,IAAI;IAKd,QAAQ,IAAI,OAAO;IAInB,QAAQ,IAAI,YAAY,GAAG,IAAI;IAI/B,kDAAkD;IAClD,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI;IAgBlE,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAOvD,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAOlD,OAAO,IAAI,IAAI;IAIf,UAAU,IAAI,OAAO;IAIrB,OAAO,CAAC,OAAO;IAKf,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,SAAI,GAAG,IAAI;CA6CvG"}
@@ -1 +1 @@
1
- {"version":3,"file":"OrderDraftTool.d.ts","sourceRoot":"","sources":["../../src/trading/OrderDraftTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,aAAa,EACb,KAAK,EACN,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,SAAS,CAIX;AAID;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,QAAQ,CAAS;IAEzB,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,IAAI;IAKzD,MAAM,IAAI,IAAI;IAKd,QAAQ,IAAI,OAAO;IAInB,UAAU,IAAI,OAAO;IAIrB,QAAQ,IAAI,UAAU,GAAG,IAAI;IAI7B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAMhC,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB,GAAG,IAAI;IAU7D,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAKrD,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAMvD,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAKlD,OAAO,IAAI,IAAI;IAIf,MAAM,CACJ,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,cAAc,SAAI,GACjB,IAAI;CA2BR"}
1
+ {"version":3,"file":"OrderDraftTool.d.ts","sourceRoot":"","sources":["../../src/trading/OrderDraftTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,aAAa,EACb,KAAK,EACN,MAAM,sBAAsB,CAAC;AAI9B,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,SAAS,CAIX;AAID;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,QAAQ,CAAS;IAEzB,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,IAAI;IAKzD,MAAM,IAAI,IAAI;IAKd,QAAQ,IAAI,OAAO;IAInB,UAAU,IAAI,OAAO;IAIrB,QAAQ,IAAI,UAAU,GAAG,IAAI;IAI7B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAMhC,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB,GAAG,IAAI;IAU7D,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAKrD,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAMvD,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAKlD,OAAO,IAAI,IAAI;IAIf,MAAM,CACJ,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,cAAc,SAAI,GACjB,IAAI;CA2BR"}
@@ -1,4 +1,5 @@
1
1
  import { TradingOrder, TradingConfig, ViewportState, Theme } from '@tradecanvas/commons';
2
+ import { LineButton } from './lineButtons.js';
2
3
  export interface DragState {
3
4
  orderId: string;
4
5
  sourceType: 'order' | 'stopLoss' | 'takeProfit';
@@ -6,7 +7,7 @@ export interface DragState {
6
7
  currentPrice: number;
7
8
  }
8
9
  export declare class OrderRenderer {
9
- render(ctx: CanvasRenderingContext2D, orders: TradingOrder[], viewport: ViewportState, theme: Theme, config: TradingConfig, dragState: DragState | null): void;
10
+ render(ctx: CanvasRenderingContext2D, orders: TradingOrder[], viewport: ViewportState, theme: Theme, config: TradingConfig, dragState: DragState | null, buttons?: LineButton[]): void;
10
11
  /**
11
12
  * Draw order price badges on the price axis. Called after the price axis
12
13
  * so they paint ON TOP of the regular axis tick labels.
@@ -1 +1 @@
1
- {"version":3,"file":"OrderRenderer.d.ts","sourceRoot":"","sources":["../../src/trading/OrderRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAI9F,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,aAAa;IACxB,MAAM,CACJ,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,YAAY,EAAE,EACtB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,SAAS,GAAG,IAAI,GAC1B,IAAI;IAqEP;;;OAGG;IACH,gBAAgB,CACd,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,YAAY,EAAE,EACtB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,SAAS,GAAG,IAAI,GAC1B,IAAI;IA0BP,OAAO,CACL,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,YAAY,EAAE,EACtB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,MAAM,GAChB,YAAY,GAAG,IAAI;CAQvB"}
1
+ {"version":3,"file":"OrderRenderer.d.ts","sourceRoot":"","sources":["../../src/trading/OrderRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG9F,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMpE,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,aAAa;IACxB,MAAM,CACJ,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,YAAY,EAAE,EACtB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,OAAO,GAAE,UAAU,EAAO,GACzB,IAAI;IA6EP;;;OAGG;IACH,gBAAgB,CACd,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,YAAY,EAAE,EACtB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,SAAS,GAAG,IAAI,GAC1B,IAAI;IA0BP,OAAO,CACL,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,YAAY,EAAE,EACtB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,MAAM,GAChB,YAAY,GAAG,IAAI;CAQvB"}
@@ -1,4 +1,4 @@
1
- import { ExecutionAdapter, ExecutionConfig, ExecutionEventType, ExecutionListener, ConnectionState, TradingOrder, TradingPosition, OrderPlaceIntent, OrderModifyIntent, OrderCancelIntent, PositionModifyIntent, PositionCloseIntent } from '@tradecanvas/commons';
1
+ import { ExecutionAdapter, ExecutionConfig, ExecutionEventType, ExecutionListener, ConnectionState, TradingOrder, TradingPosition, OrderPlaceIntent, OrderModifyIntent, OrderCancelIntent, PositionModifyIntent, PositionCloseIntent, PositionReverseIntent } from '@tradecanvas/commons';
2
2
  export interface PaperExecutionOptions {
3
3
  /** Mark price used to fill market orders before `setMarkPrice` is called. */
4
4
  markPrice?: number;
@@ -7,6 +7,8 @@ export interface PaperExecutionOptions {
7
7
  * Reference in-memory `ExecutionAdapter`: virtual fills, hedging-style
8
8
  * positions (one position per filled order), and pending limit/stop orders
9
9
  * triggered via `setMarkPrice()`. SL/TP auto-close when the mark crosses them.
10
+ * Every fill is reported, closes included (with the profit or loss they
11
+ * realise), so a host can keep a trade history.
10
12
  *
11
13
  * The safe sandbox for demos and tests, and the shape real broker adapters
12
14
  * mirror. No network, no real money.
@@ -18,13 +20,21 @@ export declare class PaperExecutionAdapter implements ExecutionAdapter {
18
20
  private orders;
19
21
  private positions;
20
22
  private markPrice;
23
+ /** The mark's time (ms), when the caller gives one (a replay). */
24
+ private markTime;
21
25
  private seq;
22
26
  constructor(options?: PaperExecutionOptions);
23
27
  connect(_config: ExecutionConfig): void;
24
28
  disconnect(): void;
25
29
  getConnectionState(): ConnectionState;
26
- /** Feed the latest traded price; fills triggered limit/stop orders and SL/TP. */
27
- setMarkPrice(price: number): void;
30
+ /**
31
+ * Feed the latest traded price, and its time (fills are stamped with it: a
32
+ * replay's fills land on the replayed bars; without one, fills are stamped
33
+ * now); fills triggered limit/stop orders and SL/TP.
34
+ */
35
+ setMarkPrice(price: number, time?: number): void;
36
+ /** When fills happen: the mark's time when one was given, else now. */
37
+ private fillTime;
28
38
  getOrders(): TradingOrder[];
29
39
  getPositions(): TradingPosition[];
30
40
  placeOrder(intent: OrderPlaceIntent): Promise<TradingOrder>;
@@ -32,10 +42,14 @@ export declare class PaperExecutionAdapter implements ExecutionAdapter {
32
42
  cancelOrder(intent: OrderCancelIntent): Promise<void>;
33
43
  modifyPosition(intent: PositionModifyIntent): Promise<void>;
34
44
  closePosition(intent: PositionCloseIntent): Promise<void>;
45
+ /** Close a position at the mark and open the same size the other way. */
46
+ reversePosition(intent: PositionReverseIntent): Promise<void>;
35
47
  on<T = unknown>(event: ExecutionEventType, listener: ExecutionListener<T>): void;
36
48
  off<T = unknown>(event: ExecutionEventType, listener: ExecutionListener<T>): void;
37
49
  dispose(): void;
38
50
  private fill;
51
+ /** Take a position off the book at `price`, reporting the fill and what it realised. */
52
+ private close;
39
53
  private checkPendingOrders;
40
54
  private isTriggered;
41
55
  private checkStops;
@@ -1 +1 @@
1
- {"version":3,"file":"PaperExecutionAdapter.d.ts","sourceRoot":"","sources":["../../src/trading/PaperExecutionAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EAEjB,eAAe,EACf,YAAY,EACZ,eAAe,EAGf,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,qBAAqB;IACpC,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,QAAQ,CAAC,IAAI,WAAW;IAExB,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,SAAS,CAAyD;IAC1E,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,GAAG,CAAK;gBAEJ,OAAO,GAAE,qBAA0B;IAI/C,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAOvC,UAAU,IAAI,IAAI;IAKlB,kBAAkB,IAAI,eAAe;IAIrC,iFAAiF;IACjF,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMjC,SAAS,IAAI,YAAY,EAAE;IAI3B,YAAY,IAAI,eAAe,EAAE;IAI3B,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAqB3D,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa3D,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/D,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;IAShF,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIjF,OAAO,IAAI,IAAI;IASf,OAAO,CAAC,IAAI;IAsBZ,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,IAAI;CAOb"}
1
+ {"version":3,"file":"PaperExecutionAdapter.d.ts","sourceRoot":"","sources":["../../src/trading/PaperExecutionAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EAGjB,eAAe,EACf,YAAY,EACZ,eAAe,EAGf,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,qBAAqB;IACpC,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,QAAQ,CAAC,IAAI,WAAW;IAExB,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,SAAS,CAAyD;IAC1E,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,SAAS,CAAS;IAC1B,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,GAAG,CAAK;gBAEJ,OAAO,GAAE,qBAA0B;IAI/C,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAOvC,UAAU,IAAI,IAAI;IAKlB,kBAAkB,IAAI,eAAe;IAIrC;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAOhD,uEAAuE;IACvE,OAAO,CAAC,QAAQ;IAIhB,SAAS,IAAI,YAAY,EAAE;IAI3B,YAAY,IAAI,eAAe,EAAE;IAI3B,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAwB3D,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3D,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/D,yEAAyE;IACnE,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;IAShF,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIjF,OAAO,IAAI,IAAI;IASf,OAAO,CAAC,IAAI;IA0BZ,wFAAwF;IACxF,OAAO,CAAC,KAAK;IAgBb,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,IAAI;CAOb"}
@@ -1,6 +1,11 @@
1
1
  import { TradingPosition, TradingConfig, ViewportState, Theme } from '@tradecanvas/commons';
2
+ import { LineButton } from './lineButtons.js';
2
3
  export declare class PositionRenderer {
3
- render(ctx: CanvasRenderingContext2D, positions: TradingPosition[], currentPrice: number | null, viewport: ViewportState, theme: Theme, config: TradingConfig): void;
4
+ render(ctx: CanvasRenderingContext2D, positions: TradingPosition[], currentPrice: number | null, viewport: ViewportState, theme: Theme, config: TradingConfig, buttons?: LineButton[]): void;
5
+ /** ⇅ reverses the position, × closes it; each one when switched on. */
6
+ private renderButtons;
7
+ /** × beside an SL or TP label removes that stop. */
8
+ private renderStopButton;
4
9
  /**
5
10
  * Draw position entry badges on the price axis. Called after the price axis
6
11
  * so they paint ON TOP of the regular axis tick labels.
@@ -1 +1 @@
1
- {"version":3,"file":"PositionRenderer.d.ts","sourceRoot":"","sources":["../../src/trading/PositionRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AASjG,qBAAa,gBAAgB;IAC3B,MAAM,CACJ,GAAG,EAAE,wBAAwB,EAC7B,SAAS,EAAE,eAAe,EAAE,EAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,aAAa,GACpB,IAAI;IA0GP;;;OAGG;IACH,gBAAgB,CACd,GAAG,EAAE,wBAAwB,EAC7B,SAAS,EAAE,eAAe,EAAE,EAC5B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,aAAa,GACpB,IAAI;CAiBR"}
1
+ {"version":3,"file":"PositionRenderer.d.ts","sourceRoot":"","sources":["../../src/trading/PositionRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAQjG,OAAO,EAAsC,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAavF,qBAAa,gBAAgB;IAC3B,MAAM,CACJ,GAAG,EAAE,wBAAwB,EAC7B,SAAS,EAAE,eAAe,EAAE,EAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,UAAU,EAAO,GACzB,IAAI;IAoHP,uEAAuE;IACvE,OAAO,CAAC,aAAa;IAwBrB,oDAAoD;IACpD,OAAO,CAAC,gBAAgB;IAcxB;;;OAGG;IACH,gBAAgB,CACd,GAAG,EAAE,wBAAwB,EAC7B,SAAS,EAAE,eAAe,EAAE,EAC5B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,aAAa,GACpB,IAAI;CAiBR"}
@@ -3,7 +3,7 @@ export declare class TradingContextMenu {
3
3
  private menuElement;
4
4
  private removeHandler;
5
5
  onItemSelect: ((intent: OrderPlaceIntent) => void) | null;
6
- show(pos: Point, price: number, container: HTMLElement, config: TradingConfig): void;
6
+ show(pos: Point, price: number, container: HTMLElement, config: TradingConfig, formatPrice?: (price: number) => string): void;
7
7
  hide(): void;
8
8
  destroy(): void;
9
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TradingContextMenu.d.ts","sourceRoot":"","sources":["../../src/trading/TradingContextMenu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAEnF,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,aAAa,CAA6B;IAClD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAEjE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAoEpF,IAAI,IAAI,IAAI;IAOZ,OAAO,IAAI,IAAI;CAIhB"}
1
+ {"version":3,"file":"TradingContextMenu.d.ts","sourceRoot":"","sources":["../../src/trading/TradingContextMenu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAEnF,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,aAAa,CAA6B;IAClD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAEjE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI;IAoE7H,IAAI,IAAI,IAAI;IAOZ,OAAO,IAAI,IAAI;CAIhB"}
@@ -1,4 +1,4 @@
1
- import { TradingOrder, TradingPosition, DepthData, TradingConfig, ViewportState, Theme, Point, OrderSide } from '@tradecanvas/commons';
1
+ import { TradingOrder, TradingPosition, DepthData, TradingConfig, ViewportState, Theme, Point, FillEvent, OrderSide } from '@tradecanvas/commons';
2
2
  export declare class TradingManager {
3
3
  private orders;
4
4
  private positions;
@@ -12,6 +12,10 @@ export declare class TradingManager {
12
12
  private contextMenu;
13
13
  private bracket;
14
14
  private orderDraft;
15
+ /** The buttons on the lines as last drawn, for clicks and the cursor. */
16
+ private buttons;
17
+ private fills;
18
+ private realisedPnl;
15
19
  private requestRender;
16
20
  private eventCallback;
17
21
  private container;
@@ -21,9 +25,25 @@ export declare class TradingManager {
21
25
  setEventCallback(cb: (event: string, data: unknown) => void): void;
22
26
  setOrders(orders: TradingOrder[]): void;
23
27
  setPositions(positions: TradingPosition[]): void;
28
+ getOrders(): TradingOrder[];
29
+ getPositions(): TradingPosition[];
30
+ /** The latest price (`setCurrentPrice`), or null before the first. */
31
+ getCurrentPrice(): number | null;
24
32
  setDepthData(depth: DepthData | null): void;
25
33
  setCurrentPrice(price: number): void;
26
34
  setConfig(config: Partial<TradingConfig>): void;
35
+ /** Mark a fill on the chart (an execution adapter's `fill`). */
36
+ addFill(fill: FillEvent): void;
37
+ setFills(fills: readonly FillEvent[]): void;
38
+ /** The P&L the fills realised, all of them (the marks keep only the latest). */
39
+ getRealisedPnl(): number;
40
+ getFills(): FillEvent[];
41
+ /** The button pressed: it acts when released over it (dragging off cancels). */
42
+ private armed;
43
+ /** Whether `pos` is over a button on an order or position line. */
44
+ isOverButton(pos: Point): boolean;
45
+ /** A button's intent: cancel an order, close or reverse a position, remove a stop. */
46
+ private runButton;
27
47
  /** Begin placing a bracket (entry + SL + TP) at `entry` for `side`. */
28
48
  startBracket(side: OrderSide, entry: number): void;
29
49
  cancelBracket(): void;
@@ -40,7 +60,8 @@ export declare class TradingManager {
40
60
  isOverDraggableLine(pos: Point, viewport: ViewportState, tolerance?: number): boolean;
41
61
  onPointerDown(pos: Point, viewport: ViewportState): boolean;
42
62
  onPointerMove(pos: Point, viewport: ViewportState): boolean;
43
- onPointerUp(): boolean;
63
+ /** End a press; `pos` is where it ended (none when the pointer left: a pressed button does nothing). */
64
+ onPointerUp(pos?: Point): boolean;
44
65
  onContextMenu(pos: Point, viewport: ViewportState): boolean;
45
66
  render(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme): void;
46
67
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"TradingManager.d.ts","sourceRoot":"","sources":["../../src/trading/TradingManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,SAAS,EACT,aAAa,EACb,aAAa,EACb,KAAK,EACL,KAAK,EACN,MAAM,sBAAsB,CAAC;AAU9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,MAAM,CAAgB;IAE9B,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,UAAU,CAAwB;IAE1C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,aAAa,CAAyD;IAC9E,OAAO,CAAC,SAAS,CAA4B;gBAEjC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAS3C,YAAY,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAI1C,gBAAgB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAItC,gBAAgB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAMlE,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI;IAKvC,YAAY,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,IAAI;IAKhD,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI;IAK3C,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKpC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAO/C,uEAAuE;IACvE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlD,aAAa,IAAI,IAAI;IAMrB,kFAAkF;IAClF,cAAc,IAAI,OAAO;IAezB,eAAe,IAAI,OAAO;IAM1B,kEAAkE;IAClE,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKrD,gBAAgB,IAAI,IAAI;IAMxB,8EAA8E;IAC9E,iBAAiB,IAAI,OAAO;IAS5B,kBAAkB,IAAI,OAAO;IAI7B,qFAAqF;IACrF,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,SAAI,GAAG,OAAO;IAehF,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAc3D,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAiB3D,WAAW,IAAI,OAAO;IA+BtB,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAS3D,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IA6BlF;;;OAGG;IACH,gBAAgB,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAU5F,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"TradingManager.d.ts","sourceRoot":"","sources":["../../src/trading/TradingManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { FillEvent, TradingConfig, ViewportState } from '@tradecanvas/commons';
2
+ /**
3
+ * A fill's time on the bars' clock: fills are in milliseconds, bars may be in
4
+ * seconds.
5
+ */
6
+ export declare function fillBarTime(timeMs: number, viewport: ViewportState): number;
7
+ /**
8
+ * A small triangle at each fill's price and bar: under the price pointing up
9
+ * for a buy, over it pointing down for a sell. A fill that opened a position
10
+ * is solid; one that closed it (by hand, a reverse, its stop or target) is
11
+ * hollow.
12
+ */
13
+ export declare function renderFillMarks(ctx: CanvasRenderingContext2D, fills: readonly FillEvent[], viewport: ViewportState, config: TradingConfig): void;
14
+ //# sourceMappingURL=fillMarks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fillMarks.d.ts","sourceRoot":"","sources":["../../src/trading/fillMarks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAQpF;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAI3E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,aAAa,GACpB,IAAI,CA2BN"}
@@ -0,0 +1,31 @@
1
+ import { Point } from '@tradecanvas/commons';
2
+ /** What a button on an order or position line does. */
3
+ export type LineButtonAction = {
4
+ type: 'cancelOrder';
5
+ orderId: string;
6
+ } | {
7
+ type: 'closePosition';
8
+ positionId: string;
9
+ } | {
10
+ type: 'reversePosition';
11
+ positionId: string;
12
+ } | {
13
+ type: 'removeStop';
14
+ positionId: string;
15
+ which: 'stopLoss' | 'takeProfit';
16
+ };
17
+ /** A button drawn on a line, where it was drawn. */
18
+ export interface LineButton {
19
+ x: number;
20
+ y: number;
21
+ size: number;
22
+ action: LineButtonAction;
23
+ }
24
+ /** Whether two buttons do the same thing (to the same order or position). */
25
+ export declare function sameLineAction(a: LineButtonAction, b: LineButtonAction): boolean;
26
+ export declare function buttonAt(buttons: readonly LineButton[], pos: Point): LineButton | null;
27
+ /** A square button filled with `color`, a cross on it. */
28
+ export declare function drawCloseButton(ctx: CanvasRenderingContext2D, x: number, y: number, size: number, color: string): void;
29
+ /** A square button filled with `color`, an up and a down arrow on it (reverse). */
30
+ export declare function drawReverseButton(ctx: CanvasRenderingContext2D, x: number, y: number, size: number, color: string): void;
31
+ //# sourceMappingURL=lineButtons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lineButtons.d.ts","sourceRoot":"","sources":["../../src/trading/lineButtons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,uDAAuD;AACvD,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,GAAG,YAAY,CAAA;CAAE,CAAC;AAEjF,oDAAoD;AACpD,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAKD,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAKhF;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,UAAU,GAAG,IAAI,CAOtF;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,GAAG,EAAE,wBAAwB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAYtH;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,wBAAwB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAsBxH"}
@@ -3,7 +3,7 @@ import { PnLThreshold, PositionLabelContext, TradingPosition } from '@tradecanva
3
3
  * Compute live P&L context for a position. Pure — no canvas, no side effects.
4
4
  * `closedQuantity` is clamped into [0, quantity]; remaining open quantity drives the P&L.
5
5
  */
6
- export declare function buildPositionLabelContext(pos: TradingPosition, currentPrice: number, precision: number): PositionLabelContext;
6
+ export declare function buildPositionLabelContext(pos: TradingPosition, currentPrice: number, precision: number, formatPrice?: (price: number) => string): PositionLabelContext;
7
7
  export declare function formatPositionLabel(template: string, ctx: PositionLabelContext): string;
8
8
  export declare const DEFAULT_POSITION_LABEL = "{side} {qty} | P&L: {pnlSign}{pnl}";
9
9
  export declare function resolvePositionLabel(template: string | ((ctx: PositionLabelContext) => string) | undefined, ctx: PositionLabelContext): string;
@@ -1 +1 @@
1
- {"version":3,"file":"positionFormat.d.ts","sourceRoot":"","sources":["../../src/trading/positionFormat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,eAAe,EACpB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,oBAAoB,CAoBtB;AAID,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,oBAAoB,GACxB,MAAM,CAyBR;AAED,eAAO,MAAM,sBAAsB,uCACG,CAAC;AAEvC,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,oBAAoB,KAAK,MAAM,CAAC,GAAG,SAAS,EACtE,GAAG,EAAE,oBAAoB,GACxB,MAAM,CAGR;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,YAAY,EAAE,GAAG,SAAS,EACtC,QAAQ,EAAE,MAAM,GACf,MAAM,CASR"}
1
+ {"version":3,"file":"positionFormat.d.ts","sourceRoot":"","sources":["../../src/trading/positionFormat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,eAAe,EACpB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACtC,oBAAoB,CAqBtB;AAID,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,oBAAoB,GACxB,MAAM,CAyBR;AAED,eAAO,MAAM,sBAAsB,uCACG,CAAC;AAEvC,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,oBAAoB,KAAK,MAAM,CAAC,GAAG,SAAS,EACtE,GAAG,EAAE,oBAAoB,GACxB,MAAM,CAGR;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,YAAY,EAAE,GAAG,SAAS,EACtC,QAAQ,EAAE,MAAM,GACf,MAAM,CASR"}