@tradecanvas/core 0.1.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.
- package/dist/animation/Animator.d.ts +41 -0
- package/dist/animation/Animator.d.ts.map +1 -0
- package/dist/animation/index.d.ts +3 -0
- package/dist/animation/index.d.ts.map +1 -0
- package/dist/axis/GridRenderer.d.ts +8 -0
- package/dist/axis/GridRenderer.d.ts.map +1 -0
- package/dist/axis/PriceAxis.d.ts +5 -0
- package/dist/axis/PriceAxis.d.ts.map +1 -0
- package/dist/axis/TimeAxis.d.ts +5 -0
- package/dist/axis/TimeAxis.d.ts.map +1 -0
- package/dist/axis/index.d.ts +4 -0
- package/dist/axis/index.d.ts.map +1 -0
- package/dist/charts/AreaRenderer.d.ts +6 -0
- package/dist/charts/AreaRenderer.d.ts.map +1 -0
- package/dist/charts/BarRenderer.d.ts +6 -0
- package/dist/charts/BarRenderer.d.ts.map +1 -0
- package/dist/charts/BaselineRenderer.d.ts +14 -0
- package/dist/charts/BaselineRenderer.d.ts.map +1 -0
- package/dist/charts/CandlestickRenderer.d.ts +6 -0
- package/dist/charts/CandlestickRenderer.d.ts.map +1 -0
- package/dist/charts/ChartRenderer.d.ts +5 -0
- package/dist/charts/ChartRenderer.d.ts.map +1 -0
- package/dist/charts/CompareRenderer.d.ts +28 -0
- package/dist/charts/CompareRenderer.d.ts.map +1 -0
- package/dist/charts/HollowCandleRenderer.d.ts +10 -0
- package/dist/charts/HollowCandleRenderer.d.ts.map +1 -0
- package/dist/charts/KagiRenderer.d.ts +10 -0
- package/dist/charts/KagiRenderer.d.ts.map +1 -0
- package/dist/charts/LineRenderer.d.ts +6 -0
- package/dist/charts/LineRenderer.d.ts.map +1 -0
- package/dist/charts/PointAndFigureRenderer.d.ts +12 -0
- package/dist/charts/PointAndFigureRenderer.d.ts.map +1 -0
- package/dist/charts/RenkoRenderer.d.ts +10 -0
- package/dist/charts/RenkoRenderer.d.ts.map +1 -0
- package/dist/charts/VolumeRenderer.d.ts +14 -0
- package/dist/charts/VolumeRenderer.d.ts.map +1 -0
- package/dist/charts/index.d.ts +15 -0
- package/dist/charts/index.d.ts.map +1 -0
- package/dist/charts/transforms/heikinAshi.d.ts +10 -0
- package/dist/charts/transforms/heikinAshi.d.ts.map +1 -0
- package/dist/charts/transforms/index.d.ts +7 -0
- package/dist/charts/transforms/index.d.ts.map +1 -0
- package/dist/charts/transforms/kagi.d.ts +8 -0
- package/dist/charts/transforms/kagi.d.ts.map +1 -0
- package/dist/charts/transforms/lineBreak.d.ts +8 -0
- package/dist/charts/transforms/lineBreak.d.ts.map +1 -0
- package/dist/charts/transforms/pointAndFigure.d.ts +8 -0
- package/dist/charts/transforms/pointAndFigure.d.ts.map +1 -0
- package/dist/charts/transforms/renko.d.ts +13 -0
- package/dist/charts/transforms/renko.d.ts.map +1 -0
- package/dist/drawings/DrawingBase.d.ts +15 -0
- package/dist/drawings/DrawingBase.d.ts.map +1 -0
- package/dist/drawings/DrawingManager.d.ts +65 -0
- package/dist/drawings/DrawingManager.d.ts.map +1 -0
- package/dist/drawings/DrawingRenderer.d.ts +8 -0
- package/dist/drawings/DrawingRenderer.d.ts.map +1 -0
- package/dist/drawings/index.d.ts +5 -0
- package/dist/drawings/index.d.ts.map +1 -0
- package/dist/drawings/tools/AnchoredVWAP.d.ts +24 -0
- package/dist/drawings/tools/AnchoredVWAP.d.ts.map +1 -0
- package/dist/drawings/tools/Arrow.d.ts +12 -0
- package/dist/drawings/tools/Arrow.d.ts.map +1 -0
- package/dist/drawings/tools/DateRange.d.ts +12 -0
- package/dist/drawings/tools/DateRange.d.ts.map +1 -0
- package/dist/drawings/tools/ElliottWave.d.ts +12 -0
- package/dist/drawings/tools/ElliottWave.d.ts.map +1 -0
- package/dist/drawings/tools/Ellipse.d.ts +12 -0
- package/dist/drawings/tools/Ellipse.d.ts.map +1 -0
- package/dist/drawings/tools/ExtendedLine.d.ts +12 -0
- package/dist/drawings/tools/ExtendedLine.d.ts.map +1 -0
- package/dist/drawings/tools/FibExtension.d.ts +12 -0
- package/dist/drawings/tools/FibExtension.d.ts.map +1 -0
- package/dist/drawings/tools/FibRetracement.d.ts +12 -0
- package/dist/drawings/tools/FibRetracement.d.ts.map +1 -0
- package/dist/drawings/tools/GannBox.d.ts +12 -0
- package/dist/drawings/tools/GannBox.d.ts.map +1 -0
- package/dist/drawings/tools/GannFan.d.ts +12 -0
- package/dist/drawings/tools/GannFan.d.ts.map +1 -0
- package/dist/drawings/tools/HorizontalLine.d.ts +12 -0
- package/dist/drawings/tools/HorizontalLine.d.ts.map +1 -0
- package/dist/drawings/tools/Measure.d.ts +12 -0
- package/dist/drawings/tools/Measure.d.ts.map +1 -0
- package/dist/drawings/tools/ParallelChannel.d.ts +12 -0
- package/dist/drawings/tools/ParallelChannel.d.ts.map +1 -0
- package/dist/drawings/tools/Pitchfork.d.ts +12 -0
- package/dist/drawings/tools/Pitchfork.d.ts.map +1 -0
- package/dist/drawings/tools/PriceRange.d.ts +12 -0
- package/dist/drawings/tools/PriceRange.d.ts.map +1 -0
- package/dist/drawings/tools/Ray.d.ts +12 -0
- package/dist/drawings/tools/Ray.d.ts.map +1 -0
- package/dist/drawings/tools/Rectangle.d.ts +12 -0
- package/dist/drawings/tools/Rectangle.d.ts.map +1 -0
- package/dist/drawings/tools/RegressionChannel.d.ts +12 -0
- package/dist/drawings/tools/RegressionChannel.d.ts.map +1 -0
- package/dist/drawings/tools/TextAnnotation.d.ts +12 -0
- package/dist/drawings/tools/TextAnnotation.d.ts.map +1 -0
- package/dist/drawings/tools/TrendLine.d.ts +12 -0
- package/dist/drawings/tools/TrendLine.d.ts.map +1 -0
- package/dist/drawings/tools/Triangle.d.ts +12 -0
- package/dist/drawings/tools/Triangle.d.ts.map +1 -0
- package/dist/drawings/tools/VerticalLine.d.ts +12 -0
- package/dist/drawings/tools/VerticalLine.d.ts.map +1 -0
- package/dist/drawings/tools/VolumeProfileRange.d.ts +20 -0
- package/dist/drawings/tools/VolumeProfileRange.d.ts.map +1 -0
- package/dist/drawings/tools/index.d.ts +26 -0
- package/dist/drawings/tools/index.d.ts.map +1 -0
- package/dist/engine/CanvasLayer.d.ts +12 -0
- package/dist/engine/CanvasLayer.d.ts.map +1 -0
- package/dist/engine/DPRManager.d.ts +18 -0
- package/dist/engine/DPRManager.d.ts.map +1 -0
- package/dist/engine/LayerManager.d.ts +12 -0
- package/dist/engine/LayerManager.d.ts.map +1 -0
- package/dist/engine/RenderEngine.d.ts +84 -0
- package/dist/engine/RenderEngine.d.ts.map +1 -0
- package/dist/engine/RenderLoop.d.ts +16 -0
- package/dist/engine/RenderLoop.d.ts.map +1 -0
- package/dist/engine/index.d.ts +7 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/events/EventBus.d.ts +23 -0
- package/dist/events/EventBus.d.ts.map +1 -0
- package/dist/events/index.d.ts +2 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/features/AlertManager.d.ts +40 -0
- package/dist/features/AlertManager.d.ts.map +1 -0
- package/dist/features/ChartState.d.ts +64 -0
- package/dist/features/ChartState.d.ts.map +1 -0
- package/dist/features/DataExporter.d.ts +7 -0
- package/dist/features/DataExporter.d.ts.map +1 -0
- package/dist/features/ReplayManager.d.ts +44 -0
- package/dist/features/ReplayManager.d.ts.map +1 -0
- package/dist/features/UndoRedoManager.d.ts +28 -0
- package/dist/features/UndoRedoManager.d.ts.map +1 -0
- package/dist/features/index.d.ts +10 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/index.cjs +21 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5079 -0
- package/dist/index.js.map +1 -0
- package/dist/indicators/IndicatorBase.d.ts +16 -0
- package/dist/indicators/IndicatorBase.d.ts.map +1 -0
- package/dist/indicators/IndicatorEngine.d.ts +32 -0
- package/dist/indicators/IndicatorEngine.d.ts.map +1 -0
- package/dist/indicators/index.d.ts +30 -0
- package/dist/indicators/index.d.ts.map +1 -0
- package/dist/indicators/overlay/BollingerBands.d.ts +16 -0
- package/dist/indicators/overlay/BollingerBands.d.ts.map +1 -0
- package/dist/indicators/overlay/DonchianChannel.d.ts +15 -0
- package/dist/indicators/overlay/DonchianChannel.d.ts.map +1 -0
- package/dist/indicators/overlay/EMA.d.ts +15 -0
- package/dist/indicators/overlay/EMA.d.ts.map +1 -0
- package/dist/indicators/overlay/Ichimoku.d.ts +18 -0
- package/dist/indicators/overlay/Ichimoku.d.ts.map +1 -0
- package/dist/indicators/overlay/KeltnerChannel.d.ts +17 -0
- package/dist/indicators/overlay/KeltnerChannel.d.ts.map +1 -0
- package/dist/indicators/overlay/ParabolicSAR.d.ts +16 -0
- package/dist/indicators/overlay/ParabolicSAR.d.ts.map +1 -0
- package/dist/indicators/overlay/SMA.d.ts +15 -0
- package/dist/indicators/overlay/SMA.d.ts.map +1 -0
- package/dist/indicators/overlay/Supertrend.d.ts +16 -0
- package/dist/indicators/overlay/Supertrend.d.ts.map +1 -0
- package/dist/indicators/overlay/VWAP.d.ts +13 -0
- package/dist/indicators/overlay/VWAP.d.ts.map +1 -0
- package/dist/indicators/panel/ADX.d.ts +15 -0
- package/dist/indicators/panel/ADX.d.ts.map +1 -0
- package/dist/indicators/panel/ATR.d.ts +15 -0
- package/dist/indicators/panel/ATR.d.ts.map +1 -0
- package/dist/indicators/panel/AccumulationDistribution.d.ts +13 -0
- package/dist/indicators/panel/AccumulationDistribution.d.ts.map +1 -0
- package/dist/indicators/panel/Aroon.d.ts +15 -0
- package/dist/indicators/panel/Aroon.d.ts.map +1 -0
- package/dist/indicators/panel/CCI.d.ts +15 -0
- package/dist/indicators/panel/CCI.d.ts.map +1 -0
- package/dist/indicators/panel/CMF.d.ts +15 -0
- package/dist/indicators/panel/CMF.d.ts.map +1 -0
- package/dist/indicators/panel/MACD.d.ts +17 -0
- package/dist/indicators/panel/MACD.d.ts.map +1 -0
- package/dist/indicators/panel/MFI.d.ts +15 -0
- package/dist/indicators/panel/MFI.d.ts.map +1 -0
- package/dist/indicators/panel/OBV.d.ts +13 -0
- package/dist/indicators/panel/OBV.d.ts.map +1 -0
- package/dist/indicators/panel/ROC.d.ts +15 -0
- package/dist/indicators/panel/ROC.d.ts.map +1 -0
- package/dist/indicators/panel/RSI.d.ts +15 -0
- package/dist/indicators/panel/RSI.d.ts.map +1 -0
- package/dist/indicators/panel/StdDev.d.ts +15 -0
- package/dist/indicators/panel/StdDev.d.ts.map +1 -0
- package/dist/indicators/panel/Stochastic.d.ts +17 -0
- package/dist/indicators/panel/Stochastic.d.ts.map +1 -0
- package/dist/indicators/panel/TSI.d.ts +18 -0
- package/dist/indicators/panel/TSI.d.ts.map +1 -0
- package/dist/indicators/panel/VROC.d.ts +15 -0
- package/dist/indicators/panel/VROC.d.ts.map +1 -0
- package/dist/indicators/panel/VolumeProfile.d.ts +15 -0
- package/dist/indicators/panel/VolumeProfile.d.ts.map +1 -0
- package/dist/indicators/panel/WilliamsR.d.ts +15 -0
- package/dist/indicators/panel/WilliamsR.d.ts.map +1 -0
- package/dist/indicators/registry.d.ts +3 -0
- package/dist/indicators/registry.d.ts.map +1 -0
- package/dist/interaction/CrosshairHandler.d.ts +29 -0
- package/dist/interaction/CrosshairHandler.d.ts.map +1 -0
- package/dist/interaction/CrosshairTooltip.d.ts +32 -0
- package/dist/interaction/CrosshairTooltip.d.ts.map +1 -0
- package/dist/interaction/InteractionManager.d.ts +34 -0
- package/dist/interaction/InteractionManager.d.ts.map +1 -0
- package/dist/interaction/KeyboardHandler.d.ts +20 -0
- package/dist/interaction/KeyboardHandler.d.ts.map +1 -0
- package/dist/interaction/PanHandler.d.ts +22 -0
- package/dist/interaction/PanHandler.d.ts.map +1 -0
- package/dist/interaction/ZoomHandler.d.ts +17 -0
- package/dist/interaction/ZoomHandler.d.ts.map +1 -0
- package/dist/interaction/index.d.ts +8 -0
- package/dist/interaction/index.d.ts.map +1 -0
- package/dist/realtime/CurrentPriceLine.d.ts +18 -0
- package/dist/realtime/CurrentPriceLine.d.ts.map +1 -0
- package/dist/realtime/Emitter.d.ts +13 -0
- package/dist/realtime/Emitter.d.ts.map +1 -0
- package/dist/realtime/ReconnectManager.d.ts +39 -0
- package/dist/realtime/ReconnectManager.d.ts.map +1 -0
- package/dist/realtime/StreamManager.d.ts +76 -0
- package/dist/realtime/StreamManager.d.ts.map +1 -0
- package/dist/realtime/TickAggregator.d.ts +41 -0
- package/dist/realtime/TickAggregator.d.ts.map +1 -0
- package/dist/realtime/adapters/BinanceAdapter.d.ts +39 -0
- package/dist/realtime/adapters/BinanceAdapter.d.ts.map +1 -0
- package/dist/realtime/adapters/MockAdapter.d.ts +44 -0
- package/dist/realtime/adapters/MockAdapter.d.ts.map +1 -0
- package/dist/realtime/adapters/index.d.ts +4 -0
- package/dist/realtime/adapters/index.d.ts.map +1 -0
- package/dist/realtime/index.d.ts +8 -0
- package/dist/realtime/index.d.ts.map +1 -0
- package/dist/trading/DepthOverlay.d.ts +5 -0
- package/dist/trading/DepthOverlay.d.ts.map +1 -0
- package/dist/trading/OrderRenderer.d.ts +17 -0
- package/dist/trading/OrderRenderer.d.ts.map +1 -0
- package/dist/trading/PositionRenderer.d.ts +10 -0
- package/dist/trading/PositionRenderer.d.ts.map +1 -0
- package/dist/trading/TradingContextMenu.d.ts +10 -0
- package/dist/trading/TradingContextMenu.d.ts.map +1 -0
- package/dist/trading/TradingDragHandler.d.ts +21 -0
- package/dist/trading/TradingDragHandler.d.ts.map +1 -0
- package/dist/trading/TradingManager.d.ts +37 -0
- package/dist/trading/TradingManager.d.ts.map +1 -0
- package/dist/trading/TradingRenderer.d.ts +14 -0
- package/dist/trading/TradingRenderer.d.ts.map +1 -0
- package/dist/trading/index.d.ts +8 -0
- package/dist/trading/index.d.ts.map +1 -0
- package/dist/ui/BarCountdown.d.ts +11 -0
- package/dist/ui/BarCountdown.d.ts.map +1 -0
- package/dist/ui/ChartLegend.d.ts +35 -0
- package/dist/ui/ChartLegend.d.ts.map +1 -0
- package/dist/ui/Screenshot.d.ts +18 -0
- package/dist/ui/Screenshot.d.ts.map +1 -0
- package/dist/ui/SessionBreaks.d.ts +39 -0
- package/dist/ui/SessionBreaks.d.ts.map +1 -0
- package/dist/ui/Watermark.d.ts +11 -0
- package/dist/ui/Watermark.d.ts.map +1 -0
- package/dist/ui/index.d.ts +8 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/viewport/DataWindow.d.ts +3 -0
- package/dist/viewport/DataWindow.d.ts.map +1 -0
- package/dist/viewport/ScaleMapping.d.ts +14 -0
- package/dist/viewport/ScaleMapping.d.ts.map +1 -0
- package/dist/viewport/Viewport.d.ts +26 -0
- package/dist/viewport/Viewport.d.ts.map +1 -0
- package/dist/viewport/index.d.ts +4 -0
- package/dist/viewport/index.d.ts.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
export declare class VolumeProfileIndicator extends IndicatorBase {
|
|
4
|
+
descriptor: {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
placement: "panel";
|
|
8
|
+
defaultConfig: {
|
|
9
|
+
rows: number;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
13
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=VolumeProfile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VolumeProfile.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/VolumeProfile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,qBAAa,sBAAuB,SAAQ,aAAa;IACvD,UAAU;;;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAmCrE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CAqB7H"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DataSeries, IndicatorConfig, IndicatorOutput, ResolvedIndicatorStyle, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorBase } from '../IndicatorBase.js';
|
|
3
|
+
export declare class WilliamsRIndicator extends IndicatorBase {
|
|
4
|
+
descriptor: {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
placement: "panel";
|
|
8
|
+
defaultConfig: {
|
|
9
|
+
period: number;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
13
|
+
render(ctx: CanvasRenderingContext2D, output: IndicatorOutput, viewport: ViewportState, style: ResolvedIndicatorStyle): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=WilliamsR.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WilliamsR.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/WilliamsR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,UAAU;;;;;;;MAKR;IAEF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAoBrE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;CAoC7H"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/indicators/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA8B5D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CA6BvE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Point, ViewportState, Theme, DataSeries } from '@tradecanvas/commons';
|
|
2
|
+
export type CrosshairCallback = (barIndex: number | null, point: Point | null) => void;
|
|
3
|
+
export type CrosshairMode = 'normal' | 'magnet' | 'hidden';
|
|
4
|
+
export declare class CrosshairHandler {
|
|
5
|
+
private position;
|
|
6
|
+
private callback;
|
|
7
|
+
private data;
|
|
8
|
+
private magnetMode;
|
|
9
|
+
private mode;
|
|
10
|
+
private pricePrecision;
|
|
11
|
+
private pendingBarIndex;
|
|
12
|
+
private pendingPoint;
|
|
13
|
+
private callbackScheduled;
|
|
14
|
+
private lastCallbackBarIndex;
|
|
15
|
+
setCallback(cb: CrosshairCallback): void;
|
|
16
|
+
setData(data: DataSeries): void;
|
|
17
|
+
setMagnetMode(enabled: boolean): void;
|
|
18
|
+
setMode(mode: CrosshairMode): void;
|
|
19
|
+
getMode(): CrosshairMode;
|
|
20
|
+
setPricePrecision(precision: number): void;
|
|
21
|
+
getPosition(): Point | null;
|
|
22
|
+
onPointerMove(pos: Point): void;
|
|
23
|
+
onPointerLeave(): void;
|
|
24
|
+
render(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme): void;
|
|
25
|
+
/** Fire callback outside of render frame via microtask */
|
|
26
|
+
private scheduleCallback;
|
|
27
|
+
private flushCallback;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=CrosshairHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CrosshairHandler.d.ts","sourceRoot":"","sources":["../../src/interaction/CrosshairHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIpF,MAAM,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;AAEvF,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,cAAc,CAAK;IAG3B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,oBAAoB,CAAM;IAElC,WAAW,CAAC,EAAE,EAAE,iBAAiB,GAAG,IAAI;IAIxC,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAI/B,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKrC,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAKlC,OAAO,IAAI,aAAa;IAIxB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI1C,WAAW,IAAI,KAAK,GAAG,IAAI;IAI3B,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;IAI/B,cAAc,IAAI,IAAI;IAQtB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAqDlF,0DAA0D;IAC1D,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,aAAa;CAGtB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { OHLCBar, Theme, Point } from '@tradecanvas/commons';
|
|
2
|
+
/**
|
|
3
|
+
* High-performance floating tooltip.
|
|
4
|
+
* Pre-builds DOM structure once, updates only textContent on hover.
|
|
5
|
+
* No innerHTML, no offsetWidth reads, no layout thrashing.
|
|
6
|
+
*/
|
|
7
|
+
export declare class CrosshairTooltip {
|
|
8
|
+
private el;
|
|
9
|
+
private visible;
|
|
10
|
+
private timeEl;
|
|
11
|
+
private openEl;
|
|
12
|
+
private highEl;
|
|
13
|
+
private lowEl;
|
|
14
|
+
private closeEl;
|
|
15
|
+
private changeEl;
|
|
16
|
+
private volEl;
|
|
17
|
+
private measuredWidth;
|
|
18
|
+
private measuredHeight;
|
|
19
|
+
private measured;
|
|
20
|
+
create(container: HTMLElement): void;
|
|
21
|
+
show(pos: Point, bar: OHLCBar, theme: Theme, containerRect: {
|
|
22
|
+
width: number;
|
|
23
|
+
height: number;
|
|
24
|
+
}): void;
|
|
25
|
+
hide(): void;
|
|
26
|
+
isVisible(): boolean;
|
|
27
|
+
destroy(): void;
|
|
28
|
+
private addLine;
|
|
29
|
+
private label;
|
|
30
|
+
private val;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=CrosshairTooltip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CrosshairTooltip.d.ts","sourceRoot":"","sources":["../../src/interaction/CrosshairTooltip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElE;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,EAAE,CAA4B;IACtC,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,KAAK,CAAe;IAG5B,OAAO,CAAC,aAAa,CAAO;IAC5B,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,QAAQ,CAAS;IAEzB,MAAM,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAgCpC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAwEpG,IAAI,IAAI,IAAI;IAOZ,SAAS,IAAI,OAAO;IAIpB,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,GAAG;CAGZ"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { PanHandler } from './PanHandler.js';
|
|
3
|
+
import { ZoomHandler } from './ZoomHandler.js';
|
|
4
|
+
import { CrosshairHandler } from './CrosshairHandler.js';
|
|
5
|
+
import { DrawingManager } from '../drawings/DrawingManager.js';
|
|
6
|
+
import { TradingManager } from '../trading/TradingManager.js';
|
|
7
|
+
export declare class InteractionManager {
|
|
8
|
+
private element;
|
|
9
|
+
private panHandler;
|
|
10
|
+
private zoomHandler;
|
|
11
|
+
private crosshairHandler;
|
|
12
|
+
private drawingManager;
|
|
13
|
+
private tradingManager;
|
|
14
|
+
private viewportGetter;
|
|
15
|
+
private onOverlayDirty;
|
|
16
|
+
private boundHandlers;
|
|
17
|
+
private lastTouchDist;
|
|
18
|
+
private lastTouchMid;
|
|
19
|
+
private touchActive;
|
|
20
|
+
constructor(element: HTMLElement);
|
|
21
|
+
setOverlayDirtyCallback(cb: () => void): void;
|
|
22
|
+
setPanHandler(handler: PanHandler): void;
|
|
23
|
+
setZoomHandler(handler: ZoomHandler): void;
|
|
24
|
+
setCrosshairHandler(handler: CrosshairHandler): void;
|
|
25
|
+
setDrawingManager(manager: DrawingManager, viewportGetter: () => ViewportState): void;
|
|
26
|
+
setTradingManager(manager: TradingManager, viewportGetter: () => ViewportState): void;
|
|
27
|
+
attach(): void;
|
|
28
|
+
detach(): void;
|
|
29
|
+
private getMousePos;
|
|
30
|
+
private getTouchPos;
|
|
31
|
+
private getTouchDistance;
|
|
32
|
+
private getTouchMidpoint;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=InteractionManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InteractionManager.d.ts","sourceRoot":"","sources":["../../src/interaction/InteractionManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,qBAAa,kBAAkB;IAejB,OAAO,CAAC,OAAO;IAd3B,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,aAAa,CAAsB;IAG3C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,WAAW,CAAS;gBAER,OAAO,EAAE,WAAW;IAExC,uBAAuB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAE7C,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IACxC,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAC1C,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAEpD,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,GAAG,IAAI;IAKrF,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,GAAG,IAAI;IAKrF,MAAM,IAAI,IAAI;IAqJd,MAAM,IAAI,IAAI;IAKd,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,gBAAgB;CAOzB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyboard navigation for chart.
|
|
3
|
+
* Arrow keys: navigate bars. +/-: zoom. Home/End: jump to start/end.
|
|
4
|
+
* Shift+Arrow: fast navigation (10 bars). Double-click: fit content.
|
|
5
|
+
*/
|
|
6
|
+
export interface KeyboardCallbacks {
|
|
7
|
+
scrollBars: (count: number) => void;
|
|
8
|
+
zoom: (delta: number) => void;
|
|
9
|
+
goToStart: () => void;
|
|
10
|
+
goToEnd: () => void;
|
|
11
|
+
fitContent: () => void;
|
|
12
|
+
}
|
|
13
|
+
export declare class KeyboardHandler {
|
|
14
|
+
private callbacks;
|
|
15
|
+
private enabled;
|
|
16
|
+
constructor(callbacks: KeyboardCallbacks);
|
|
17
|
+
setEnabled(v: boolean): void;
|
|
18
|
+
handleKey(e: KeyboardEvent): boolean;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=KeyboardHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyboardHandler.d.ts","sourceRoot":"","sources":["../../src/interaction/KeyboardHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,OAAO,CAAQ;gBAEX,SAAS,EAAE,iBAAiB;IAIxC,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5B,SAAS,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO;CAmCrC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Point } from '@tradecanvas/commons';
|
|
2
|
+
export type PanCallback = (deltaX: number) => void;
|
|
3
|
+
/**
|
|
4
|
+
* Handles drag-to-pan with momentum/inertia scrolling.
|
|
5
|
+
* On release, velocity decays smoothly over ~500ms.
|
|
6
|
+
*/
|
|
7
|
+
export declare class PanHandler {
|
|
8
|
+
private dragging;
|
|
9
|
+
private lastX;
|
|
10
|
+
private lastTime;
|
|
11
|
+
private velocity;
|
|
12
|
+
private momentumId;
|
|
13
|
+
private callback;
|
|
14
|
+
private friction;
|
|
15
|
+
constructor(callback: PanCallback);
|
|
16
|
+
onPointerDown(pos: Point): void;
|
|
17
|
+
onPointerMove(pos: Point): void;
|
|
18
|
+
onPointerUp(): void;
|
|
19
|
+
private startMomentum;
|
|
20
|
+
private stopMomentum;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=PanHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanHandler.d.ts","sourceRoot":"","sources":["../../src/interaction/PanHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAEnD;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,QAAQ,EAAE,WAAW;IAIjC,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;IAQ/B,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;IAgB/B,WAAW,IAAI,IAAI;IAUnB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,YAAY;CAMrB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Point } from '@tradecanvas/commons';
|
|
2
|
+
export type ZoomCallback = (delta: number, centerX: number) => void;
|
|
3
|
+
/**
|
|
4
|
+
* Coalesces rapid wheel events into a single callback per animation frame.
|
|
5
|
+
* Accumulates delta across all wheel events within a frame, then fires once.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ZoomHandler {
|
|
8
|
+
private callback;
|
|
9
|
+
private sensitivity;
|
|
10
|
+
private pendingDelta;
|
|
11
|
+
private pendingCenterX;
|
|
12
|
+
private rafId;
|
|
13
|
+
constructor(callback: ZoomCallback, sensitivity?: number);
|
|
14
|
+
onWheel(deltaY: number, pos: Point): void;
|
|
15
|
+
dispose(): void;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=ZoomHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZoomHandler.d.ts","sourceRoot":"","sources":["../../src/interaction/ZoomHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAEpE;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,KAAK,CAAK;gBAEN,QAAQ,EAAE,YAAY,EAAE,WAAW,SAAQ;IAKvD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI;IAezC,OAAO,IAAI,IAAI;CAMhB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { InteractionManager } from './InteractionManager.js';
|
|
2
|
+
export { PanHandler } from './PanHandler.js';
|
|
3
|
+
export { ZoomHandler } from './ZoomHandler.js';
|
|
4
|
+
export { CrosshairHandler } from './CrosshairHandler.js';
|
|
5
|
+
export type { CrosshairMode } from './CrosshairHandler.js';
|
|
6
|
+
export { KeyboardHandler } from './KeyboardHandler.js';
|
|
7
|
+
export { CrosshairTooltip } from './CrosshairTooltip.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ViewportState, Theme } from '@tradecanvas/commons';
|
|
2
|
+
/**
|
|
3
|
+
* Renders the current (last) price as a horizontal line with a badge.
|
|
4
|
+
* Updates at high frequency without triggering full chart redraws.
|
|
5
|
+
*/
|
|
6
|
+
export declare class CurrentPriceLine {
|
|
7
|
+
private price;
|
|
8
|
+
private previousClose;
|
|
9
|
+
private visible;
|
|
10
|
+
private flashUntil;
|
|
11
|
+
private pricePrecision;
|
|
12
|
+
setPrice(price: number, previousClose?: number): void;
|
|
13
|
+
setVisible(v: boolean): void;
|
|
14
|
+
setPricePrecision(precision: number): void;
|
|
15
|
+
getPrice(): number | null;
|
|
16
|
+
render(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=CurrentPriceLine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CurrentPriceLine.d.ts","sourceRoot":"","sources":["../../src/realtime/CurrentPriceLine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAIjE;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,cAAc,CAAK;IAE3B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAQrD,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5B,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI1C,QAAQ,IAAI,MAAM,GAAG,IAAI;IAIzB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAgDnF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed event emitter. Foundation for adapters and stream manager.
|
|
3
|
+
* Keeps listeners in insertion order, supports once() for one-shot listeners.
|
|
4
|
+
*/
|
|
5
|
+
export declare class Emitter<EventMap extends Record<string, unknown>> {
|
|
6
|
+
private listeners;
|
|
7
|
+
on<K extends keyof EventMap>(event: K, listener: (data: EventMap[K]) => void): () => void;
|
|
8
|
+
once<K extends keyof EventMap>(event: K, listener: (data: EventMap[K]) => void): () => void;
|
|
9
|
+
off<K extends keyof EventMap>(event: K, listener: (data: EventMap[K]) => void): void;
|
|
10
|
+
protected emit<K extends keyof EventMap>(event: K, data: EventMap[K]): void;
|
|
11
|
+
removeAllListeners(): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=Emitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Emitter.d.ts","sourceRoot":"","sources":["../../src/realtime/Emitter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,OAAO,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,OAAO,CAAC,SAAS,CAAuD;IAExE,EAAE,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAUzF,IAAI,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAS3F,GAAG,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAIpF,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAS3E,kBAAkB,IAAI,IAAI;CAG3B"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ReconnectConfig } from '@tradecanvas/commons';
|
|
2
|
+
import { Emitter } from './Emitter.js';
|
|
3
|
+
interface ReconnectEvents {
|
|
4
|
+
attempt: {
|
|
5
|
+
attempt: number;
|
|
6
|
+
delay: number;
|
|
7
|
+
};
|
|
8
|
+
success: void;
|
|
9
|
+
giveUp: {
|
|
10
|
+
attempts: number;
|
|
11
|
+
};
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Exponential backoff reconnection manager.
|
|
16
|
+
*
|
|
17
|
+
* Features:
|
|
18
|
+
* - Exponential backoff with jitter
|
|
19
|
+
* - Configurable max retries and max delay
|
|
20
|
+
* - Reset on successful connection
|
|
21
|
+
* - Cancellable pending reconnection
|
|
22
|
+
*/
|
|
23
|
+
export declare class ReconnectManager extends Emitter<ReconnectEvents> {
|
|
24
|
+
private config;
|
|
25
|
+
private attempt;
|
|
26
|
+
private timer;
|
|
27
|
+
private active;
|
|
28
|
+
constructor(config?: Partial<ReconnectConfig>);
|
|
29
|
+
schedule(connectFn: () => void): void;
|
|
30
|
+
onConnected(): void;
|
|
31
|
+
start(): void;
|
|
32
|
+
stop(): void;
|
|
33
|
+
cancel(): void;
|
|
34
|
+
getAttempt(): number;
|
|
35
|
+
isActive(): boolean;
|
|
36
|
+
private computeDelay;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=ReconnectManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReconnectManager.d.ts","sourceRoot":"","sources":["../../src/realtime/ReconnectManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,UAAU,eAAe;IACvB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,SAAQ,OAAO,CAAC,eAAe,CAAC;IAC5D,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAK7C,QAAQ,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,IAAI;IAoBrC,WAAW,IAAI,IAAI;IAMnB,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAMZ,MAAM,IAAI,IAAI;IAOd,UAAU,IAAI,MAAM;IAIpB,QAAQ,IAAI,OAAO;IAInB,OAAO,CAAC,YAAY;CAQrB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { StreamConfig, ConnectionState, ConnectionInfo, OHLCBar, RawTick, AggregatedBar, TimeFrame } from '@tradecanvas/commons';
|
|
2
|
+
import { Emitter } from './Emitter.js';
|
|
3
|
+
import { CurrentPriceLine } from './CurrentPriceLine.js';
|
|
4
|
+
export interface StreamEvents {
|
|
5
|
+
/** Historical data loaded */
|
|
6
|
+
snapshot: OHLCBar[];
|
|
7
|
+
/** New closed bar appended */
|
|
8
|
+
barClose: AggregatedBar;
|
|
9
|
+
/** Current forming bar updated */
|
|
10
|
+
barUpdate: AggregatedBar;
|
|
11
|
+
/** Raw tick received */
|
|
12
|
+
tick: RawTick;
|
|
13
|
+
/** Current price changed */
|
|
14
|
+
priceChange: {
|
|
15
|
+
price: number;
|
|
16
|
+
previousClose: number | null;
|
|
17
|
+
};
|
|
18
|
+
/** Connection state changed */
|
|
19
|
+
connectionChange: ConnectionInfo;
|
|
20
|
+
/** Error occurred */
|
|
21
|
+
error: {
|
|
22
|
+
message: string;
|
|
23
|
+
code?: string;
|
|
24
|
+
};
|
|
25
|
+
[key: string]: unknown;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* StreamManager — orchestrates data flow from adapter to chart.
|
|
29
|
+
*
|
|
30
|
+
* Responsibilities:
|
|
31
|
+
* 1. Manages adapter lifecycle (connect, disconnect, reconnect)
|
|
32
|
+
* 2. Loads historical data on connect
|
|
33
|
+
* 3. Routes incoming data through TickAggregator
|
|
34
|
+
* 4. Maintains current price for the price line
|
|
35
|
+
* 5. Provides clean event interface for the Chart class
|
|
36
|
+
*
|
|
37
|
+
* Usage:
|
|
38
|
+
* const stream = new StreamManager();
|
|
39
|
+
* stream.on('snapshot', (bars) => chart.setData(bars));
|
|
40
|
+
* stream.on('barClose', (bar) => chart.appendBar(bar));
|
|
41
|
+
* stream.on('barUpdate', (bar) => chart.updateLastBar(bar));
|
|
42
|
+
* stream.connect({ adapter, symbol: 'BTCUSDT', timeframe: '1m' });
|
|
43
|
+
*/
|
|
44
|
+
export declare class StreamManager extends Emitter<StreamEvents> {
|
|
45
|
+
private config;
|
|
46
|
+
private adapter;
|
|
47
|
+
private aggregator;
|
|
48
|
+
private reconnector;
|
|
49
|
+
readonly priceLine: CurrentPriceLine;
|
|
50
|
+
private state;
|
|
51
|
+
private lastPrice;
|
|
52
|
+
private previousClose;
|
|
53
|
+
private unsubscribers;
|
|
54
|
+
private heartbeatTimer;
|
|
55
|
+
private lastMessageTime;
|
|
56
|
+
constructor();
|
|
57
|
+
connect(config: StreamConfig): Promise<void>;
|
|
58
|
+
disconnect(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Switch symbol or timeframe without full teardown.
|
|
61
|
+
* Reloads history and restarts streaming.
|
|
62
|
+
*/
|
|
63
|
+
switchTo(symbol: string, timeframe: TimeFrame): Promise<void>;
|
|
64
|
+
getConnectionState(): ConnectionState;
|
|
65
|
+
getConnectionInfo(): ConnectionInfo;
|
|
66
|
+
getLastPrice(): number | null;
|
|
67
|
+
private doConnect;
|
|
68
|
+
private wireReconnector;
|
|
69
|
+
private wireAdapter;
|
|
70
|
+
private updatePrice;
|
|
71
|
+
private setState;
|
|
72
|
+
private startHeartbeat;
|
|
73
|
+
private stopHeartbeat;
|
|
74
|
+
dispose(): void;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=StreamManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamManager.d.ts","sourceRoot":"","sources":["../../src/realtime/StreamManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EAEd,OAAO,EACP,OAAO,EACP,aAAa,EACb,SAAS,EACV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,8BAA8B;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,kCAAkC;IAClC,SAAS,EAAE,aAAa,CAAC;IACzB,wBAAwB;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,4BAA4B;IAC5B,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC7D,+BAA+B;IAC/B,gBAAgB,EAAE,cAAc,CAAC;IACjC,qBAAqB;IACrB,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,aAAc,SAAQ,OAAO,CAAC,YAAY,CAAC;IACtD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,WAAW,CAAmB;IACtC,QAAQ,CAAC,SAAS,mBAA0B;IAE5C,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,eAAe,CAAK;;IAUtB,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgClD,UAAU,IAAI,IAAI;IAsBlB;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAenE,kBAAkB,IAAI,eAAe;IAIrC,iBAAiB,IAAI,cAAc;IAQnC,YAAY,IAAI,MAAM,GAAG,IAAI;YAMf,SAAS;IAmCvB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,WAAW;IA6CnB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,aAAa;IAOrB,OAAO,IAAI,IAAI;CAIhB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { OHLCBar, TimeFrame, RawTick, AggregatedBar } from '@tradecanvas/commons';
|
|
2
|
+
import { Emitter } from './Emitter.js';
|
|
3
|
+
interface AggregatorEvents {
|
|
4
|
+
bar: AggregatedBar;
|
|
5
|
+
barClose: AggregatedBar;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Aggregates raw ticks into OHLCV bars aligned to timeframe boundaries.
|
|
10
|
+
*
|
|
11
|
+
* Handles:
|
|
12
|
+
* - Tick-to-bar conversion with proper timeframe alignment
|
|
13
|
+
* - Bar close detection (when time crosses boundary)
|
|
14
|
+
* - Volume accumulation
|
|
15
|
+
* - Tick counting
|
|
16
|
+
*
|
|
17
|
+
* Note: Emitted bars are references to internal state.
|
|
18
|
+
* Listeners MUST NOT mutate them — treat as readonly.
|
|
19
|
+
*/
|
|
20
|
+
export declare class TickAggregator extends Emitter<AggregatorEvents> {
|
|
21
|
+
private currentBar;
|
|
22
|
+
private timeframeMs;
|
|
23
|
+
private tickRing;
|
|
24
|
+
private ringHead;
|
|
25
|
+
private ringCount;
|
|
26
|
+
private readonly ringCapacity;
|
|
27
|
+
constructor(_timeframe: TimeFrame, bufferSize?: number);
|
|
28
|
+
setTimeframe(tf: TimeFrame): void;
|
|
29
|
+
processTick(tick: RawTick): void;
|
|
30
|
+
/**
|
|
31
|
+
* Process a pre-formed bar (from adapter that already provides OHLCV).
|
|
32
|
+
* Detects close by checking if this bar's time differs from current.
|
|
33
|
+
*/
|
|
34
|
+
processBar(bar: OHLCBar, closed: boolean): void;
|
|
35
|
+
getCurrentBar(): AggregatedBar | null;
|
|
36
|
+
getTickBuffer(): readonly RawTick[];
|
|
37
|
+
reset(): void;
|
|
38
|
+
private alignToTimeframe;
|
|
39
|
+
}
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=TickAggregator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TickAggregator.d.ts","sourceRoot":"","sources":["../../src/realtime/TickAggregator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEvF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,UAAU,gBAAgB;IACxB,GAAG,EAAE,aAAa,CAAC;IACnB,QAAQ,EAAE,aAAa,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,cAAe,SAAQ,OAAO,CAAC,gBAAgB,CAAC;IAC3D,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAGpC,UAAU,EAAE,SAAS,EACrB,UAAU,SAAO;IAQnB,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAOjC,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IA2ChC;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAkB/C,aAAa,IAAI,aAAa,GAAG,IAAI;IAIrC,aAAa,IAAI,SAAS,OAAO,EAAE;IASnC,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,gBAAgB;CAGzB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { DataAdapter, DataAdapterConfig, DataAdapterEventType, DataAdapterListener, ConnectionState, OHLCBar, TimeFrame } from '@tradecanvas/commons';
|
|
2
|
+
/**
|
|
3
|
+
* Binance public API adapter (no API key required).
|
|
4
|
+
*
|
|
5
|
+
* Supports:
|
|
6
|
+
* - REST klines for historical data
|
|
7
|
+
* - WebSocket kline stream for real-time data
|
|
8
|
+
* - Auto-reconnection via the StreamManager
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* const adapter = new BinanceAdapter();
|
|
12
|
+
* const stream = new StreamManager();
|
|
13
|
+
* stream.connect({ adapter, symbol: 'BTCUSDT', timeframe: '1m' });
|
|
14
|
+
*/
|
|
15
|
+
export declare class BinanceAdapter implements DataAdapter {
|
|
16
|
+
readonly name = "binance";
|
|
17
|
+
private ws;
|
|
18
|
+
private state;
|
|
19
|
+
private listeners;
|
|
20
|
+
private config;
|
|
21
|
+
private restBase;
|
|
22
|
+
private wsBase;
|
|
23
|
+
constructor(options?: {
|
|
24
|
+
restBase?: string;
|
|
25
|
+
wsBase?: string;
|
|
26
|
+
});
|
|
27
|
+
connect(config: DataAdapterConfig): void;
|
|
28
|
+
disconnect(): void;
|
|
29
|
+
getConnectionState(): ConnectionState;
|
|
30
|
+
fetchHistory(symbol: string, timeframe: TimeFrame, limit?: number): Promise<OHLCBar[]>;
|
|
31
|
+
on<T = unknown>(event: DataAdapterEventType, listener: DataAdapterListener<T>): void;
|
|
32
|
+
off<T = unknown>(event: DataAdapterEventType, listener: DataAdapterListener<T>): void;
|
|
33
|
+
dispose(): void;
|
|
34
|
+
private connectWs;
|
|
35
|
+
private handleKline;
|
|
36
|
+
private setState;
|
|
37
|
+
private emitEvent;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=BinanceAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BinanceAdapter.d.ts","sourceRoot":"","sources":["../../../src/realtime/adapters/BinanceAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,OAAO,EACP,SAAS,EACV,MAAM,sBAAsB,CAAC;AAQ9B;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,aAAa;IAE1B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,SAAS,CAA6D;IAC9E,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAO5D,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAKxC,UAAU,IAAI,IAAI;IASlB,kBAAkB,IAAI,eAAe;IAI/B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAkBzF,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;IAOf,OAAO,CAAC,SAAS;IA8CjB,OAAO,CAAC,WAAW;IAuBnB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,SAAS;CASlB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { DataAdapter, DataAdapterConfig, DataAdapterEventType, DataAdapterListener, ConnectionState, OHLCBar, TimeFrame } from '@tradecanvas/commons';
|
|
2
|
+
export interface MockAdapterOptions {
|
|
3
|
+
/** Base price to generate data around */
|
|
4
|
+
basePrice?: number;
|
|
5
|
+
/** Volatility as percentage (default: 1.5) */
|
|
6
|
+
volatility?: number;
|
|
7
|
+
/** Tick interval in ms (default: 2000) */
|
|
8
|
+
tickInterval?: number;
|
|
9
|
+
/** Number of historical bars to generate */
|
|
10
|
+
historySize?: number;
|
|
11
|
+
/** Custom history generator */
|
|
12
|
+
historyGenerator?: (symbol: string, timeframe: TimeFrame, limit: number) => OHLCBar[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Mock data adapter for testing, demos, and markets without free APIs.
|
|
16
|
+
*
|
|
17
|
+
* Generates realistic OHLCV data with configurable volatility.
|
|
18
|
+
* Useful for:
|
|
19
|
+
* - Unit/integration testing
|
|
20
|
+
* - VN stock market simulation
|
|
21
|
+
* - Offline development
|
|
22
|
+
*/
|
|
23
|
+
export declare class MockAdapter implements DataAdapter {
|
|
24
|
+
readonly name = "mock";
|
|
25
|
+
private state;
|
|
26
|
+
private listeners;
|
|
27
|
+
private config;
|
|
28
|
+
private options;
|
|
29
|
+
private tickTimer;
|
|
30
|
+
private currentPrice;
|
|
31
|
+
constructor(options?: MockAdapterOptions);
|
|
32
|
+
connect(config: DataAdapterConfig): void;
|
|
33
|
+
disconnect(): void;
|
|
34
|
+
getConnectionState(): ConnectionState;
|
|
35
|
+
fetchHistory(symbol: string, timeframe: TimeFrame, limit?: number): Promise<OHLCBar[]>;
|
|
36
|
+
on<T = unknown>(event: DataAdapterEventType, listener: DataAdapterListener<T>): void;
|
|
37
|
+
off<T = unknown>(event: DataAdapterEventType, listener: DataAdapterListener<T>): void;
|
|
38
|
+
dispose(): void;
|
|
39
|
+
private generateHistory;
|
|
40
|
+
private startTicking;
|
|
41
|
+
private stopTicking;
|
|
42
|
+
private emitEvent;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=MockAdapter.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { Emitter } from './Emitter.js';
|
|
2
|
+
export { TickAggregator } from './TickAggregator.js';
|
|
3
|
+
export { ReconnectManager } from './ReconnectManager.js';
|
|
4
|
+
export { StreamManager } from './StreamManager.js';
|
|
5
|
+
export type { StreamEvents } from './StreamManager.js';
|
|
6
|
+
export { CurrentPriceLine } from './CurrentPriceLine.js';
|
|
7
|
+
export * from './adapters/index.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { DepthData, TradingConfig, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
export declare class DepthOverlay {
|
|
3
|
+
render(ctx: CanvasRenderingContext2D, depth: DepthData, viewport: ViewportState, config: TradingConfig): void;
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=DepthOverlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DepthOverlay.d.ts","sourceRoot":"","sources":["../../src/trading/DepthOverlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGpF,qBAAa,YAAY;IACvB,MAAM,CACJ,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,aAAa,GACpB,IAAI;CAqDR"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TradingOrder, TradingConfig, ViewportState, Theme } from '@tradecanvas/commons';
|
|
2
|
+
export interface DragState {
|
|
3
|
+
orderId: string;
|
|
4
|
+
sourceType: 'order' | 'stopLoss' | 'takeProfit';
|
|
5
|
+
startPrice: number;
|
|
6
|
+
currentPrice: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class OrderRenderer {
|
|
9
|
+
render(ctx: CanvasRenderingContext2D, orders: TradingOrder[], viewport: ViewportState, theme: Theme, config: TradingConfig, dragState: DragState | null): void;
|
|
10
|
+
/**
|
|
11
|
+
* Draw order price badges on the price axis. Called from the UI layer
|
|
12
|
+
* so they paint ON TOP of the regular axis tick labels.
|
|
13
|
+
*/
|
|
14
|
+
renderAxisBadges(ctx: CanvasRenderingContext2D, orders: TradingOrder[], viewport: ViewportState, theme: Theme, config: TradingConfig, dragState: DragState | null): void;
|
|
15
|
+
hitTest(y: number, orders: TradingOrder[], viewport: ViewportState, tolerance: number): TradingOrder | null;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=OrderRenderer.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TradingPosition, TradingConfig, ViewportState, Theme } from '@tradecanvas/commons';
|
|
2
|
+
export declare class PositionRenderer {
|
|
3
|
+
render(ctx: CanvasRenderingContext2D, positions: TradingPosition[], currentPrice: number | null, viewport: ViewportState, theme: Theme, config: TradingConfig): void;
|
|
4
|
+
/**
|
|
5
|
+
* Draw position entry badges on the price axis. Called from the UI layer
|
|
6
|
+
* so they paint ON TOP of the regular axis tick labels.
|
|
7
|
+
*/
|
|
8
|
+
renderAxisBadges(ctx: CanvasRenderingContext2D, positions: TradingPosition[], viewport: ViewportState, theme: Theme, config: TradingConfig): void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=PositionRenderer.d.ts.map
|