@luxalgo/vela 0.7.7 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/{DataProvider-CGa4KHRa.d.cts → DataProvider-BrlxntPN.d.cts} +1 -1
  2. package/dist/{DataProvider-CmWUtDVL.d.ts → DataProvider-DwFIoV4r.d.ts} +1 -1
  3. package/dist/{chunk-WTWGEB7K.js → chunk-2IAETM2I.js} +260 -2
  4. package/dist/{chunk-CAFCLMPF.js → chunk-BZQM2XO7.js} +1 -0
  5. package/dist/{chunk-ZA2XWTGH.js → chunk-E3GU6AUI.js} +499 -43
  6. package/dist/{chunk-BFA32GOU.js → chunk-EZ5FWVLA.js} +5 -2
  7. package/dist/{chunk-PVGWNF7V.js → chunk-KA77UTRF.js} +2 -2
  8. package/dist/{chunk-RVQWJOEE.js → chunk-QBPUT5SU.js} +2862 -1034
  9. package/dist/{contributions-DF_Ea07m.d.cts → contributions-CtlptxR8.d.cts} +187 -5
  10. package/dist/{contributions-nKOSeLy8.d.ts → contributions-tjNExo1o.d.ts} +187 -5
  11. package/dist/index.cjs +3142 -1030
  12. package/dist/index.d.cts +40 -8
  13. package/dist/index.d.ts +40 -8
  14. package/dist/index.js +28 -4
  15. package/dist/{options-D1AJKsn_.d.ts → options-BnEPUuVV.d.cts} +1 -1
  16. package/dist/{options-D1AJKsn_.d.cts → options-BnEPUuVV.d.ts} +1 -1
  17. package/dist/{plugin-DPyVJFoA.d.cts → plugin-BWxJRKzS.d.cts} +31 -25
  18. package/dist/{plugin-0oFDnexb.d.ts → plugin-e2WUEtiI.d.ts} +31 -25
  19. package/dist/plugin.cjs +1 -0
  20. package/dist/plugin.d.cts +4 -4
  21. package/dist/plugin.d.ts +4 -4
  22. package/dist/plugin.js +2 -2
  23. package/dist/providers/binance.d.cts +2 -2
  24. package/dist/providers/binance.d.ts +2 -2
  25. package/dist/providers/coinbase.d.cts +2 -2
  26. package/dist/providers/coinbase.d.ts +2 -2
  27. package/dist/providers/hyperliquid.d.cts +2 -2
  28. package/dist/providers/hyperliquid.d.ts +2 -2
  29. package/dist/{statusline-model-DAFyqVmR.d.ts → statusline-model-DFY7tuHj.d.cts} +5 -3
  30. package/dist/{statusline-model-BoWJ3cWQ.d.cts → statusline-model-zKXtGIjj.d.ts} +5 -3
  31. package/dist/ui.cjs +263 -0
  32. package/dist/ui.d.cts +75 -2
  33. package/dist/ui.d.ts +75 -2
  34. package/dist/ui.js +3 -3
  35. package/dist/vela.global.js +3144 -1032
  36. package/dist/vela.global.min.js +78 -76
  37. package/dist/widget.cjs +3627 -1081
  38. package/dist/widget.d.cts +26 -7
  39. package/dist/widget.d.ts +26 -7
  40. package/dist/widget.js +7 -7
  41. package/dist/workspace.cjs +3630 -1081
  42. package/dist/workspace.d.cts +126 -6
  43. package/dist/workspace.d.ts +126 -6
  44. package/dist/workspace.js +6 -6
  45. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- import { x as Millis, an as InputSchema, al as IndicatorMeta, P as PriceStyle, O as OHLCV, I as InputValue, l as IndicatorModel, k as MoveTarget, aH as PaneAxis, aW as SeriesSpec, aj as Fill, G as Background, aM as PriceLine, a6 as DrawingLine, a2 as DrawingBox, a5 as DrawingLabel, aa as DrawingPolyline, a7 as DrawingLinefill, af as DrawingTable, h as IndicatorStatus, a as VisibleRange, c as VelaTheme, S as SerializedDrawing, z as DrawingTypeKey, y as SnapMode, a8 as DrawingMode, u as MarkClickEvent, e as IChartRenderer, R as RendererCapabilities, o as LegendActionView, p as LegendCalloutView, U as Unsubscribe, C as CrosshairEvent, A as AxisLongPressEvent, v as DataWindowReadout, n as SymbolPickerFn, W as WallClock, bc as PaneInfo, ai as DrawingsOption, ac as DrawingSeriesGateway, D as Drawing, s as TimelineMark, t as MarkGroup, b as VelaOptions, E as AddIndicatorOptions, aG as MarketSwitch, aF as MarketSnapshot, V as VisibleRangePreset, T as ThemeName } from './options-D1AJKsn_.cjs';
2
- import { S as SymbolInfo, B as BarRange, M as MarketDataFeed, D as DataProvider, P as ProviderInfo, a as SymbolDescriptor, b as ProviderCapabilities } from './DataProvider-CGa4KHRa.cjs';
1
+ import { x as Millis, ao as InputSchema, am as IndicatorMeta, P as PriceStyle, O as OHLCV, I as InputValue, l as IndicatorModel, k as MoveTarget, aH as PaneAxis, aW as SeriesSpec, ak as Fill, H as Background, aM as PriceLine, a7 as DrawingLine, a3 as DrawingBox, a6 as DrawingLabel, ab as DrawingPolyline, a8 as DrawingLinefill, ag as DrawingTable, h as IndicatorStatus, a as VisibleRange, c as VelaTheme, S as SerializedDrawing, z as DrawingTypeKey, y as SnapMode, a9 as DrawingMode, u as MarkClickEvent, e as IChartRenderer, R as RendererCapabilities, o as LegendActionView, p as LegendCalloutView, U as Unsubscribe, C as CrosshairEvent, r as ClickEvent, A as AxisLongPressEvent, v as DataWindowReadout, n as SymbolPickerFn, W as WallClock, bc as PaneInfo, aj as DrawingsOption, ad as DrawingSeriesGateway, D as Drawing, s as TimelineMark, t as MarkGroup, b as VelaOptions, F as AddIndicatorOptions, aG as MarketSwitch, E as MarketSnapshot, V as VisibleRangePreset, T as ThemeName } from './options-BnEPUuVV.cjs';
2
+ import { S as SymbolInfo, B as BarRange, M as MarketDataFeed, D as DataProvider, P as ProviderInfo, a as SymbolDescriptor, b as ProviderCapabilities } from './DataProvider-BrlxntPN.cjs';
3
3
 
