openalgo-charts 2.3.2 → 2.4.5

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
@@ -4,22 +4,32 @@
4
4
 
5
5
  **A from-scratch, dependency-free HTML5-canvas charting engine for OpenAlgo.**
6
6
 
7
- Professional interactive charts, 102 built-in indicators plus your own custom ones, 85 drawing tools, order flow, market replay, linked chart grids, on-chart trading, vector SVG export and an optional WebGL2 backend. Eight lazy-loaded tiers, zero runtime dependencies, 77.23 KB Brotli for the base engine, and a one-call widget tier that adds the toolbar, drawing rail, dialogs and shortcuts.
7
+ Professional interactive charts, 105 built-in indicators plus your own custom ones, 85 drawing tools, order flow, market replay, linked chart grids, on-chart trading, vector SVG export and an optional WebGL2 backend. Nine lazy-loaded tiers, zero runtime dependencies, 91.00 kB Brotli for the base engine, and a one-call widget tier that adds the toolbar, drawing rail, dialogs and shortcuts.
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-77.23%20KB%20base%20%C2%B7%20215.76%20KB%20all%20tiers-brightgreen.svg)](#size-budget)
12
- [![tests](https://img.shields.io/badge/tests-5182%20passing-brightgreen.svg)](#develop)
11
+ [![bundle](https://img.shields.io/badge/brotli-91.00%20kB%20base%20%C2%B7%20243.96%20kB%20all%20tiers-brightgreen.svg)](#size-budget)
12
+ [![tests](https://img.shields.io/badge/engine%20tests-5734%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)  ·  [**Migrating to 2.0**](./docs/migrating-to-2.md)  ·  [**Architecture**](./ARCHITECTURE.md)
16
16
 
17
- <img src="docs/architecture-diagram.svg" alt="OpenAlgo Charts architecture: seven layers from the public API down to feeds and data, with 102 built-in plus custom indicators, 85 drawing tools, and an eight-tier bundle legend" width="920" />
17
+ <img src="docs/architecture-diagram.svg" alt="OpenAlgo Charts architecture: seven layers from the public API down to feeds and data, with 105 built-in plus custom indicators, 85 drawing tools, and a nine-tier bundle legend" width="920" />
18
18
 
19
19
  </div>
20
20
 
21
21
  ---
22
22
 
23
+ ## Walkthrough video
24
+
25
+ A tour of OpenAlgo Charts running inside OpenAlgo: chart types, the indicator library,
26
+ drawing tools, order placement from the chart, market replay, combined option premium
27
+ charts, and the historical data explorer.
28
+
29
+ <p align="center">
30
+ <a href="https://www.youtube.com/watch?v=7Q_Twd6mNQ8"><img src="https://img.youtube.com/vi/7Q_Twd6mNQ8/maxresdefault.jpg" alt="OpenAlgo Charts walkthrough video" width="920" /></a>
31
+ </p>
32
+
23
33
  ## Live OpenAlgo trading terminal
24
34
 
25
35
  Right-click the chart to place market / limit / stop orders, drag the order and TP/SL bracket lines to modify, and watch live P&amp;L on the position line - all on real OpenAlgo history + WebSocket tick data, with an analyzer (sandbox) mode so nothing goes live until you arm it.
@@ -43,13 +53,13 @@ Every chart in the [live gallery](https://marketcalls.github.io/openalgo-charts/
43
53
 
44
54
  ## Install
45
55
 
46
- Current version: **2.3.2**.
56
+ Current version: **2.4.5**.
47
57
 
48
- This release makes history repair follow the stream: one refresh a moment after
49
- each bar closes, an immediate one when the stream skips a bucket, each fetching
50
- only the tail; and a forming bar the builder opened mid-bucket takes its true
51
- open from history instead of its first tick. See the
52
- [2.3.2 changelog](./CHANGELOG.md#232).
58
+ This release adds validated instrument metadata, adapter conformance checks,
59
+ browser endurance tooling, translated widget controls and trading capability
60
+ checks. Named workspace documents and indicator templates use an optional
61
+ asynchronous storage tier. Existing hosts can adopt these contracts incrementally.
62
+ See the [2.4.5 changelog](./CHANGELOG.md#245).
53
63
 
54
64
  ```bash
55
65
  npm install openalgo-charts
@@ -78,14 +88,14 @@ in front of npm rather than being places you upload to. A chart is one HTML file
78
88
  ```html
79
89
  <div id="chart" style="width:100vw;height:100vh"></div>
80
90
  <script type="module">
81
- import { createChart } from 'https://unpkg.com/openalgo-charts@2.3.2/dist/openalgo-charts.mjs';
91
+ import { createChart } from 'https://unpkg.com/openalgo-charts@2.4.5/dist/openalgo-charts.mjs';
82
92
  const chart = createChart(document.getElementById('chart'), { timezone: 'Asia/Kolkata' });
83
93
  chart.addSeries('candlestick').setData(bars);
84
94
  </script>
85
95
  ```
86
96
 
87
97
  Each tier is its own file, so `openalgo-charts.indicators.mjs` next to it registers
88
- all 102 built-ins. Pin the version in anything you leave running. There is no
98
+ all 105 built-ins. Pin the version in anything you leave running. There is no
89
99
  stylesheet to load: the engine ships no DOM, and the one tier that does
90
100
  (`openalgo-charts/widget`) injects its own. See
91
101
  [Use from a CDN](https://marketcalls.github.io/openalgo-charts/docs/cdn).
@@ -110,7 +120,9 @@ widget.chart; // the Chart underneath, every base API available
110
120
  widget.draw; // the DrawingController the rail drives
111
121
  ```
112
122
 
113
- `openalgo-charts/widget` is the eighth tier and the only one that builds DOM: a top bar (symbol search, interval pills, chart type, Indicators, capture, settings, theme), the drawing rail with pins and flyouts, a status line, responsive mobile header and bottom controls, toasts, a right-click menu, a keymap with a `?` panel, and optional layout persistence. Every dialog is generated from a schema the engine already ships (`chartSettingsSchema`, the indicator descriptor, `drawingSettingsSchema`), so no control exists without something behind it, and the chrome takes its colours from the active `ChartTheme` through `--oac-` tokens, so `setTheme` recolours canvas and chrome together. It drives the engine only through the public API, and the build proves it: the ESLint tier ACL and `npm run shake` keep it out of every other bundle, and importing the module touches no DOM, so it can sit in code that also runs on a server. The guide is [`docs/widget.md`](./docs/widget.md).
123
+ `openalgo-charts/widget` is the optional interface tier and the only one that builds DOM: a top bar (symbol search, interval pills, chart type, Indicators, capture, settings, theme), the drawing rail with pins and flyouts, a status line, responsive mobile header and bottom controls, toasts, a right-click menu, a keymap with a `?` panel, and optional layout persistence. Every dialog is generated from a schema the engine already ships (`chartSettingsSchema`, the indicator descriptor, `drawingSettingsSchema`), so no control exists without something behind it, and the chrome takes its colours from the active `ChartTheme` through `--oac-` tokens, so `setTheme` recolours canvas and chrome together. It drives the engine only through the public API, and the build proves it: the ESLint tier ACL and `npm run shake` keep it out of every other bundle, and importing the module touches no DOM, so it can sit in code that also runs on a server. The guide is [`docs/widget.md`](./docs/widget.md).
124
+
125
+ Widget controls and accessible labels accept a typed translation callback with English fallback. See [widget localization](./docs/widget-localization.md). The separate `openalgo-charts/workspace` tier provides validated named layouts, indicator templates and asynchronous storage, with an IndexedDB adapter and revision conflict detection. See [workspaces](./docs/workspaces.md).
114
126
 
115
127
  ## Tiers
116
128
 
@@ -118,16 +130,17 @@ Import only what you use. Each tier is a separate bundle that registers into the
118
130
 
119
131
  | Import | Contents | Brotli |
120
132
  |---|---|---|
121
- | `openalgo-charts` | Engine, 13 chart types, panes &amp; scales, primitives, registries, chart state, chart linking, bar cache, interval registry, trading overlay, SVG export, render backend port, OpenAlgo feeds | 77.23 KB |
122
- | `openalgo-charts/indicators` | 102 built-in indicators, the `registerIndicator` contract for your own, and the Tier-2 (external-data) contract | 28.19 KB |
123
- | `openalgo-charts/draw` | 85 drawing tools + a headless drawing controller, clipboard, settings schema, level palette, freehand geometry and SVG icons | 34.53 KB |
124
- | `openalgo-charts/transform` | Heikin Ashi, Renko, Range bars, Line Break, Point &amp; Figure, Kagi, and symbol arithmetic (`AAPL/MSFT`) | 4.44 KB |
125
- | `openalgo-charts/profile` | Volume Profile, Market Profile (TPO) with compact pixel letters, Footprint, order flow | 14.96 KB |
126
- | `openalgo-charts/trade` | Order / position / bracket tools + DOM ladder | 7.61 KB |
127
- | `openalgo-charts/webgl` | WebGL2 series backend: batched, analytically anti-aliased GPU rendering of the standard chart types behind `renderer: 'auto'`, with a session-long fallback to the 2D path | 6.38 KB |
128
- | `openalgo-charts/widget` | The chart with its chrome in one call: `createWidget` adds a top bar, the drawing rail, a status line, the settings and indicator dialogs, drawing properties, a right-click menu, a keymap with a `?` panel and optional layout persistence. The only tier that ships DOM | 42.41 KB |
129
-
130
- Everything together is **215.76 KB Brotli**; a widget terminal (base + draw + indicators + widget, what one `createWidget` call loads) is 182.37 KB. Figures are measured from the 2.3.2 release build. The trade tier is listed as its delta over the base, so loading base + trade costs 84.84 KB.
133
+ | `openalgo-charts` | Engine, 13 chart types, panes &amp; scales, primitives, registries, chart state, chart linking, bar cache, interval registry, trading overlay, SVG export, render backend port, OpenAlgo feeds | 91.00 kB |
134
+ | `openalgo-charts/indicators` | 105 built-in indicators, the `registerIndicator` contract for your own, and the Tier-2 (external-data) contract | 29.84 kB |
135
+ | `openalgo-charts/draw` | 85 drawing tools + a headless drawing controller, clipboard, settings schema, level palette, freehand geometry and SVG icons | 35.43 kB |
136
+ | `openalgo-charts/transform` | Heikin Ashi, Renko, Range bars, Line Break, Point &amp; Figure, Kagi, and symbol arithmetic (`AAPL/MSFT`) | 4.50 kB |
137
+ | `openalgo-charts/profile` | Volume Profile, Market Profile (TPO) with compact pixel letters, Footprint, order flow | 14.96 kB |
138
+ | `openalgo-charts/trade` | Order / position / bracket tools + DOM ladder | 8.01 kB |
139
+ | `openalgo-charts/webgl` | WebGL2 series backend: batched, analytically anti-aliased GPU rendering of the standard chart types behind `renderer: 'auto'`, with a session-long fallback to the 2D path | 6.39 kB |
140
+ | `openalgo-charts/widget` | The chart with its chrome in one call: `createWidget` adds a top bar, the drawing rail, a status line, the settings and indicator dialogs, drawing properties, a right-click menu, a keymap with a `?` panel and optional layout persistence. The only tier that ships DOM | 48.30 kB |
141
+ | `openalgo-charts/workspace` | Validated workspace and indicator-template documents, named catalogs with revision checks, asynchronous storage and an IndexedDB adapter; no DOM | 5.52 kB |
142
+
143
+ Everything together is **243.96 kB Brotli**; a widget terminal with built-in indicators (base + draw + indicators + widget) is 204.58 kB. Figures are measured from the 2.4.5 release build. The trade tier is 8.01 kB on its own; base + trade costs 99.01 kB. Sizes use decimal kB.
131
144
 
132
145
  ## What's built
133
146
 
@@ -144,11 +157,18 @@ const macd = chart.addIndicator('macd', { fastPeriod: 8 }); // gets its own pa
144
157
  macd.setSettings({ 'macd:width': 2, 'macd:lineStyle': 'dashed' });
145
158
  ```
146
159
 
147
- 102 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, with a least-squares family (Least Squares Moving Average, Linear Regression Slope, Standard Error, Standard Error Bands) and a Smoothed Moving Average alongside them, joined in 1.8.3 by the T3 average, the Hull Suite (Hma / Ehma / Thma with a displaced band) and Consolidation and Breakout, which tracks inside-bar ranges and marks the bar that leaves one. Twenty-eight of them draw shaded bands, six emit named buy/sell markers, two recolour the price candles, and Seasonality draws a monthly return heatmap as a table over the chart. The full catalogue with ids and defaults is in the docs.
160
+ 105 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, with a least-squares family (Least Squares Moving Average, Linear Regression Slope, Standard Error, Standard Error Bands) and a Smoothed Moving Average alongside them, joined in 1.8.3 by the T3 average, the Hull Suite (Hma / Ehma / Thma with a displaced band) and Consolidation and Breakout, which tracks inside-bar ranges and marks the bar that leaves one. Twenty-eight of them draw shaded bands, six emit named buy/sell markers, two recolour the price candles, and Seasonality draws a monthly return heatmap as a table over the chart. The full catalogue with ids and defaults is in the docs.
161
+
162
+ Since 2.4.0 a study can fold the chart's own bars up to a higher timeframe with `securitySeries` (as the bucket stood at each bar, or the last completed one, or with lookahead when reproducing a source that repaints), paint a plot displaced by a number of bars, colour a candle's wick and border apart from its body, pin a marker to the pane edge, put a tooltip on a drawn zone, compute an alert message from the bar that fired, and ask the host for another instrument's bars through `chart.setBarsProvider`. A calculation that throws once it is on the chart is reported on that study's data status rather than thrown into the render loop.
148
163
 
149
164
  Every built-in is measured against its standard definition bar by bar, at several parameter sets, and each one's warmup (the first bar it can honestly produce a value for) is part of that check rather than an afterthought. A study draws nothing until it has the history it needs.
150
165
 
151
- 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).
166
+ 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 arrives independently of the chart's bars (CVD or an external feed).
167
+
168
+ The development data contract includes optional per-bar `oi` for open interest.
169
+ It is a level, not a flow: folds retain the latest reading instead of summing it.
170
+ Zero and absence remain distinct, and live quotes without a reading leave a gap.
171
+ See [Open interest data](docs/open-interest.md).
152
172
 
153
173
  ### Drawing tools
154
174
 
@@ -228,6 +248,12 @@ replay.play({ speed: 2 }); // emits replay:frame per bar
228
248
 
229
249
  Headless: the controller owns the playhead and ships no DOM, so the transport bar is yours to draw from `state()` and the `replay:*` events. Each step hands the series a prefix of the session through the ordinary `setData` path, which is what makes every indicator, level, fill, marker and legend row reconstruct itself as it stood at that bar. `stop()` puts the full history and the exact viewport back.
230
250
 
251
+ For a grid, `ReplayGroup` drives captured charts with one availability-time clock.
252
+ Focused/all scope changes preserve UTC time; coarse candles wait for their declared
253
+ close or form from available finer bars. The [yfinance reference host](examples/yfinance/)
254
+ demonstrates shared scope controls, per-chart readouts, cancellation and restoration.
255
+ Existing standalone replay defaults remain unchanged.
256
+
231
257
  ### Symbol comparison
232
258
 
233
259
  ```ts
@@ -252,7 +278,7 @@ Hover one chart and the same **instant** is marked on the others; pan or zoom on
252
278
 
253
279
  Nothing crosses a chart boundary as a logical index. The x axis is a gapless index over each chart's own bars, so index 300 is a different instant on every chart: every value is converted index to time on the sender and time back to index on the receiver, against that chart's own data. A daily chart and an hourly chart with different history depth therefore stay on the same instant, which the naive index copy gets right only when both charts hold the same bars. An instant outside a follower's first or last bar is an absence, not a gap, so it draws nothing; inside its range with no bar there it snaps to the nearest bar in time, or draws nothing under `whenMissing: 'hide'`. The linked crosshair is a vertical line only, at reduced opacity: a mirrored horizontal line would assert a price that belongs to another instrument.
254
280
 
255
- Headless like the rest, and the engine has no instrument concept, so symbol sync is a partnership: the host emits `'symbol'` on the chart's bus (or calls `group.setSymbol`) and supplies the per-member `onSymbol` that loads the bars. A member with no `onSymbol` broadcasts but never follows, which is how you pin one chart of a grid.
281
+ Symbol sync remains a host partnership even when using optional instrument metadata: the host emits `'symbol'` on the chart's bus (or calls `group.setSymbol`) and supplies the per-member `onSymbol` that loads the bars. A member with no `onSymbol` broadcasts but never follows, which is how you pin one chart of a grid.
256
282
 
257
283
  ### Settings &amp; context menu
258
284
  `chartSettingsSchema(chart)` describes a full settings dialog as tabs of controls, in the same descriptor vocabulary the indicator settings form already uses; `readChartSettings` and `applyChartSettings` are its round trip over flat, JSON-safe keys. Five tabs (Price, Readout, Axes, Appearance, Trading), and a bullish/bearish pair is **one** `colorPair` row carrying its switch and both swatches instead of two stacked rows. Grid, crosshair, scale text, plot margins, status-line fields, the chart timezone, trading colours and the primary series' own style are all real options behind it, so no control in the schema is inert.
@@ -419,16 +445,17 @@ Enforced in CI by [`size-limit`](./.size-limit.json). Nothing is excluded, becau
419
445
 
420
446
  | Bundle | Limit | Actual |
421
447
  |---|---|---|
422
- | Base engine | 78 KB | 77.23 KB |
423
- | Base + trade | 86 KB | 84.84 KB |
424
- | Indicators tier | 30 KB | 28.19 KB |
425
- | Draw tier | 36 KB | 34.53 KB |
426
- | Transform tier | 6 KB | 4.44 KB |
427
- | Profile tier | 15 KB | 14.96 KB |
428
- | WebGL2 tier | 7 KB | 6.38 KB |
429
- | Widget tier | 43 KB | 42.41 KB |
430
- | Widget terminal (base + draw + indicators + widget) | 183 KB | 182.37 KB |
431
- | **Everything** | 218 KB | 215.76 KB |
448
+ | Base engine | 91.5 kB | 91.00 kB |
449
+ | Base + trade | 100 kB | 99.01 kB |
450
+ | Indicators tier | 30 kB | 29.84 kB |
451
+ | Draw tier | 36 kB | 35.43 kB |
452
+ | Transform tier | 6 kB | 4.50 kB |
453
+ | Profile tier | 15 kB | 14.96 kB |
454
+ | WebGL2 tier | 7 kB | 6.39 kB |
455
+ | Widget tier | 48.75 kB | 48.30 kB |
456
+ | Widget terminal (base + draw + indicators + widget) | 205 kB | 204.58 kB |
457
+ | Workspace tier | 6 kB | 5.52 kB |
458
+ | **Everything** | 245 kB | 243.96 kB |
432
459
 
433
460
  ## Documentation
434
461
 
@@ -473,11 +500,13 @@ See [Contributing](./CONTRIBUTING.md) for setup, targeted checks, documentation
473
500
  ```bash
474
501
  npm install # install dev toolchain
475
502
  npm run typecheck # strict TypeScript check
476
- npm test # unit tests (vitest) - 5215 across 210 files
503
+ npm test # engine unit tests (Vitest): 5734 across 242 files
504
+ npm run test:demo # reference-host tests: 389 across 30 files
505
+ npm run test:endurance # node endurance-harness tests: 7 cases
477
506
  npm run build # Rollup -> dist/ (minified ESM per tier + types)
478
507
  npm run size # size-limit (Brotli) against the budget
479
508
  npm run e2e # Playwright Chromium smoke tests
480
- npm run verify # lint + typecheck + test + build + demo tests + dts + size + shake
509
+ npm run verify # lint + types + unit + endurance harness + build + demo + dts + size + shake
481
510
  ```
482
511
 
483
512
  ## Principles
@@ -490,7 +519,7 @@ npm run verify # lint + typecheck + test + build + demo tests + dts + size +
490
519
 
491
520
  ## Status &amp; limitations
492
521
 
493
- Version **2.3.2**. All engine build phases are implemented. Upgrading a 1.9.x host: [Migrating to 2.0](./docs/migrating-to-2.md).
522
+ Version **2.4.5**. All engine build phases are implemented. Upgrading a 1.9.x host: [Migrating to 2.0](./docs/migrating-to-2.md).
494
523
 
495
524
  Known gaps, stated plainly:
496
525
 
@@ -1,4 +1,4 @@
1
- import { PrimitiveRenderContext, IPrimitive, PrimitiveHost, ZOrder, PrimitiveHit, DataLayer } from 'openalgo-charts';
1
+ import { AlertDrawingValue, AlertDrawingLevel, PrimitiveRenderContext, IPrimitive, PrimitiveHost, ZOrder, PrimitiveHit, DataLayer, AlertDrawingInfo } from 'openalgo-charts';
2
2
 
3
3
  /**
4
4
  * The per-tool settings schema: what a host may show in a drawing's settings
@@ -341,9 +341,21 @@ interface ExpandContext {
341
341
  toPixel?(p: DrawingPoint): ScreenPoint | null;
342
342
  fromPixel?(at: ScreenPoint): DrawingPoint | null;
343
343
  }
344
+ /** Coordinate maps use the same pane and logical time axis as the rendered drawing. */
345
+ interface DrawingValueContext {
346
+ drawing: Drawing;
347
+ pts: readonly ScreenPoint[];
348
+ time: number;
349
+ x: number;
350
+ fromY(y: number): number | null;
351
+ }
344
352
  interface DrawingTool {
345
353
  id: string;
346
354
  name: string;
355
+ /** Opt in only when the geometry defines a numeric level or band at one time. */
356
+ alertValue?(context: DrawingValueContext, level?: string): Omit<AlertDrawingValue, 'paneIndex'> | undefined;
357
+ /** Named boundaries or active rungs, for a host's explicit level selector. */
358
+ alertLevels?(drawing: Drawing): readonly AlertDrawingLevel[];
347
359
  /**
348
360
  * Anchors the tool needs before it is complete. `0` means free-form: the
349
361
  * drawing finishes on double-click.
@@ -1336,6 +1348,10 @@ declare class DrawingController {
1336
1348
  */
1337
1349
  drawings(): readonly Drawing[];
1338
1350
  get(id: string): Drawing | undefined;
1351
+ /** Supported numeric levels, independent of whether the queried time lies on the shape. */
1352
+ alertInfo(id: string): AlertDrawingInfo;
1353
+ /** Numeric drawing value using the actual pane projection and collapsed time axis. */
1354
+ valueAt(id: string, time: number, level?: string): AlertDrawingValue | undefined;
1339
1355
  /** Add a fully-specified drawing (import, or a host-authored one). */
1340
1356
  add(drawing: DrawingInput): Drawing;
1341
1357
  /**
@@ -1809,4 +1825,4 @@ declare const PATTERN_DRAWING_TOOLS: readonly DrawingTool[];
1809
1825
 
1810
1826
  declare const DRAW_TIER: "draw";
1811
1827
 
1812
- export { ADVANCED_GEOMETRY_TOOLS, ADVANCED_LINE_TOOLS, ALIGN_OPTIONS, ARC, ARROW, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BALLOON, BRUSH, BUILTIN_DRAWING_TOOLS, CALLOUT, CHROME_ICONS, CHROME_ICON_ATTRS, CHROME_ICON_FILLED, CHROME_ICON_STROKE, CHROME_ICON_VIEWBOX, CIRCLE, COLOR_FIELD, COMMENT, CROSS_LINE, CURVE, CYCLE_PALETTE, CYCLIC_LINES, type ClipboardPort, DATE_RANGE, DEFAULT_FIB, DEFAULT_FIB_FAN, DEFAULT_FIB_TIME_ZONE, DEFAULT_GANN_BOX, DEFAULT_GANN_FAN, DOUBLE_CURVE, DRAWING_CLIPBOARD_KEY, DRAWING_CLIPBOARD_VERSION, DRAWING_STATE_VERSION, DRAWING_TOOL_ICONS, DRAW_TIER, type DrawContext, type Drawing, type DrawingChangeKind, type DrawingChartHost, DrawingClipboard, type DrawingClipboardOptions, DrawingController, type DrawingControllerOptions, type DrawingInput, type DrawingKeyAction, type DrawingKeyContext, type DrawingKeyEvent, DrawingLayer, type DrawingLayerOrder, type DrawingPatch, type DrawingPoint, type DrawingPointerKind, type DrawingStyle, type DrawingText, type DrawingTool, type DrawingsDocument, ELLIPSE, EXTENDED_LINE, EXTEND_FIELDS, type ExpandContext, FIB_CHANNEL, FIB_EXTENSION, FIB_FAN, FIB_RETRACEMENT, FIB_TIME_ZONE, FILL_FIELDS, FLAG_MARK, FONT_FIELDS, FONT_OPTIONS, FORECAST, type FibLevel, type FieldGroup, type FieldKind, GANN_BOX, GANN_FAN, HIGHLIGHTER, HORIZONTAL_LINE, HORIZONTAL_RAY, type HitContext, ICON_ATTRS, ICON_STROKE, ICON_SYMBOL_PREFIX, ICON_VIEWBOX, type IconAttrs, type IconSvgOptions, LEVEL_FIELDS, LEVEL_NEUTRAL, LINE_FIELDS, LINE_STYLE_FIELD, LINE_STYLE_OPTIONS, LINE_WIDTH_FIELD, LONG_POSITION, MEASURE, type MagnetMode, NOTE, NUDGE_STEP_PX, NUDGE_STEP_SHIFT_PX, PARALLEL_CHANNEL, PATH, PATTERN_DRAWING_TOOLS, PLATE_TEXT_FIELDS, POLYLINE, PRICE_LABEL, PRICE_NOTE, PRICE_RANGE, RAY, RECTANGLE, ROTATED_RECTANGLE, SHAPE_TEXT_FIELDS, SHORT_POSITION, SHOW_LABELS_FIELD, SIGNPOST, SINE_LINE, type ScreenPoint, type SettingsField, type SettingsSchema, type ShortcutEvent, TABLE, TEXT, TEXT_FIELDS, TEXT_POSITION_OPTIONS, TEXT_VALUE_FIELD, TIME_CYCLES, TREND_LINE, TRIANGLE, type ToolCursorOptions, VALIGN_OPTIONS, VERTICAL_LINE, applyDrawingSettings, boundsOf, catmullRom, chromeIcon, chromeIconIds, chromeIconSvg, clearMemoryClipboard, cloneDrawing, cloneLevels, coerceSettingValue, composeSettings, cycleColor, decodeClipboardPayload, distToEllipse, distToLine, distToPolyline, distToRect, distToSegment, drawingSettingsSchema, drawingShortcuts, drawingToolIcon, drawingToolIconIds, encodeClipboardPayload, extendSegment, formatRatio, gannLabel, getDrawingTool, hasDrawingTool, iconSprite, iconSvg, iconUse, keyToDrawingAction, levelColor, matchDrawingShortcut, migrateDrawings, pressureWidth, rdpSimplify, readDrawingSetting, readDrawingSettings, rectOf, registerBuiltinDrawingTools, registerDrawingTool, registeredDrawingTools, sanitizeDrawing, sortByZIndex, systemClipboard, toolCursor };
1828
+ export { ADVANCED_GEOMETRY_TOOLS, ADVANCED_LINE_TOOLS, ALIGN_OPTIONS, ARC, ARROW, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BALLOON, BRUSH, BUILTIN_DRAWING_TOOLS, CALLOUT, CHROME_ICONS, CHROME_ICON_ATTRS, CHROME_ICON_FILLED, CHROME_ICON_STROKE, CHROME_ICON_VIEWBOX, CIRCLE, COLOR_FIELD, COMMENT, CROSS_LINE, CURVE, CYCLE_PALETTE, CYCLIC_LINES, type ClipboardPort, DATE_RANGE, DEFAULT_FIB, DEFAULT_FIB_FAN, DEFAULT_FIB_TIME_ZONE, DEFAULT_GANN_BOX, DEFAULT_GANN_FAN, DOUBLE_CURVE, DRAWING_CLIPBOARD_KEY, DRAWING_CLIPBOARD_VERSION, DRAWING_STATE_VERSION, DRAWING_TOOL_ICONS, DRAW_TIER, type DrawContext, type Drawing, type DrawingChangeKind, type DrawingChartHost, DrawingClipboard, type DrawingClipboardOptions, DrawingController, type DrawingControllerOptions, type DrawingInput, type DrawingKeyAction, type DrawingKeyContext, type DrawingKeyEvent, DrawingLayer, type DrawingLayerOrder, type DrawingPatch, type DrawingPoint, type DrawingPointerKind, type DrawingStyle, type DrawingText, type DrawingTool, type DrawingValueContext, type DrawingsDocument, ELLIPSE, EXTENDED_LINE, EXTEND_FIELDS, type ExpandContext, FIB_CHANNEL, FIB_EXTENSION, FIB_FAN, FIB_RETRACEMENT, FIB_TIME_ZONE, FILL_FIELDS, FLAG_MARK, FONT_FIELDS, FONT_OPTIONS, FORECAST, type FibLevel, type FieldGroup, type FieldKind, GANN_BOX, GANN_FAN, HIGHLIGHTER, HORIZONTAL_LINE, HORIZONTAL_RAY, type HitContext, ICON_ATTRS, ICON_STROKE, ICON_SYMBOL_PREFIX, ICON_VIEWBOX, type IconAttrs, type IconSvgOptions, LEVEL_FIELDS, LEVEL_NEUTRAL, LINE_FIELDS, LINE_STYLE_FIELD, LINE_STYLE_OPTIONS, LINE_WIDTH_FIELD, LONG_POSITION, MEASURE, type MagnetMode, NOTE, NUDGE_STEP_PX, NUDGE_STEP_SHIFT_PX, PARALLEL_CHANNEL, PATH, PATTERN_DRAWING_TOOLS, PLATE_TEXT_FIELDS, POLYLINE, PRICE_LABEL, PRICE_NOTE, PRICE_RANGE, RAY, RECTANGLE, ROTATED_RECTANGLE, SHAPE_TEXT_FIELDS, SHORT_POSITION, SHOW_LABELS_FIELD, SIGNPOST, SINE_LINE, type ScreenPoint, type SettingsField, type SettingsSchema, type ShortcutEvent, TABLE, TEXT, TEXT_FIELDS, TEXT_POSITION_OPTIONS, TEXT_VALUE_FIELD, TIME_CYCLES, TREND_LINE, TRIANGLE, type ToolCursorOptions, VALIGN_OPTIONS, VERTICAL_LINE, applyDrawingSettings, boundsOf, catmullRom, chromeIcon, chromeIconIds, chromeIconSvg, clearMemoryClipboard, cloneDrawing, cloneLevels, coerceSettingValue, composeSettings, cycleColor, decodeClipboardPayload, distToEllipse, distToLine, distToPolyline, distToRect, distToSegment, drawingSettingsSchema, drawingShortcuts, drawingToolIcon, drawingToolIconIds, encodeClipboardPayload, extendSegment, formatRatio, gannLabel, getDrawingTool, hasDrawingTool, iconSprite, iconSvg, iconUse, keyToDrawingAction, levelColor, matchDrawingShortcut, migrateDrawings, pressureWidth, rdpSimplify, readDrawingSetting, readDrawingSettings, rectOf, registerBuiltinDrawingTools, registerDrawingTool, registeredDrawingTools, sanitizeDrawing, sortByZIndex, systemClipboard, toolCursor };