openalgo-charts 1.0.29 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,8 +8,8 @@ Professional interactive charts, indicators, drawing tools, order flow, and on-c
8
8
 
9
9
  [![npm version](https://img.shields.io/npm/v/openalgo-charts.svg?color=cb3837&label=npm)](https://www.npmjs.com/package/openalgo-charts)
10
10
  [![license](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](./LICENSE)
11
- [![bundle](https://img.shields.io/badge/brotli-37%20KB%20base%20%C2%B7%2074%20KB%20all%20tiers-brightgreen.svg)](#size-budget)
12
- [![tests](https://img.shields.io/badge/tests-620%20passing-brightgreen.svg)](#develop)
11
+ [![bundle](https://img.shields.io/badge/brotli-37%20KB%20base%20%C2%B7%2088%20KB%20all%20tiers-brightgreen.svg)](#size-budget)
12
+ [![tests](https://img.shields.io/badge/tests-1001%20passing-brightgreen.svg)](#develop)
13
13
  [![dependencies](https://img.shields.io/badge/runtime%20deps-0-brightgreen.svg)](#principles)
14
14
 
15
15
  [**Documentation**](https://marketcalls.github.io/openalgo-charts/)  ·  [**Live examples**](https://marketcalls.github.io/openalgo-charts/examples)  ·  [**Getting started**](./docs/getting-started.md)  ·  [**Architecture**](./ARCHITECTURE.md)
@@ -61,13 +61,13 @@ Import only what you use. Each tier is a separate bundle that registers into the
61
61
  | Import | Contents | Brotli |
62
62
  |---|---|---|
63
63
  | `openalgo-charts` | Engine, 13 chart types, panes & scales, primitives, registries, chart state, trading overlay, OpenAlgo feeds | 37.0 KB |
64
- | `openalgo-charts/indicators` | 20 built-in indicators + the Tier-2 (external-data) contract | 6.1 KB |
64
+ | `openalgo-charts/indicators` | 91 built-in indicators + the Tier-2 (external-data) contract | 24.7 KB |
65
65
  | `openalgo-charts/draw` | 43 drawing tools + a headless drawing controller | 11.7 KB |
66
66
  | `openalgo-charts/transform` | Heikin Ashi, Renko, Range bars, Line Break, Point & Figure, Kagi | 2.7 KB |
67
67
  | `openalgo-charts/profile` | Volume Profile, Market Profile (TPO), Footprint, order flow | 10.1 KB |
68
68
  | `openalgo-charts/trade` | Order / position / bracket tools + DOM ladder | 6.6 KB |
69
69
 
70
- Everything together is **74.2 KB Brotli**. Figures are the measured `size-limit` output; the trade tier is a delta over the base, which is why base + trade (43.6 KB) is less than their listed sum.
70
+ Everything together is **88.2 KB Brotli**. Figures are the measured `size-limit` output; the trade tier is a delta over the base, which is why base + trade (43.6 KB) is less than their listed sum.
71
71
 
72
72
  ## What's built
73
73
 
@@ -84,7 +84,7 @@ const macd = chart.addIndicator('macd', { fastPeriod: 8 }); // gets its own pa
84
84
  macd.setSettings({ 'macd:width': 2, 'macd:lineStyle': 'dashed' });
85
85
  ```
86
86
 
87
- 20 built-ins: SMA, EMA, WMA, VWAP, Bollinger Bands, Supertrend, HalfTrend, Parabolic SAR, Ichimoku Cloud, RSI, MACD, Stochastic, ADX/DMI, CCI, MFI, ATR, William VIX FIX, Volume, OBV, A/D.
87
+ 91 built-ins across Trend, Momentum, Volatility and Volume, from the everyday (SMA, EMA, WMA, VWAP, Bollinger Bands, RSI, MACD, Stochastic, ADX/DMI, ATR) through Supertrend, HalfTrend, Ichimoku, Keltner, Donchian, Chandelier Exit and CPR with floor pivots to Connors RSI, Fisher Transform, Woodies CCI, Klinger, Vortex, WaveTrend Pro, Chop Zone and Williams Fractals. Twenty-five of them draw shaded bands, five emit named buy/sell markers, and Seasonality draws a monthly return heatmap as a table over the chart. The full catalogue with ids and defaults is in the docs.
88
88
 
89
89
  The chart owns the whole lifecycle — series, pane placement, reference levels, fixed ranges (RSI 0..100), recompute on data change, teardown. Every plot gets colour, opacity, thickness, and line style for free, generated from the descriptor. Write your own with `registerIndicator`, or use the **Tier-2 contract** for indicators whose data isn't derived from OHLCV (open interest, CVD, any external feed).
90
90
 
@@ -122,13 +122,13 @@ Enforced in CI by [`size-limit`](./.size-limit.json) — nothing is excluded, be
122
122
 
123
123
  | Bundle | Limit | Actual |
124
124
  |---|---|---|
125
- | Base engine | 40 KB | 37.01 KB |
126
- | Base + trade | 47 KB | 43.59 KB |
127
- | Indicators tier | 9 KB | 6.08 KB |
125
+ | Base engine | 40 KB | 37.04 KB |
126
+ | Base + trade | 47 KB | 43.62 KB |
127
+ | Indicators tier | 21 KB | 20.09 KB |
128
128
  | Draw tier | 14 KB | 11.73 KB |
129
129
  | Transform tier | 5 KB | 2.66 KB |
130
130
  | Profile tier | 11 KB | 10.12 KB |
131
- | **Everything** | **90 KB** | **74.18 KB** |
131
+ | **Everything** | **90 KB** | **88.21 KB** |
132
132
 
133
133
  ## Documentation
134
134
 
@@ -168,7 +168,7 @@ cd examples/yfinance && pip install -r requirements.txt && python server.py
168
168
  ```bash
169
169
  npm install # install dev toolchain
170
170
  npm run typecheck # strict TypeScript check
171
- npm test # unit tests (vitest) - 620 across 50 files
171
+ npm test # unit tests (vitest) - 1001 across 61 files
172
172
  npm run build # Rollup -> dist/ (minified ESM per tier + types)
173
173
  npm run size # size-limit (Brotli) against the budget
174
174
  npm run e2e # Playwright Chromium smoke tests
@@ -185,7 +185,7 @@ npm run verify # typecheck + test + build + size
185
185
 
186
186
  ## Status & limitations
187
187
 
188
- Version **1.0.29**. All engine build phases are implemented with 620 unit tests across 50 files.
188
+ Version **1.1.0**. All engine build phases are implemented with 1001 unit tests across 61 files.
189
189
 
190
190
  Known gaps, stated plainly:
191
191
 
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Library version string. Matches package.json (published npm release). */
2
- declare const VERSION = "1.0.29";
2
+ declare const VERSION = "1.2.0";
3
3
  /** Returns the current library version. */
4
4
  declare function version(): string;
5
5
 
@@ -166,6 +166,19 @@ declare class PriceScale {
166
166
  /** Whether the range tracks the data (true) or has been set manually (false). */
167
167
  get autoScale(): boolean;
168
168
  setAutoScale(on: boolean): void;
169
+ /**
170
+ * Forget the measured range and go back to the placeholder.
171
+ *
172
+ * Called when a scale loses its last series: the range it holds described
173
+ * something that is no longer on the chart, and whatever arrives next may
174
+ * plot nothing at all. An indicator whose entire output is a table plots no
175
+ * values, and inheriting a departed oscillator's 0..100 left its pane
176
+ * labelled with a ladder it had no prices for.
177
+ *
178
+ * A manually scaled axis is left alone: the user set that range, and nothing
179
+ * would recompute it if it were thrown away.
180
+ */
181
+ reset(): void;
169
182
  /**
170
183
  * Manually scale the visible range around its centre. `factor` > 1 widens the
171
184
  * range (compress / zoom out), < 1 narrows it (expand / zoom in). Switches the
@@ -788,6 +801,84 @@ declare class Pane {
788
801
  yToPrice(y: number): number;
789
802
  }
790
803
 
804
+ /**
805
+ * A grid overlay pinned to a corner of the pane rather than to bars.
806
+ *
807
+ * Seasonality heatmaps, performance summaries and signal scoreboards are all
808
+ * the same shape: a small table of coloured cells that stays put while the
809
+ * chart pans underneath. That makes this a screen-space primitive like the
810
+ * watermark and the pane legend, not a series: it has no time anchor, takes no
811
+ * part in autoscale, and survives a zoom untouched.
812
+ */
813
+
814
+ type TablePosition = 'top-left' | 'top-center' | 'top-right' | 'middle-left' | 'middle-center' | 'middle-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
815
+ interface TableCell {
816
+ text: string;
817
+ /** Cell fill. Transparent when omitted, so the pane shows through. */
818
+ bgColor?: string;
819
+ /** Text colour. Derived from `bgColor` for contrast when omitted. */
820
+ textColor?: string;
821
+ align?: 'left' | 'center' | 'right';
822
+ /** Overrides the table's `fontSize` for this cell, for a heading row. */
823
+ fontSize?: number;
824
+ bold?: boolean;
825
+ }
826
+ interface ChartTableOptions {
827
+ position: TablePosition;
828
+ /** Gap from the pane edge, media px. */
829
+ margin: number;
830
+ /** Column width in media px. A per-column array sizes each one separately. */
831
+ cellWidth: number | readonly number[];
832
+ cellHeight: number;
833
+ fontSize: number;
834
+ /** Grid line colour. Omit to draw no grid. */
835
+ borderColor?: string;
836
+ borderWidth: number;
837
+ /**
838
+ * Table width as a percentage of the plot, 0 or omitted to size from
839
+ * `cellWidth` instead. Column proportions are preserved, so a per-column
840
+ * `cellWidth` array still controls the relative widths, and the percentage
841
+ * only decides the total.
842
+ */
843
+ widthPercent?: number;
844
+ /** Table height as a percentage of the plot, 0 or omitted to size from `cellHeight`. */
845
+ heightPercent?: number;
846
+ /**
847
+ * Relative row heights, one per row, defaulting to 1. A separator row is the
848
+ * reason this exists: stretched to fill a pane, an equal split makes a rule
849
+ * between two sections as tall as the sections themselves.
850
+ */
851
+ rowWeights?: readonly number[];
852
+ /** Backdrop behind the whole grid, drawn before the cells. */
853
+ background?: string;
854
+ /** Hit-test id, so a host can route clicks the way it does for other primitives. */
855
+ id?: string;
856
+ }
857
+ declare const DEFAULT_CHART_TABLE_OPTIONS: ChartTableOptions;
858
+ /** Top-left corner of the grid for a position keyword, in media px. */
859
+ declare function tableOrigin(position: TablePosition, margin: number, w: number, h: number, plotW: number, plotH: number): {
860
+ x: number;
861
+ y: number;
862
+ };
863
+ declare class ChartTable implements IPrimitive {
864
+ private _rows;
865
+ private _opts;
866
+ private _host;
867
+ /** Last drawn rect in media px, for hit-testing without recomputing layout. */
868
+ private _rect;
869
+ constructor(options?: Partial<ChartTableOptions>);
870
+ attached(host: PrimitiveHost): void;
871
+ detached(): void;
872
+ zOrder(): ZOrder;
873
+ options(): Readonly<ChartTableOptions>;
874
+ setOptions(patch: Partial<ChartTableOptions>): void;
875
+ /** Replace the grid. Rows may be ragged; each is drawn to its own length. */
876
+ setRows(rows: readonly (readonly TableCell[])[]): void;
877
+ rows(): readonly (readonly TableCell[])[];
878
+ draw(ctx: CanvasRenderingContext2D, rc: PrimitiveRenderContext): void;
879
+ hitTest(x: number, y: number): PrimitiveHit | null;
880
+ }
881
+
791
882
  /**
792
883
  * Indicator registry (ARCHITECTURE.md §6A, §8). The sibling of the chart-type
793
884
  * registry: that one answers *"how do I paint an array of bars"*, this one
@@ -1017,6 +1108,25 @@ interface IndicatorDescriptor {
1017
1108
  values: IndicatorValues;
1018
1109
  settings: Readonly<IndicatorSettings>;
1019
1110
  }): readonly SeriesMarker[];
1111
+ /**
1112
+ * Optional summary grid pinned to a corner of the pane.
1113
+ *
1114
+ * Some studies are not a value per bar at all: a seasonality heatmap is a
1115
+ * matrix of monthly returns, a scoreboard is a handful of statistics. Those
1116
+ * have no place in `calc`, whose contract is one column per plot aligned to
1117
+ * the bars, so they come back through here instead. Runs after every `calc`.
1118
+ *
1119
+ * Return `null` (or a zero-row grid) to draw nothing, which is how a
1120
+ * `showTable`-style input should switch it off.
1121
+ */
1122
+ table?(ctx: {
1123
+ bars: readonly Bar[];
1124
+ values: IndicatorValues;
1125
+ settings: Readonly<IndicatorSettings>;
1126
+ }): {
1127
+ rows: readonly (readonly TableCell[])[];
1128
+ options?: Partial<ChartTableOptions>;
1129
+ } | null;
1020
1130
  /** Optional horizontal reference levels drawn in the indicator's pane. */
1021
1131
  levels?(settings: Readonly<IndicatorSettings>): readonly IndicatorLevel[];
1022
1132
  /**
@@ -1287,6 +1397,9 @@ interface IndicatorHost {
1287
1397
  * the right pane. Removing a series does not remove its primitives, hence this.
1288
1398
  */
1289
1399
  removeIndicatorMarkers(markers: SeriesMarkers): void;
1400
+ /** Attach a corner-pinned summary grid to a pane, and detach it again. */
1401
+ addIndicatorTable(paneIndex: number): ChartTable;
1402
+ removeIndicatorTable(table: ChartTable): void;
1290
1403
  /** Bars of the primary price series — the calculation input. */
1291
1404
  sourceBars(): readonly Bar[];
1292
1405
  /** Index of a fresh pane for an indicator that wants its own. */
@@ -1977,7 +2090,6 @@ declare class Chart {
1977
2090
  private _drawingState;
1978
2091
  /** Pane currently maximized, and the weights to restore when it un-maximizes. */
1979
2092
  private _maximizedPane;
1980
- private _savedWeights;
1981
2093
  /** Legend rows per pane, so new ones stack below existing ones. */
1982
2094
  private readonly _legends;
1983
2095
  /** Pane holding the primary price series (only this pane gets magnet snapping). */
@@ -2269,6 +2381,21 @@ declare class Chart {
2269
2381
  private _relayout;
2270
2382
  /** Reserve a chart-wide left-axis column when any pane has a left price scale. */
2271
2383
  private _recomputeLeftAxis;
2384
+ /**
2385
+ * The share of the chart a pane gets. While one pane is maximized it takes
2386
+ * everything and the rest take nothing, so they lay out at zero height and
2387
+ * are hidden outright rather than collapsed to a sliver. A sliver still
2388
+ * paints a strip of squeezed candles and a separator hairline above the very
2389
+ * pane the user asked to see on its own.
2390
+ *
2391
+ * Stored weights are never touched, so restoring is exact and `getState`
2392
+ * cannot persist a placeholder.
2393
+ */
2394
+ private _layoutWeight;
2395
+ /** First pane with a share of the chart: the one that sits against the top edge. */
2396
+ private _topPaneIndex;
2397
+ /** Last pane with a share of the chart: the one that owns the time axis. */
2398
+ private _bottomPaneIndex;
2272
2399
  private _weightTotal;
2273
2400
  /** Grab tolerance around a pane boundary, in media px. */
2274
2401
  private static readonly DIVIDER_GRAB;
@@ -2299,8 +2426,9 @@ declare class Chart {
2299
2426
  */
2300
2427
  movePane(index: number, direction: -1 | 1): boolean;
2301
2428
  /**
2302
- * Expand one pane to fill the chart, collapsing the others to a sliver.
2303
- * Calling it again (or on another pane) restores the previous weights.
2429
+ * Expand one pane to fill the chart, hiding the others. Calling it again (or
2430
+ * on another pane) puts the stack back exactly as it was, since the stored
2431
+ * weights were never disturbed.
2304
2432
  */
2305
2433
  maximizePane(index: number): boolean;
2306
2434
  /** The maximized pane index, or null when none is. */
@@ -2745,7 +2873,7 @@ declare function ema(values: readonly number[], period: number): number[];
2745
2873
  declare function emaSeries(bars: readonly Bar[], period: number): Bar[];
2746
2874
 
2747
2875
  /**
2748
- * Relative Strength Index — Wilder's RSI, matching `openalgo.ta.rsi(close, 14)`.
2876
+ * Relative Strength Index — Wilder's RSI, matching `openalgo.rsi(close, 14)`.
2749
2877
  *
2750
2878
  * Uses Wilder smoothing (RMA): the first average gain/loss is the simple mean of
2751
2879
  * the first `period` deltas, then each subsequent average carries
@@ -2762,7 +2890,7 @@ declare function rsi(values: readonly number[], period?: number): number[];
2762
2890
  declare function rsiSeries(bars: readonly Bar[], period?: number): Bar[];
2763
2891
 
2764
2892
  /**
2765
- * Average True Range — Wilder's ATR, matching `openalgo.ta.atr(high, low, close, 14)`.
2893
+ * Average True Range — Wilder's ATR, matching `openalgo.atr(high, low, close, 14)`.
2766
2894
  * Shared by the Supertrend indicator. True range of the first bar is high-low.
2767
2895
  */
2768
2896
  /** True range series. tr[0] = high[0]-low[0]; thereafter the classic 3-way max. */
@@ -2771,7 +2899,7 @@ declare function trueRange(high: readonly number[], low: readonly number[], clos
2771
2899
  declare function atr(high: readonly number[], low: readonly number[], close: readonly number[], period?: number): number[];
2772
2900
 
2773
2901
  /**
2774
- * Supertrend — matching `openalgo.ta.supertrend(high, low, close, period=10, multiplier=3.0)`,
2902
+ * Supertrend — matching `openalgo.supertrend(high, low, close, period=10, multiplier=3.0)`,
2775
2903
  * which returns (supertrend value, direction). Direction follows the OpenAlgo
2776
2904
  * convention: -1 = uptrend (line is support below price), +1 = downtrend (line
2777
2905
  * is resistance above price). ATR uses Wilder smoothing (see ./atr).
@@ -3366,6 +3494,44 @@ declare function utcSecondsToIstDateString(utcSeconds: number): string;
3366
3494
  declare function formatIstDate(utcSeconds: number): string;
3367
3495
  /** True if the two UTC-second instants fall on different IST calendar days. */
3368
3496
  declare function isNewIstDay(prevUtcSeconds: number, utcSeconds: number): boolean;
3497
+ /**
3498
+ * Bar indices that open a new trading session, read back from the timestamps.
3499
+ *
3500
+ * An exchange's overnight break is the widest recurring gap in an intraday
3501
+ * series, and it is the only thing in the bars themselves that says where one
3502
+ * trading day ends. Reading it back beats assuming a timezone: the same code
3503
+ * has to serve an exchange in Mumbai and one in New York, and a fixed midnight
3504
+ * lands mid-session for one of them. Getting it wrong splices the tail of one
3505
+ * session onto the head of the next across the overnight gap, which inflates
3506
+ * that period's high-low range and throws anything measured from it a long way
3507
+ * off.
3508
+ *
3509
+ * Returns null when the series shows no readable session break: a market that
3510
+ * never closes, bars already a day or coarser, or a feed whose only gaps are
3511
+ * weekends. The caller then falls back to a calendar rule, which is the right
3512
+ * answer in exactly those cases.
3513
+ */
3514
+ declare function sessionStartIndices(times: readonly number[]): number[] | null;
3515
+ /**
3516
+ * Per-bar flags marking the first bar of each trading session.
3517
+ *
3518
+ * Falls back to the IST calendar day when the series has no readable session
3519
+ * break, which is the only answer available for daily bars and a defensible one
3520
+ * for a market that never closes.
3521
+ */
3522
+ declare function sessionStartFlags(times: readonly number[]): boolean[];
3523
+ /**
3524
+ * Per-bar flags marking the first bar of each calendar period, where `isNew`
3525
+ * decides what "period" means for two instants.
3526
+ *
3527
+ * The test runs on session opens rather than on every bar, so a session that
3528
+ * straddles the boundary is not cut in half: the last ninety minutes of a New
3529
+ * York Friday fall on a Saturday in IST, and testing bar to bar would start the
3530
+ * next week partway through Friday's session. With no readable sessions the
3531
+ * test runs bar to bar, which is the same thing when each bar is its own
3532
+ * session.
3533
+ */
3534
+ declare function calendarPeriodFlags(times: readonly number[], isNew: (prevUtcSeconds: number, utcSeconds: number) => boolean): boolean[];
3369
3535
 
3370
3536
  /** Clamp `value` into the inclusive range [min, max]. */
3371
3537
  declare function clamp(value: number, min: number, max: number): number;
@@ -3378,4 +3544,4 @@ declare function lerp(a: number, b: number, t: number): number;
3378
3544
  */
3379
3545
  declare function roundToTick(value: number, step: number): number;
3380
3546
 
3381
- export { ALT_PRESET, type AddSeriesOptions, type AggTick, BUILTIN_COMMANDS, type Bar, type BarUpdate, type BarsRequest, BuySellButtons, type BuySellButtonsOptions, CHART_STATE_VERSION, CandleBuilder, type CandleBuilderOptions, type CandleStyle, type CandleUpdate, Chart, type ChartEvent, type ChartOptions, type ChartState, type ChartTheme, type CrosshairMoveEvent, type CustomShortcut, DEFAULT_CANDLE_BUILDER_OPTIONS, DEFAULT_CANDLE_STYLE, DEFAULT_HISTOGRAM_STYLE, DEFAULT_KEYMAP, DEFAULT_PRICE_SCALE_OPTIONS, DEFAULT_THEME, DEFAULT_TIME_NAVIGATOR_OPTIONS, DEFAULT_TIME_SCALE_OPTIONS, DEFAULT_TRADING_COLORS, type DataFeed, DataLayer, type DepthLevel, type DrawItem, EventMarkers, FakeDataFeed, type FeedScheduler, type FillPoint, type HistogramStyle, INDICATOR_LINE_STYLES, INDICATOR_PLOT_STYLES, INDICATOR_SOURCES, type IPrimitive, IST_OFFSET_SECONDS, type IndexedBar, type IndicatorApi, type IndicatorAttachContext, type IndicatorDescriptor, IndicatorFill, type IndicatorFillOptions, type IndicatorFillSpec, type IndicatorHost, type IndicatorInput, type IndicatorLevel, type IndicatorPlot, type IndicatorSettings, type IndicatorSource, type IndicatorState, type IndicatorStore, type IndicatorValues, InvalidationLevel, type KeymapEntry, type LateTickPolicy, type LegendValue, type LinePoint, type LogicalRange, LogoWatermark, type LogoWatermarkOptions, type LtpEvent, type MarkerPosition, type MarkerShape, type MarkerSize, type MarketDepth, type OpenAlgoConfig, OpenAlgoDataFeed, type OpenAlgoLiveConfig, OpenAlgoLiveDataFeed, type OpenAlgoTradeConfig, OpenAlgoTradeFeed, type OpenAlgoWsConfig, OpenAlgoWsFeed, type OrderSide$1 as OrderSide, type OrderType$1 as OrderType, type OriginalTime, Pane, type PaneInvalidation, PaneLegend, type PaneLegendAction, type PaneLegendOptions, type PaneState, type PlaceOrder, type PositionSide, PriceLine, type PriceLineOptions, type PriceRange, PriceScale, type PriceScaleId, type PriceScaleMode, type PriceScaleOptions, type PriceScaleState, type PrimitiveHit, type PrimitiveHost, type PrimitiveRenderContext, type RendererEntry, type RestoreReport, type SeriesApi, type SeriesDataItem, type SeriesId, type SeriesMarker, SeriesMarkers, type SeriesRenderContext, type SeriesState, type SeriesStyle, type SeriesType, type ShortcutListItem, ShortcutManager, type ShortcutManagerOptions, type ShortcutPreset, type ShortcutScope, type ShortcutTriggerEvent, type Size, type SocketFactory, type SocketLike, type SupertrendPoint, type Tick, TickBarAggregator, type TickMarkType, type TickTimeframe, TimeNavigator, type TimeNavigatorAction, type TimeNavigatorOptions, TimeScale, type TimeScaleOp, type TimeScaleOptions, type TradeFeed, type TradeMarkerVariant, TradeMarkersPrimitive, type TradingColors, TradingController, type TradingHost, type TradingLineStyle, type TradingLineVariant, type TradingOrder, type TradingOrderSide, type TradingOrderType, type TradingPosition, type TradingSettings, type TradingSyncPayload, type TradingTrade, type UTCSeconds, type UnsubscribeFn, VERSION, type VolumeMode, type WatermarkPosition, type Whitespace, type WsControlMessage, type WsMode, type WsState, type ZOrder, atr, autoscaleRange, bestHit, bitmapSize, clamp, compactVolume, conflateBars, conflateItems, conflationGroupSize, createChart, darkTheme, drawLabel, drawShape, effectiveMarkerPx, ema, emaSeries, epochMsToUtcSeconds, eventToCombo, formatCombo, formatIstDate, formatIstTime, formatIstTimeSeconds, formatSubscribe, formatUnsubscribe, generateBars, getChartType, getIndicator, hasIndicator, indicatorDefaults, indicatorStyleInputs, intervalToSeconds, isNewIstDay, isReservedCombo, isValidCombo, isWhitespace, istStringToUtcSeconds, lerp, lightTheme, mapHistoryResponse, mapOrder, mapPosition, markerSizePx, mergeBars, niceTicks, normalizeCombo, optimalBarWidth, parseCombo, parseMessage, plotStyleKeys, precisionForStep, registerChartType, registerIndicator, registeredChartTypes, registeredIndicators, roundToTick, rowTimeToUtcSeconds, rsi, rsiSeries, snapToDevicePixel, sourceValue, sourceValues, supertrend, supertrendSeries, toBar, trueRange, utcSecondsToIstDateString, utcSecondsToIstParts, version, verticalGradient, watermarkRect };
3547
+ export { ALT_PRESET, type AddSeriesOptions, type AggTick, BUILTIN_COMMANDS, type Bar, type BarUpdate, type BarsRequest, BuySellButtons, type BuySellButtonsOptions, CHART_STATE_VERSION, CandleBuilder, type CandleBuilderOptions, type CandleStyle, type CandleUpdate, Chart, type ChartEvent, type ChartOptions, type ChartState, ChartTable, type ChartTableOptions, type ChartTheme, type CrosshairMoveEvent, type CustomShortcut, DEFAULT_CANDLE_BUILDER_OPTIONS, DEFAULT_CANDLE_STYLE, DEFAULT_CHART_TABLE_OPTIONS, DEFAULT_HISTOGRAM_STYLE, DEFAULT_KEYMAP, DEFAULT_PRICE_SCALE_OPTIONS, DEFAULT_THEME, DEFAULT_TIME_NAVIGATOR_OPTIONS, DEFAULT_TIME_SCALE_OPTIONS, DEFAULT_TRADING_COLORS, type DataFeed, DataLayer, type DepthLevel, type DrawItem, EventMarkers, FakeDataFeed, type FeedScheduler, type FillPoint, type HistogramStyle, INDICATOR_LINE_STYLES, INDICATOR_PLOT_STYLES, INDICATOR_SOURCES, type IPrimitive, IST_OFFSET_SECONDS, type IndexedBar, type IndicatorApi, type IndicatorAttachContext, type IndicatorDescriptor, IndicatorFill, type IndicatorFillOptions, type IndicatorFillSpec, type IndicatorHost, type IndicatorInput, type IndicatorLevel, type IndicatorPlot, type IndicatorSettings, type IndicatorSource, type IndicatorState, type IndicatorStore, type IndicatorValues, InvalidationLevel, type KeymapEntry, type LateTickPolicy, type LegendValue, type LinePoint, type LogicalRange, LogoWatermark, type LogoWatermarkOptions, type LtpEvent, type MarkerPosition, type MarkerShape, type MarkerSize, type MarketDepth, type OpenAlgoConfig, OpenAlgoDataFeed, type OpenAlgoLiveConfig, OpenAlgoLiveDataFeed, type OpenAlgoTradeConfig, OpenAlgoTradeFeed, type OpenAlgoWsConfig, OpenAlgoWsFeed, type OrderSide$1 as OrderSide, type OrderType$1 as OrderType, type OriginalTime, Pane, type PaneInvalidation, PaneLegend, type PaneLegendAction, type PaneLegendOptions, type PaneState, type PlaceOrder, type PositionSide, PriceLine, type PriceLineOptions, type PriceRange, PriceScale, type PriceScaleId, type PriceScaleMode, type PriceScaleOptions, type PriceScaleState, type PrimitiveHit, type PrimitiveHost, type PrimitiveRenderContext, type RendererEntry, type RestoreReport, type SeriesApi, type SeriesDataItem, type SeriesId, type SeriesMarker, SeriesMarkers, type SeriesRenderContext, type SeriesState, type SeriesStyle, type SeriesType, type ShortcutListItem, ShortcutManager, type ShortcutManagerOptions, type ShortcutPreset, type ShortcutScope, type ShortcutTriggerEvent, type Size, type SocketFactory, type SocketLike, type SupertrendPoint, type TableCell, type TablePosition, type Tick, TickBarAggregator, type TickMarkType, type TickTimeframe, TimeNavigator, type TimeNavigatorAction, type TimeNavigatorOptions, TimeScale, type TimeScaleOp, type TimeScaleOptions, type TradeFeed, type TradeMarkerVariant, TradeMarkersPrimitive, type TradingColors, TradingController, type TradingHost, type TradingLineStyle, type TradingLineVariant, type TradingOrder, type TradingOrderSide, type TradingOrderType, type TradingPosition, type TradingSettings, type TradingSyncPayload, type TradingTrade, type UTCSeconds, type UnsubscribeFn, VERSION, type VolumeMode, type WatermarkPosition, type Whitespace, type WsControlMessage, type WsMode, type WsState, type ZOrder, atr, autoscaleRange, bestHit, bitmapSize, calendarPeriodFlags, clamp, compactVolume, conflateBars, conflateItems, conflationGroupSize, createChart, darkTheme, drawLabel, drawShape, effectiveMarkerPx, ema, emaSeries, epochMsToUtcSeconds, eventToCombo, formatCombo, formatIstDate, formatIstTime, formatIstTimeSeconds, formatSubscribe, formatUnsubscribe, generateBars, getChartType, getIndicator, hasIndicator, indicatorDefaults, indicatorStyleInputs, intervalToSeconds, isNewIstDay, isReservedCombo, isValidCombo, isWhitespace, istStringToUtcSeconds, lerp, lightTheme, mapHistoryResponse, mapOrder, mapPosition, markerSizePx, mergeBars, niceTicks, normalizeCombo, optimalBarWidth, parseCombo, parseMessage, plotStyleKeys, precisionForStep, registerChartType, registerIndicator, registeredChartTypes, registeredIndicators, roundToTick, rowTimeToUtcSeconds, rsi, rsiSeries, sessionStartFlags, sessionStartIndices, snapToDevicePixel, sourceValue, sourceValues, supertrend, supertrendSeries, tableOrigin, toBar, trueRange, utcSecondsToIstDateString, utcSecondsToIstParts, version, verticalGradient, watermarkRect };