4
4
  /**
5
5
  * A strategy's broker state at ONE bar — the flat summary a host reads while a script
@@ -474,6 +474,8 @@ interface NativeIndicatorContext {
474
474
  readonly id: string;
475
475
  readonly symbol: string;
476
476
  readonly timeframe: string;
477
+ /** Whether the chart streams live data. False during a bar replay — entering and
478
+ * leaving replay RESTARTS the indicator, so this never changes within one context. */
477
479
  readonly live: boolean;
478
480
  /** The chart's trading session (`'regular'` | `'extended'`); undefined = regular /
479
481
  * no session model. A session switch reloads the market and RESTARTS the
@@ -681,6 +683,129 @@ interface ScriptRunResult {
681
683
  remove(): void;
682
684
  }
683
685
 
686
+ /** Where a bar replay stands (`chart.replay.state`). */
687
+ interface ReplayState {
688
+ /** Replay mode is on: the chart shows history up to the cursor, live updates are paused.
689
+ * Stays on through a timeframe/session switch while the new bars load (`cursorTime`
690
+ * is null until the replay resumes on them). */
691
+ active: boolean;
692
+ /** Bars are being revealed on a timer (`play`), as opposed to paused / stepped by hand. */
693
+ playing: boolean;
694
+ /** Open time (epoch ms) of the newest bar on screen; null when replay is off. */
695
+ cursorTime: number | null;
696
+ /** Bars still hidden to the right of the cursor. */
697
+ remaining: number;
698
+ /** Open time (epoch ms) of the next bar a step completes — the one forming tick by tick,
699
+ * else the next hidden one; null when nothing is left or replay is off. Lets a host
700
+ * keep several charts on one clock (see `VelaWorkspace.replay`). */
701
+ nextTime: number | null;
702
+ /** Delay between two updates while playing (ms) — two bars, or two ticks with {@link ReplayControl.setTicks}. */
703
+ intervalMs: number;
704
+ }
705
+ /** Options for {@link ReplayControl.start}. */
706
+ interface ReplayStartOptions {
707
+ /**
708
+ * Epoch ms. The chart keeps every bar that opened at or before it and hides the rest.
709
+ * Older than the loaded history ⇒ the history is deepened first (clamped to the
710
+ * oldest bar the source serves).
711
+ */
712
+ from: number;
713
+ }
714
+ /** Why a replay ended (`replay:end`). */
715
+ type ReplayEndReason = 'stopped' | 'finished' | 'market';
716
+ /** One intrabar update of a replayed bar ({@link ReplayControl.setTicks}). */
717
+ interface ReplayTick {
718
+ /** The price the forming candle closes at after this update. */
719
+ price: number;
720
+ /** The extremes traded since the previous update (default: `price`) — lets one update
721
+ * stand for a whole span, e.g. a lower-timeframe bar. */
722
+ high?: number;
723
+ low?: number;
724
+ /** Where the candle opens — read on a bar's first update only (default: `price`). */
725
+ open?: number;
726
+ /** Volume traded by this update. When no tick of a bar carries one, the bar's volume
727
+ * is spread evenly across its ticks. */
728
+ volume?: number;
729
+ }
730
+ /**
731
+ * Where a replay gets the intrabar prices of a bar it is about to reveal: `bar` is the
732
+ * stored bar, `end` the open time of the bar after it (the span the ticks cover is
733
+ * `[bar.time, end)`), `signal` aborts when the replay moves on (seek, stop, new source).
734
+ * Prices come oldest first. An empty list — or a failure — reveals the bar whole.
735
+ */
736
+ type ReplayTickSource = (bar: OHLCV, opts: {
737
+ end: number;
738
+ signal: AbortSignal;
739
+ }) => readonly ReplayTick[] | Promise<readonly ReplayTick[]>;
740
+ /** What the chart implements behind {@link ReplayControl}. */
741
+ interface ReplayController {
742
+ replayStart(opts: ReplayStartOptions): Promise<void>;
743
+ replayStep(): boolean;
744
+ replayStepUpdate(): boolean;
745
+ replayPlay(intervalMs?: number): void;
746
+ replayPause(): void;
747
+ replayStop(): void;
748
+ replayState(): ReplayState;
749
+ replayBounds(): ReplayBounds | null;
750
+ replaySetTicks(source: ReplayTickSource | null): void;
751
+ }
752
+ /** The open times of the oldest and newest bar a replay can start from (`chart.replay.bounds`). */
753
+ interface ReplayBounds {
754
+ first: number;
755
+ last: number;
756
+ }
757
+ /**
758
+ * The chart's bar-replay control surface (`chart.replay`) — sibling of `chart.data` /
759
+ * `chart.marks`. Rewinds the chart to a past bar and reveals the following bars one at a
760
+ * time, by hand or on a timer, from the history already in memory (nothing is refetched).
761
+ * Revealed bars travel the exact path of a live bar: indicators, chart-type engines and
762
+ * the `bar` event see them as new bars — but script alerts stay quiet (a replayed bar is
763
+ * history, not a live signal). Live updates pause for the duration; `stop()` (or
764
+ * revealing the last bar) restores the full history and resumes them. A timeframe or
765
+ * session switch carries the replay over to the new bars at the same point in time; a
766
+ * symbol switch ends it.
767
+ */
768
+ declare class ReplayControl {
769
+ private readonly ctrl;
770
+ constructor(ctrl: ReplayController);
771
+ /**
772
+ * Enter replay (or seek, when already replaying) at `opts.from`. Resolves once the
773
+ * chart shows the rewound history — after any in-flight history load has finished.
774
+ * Starts paused; call {@link play} or {@link step}.
775
+ */
776
+ start(opts: ReplayStartOptions): Promise<void>;
777
+ /** Reveal the next bar — or, mid-way through a bar played tick by tick, complete it.
778
+ * Returns false when replay is off or nothing is left. */
779
+ step(): boolean;
780
+ /** Reveal the next UPDATE: with {@link setTicks}, the next tick of the forming bar — or
781
+ * the next bar opened at its first tick (once its ticks are in, if still loading);
782
+ * otherwise the next whole bar, like {@link step}. Returns false when nothing is left. */
783
+ stepUpdate(): boolean;
784
+ /** Reveal one bar (one tick, with {@link setTicks}) every `intervalMs` (default: the last
785
+ * interval used, else 1000). Calling it again while playing changes the pace. */
786
+ play(intervalMs?: number): this;
787
+ pause(): this;
788
+ /** Leave replay: the full history comes back and live updates resume. Also cancels a
789
+ * `start()` still loading older history (the chart returns to its previous depth). */
790
+ stop(): this;
791
+ get state(): ReplayState;
792
+ /** The loaded history a replay can walk — hidden bars included while replaying. Null
793
+ * before any bar loaded. A start older than `first` deepens the history first. */
794
+ get bounds(): ReplayBounds | null;
795
+ /**
796
+ * Play each revealed bar as a series of intrabar updates instead of whole: while
797
+ * playing, the forming candle opens at the first tick, then every tick moves its close
798
+ * and stretches its high and low, exactly like a live tick — indicators, chart types
799
+ * and the `bar` event follow — and the last one settles it on the stored bar. The play
800
+ * interval is then the time between two TICKS: a bar lasts as many intervals as it
801
+ * has ticks (below ~16 ms, ticks are batched per frame). The next bar's ticks are
802
+ * requested while the current one plays; playback waits for them. `null` goes back to
803
+ * whole bars. Takes effect from the next bar; a bar forming when the source changes
804
+ * completes at once.
805
+ */
806
+ setTicks(source: ReplayTickSource | null): this;
807
+ }
808
+
684
809
  /** Chart-level events emitted on `chart.on(...)`. */
685
810
  interface VelaEventMap extends Record<string, unknown> {
686
811
  ready: undefined;
@@ -838,7 +963,7 @@ interface VelaEventMap extends Record<string, unknown> {
838
963
  "context:changed": {
839
964
  id: string;
840
965
  };
841
- /** A live tick: the forming bar was updated or a new bar appended. */
966
+ /** A live tick: the forming bar was updated or a new bar appended (a bar revealed by replay included). */
842
967
  bar: OHLCV;
843
968
  /**
844
969
  * The visible time range moved (pan/zoom/fit — fires per applied change, NOT
@@ -865,8 +990,42 @@ interface VelaEventMap extends Record<string, unknown> {
865
990
  oldestTime: number;
866
991
  barsLoaded: number;
867
992
  };
993
+ /** Replay mode began (or seeked): the chart shows history up to `cursorTime`, `remaining` bars are hidden. */
994
+ "replay:start": {
995
+ cursorTime: number;
996
+ remaining: number;
997
+ };
998
+ /** One hidden bar was revealed (it also fires `bar`, like a live bar). A bar played tick
999
+ * by tick steps once, when its last tick settles it. */
1000
+ "replay:step": {
1001
+ cursorTime: number;
1002
+ remaining: number;
1003
+ };
1004
+ /** An intrabar update of the bar forming at `cursorTime` (`chart.replay.setTicks`):
1005
+ * tick `index` of `count` is applied (batched updates report the last one). */
1006
+ "replay:tick": {
1007
+ cursorTime: number;
1008
+ index: number;
1009
+ count: number;
1010
+ };
1011
+ /** Timed reveal started, or its pace changed. */
1012
+ "replay:play": {
1013
+ intervalMs: number;
1014
+ };
1015
+ /** Timed reveal paused — `pause()`, or a seek (`start()` while playing). */
1016
+ "replay:pause": undefined;
1017
+ /**
1018
+ * Replay mode ended: `'stopped'` = `chart.replay.stop()`, `'finished'` = the last hidden
1019
+ * bar was revealed, `'market'` = a symbol switch replaced the history (a timeframe or
1020
+ * session switch carries the replay over instead). The full history
1021
+ * is back and live updates resumed.
1022
+ */
1023
+ "replay:end": {
1024
+ reason: ReplayEndReason;
1025
+ };
868
1026
  /** An indicator's script raised an alert. `indicator` names the source — the
869
- * indicator's display title (what its legend row shows). */
1027
+ * indicator's display title (what its legend row shows). Never fires for bars a
1028
+ * replay reveals (`chart.replay`). */
870
1029
  alert: EngineAlert & {
871
1030
  indicator?: string;
872
1031
  };
@@ -1014,6 +1173,10 @@ declare class RendererControl {
1014
1173
  * public seam host chrome (status lines, data windows) builds on.
1015
1174
  */
1016
1175
  onCrosshairMove(cb: (e: CrosshairEvent) => void): Unsubscribe;
1176
+ /** A click — or a touch tap — on the plot, never the end of a pan: the open time of
1177
+ * the bar under it (`null` off the bars). On touch, where a tap moves no crosshair,
1178
+ * this is how an interaction learns which bar was chosen. */
1179
+ onClick(cb: (e: ClickEvent) => void): Unsubscribe;
1017
1180
  /** Touch long-press on a price or time axis strip — silent no-op without the seam. */
1018
1181
  onAxisLongPress(cb: (e: AxisLongPressEvent) => void): Unsubscribe;
1019
1182
  /**
@@ -1487,6 +1650,7 @@ declare class Vela {
1487
1650
  private readonly dataControl;
1488
1651
  private readonly drawingsControl;
1489
1652
  private readonly marksControl;
1653
+ private readonly replayControl;
1490
1654
  constructor(container: HTMLElement | string, options?: VelaOptions, deps?: VelaDeps);
1491
1655
  /**
1492
1656
  * Register a scripting engine so `addIndicator({ language })` can run that
@@ -1622,6 +1786,14 @@ declare class Vela {
1622
1786
  * model still fills but nothing paints (`chart.marks.supported`).
1623
1787
  */
1624
1788
  get marks(): MarksControl;
1789
+ /**
1790
+ * The chart's bar-replay control surface: rewind to a past bar and reveal the
1791
+ * following ones by hand or on a timer, from the history already loaded —
1792
+ * `await chart.replay.start({ from })`, `chart.replay.play(2000)`, `chart.replay.step()`,
1793
+ * `chart.replay.stop()`. Revealed bars behave like live bars for indicators; live
1794
+ * updates pause meanwhile. Follow it with the `replay:*` events.
1795
+ */
1796
+ get replay(): ReplayControl;
1625
1797
  on<K extends keyof VelaEventMap>(event: K, handler: (payload: VelaEventMap[K]) => void): () => void;
1626
1798
  /** The current visible time range (`from`/`to` in epoch-ms), or null before data loads. */
1627
1799
  getVisibleRange(): VisibleRange | null;
@@ -1675,6 +1847,11 @@ interface WidgetContext {
1675
1847
  * it. The dock stays exclusive: opening one closes whichever was showing. Unknown ids
1676
1848
  * are ignored. The seam a plugin uses to open ITS OWN panel programmatically. */
1677
1849
  togglePanel(id: string, open?: boolean): void;
1850
+ /** Dock `el` as a full-width strip in the shell's layout, between the chart area and
1851
+ * the bottom bar — the charts shrink to make room. Strips stack in docking order.
1852
+ * Returns the undock (removes `el`; a no-op once it has left the strip area). The
1853
+ * caller owns `el`, its content and styling. */
1854
+ dockStrip(el: HTMLElement): () => void;
1678
1855
  /** The widget's root element — pass it as `host` when mounting kit components
1679
1856
  * (Dialog/Menu/Tooltip) from an action; without an explicit host they portal to
1680
1857
  * the body, OUTSIDE the theme variables. A multi-chart shell hands its own root. */
@@ -1743,6 +1920,11 @@ interface WidgetActionDescriptor {
1743
1920
  * right after the style/layout dropdowns, styled like them (the spot and look of
1744
1921
  * the built-in Indicators button, for actions that replace it). */
1745
1922
  align?: 'left' | 'right';
1923
+ /** Topbar only: where the action goes on the MOBILE layout (the topbar is hidden
1924
+ * there). `'bar'` is an icon stop on the bottom bar; `'menu'` is a row in the
1925
+ * three-dots menu — a left (primary) action right after Layout, a right one at the
1926
+ * end. Default: `'bar'` for `align: 'left'`, `'menu'` otherwise. */
1927
+ mobile?: 'bar' | 'menu';
1746
1928
  /** Runtime gate — omitted ⇒ always shown. */
1747
1929
  when?: (ctx: WidgetContext) => boolean;
1748
1930
  run: (ctx: WidgetContext) => void;
@@ -2040,4 +2222,4 @@ declare function unregisterDefaultEngine(language: string): void;
2040
2222
  * language. The shell layers (widget, workspace cell) register exactly this result. */
2041
2223
  declare function resolveEngines(overrides?: Record<string, EngineFactory>): Record<string, EngineFactory>;
2042
2224
 
2043
- export { type SymbolRankingHook as $, type RunIndicatorResult as A, type BarsChangeReason as B, type CellStateContext as C, type DrawingsDocument as D, type ExternalIndicatorEntry as E, type FetchSeries as F, type SceneInspection as G, type ScriptRunCause as H, type IndicatorHandle as I, type ScriptRunResult as J, type SidePanelButton as K, type LegendActionDescriptor as L, MarksControl as M, type NativeIndicator as N, OVERRIDABLE_TOPBAR_IDS as O, type ParsedSymbol as P, type SidePanelDescriptor as Q, type Resolved as R, type ScriptingEngine as S, type SidePanelHandle as T, type SidePanelHeader as U, Vela as V, type WidgetContext as W, type StatePersistenceHandler as X, type StrategyFill as Y, type StrategyState as Z, type StrategyTrade as _, type ScriptRun as a, TypedEventBus as a0, type VelaDeps as a1, type VelaEventMap as a2, type VisibleBarRange as a3, type WidgetActionDescriptor as a4, type WidgetActionTarget as a5, type WidgetAttachment as a6, getNativeIndicator as a7, legendActions as a8, legendCallouts as a9, DEFAULT_PANEL_ORDER as aA, nativeIndicatorDescriptors as aa, nativeIndicatorTypes as ab, registerDefaultEngine as ac, registerLegendAction as ad, registerLegendCallout as ae, registerNativeIndicator as af, registerSidePanel as ag, registerStatePersistence as ah, registerSymbolRanking as ai, registerWidgetAction as aj, registerWidgetAttachment as ak, resolveEngines as al, sidePanels as am, statePersistenceHandlers as an, symbolRanking as ao, topbarActionOverride as ap, unregisterDefaultEngine as aq, unregisterLegendAction as ar, unregisterLegendCallout as as, unregisterNativeIndicator as at, unregisterSidePanel as au, unregisterStatePersistence as av, unregisterWidgetAction as aw, unregisterWidgetAttachment as ax, widgetActions as ay, widgetAttachments as az, type ContextSelect as b, DataControl as c, DrawingsControl as d, type EngineAlert as e, type EngineCapabilities as f, type EngineContextSnapshot as g, type EngineFactory as h, type EngineWarning as i, type ExecutionHandlers as j, type ExecutionMarket as k, type ExecutionRequest as l, type ExecutionSession as m, type IndicatorEventMap as n, type IndicatorSummary as o, type LegendCalloutContent as p, type LegendCalloutDescriptor as q, type LegendCalloutItem as r, type LegendCalloutSpec as s, type LegendIndicatorInfo as t, type NativeIndicatorContext as u, type NativeIndicatorDescriptor as v, type NativeIndicatorInfo as w, type NativeIndicatorOutput as x, type PreparedScript as y, RendererControl as z };
2225
+ export { type SidePanelButton as $, type NativeIndicatorDescriptor as A, type BarsChangeReason as B, type CellStateContext as C, type DrawingsDocument as D, type ExternalIndicatorEntry as E, type FetchSeries as F, type NativeIndicatorInfo as G, type NativeIndicatorOutput as H, type IndicatorHandle as I, type PreparedScript as J, RendererControl as K, type LegendActionDescriptor as L, MarksControl as M, type NativeIndicator as N, OVERRIDABLE_TOPBAR_IDS as O, type ParsedSymbol as P, ReplayControl as Q, type ReplayState as R, type ScriptingEngine as S, type ReplayEndReason as T, type ReplayStartOptions as U, Vela as V, type WidgetContext as W, type RunIndicatorResult as X, type SceneInspection as Y, type ScriptRunCause as Z, type ScriptRunResult as _, type ReplayBounds as a, type SidePanelDescriptor as a0, type SidePanelHandle as a1, type SidePanelHeader as a2, type StatePersistenceHandler as a3, type StrategyFill as a4, type StrategyState as a5, type StrategyTrade as a6, type SymbolRankingHook as a7, TypedEventBus as a8, type VelaDeps as a9, unregisterNativeIndicator as aA, unregisterSidePanel as aB, unregisterStatePersistence as aC, unregisterWidgetAction as aD, unregisterWidgetAttachment as aE, widgetActions as aF, widgetAttachments as aG, DEFAULT_PANEL_ORDER as aH, type VisibleBarRange as aa, type WidgetActionDescriptor as ab, type WidgetActionTarget as ac, type WidgetAttachment as ad, getNativeIndicator as ae, legendActions as af, legendCallouts as ag, nativeIndicatorDescriptors as ah, nativeIndicatorTypes as ai, registerDefaultEngine as aj, registerLegendAction as ak, registerLegendCallout as al, registerNativeIndicator as am, registerSidePanel as an, registerStatePersistence as ao, registerSymbolRanking as ap, registerWidgetAction as aq, registerWidgetAttachment as ar, resolveEngines as as, sidePanels as at, statePersistenceHandlers as au, symbolRanking as av, topbarActionOverride as aw, unregisterDefaultEngine as ax, unregisterLegendAction as ay, unregisterLegendCallout as az, type VelaEventMap as b, type ScriptRun as c, type Resolved as d, type ReplayTick as e, DataControl as f, type ReplayTickSource as g, type ContextSelect as h, DrawingsControl as i, type EngineAlert as j, type EngineCapabilities as k, type EngineContextSnapshot as l, type EngineFactory as m, type EngineWarning as n, type ExecutionHandlers as o, type ExecutionMarket as p, type ExecutionRequest as q, type ExecutionSession as r, type IndicatorEventMap as s, type IndicatorSummary as t, type LegendCalloutContent as u, type LegendCalloutDescriptor as v, type LegendCalloutItem as w, type LegendCalloutSpec as x, type LegendIndicatorInfo as y, type NativeIndicatorContext as z };
@@ -1,5 +1,5 @@
1
- import { x as Millis, an as InputSchema, al as IndicatorMeta, P as PriceStyle, O as OHLCV, I as InputValue, l as IndicatorModel, k as MoveTarget, aH as PaneAxis, aW as SeriesSpec, aj as Fill, G as Background, aM as PriceLine, a6 as DrawingLine, a2 as DrawingBox, a5 as DrawingLabel, aa as DrawingPolyline, a7 as DrawingLinefill, af as DrawingTable, h as IndicatorStatus, a as VisibleRange, c as VelaTheme, S as SerializedDrawing, z as DrawingTypeKey, y as SnapMode, a8 as DrawingMode, u as MarkClickEvent, e as IChartRenderer, R as RendererCapabilities, o as LegendActionView, p as LegendCalloutView, U as Unsubscribe, C as CrosshairEvent, A as AxisLongPressEvent, v as DataWindowReadout, n as SymbolPickerFn, W as WallClock, bc as PaneInfo, ai as DrawingsOption, ac as DrawingSeriesGateway, D as Drawing, s as TimelineMark, t as MarkGroup, b as VelaOptions, E as AddIndicatorOptions, aG as MarketSwitch, aF as MarketSnapshot, V as VisibleRangePreset, T as ThemeName } from './options-D1AJKsn_.js';
2
- import { S as SymbolInfo, B as BarRange, M as MarketDataFeed, D as DataProvider, P as ProviderInfo, a as SymbolDescriptor, b as ProviderCapabilities } from './DataProvider-CmWUtDVL.js';
1
+ import { x as Millis, ao as InputSchema, am as IndicatorMeta, P as PriceStyle, O as OHLCV, I as InputValue, l as IndicatorModel, k as MoveTarget, aH as PaneAxis, aW as SeriesSpec, ak as Fill, H as Background, aM as PriceLine, a7 as DrawingLine, a3 as DrawingBox, a6 as DrawingLabel, ab as DrawingPolyline, a8 as DrawingLinefill, ag as DrawingTable, h as IndicatorStatus, a as VisibleRange, c as VelaTheme, S as SerializedDrawing, z as DrawingTypeKey, y as SnapMode, a9 as DrawingMode, u as MarkClickEvent, e as IChartRenderer, R as RendererCapabilities, o as LegendActionView, p as LegendCalloutView, U as Unsubscribe, C as CrosshairEvent, r as ClickEvent, A as AxisLongPressEvent, v as DataWindowReadout, n as SymbolPickerFn, W as WallClock, bc as PaneInfo, aj as DrawingsOption, ad as DrawingSeriesGateway, D as Drawing, s as TimelineMark, t as MarkGroup, b as VelaOptions, F as AddIndicatorOptions, aG as MarketSwitch, E as MarketSnapshot, V as VisibleRangePreset, T as ThemeName } from './options-BnEPUuVV.js';
2
+ import { S as SymbolInfo, B as BarRange, M as MarketDataFeed, D as DataProvider, P as ProviderInfo, a as SymbolDescriptor, b as ProviderCapabilities } from './DataProvider-DwFIoV4r.js';
3
3
 
4
4
  /**
5
5
  * A strategy's broker state at ONE bar — the flat summary a host reads while a script
@@ -474,6 +474,8 @@ interface NativeIndicatorContext {
474
474
  readonly id: string;
475
475
  readonly symbol: string;
476
476
  readonly timeframe: string;
477
+ /** Whether the chart streams live data. False during a bar replay — entering and
478
+ * leaving replay RESTARTS the indicator, so this never changes within one context. */
477
479
  readonly live: boolean;
478
480
  /** The chart's trading session (`'regular'` | `'extended'`); undefined = regular /
479
481
  * no session model. A session switch reloads the market and RESTARTS the
@@ -681,6 +683,129 @@ interface ScriptRunResult {
681
683
  remove(): void;
682
684
  }
683
685
 
686
+ /** Where a bar replay stands (`chart.replay.state`). */
687
+ interface ReplayState {
688
+ /** Replay mode is on: the chart shows history up to the cursor, live updates are paused.
689
+ * Stays on through a timeframe/session switch while the new bars load (`cursorTime`
690
+ * is null until the replay resumes on them). */
691
+ active: boolean;
692
+ /** Bars are being revealed on a timer (`play`), as opposed to paused / stepped by hand. */
693
+ playing: boolean;
694
+ /** Open time (epoch ms) of the newest bar on screen; null when replay is off. */
695
+ cursorTime: number | null;
696
+ /** Bars still hidden to the right of the cursor. */
697
+ remaining: number;
698
+ /** Open time (epoch ms) of the next bar a step completes — the one forming tick by tick,
699
+ * else the next hidden one; null when nothing is left or replay is off. Lets a host
700
+ * keep several charts on one clock (see `VelaWorkspace.replay`). */
701
+ nextTime: number | null;
702
+ /** Delay between two updates while playing (ms) — two bars, or two ticks with {@link ReplayControl.setTicks}. */
703
+ intervalMs: number;
704
+ }
705
+ /** Options for {@link ReplayControl.start}. */
706
+ interface ReplayStartOptions {
707
+ /**
708
+ * Epoch ms. The chart keeps every bar that opened at or before it and hides the rest.
709
+ * Older than the loaded history ⇒ the history is deepened first (clamped to the
710
+ * oldest bar the source serves).
711
+ */
712
+ from: number;
713
+ }
714
+ /** Why a replay ended (`replay:end`). */
715
+ type ReplayEndReason = 'stopped' | 'finished' | 'market';
716
+ /** One intrabar update of a replayed bar ({@link ReplayControl.setTicks}). */
717
+ interface ReplayTick {
718
+ /** The price the forming candle closes at after this update. */
719
+ price: number;
720
+ /** The extremes traded since the previous update (default: `price`) — lets one update
721
+ * stand for a whole span, e.g. a lower-timeframe bar. */
722
+ high?: number;
723
+ low?: number;
724
+ /** Where the candle opens — read on a bar's first update only (default: `price`). */
725
+ open?: number;
726
+ /** Volume traded by this update. When no tick of a bar carries one, the bar's volume
727
+ * is spread evenly across its ticks. */
728
+ volume?: number;
729
+ }
730
+ /**
731
+ * Where a replay gets the intrabar prices of a bar it is about to reveal: `bar` is the
732
+ * stored bar, `end` the open time of the bar after it (the span the ticks cover is
733
+ * `[bar.time, end)`), `signal` aborts when the replay moves on (seek, stop, new source).
734
+ * Prices come oldest first. An empty list — or a failure — reveals the bar whole.
735
+ */
736
+ type ReplayTickSource = (bar: OHLCV, opts: {
737
+ end: number;
738
+ signal: AbortSignal;
739
+ }) => readonly ReplayTick[] | Promise<readonly ReplayTick[]>;
740
+ /** What the chart implements behind {@link ReplayControl}. */
741
+ interface ReplayController {
742
+ replayStart(opts: ReplayStartOptions): Promise<void>;
743
+ replayStep(): boolean;
744
+ replayStepUpdate(): boolean;
745
+ replayPlay(intervalMs?: number): void;
746
+ replayPause(): void;
747
+ replayStop(): void;
748
+ replayState(): ReplayState;
749
+ replayBounds(): ReplayBounds | null;
750
+ replaySetTicks(source: ReplayTickSource | null): void;
751
+ }
752
+ /** The open times of the oldest and newest bar a replay can start from (`chart.replay.bounds`). */
753
+ interface ReplayBounds {
754
+ first: number;
755
+ last: number;
756
+ }
757
+ /**
758
+ * The chart's bar-replay control surface (`chart.replay`) — sibling of `chart.data` /
759
+ * `chart.marks`. Rewinds the chart to a past bar and reveals the following bars one at a
760
+ * time, by hand or on a timer, from the history already in memory (nothing is refetched).
761
+ * Revealed bars travel the exact path of a live bar: indicators, chart-type engines and
762
+ * the `bar` event see them as new bars — but script alerts stay quiet (a replayed bar is
763
+ * history, not a live signal). Live updates pause for the duration; `stop()` (or
764
+ * revealing the last bar) restores the full history and resumes them. A timeframe or
765
+ * session switch carries the replay over to the new bars at the same point in time; a
766
+ * symbol switch ends it.
767
+ */
768
+ declare class ReplayControl {
769
+ private readonly ctrl;
770
+ constructor(ctrl: ReplayController);
771
+ /**
772
+ * Enter replay (or seek, when already replaying) at `opts.from`. Resolves once the
773
+ * chart shows the rewound history — after any in-flight history load has finished.
774
+ * Starts paused; call {@link play} or {@link step}.
775
+ */
776
+ start(opts: ReplayStartOptions): Promise<void>;
777
+ /** Reveal the next bar — or, mid-way through a bar played tick by tick, complete it.
778
+ * Returns false when replay is off or nothing is left. */
779
+ step(): boolean;
780
+ /** Reveal the next UPDATE: with {@link setTicks}, the next tick of the forming bar — or
781
+ * the next bar opened at its first tick (once its ticks are in, if still loading);
782
+ * otherwise the next whole bar, like {@link step}. Returns false when nothing is left. */
783
+ stepUpdate(): boolean;
784
+ /** Reveal one bar (one tick, with {@link setTicks}) every `intervalMs` (default: the last
785
+ * interval used, else 1000). Calling it again while playing changes the pace. */
786
+ play(intervalMs?: number): this;
787
+ pause(): this;
788
+ /** Leave replay: the full history comes back and live updates resume. Also cancels a
789
+ * `start()` still loading older history (the chart returns to its previous depth). */
790
+ stop(): this;
791
+ get state(): ReplayState;
792
+ /** The loaded history a replay can walk — hidden bars included while replaying. Null
793
+ * before any bar loaded. A start older than `first` deepens the history first. */
794
+ get bounds(): ReplayBounds | null;
795
+ /**
796
+ * Play each revealed bar as a series of intrabar updates instead of whole: while
797
+ * playing, the forming candle opens at the first tick, then every tick moves its close
798
+ * and stretches its high and low, exactly like a live tick — indicators, chart types
799
+ * and the `bar` event follow — and the last one settles it on the stored bar. The play
800
+ * interval is then the time between two TICKS: a bar lasts as many intervals as it
801
+ * has ticks (below ~16 ms, ticks are batched per frame). The next bar's ticks are
802
+ * requested while the current one plays; playback waits for them. `null` goes back to
803
+ * whole bars. Takes effect from the next bar; a bar forming when the source changes
804
+ * completes at once.
805
+ */
806
+ setTicks(source: ReplayTickSource | null): this;
807
+ }
808
+
684
809
  /** Chart-level events emitted on `chart.on(...)`. */
685
810
  interface VelaEventMap extends Record<string, unknown> {
686
811
  ready: undefined;
@@ -838,7 +963,7 @@ interface VelaEventMap extends Record<string, unknown> {
838
963
  "context:changed": {
839
964
  id: string;
840
965
  };
841
- /** A live tick: the forming bar was updated or a new bar appended. */
966
+ /** A live tick: the forming bar was updated or a new bar appended (a bar revealed by replay included). */
842
967
  bar: OHLCV;
843
968
  /**
844
969
  * The visible time range moved (pan/zoom/fit — fires per applied change, NOT
@@ -865,8 +990,42 @@ interface VelaEventMap extends Record<string, unknown> {
865
990
  oldestTime: number;
866
991
  barsLoaded: number;
867
992
  };
993
+ /** Replay mode began (or seeked): the chart shows history up to `cursorTime`, `remaining` bars are hidden. */
994
+ "replay:start": {
995
+ cursorTime: number;
996
+ remaining: number;
997
+ };
998
+ /** One hidden bar was revealed (it also fires `bar`, like a live bar). A bar played tick
999
+ * by tick steps once, when its last tick settles it. */
1000
+ "replay:step": {
1001
+ cursorTime: number;
1002
+ remaining: number;
1003
+ };
1004
+ /** An intrabar update of the bar forming at `cursorTime` (`chart.replay.setTicks`):
1005
+ * tick `index` of `count` is applied (batched updates report the last one). */
1006
+ "replay:tick": {
1007
+ cursorTime: number;
1008
+ index: number;
1009
+ count: number;
1010
+ };
1011
+ /** Timed reveal started, or its pace changed. */
1012
+ "replay:play": {
1013
+ intervalMs: number;
1014
+ };
1015
+ /** Timed reveal paused — `pause()`, or a seek (`start()` while playing). */
1016
+ "replay:pause": undefined;
1017
+ /**
1018
+ * Replay mode ended: `'stopped'` = `chart.replay.stop()`, `'finished'` = the last hidden
1019
+ * bar was revealed, `'market'` = a symbol switch replaced the history (a timeframe or
1020
+ * session switch carries the replay over instead). The full history
1021
+ * is back and live updates resumed.
1022
+ */
1023
+ "replay:end": {
1024
+ reason: ReplayEndReason;
1025
+ };
868
1026
  /** An indicator's script raised an alert. `indicator` names the source — the
869
- * indicator's display title (what its legend row shows). */
1027
+ * indicator's display title (what its legend row shows). Never fires for bars a
1028
+ * replay reveals (`chart.replay`). */
870
1029
  alert: EngineAlert & {
871
1030
  indicator?: string;
872
1031
  };
@@ -1014,6 +1173,10 @@ declare class RendererControl {
1014
1173
  * public seam host chrome (status lines, data windows) builds on.
1015
1174
  */
1016
1175
  onCrosshairMove(cb: (e: CrosshairEvent) => void): Unsubscribe;
1176
+ /** A click — or a touch tap — on the plot, never the end of a pan: the open time of
1177
+ * the bar under it (`null` off the bars). On touch, where a tap moves no crosshair,
1178
+ * this is how an interaction learns which bar was chosen. */
1179
+ onClick(cb: (e: ClickEvent) => void): Unsubscribe;
1017
1180
  /** Touch long-press on a price or time axis strip — silent no-op without the seam. */
1018
1181
  onAxisLongPress(cb: (e: AxisLongPressEvent) => void): Unsubscribe;
1019
1182
  /**
@@ -1487,6 +1650,7 @@ declare class Vela {
1487
1650
  private readonly dataControl;
1488
1651
  private readonly drawingsControl;
1489
1652
  private readonly marksControl;
1653
+ private readonly replayControl;
1490
1654
  constructor(container: HTMLElement | string, options?: VelaOptions, deps?: VelaDeps);
1491
1655
  /**
1492
1656
  * Register a scripting engine so `addIndicator({ language })` can run that
@@ -1622,6 +1786,14 @@ declare class Vela {
1622
1786
  * model still fills but nothing paints (`chart.marks.supported`).
1623
1787
  */
1624
1788
  get marks(): MarksControl;
1789
+ /**
1790
+ * The chart's bar-replay control surface: rewind to a past bar and reveal the
1791
+ * following ones by hand or on a timer, from the history already loaded —
1792
+ * `await chart.replay.start({ from })`, `chart.replay.play(2000)`, `chart.replay.step()`,
1793
+ * `chart.replay.stop()`. Revealed bars behave like live bars for indicators; live
1794
+ * updates pause meanwhile. Follow it with the `replay:*` events.
1795
+ */
1796
+ get replay(): ReplayControl;
1625
1797
  on<K extends keyof VelaEventMap>(event: K, handler: (payload: VelaEventMap[K]) => void): () => void;
1626
1798
  /** The current visible time range (`from`/`to` in epoch-ms), or null before data loads. */
1627
1799
  getVisibleRange(): VisibleRange | null;
@@ -1675,6 +1847,11 @@ interface WidgetContext {
1675
1847
  * it. The dock stays exclusive: opening one closes whichever was showing. Unknown ids
1676
1848
  * are ignored. The seam a plugin uses to open ITS OWN panel programmatically. */
1677
1849
  togglePanel(id: string, open?: boolean): void;
1850
+ /** Dock `el` as a full-width strip in the shell's layout, between the chart area and
1851
+ * the bottom bar — the charts shrink to make room. Strips stack in docking order.
1852
+ * Returns the undock (removes `el`; a no-op once it has left the strip area). The
1853
+ * caller owns `el`, its content and styling. */
1854
+ dockStrip(el: HTMLElement): () => void;
1678
1855
  /** The widget's root element — pass it as `host` when mounting kit components
1679
1856
  * (Dialog/Menu/Tooltip) from an action; without an explicit host they portal to
1680
1857
  * the body, OUTSIDE the theme variables. A multi-chart shell hands its own root. */
@@ -1743,6 +1920,11 @@ interface WidgetActionDescriptor {
1743
1920
  * right after the style/layout dropdowns, styled like them (the spot and look of
1744
1921
  * the built-in Indicators button, for actions that replace it). */
1745
1922
  align?: 'left' | 'right';
1923
+ /** Topbar only: where the action goes on the MOBILE layout (the topbar is hidden
1924
+ * there). `'bar'` is an icon stop on the bottom bar; `'menu'` is a row in the
1925
+ * three-dots menu — a left (primary) action right after Layout, a right one at the
1926
+ * end. Default: `'bar'` for `align: 'left'`, `'menu'` otherwise. */
1927
+ mobile?: 'bar' | 'menu';
1746
1928
  /** Runtime gate — omitted ⇒ always shown. */
1747
1929
  when?: (ctx: WidgetContext) => boolean;
1748
1930
  run: (ctx: WidgetContext) => void;
@@ -2040,4 +2222,4 @@ declare function unregisterDefaultEngine(language: string): void;
2040
2222
  * language. The shell layers (widget, workspace cell) register exactly this result. */
2041
2223
  declare function resolveEngines(overrides?: Record<string, EngineFactory>): Record<string, EngineFactory>;
2042
2224
 
2043
- export { type SymbolRankingHook as $, type RunIndicatorResult as A, type BarsChangeReason as B, type CellStateContext as C, type DrawingsDocument as D, type ExternalIndicatorEntry as E, type FetchSeries as F, type SceneInspection as G, type ScriptRunCause as H, type IndicatorHandle as I, type ScriptRunResult as J, type SidePanelButton as K, type LegendActionDescriptor as L, MarksControl as M, type NativeIndicator as N, OVERRIDABLE_TOPBAR_IDS as O, type ParsedSymbol as P, type SidePanelDescriptor as Q, type Resolved as R, type ScriptingEngine as S, type SidePanelHandle as T, type SidePanelHeader as U, Vela as V, type WidgetContext as W, type StatePersistenceHandler as X, type StrategyFill as Y, type StrategyState as Z, type StrategyTrade as _, type ScriptRun as a, TypedEventBus as a0, type VelaDeps as a1, type VelaEventMap as a2, type VisibleBarRange as a3, type WidgetActionDescriptor as a4, type WidgetActionTarget as a5, type WidgetAttachment as a6, getNativeIndicator as a7, legendActions as a8, legendCallouts as a9, DEFAULT_PANEL_ORDER as aA, nativeIndicatorDescriptors as aa, nativeIndicatorTypes as ab, registerDefaultEngine as ac, registerLegendAction as ad, registerLegendCallout as ae, registerNativeIndicator as af, registerSidePanel as ag, registerStatePersistence as ah, registerSymbolRanking as ai, registerWidgetAction as aj, registerWidgetAttachment as ak, resolveEngines as al, sidePanels as am, statePersistenceHandlers as an, symbolRanking as ao, topbarActionOverride as ap, unregisterDefaultEngine as aq, unregisterLegendAction as ar, unregisterLegendCallout as as, unregisterNativeIndicator as at, unregisterSidePanel as au, unregisterStatePersistence as av, unregisterWidgetAction as aw, unregisterWidgetAttachment as ax, widgetActions as ay, widgetAttachments as az, type ContextSelect as b, DataControl as c, DrawingsControl as d, type EngineAlert as e, type EngineCapabilities as f, type EngineContextSnapshot as g, type EngineFactory as h, type EngineWarning as i, type ExecutionHandlers as j, type ExecutionMarket as k, type ExecutionRequest as l, type ExecutionSession as m, type IndicatorEventMap as n, type IndicatorSummary as o, type LegendCalloutContent as p, type LegendCalloutDescriptor as q, type LegendCalloutItem as r, type LegendCalloutSpec as s, type LegendIndicatorInfo as t, type NativeIndicatorContext as u, type NativeIndicatorDescriptor as v, type NativeIndicatorInfo as w, type NativeIndicatorOutput as x, type PreparedScript as y, RendererControl as z };
2225
+ export { type SidePanelButton as $, type NativeIndicatorDescriptor as A, type BarsChangeReason as B, type CellStateContext as C, type DrawingsDocument as D, type ExternalIndicatorEntry as E, type FetchSeries as F, type NativeIndicatorInfo as G, type NativeIndicatorOutput as H, type IndicatorHandle as I, type PreparedScript as J, RendererControl as K, type LegendActionDescriptor as L, MarksControl as M, type NativeIndicator as N, OVERRIDABLE_TOPBAR_IDS as O, type ParsedSymbol as P, ReplayControl as Q, type ReplayState as R, type ScriptingEngine as S, type ReplayEndReason as T, type ReplayStartOptions as U, Vela as V, type WidgetContext as W, type RunIndicatorResult as X, type SceneInspection as Y, type ScriptRunCause as Z, type ScriptRunResult as _, type ReplayBounds as a, type SidePanelDescriptor as a0, type SidePanelHandle as a1, type SidePanelHeader as a2, type StatePersistenceHandler as a3, type StrategyFill as a4, type StrategyState as a5, type StrategyTrade as a6, type SymbolRankingHook as a7, TypedEventBus as a8, type VelaDeps as a9, unregisterNativeIndicator as aA, unregisterSidePanel as aB, unregisterStatePersistence as aC, unregisterWidgetAction as aD, unregisterWidgetAttachment as aE, widgetActions as aF, widgetAttachments as aG, DEFAULT_PANEL_ORDER as aH, type VisibleBarRange as aa, type WidgetActionDescriptor as ab, type WidgetActionTarget as ac, type WidgetAttachment as ad, getNativeIndicator as ae, legendActions as af, legendCallouts as ag, nativeIndicatorDescriptors as ah, nativeIndicatorTypes as ai, registerDefaultEngine as aj, registerLegendAction as ak, registerLegendCallout as al, registerNativeIndicator as am, registerSidePanel as an, registerStatePersistence as ao, registerSymbolRanking as ap, registerWidgetAction as aq, registerWidgetAttachment as ar, resolveEngines as as, sidePanels as at, statePersistenceHandlers as au, symbolRanking as av, topbarActionOverride as aw, unregisterDefaultEngine as ax, unregisterLegendAction as ay, unregisterLegendCallout as az, type VelaEventMap as b, type ScriptRun as c, type Resolved as d, type ReplayTick as e, DataControl as f, type ReplayTickSource as g, type ContextSelect as h, DrawingsControl as i, type EngineAlert as j, type EngineCapabilities as k, type EngineContextSnapshot as l, type EngineFactory as m, type EngineWarning as n, type ExecutionHandlers as o, type ExecutionMarket as p, type ExecutionRequest as q, type ExecutionSession as r, type IndicatorEventMap as s, type IndicatorSummary as t, type LegendCalloutContent as u, type LegendCalloutDescriptor as v, type LegendCalloutItem as w, type LegendCalloutSpec as x, type LegendIndicatorInfo as y, type NativeIndicatorContext as z };