openalgo-charts 2.1.8 → 2.1.9

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,12 +4,12 @@
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, 51 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, 74.00 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, 102 built-in indicators plus your own custom ones, 51 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, 76.16 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-74.00%20KB%20base%20%C2%B7%20201.15%20KB%20all%20tiers-brightgreen.svg)](#size-budget)
12
- [![tests](https://img.shields.io/badge/tests-4376%20passing-brightgreen.svg)](#develop)
11
+ [![bundle](https://img.shields.io/badge/brotli-76.16%20KB%20base%20%C2%B7%20203.62%20KB%20all%20tiers-brightgreen.svg)](#size-budget)
12
+ [![tests](https://img.shields.io/badge/tests-4402%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)
@@ -43,14 +43,13 @@ Every chart in the [live gallery](https://marketcalls.github.io/openalgo-charts/
43
43
 
44
44
  ## Install
45
45
 
46
- Current version: **2.1.8**.
46
+ Current version: **2.1.9**.
47
47
 
48
- This release adds proportional wheel and trackpad navigation, horizontal wheel pan,
49
- price-axis wheel scaling and smooth autoscale transitions. The packaged widget now
50
- provides responsive mobile controls that share its drawings, objects and dialogs.
51
- See the [interaction guide](https://marketcalls.github.io/openalgo-charts/docs/interactions/),
52
- the [mobile guide](https://marketcalls.github.io/openalgo-charts/docs/mobile/) and
53
- the [2.1.8 changelog](./CHANGELOG.md#218).
48
+ This release adds default corner branding and optional background watermarks across
49
+ charts, widgets and reference hosts. It also fixes profile example histograms,
50
+ maximized-pane exports and logo gestures, and updates the website stock simulations.
51
+ See the [branding guide](https://marketcalls.github.io/openalgo-charts/docs/branding-and-watermarks/)
52
+ and the [2.1.9 changelog](./CHANGELOG.md#219).
54
53
 
55
54
  ```bash
56
55
  npm install openalgo-charts
@@ -63,6 +62,14 @@ const chart = createChart(document.getElementById('chart'));
63
62
  chart.addSeries('candlestick').setData(generateBars(1700000000, 200, 3600));
64
63
  ```
65
64
 
65
+ ## Branding and optional watermark
66
+
67
+ Version 2.1.9 adds default corner branding and an optional background
68
+ watermark. The background text starts off. Use `branding: false` for a host-owned
69
+ logo, and `watermark: true` with `setDataContext` to show the current symbol and
70
+ interval. The same watermark controls appear under Appearance in chart settings.
71
+ See the [branding guide](https://marketcalls.github.io/openalgo-charts/docs/branding-and-watermarks/).
72
+
66
73
  ## No build step
67
74
 
68
75
  Every release is on unpkg and jsDelivr the moment it is published, because both sit
@@ -71,7 +78,7 @@ in front of npm rather than being places you upload to. A chart is one HTML file
71
78
  ```html
72
79
  <div id="chart" style="width:100vw;height:100vh"></div>
73
80
  <script type="module">
74
- import { createChart } from 'https://unpkg.com/openalgo-charts@2.1.8/dist/openalgo-charts.mjs';
81
+ import { createChart } from 'https://unpkg.com/openalgo-charts@2.1.9/dist/openalgo-charts.mjs';
75
82
  const chart = createChart(document.getElementById('chart'), { timezone: 'Asia/Kolkata' });
76
83
  chart.addSeries('candlestick').setData(bars);
77
84
  </script>
@@ -111,16 +118,16 @@ Import only what you use. Each tier is a separate bundle that registers into the
111
118
 
112
119
  | Import | Contents | Brotli |
113
120
  |---|---|---|
114
- | `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 | 74.00 KB |
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 | 76.16 KB |
115
122
  | `openalgo-charts/indicators` | 102 built-in indicators, the `registerIndicator` contract for your own, and the Tier-2 (external-data) contract | 28.05 KB |
116
123
  | `openalgo-charts/draw` | 51 drawing tools + a headless drawing controller, clipboard, settings schema, level palette, freehand geometry and SVG icons | 25.90 KB |
117
124
  | `openalgo-charts/transform` | Heikin Ashi, Renko, Range bars, Line Break, Point &amp; Figure, Kagi | 2.66 KB |
118
125
  | `openalgo-charts/profile` | Volume Profile, Market Profile (TPO) with compact pixel letters, Footprint, order flow | 14.96 KB |
119
126
  | `openalgo-charts/trade` | Order / position / bracket tools + DOM ladder | 7.61 KB |
120
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 |
121
- | `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 | 41.59 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 | 41.91 KB |
122
129
 
123
- Everything together is **201.15 KB Brotli**; a widget terminal (base + draw + indicators + widget, what one `createWidget` call loads) is 169.54 KB. Figures are the measured `size-limit` output. The trade tier is listed as its delta over the base, so loading base + trade costs 81.61 KB.
130
+ Everything together is **203.62 KB Brotli**; a widget terminal (base + draw + indicators + widget, what one `createWidget` call loads) is 172.02 KB. Figures are measured from the 2.1.9 release build. The trade tier is listed as its delta over the base, so loading base + trade costs 83.77 KB.
124
131
 
125
132
  ## What's built
126
133
 
@@ -412,16 +419,16 @@ Enforced in CI by [`size-limit`](./.size-limit.json). Nothing is excluded, becau
412
419
 
413
420
  | Bundle | Limit | Actual |
414
421
  |---|---|---|
415
- | Base engine | 75 KB | 74.00 KB |
416
- | Base + trade | 83 KB | 81.61 KB |
422
+ | Base engine | 77 KB | 76.16 KB |
423
+ | Base + trade | 85 KB | 83.77 KB |
417
424
  | Indicators tier | 30 KB | 28.05 KB |
418
425
  | Draw tier | 26 KB | 25.90 KB |
419
426
  | Transform tier | 5 KB | 2.66 KB |
420
427
  | Profile tier | 15 KB | 14.96 KB |
421
428
  | WebGL2 tier | 7 KB | 6.38 KB |
422
- | Widget tier | 42 KB | 41.59 KB |
423
- | Widget terminal (base + draw + indicators + widget) | 170 KB | 169.54 KB |
424
- | **Everything** | **202 KB** | **201.15 KB** |
429
+ | Widget tier | 42 KB | 41.91 KB |
430
+ | Widget terminal (base + draw + indicators + widget) | 173 KB | 172.02 KB |
431
+ | **Everything** | 205 KB | 203.62 KB |
425
432
 
426
433
  ## Documentation
427
434
 
@@ -466,7 +473,7 @@ See [Contributing](./CONTRIBUTING.md) for setup, targeted checks, documentation
466
473
  ```bash
467
474
  npm install # install dev toolchain
468
475
  npm run typecheck # strict TypeScript check
469
- npm test # unit tests (vitest) - 4376 across 196 files
476
+ npm test # unit tests (vitest) - 4402 across 197 files
470
477
  npm run build # Rollup -> dist/ (minified ESM per tier + types)
471
478
  npm run size # size-limit (Brotli) against the budget
472
479
  npm run e2e # Playwright Chromium smoke tests
@@ -483,7 +490,7 @@ npm run verify # lint + typecheck + test + build + demo tests + dts + size +
483
490
 
484
491
  ## Status &amp; limitations
485
492
 
486
- Version **2.1.8**. All engine build phases are implemented. Upgrading a 1.9.x host: [Migrating to 2.0](./docs/migrating-to-2.md).
493
+ Version **2.1.9**. All engine build phases are implemented. Upgrading a 1.9.x host: [Migrating to 2.0](./docs/migrating-to-2.md).
487
494
 
488
495
  Known gaps, stated plainly:
489
496
 
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Library version string. Matches package.json (including locally prepared releases). */
2
- declare const VERSION = "2.1.8";
2
+ declare const VERSION = "2.1.9";
3
3
  /** Returns the current library version. */
4
4
  declare function version(): string;
5
5
 
@@ -3268,6 +3268,7 @@ interface ChartSettingsState {
3268
3268
  navigation?: Partial<ChartNavigationOptions>;
3269
3269
  canvas?: CanvasOptions;
3270
3270
  statusLine?: LegendStatusLineOptions;
3271
+ watermark?: ChartWatermarkOptions;
3271
3272
  trading?: TradingSettings;
3272
3273
  events?: ChartEventOptions;
3273
3274
  /**
@@ -3293,6 +3294,193 @@ declare function readChartSettings(chart: Chart): ChartSettingsValues;
3293
3294
  */
3294
3295
  declare function applyChartSettings(chart: Chart, patch: Readonly<Partial<ChartSettingsValues>>): void;
3295
3296
 
3297
+ /**
3298
+ * Logo / brand watermark (ARCHITECTURE.md §8). Draws a small image (or an
3299
+ * already-decoded bitmap) faintly in a corner of the plot, the way charting
3300
+ * apps stamp a product/brand mark. Because it draws on the canvas it is captured
3301
+ * by `chart.takeScreenshot()`, and an optional `tint` recolors the opaque pixels
3302
+ * so a single-color logo reads on both dark and light themes.
3303
+ *
3304
+ * Pass a `src` (URL or data URI) or a preloaded `image` for custom artwork.
3305
+ * Without a source, the original OpenAlgo glyph draws without a network request.
3306
+ */
3307
+
3308
+ type WatermarkPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'center';
3309
+ interface LogoWatermarkOptions {
3310
+ /** Image URL or data URI. Ignored when `image` is provided. */
3311
+ src?: string;
3312
+ /** A preloaded image/bitmap to draw (skips loading). */
3313
+ image?: CanvasImageSource & {
3314
+ width: number;
3315
+ height: number;
3316
+ };
3317
+ /** Corner (or center) to anchor to. Default `bottom-right`. */
3318
+ position?: WatermarkPosition;
3319
+ /** Gap from the plot edges in px. Default `12`. */
3320
+ margin?: number;
3321
+ /** Rendered logo height in px; width follows the source aspect. Default `28`. */
3322
+ height?: number;
3323
+ /** 0..1. Default `0.7`. */
3324
+ opacity?: number;
3325
+ /** Recolor the opaque pixels to this color (e.g. a faint theme gray). */
3326
+ tint?: string;
3327
+ /** Layer order vs the series. Default `top`. */
3328
+ zOrder?: ZOrder;
3329
+ /**
3330
+ * Text revealed to the right of the mark on hover — "Chart by OpenAlgo".
3331
+ * The mark alone is what sits on the chart at rest; the wording is only
3332
+ * needed when someone looks at it, so it unrolls rather than occupying the
3333
+ * corner permanently. Omit for a plain, non-interactive mark.
3334
+ */
3335
+ label?: string;
3336
+ /** Hit-test id, so the chart can report hover. Default `watermark`. */
3337
+ id?: string;
3338
+ /** Reveal duration in seconds. Default 0.18. */
3339
+ revealSeconds?: number;
3340
+ /** Label colour. Defaults to `tint`, then the theme's text. */
3341
+ labelColor?: string;
3342
+ /** Label size in media px. Default 12. */
3343
+ fontSize?: number;
3344
+ /**
3345
+ * Rounded plate behind the mark and label. Without one the wording sits
3346
+ * straight on the candles and is unreadable wherever the chart is busy.
3347
+ * Defaults to a translucent form of the theme background; `'none'` omits it.
3348
+ */
3349
+ background?: string;
3350
+ /** Plate border. Defaults to the theme's axis line. `'none'` omits it. */
3351
+ borderColor?: string;
3352
+ /** Plate corner radius in media px. Default 6. */
3353
+ radius?: number;
3354
+ /**
3355
+ * Plate padding around the lockup, in media px. A number pads both axes;
3356
+ * `{ x, y }` pads them separately. Default `{ x: 7, y: 4 }`, which keeps the
3357
+ * revealed label clear of the plate edge.
3358
+ *
3359
+ * Use it to size the resting plate exactly: a 40px mark with `padding: 2.5`
3360
+ * sits in a 45x45 square. The plate widens as the label unrolls; the padding
3361
+ * is what stays constant.
3362
+ */
3363
+ padding?: number | {
3364
+ x: number;
3365
+ y: number;
3366
+ };
3367
+ /**
3368
+ * Where the mark points. A canvas cannot hold an anchor, so this only marks
3369
+ * it as clickable — the hit reports a pointer cursor, and the host opens
3370
+ * {@link href} from its own click handler.
3371
+ *
3372
+ * Given a bare URL, `href()` appends UTM parameters naming the page the chart
3373
+ * is embedded in, so the referral is attributable. Pass a URL that already
3374
+ * has a query string to compose your own and skip that entirely.
3375
+ */
3376
+ href?: string;
3377
+ /** `utm_medium` for the composed link. Default `oac-link`. */
3378
+ utmMedium?: string;
3379
+ /** `utm_campaign` for the composed link. Default `oac-chart`. */
3380
+ utmCampaign?: string;
3381
+ }
3382
+ /** Top-left placement (in media px) of a `w x h` logo within a `plotW x plotH` plot. */
3383
+ declare function watermarkRect(position: WatermarkPosition, margin: number, w: number, h: number, plotW: number, plotH: number): {
3384
+ x: number;
3385
+ y: number;
3386
+ w: number;
3387
+ h: number;
3388
+ };
3389
+ declare class LogoWatermark implements IPrimitive {
3390
+ private _opts;
3391
+ /** 0..1 reveal progress, eased toward hover state each frame. */
3392
+ private _reveal;
3393
+ private _lastFrameMs;
3394
+ /** Label width in media px, measured once the font is known. */
3395
+ private _labelW;
3396
+ private readonly _now;
3397
+ private _host;
3398
+ private _img;
3399
+ private _ready;
3400
+ private _autoHeight;
3401
+ private _tintCanvas;
3402
+ private _tintKey;
3403
+ constructor(opts?: LogoWatermarkOptions);
3404
+ attached(host: PrimitiveHost): void;
3405
+ detached(): void;
3406
+ zOrder(): ZOrder;
3407
+ autoscaleInfo(): null;
3408
+ /** Live restyle. Pass a new `src`/`image` to swap the logo. */
3409
+ setOptions(patch: Partial<LogoWatermarkOptions>): void;
3410
+ /**
3411
+ * The mark's box, in media px. The label unrolls to its right, so the hit
3412
+ * area is the mark alone — hovering the revealed text keeps it open because
3413
+ * the pointer is still within the widened box below.
3414
+ */
3415
+ private _rect;
3416
+ private _builtin;
3417
+ /**
3418
+ * The link to open, with attribution appended. A caller who supplied their
3419
+ * own query string gets it back untouched.
3420
+ */
3421
+ href(): string | undefined;
3422
+ hitTest(x: number, y: number, rc: PrimitiveRenderContext): PrimitiveHit | null;
3423
+ draw(ctx: CanvasRenderingContext2D, rc: PrimitiveRenderContext): void;
3424
+ /**
3425
+ * The single colour the mark and its label share. Either option can set it;
3426
+ * they follow each other so the pair never renders in two shades.
3427
+ */
3428
+ private _ink;
3429
+ /** Ease the reveal toward the hover state, asking for frames while moving. */
3430
+ private _advanceReveal;
3431
+ /** Recolor the opaque logo pixels to `color` at (dw x dh) device px, cached. */
3432
+ private _tinted;
3433
+ }
3434
+
3435
+ /**
3436
+ * A word stamped faintly across the plot, to say what mode the chart is in.
3437
+ *
3438
+ * The case it exists for is replay: a chart showing a past session looks exactly
3439
+ * like a chart showing the present one, and a trader who forgets which they are
3440
+ * looking at can read a live decision off history. The mark is large, centred
3441
+ * and static on purpose. It is not decoration and not a brand: it is the answer
3442
+ * to "am I looking at the market or a recording of it", and it has to be
3443
+ * readable without being looked for.
3444
+ *
3445
+ * Distinct from `LogoWatermark`, which is a small corner image with a hover
3446
+ * label. This one draws text, takes no interaction, and reports no hit, so it
3447
+ * never intercepts a click meant for the chart under it.
3448
+ */
3449
+
3450
+ interface TextWatermarkOptions {
3451
+ /** The word itself. Kept short: it is read at a glance, not studied. */
3452
+ text: string;
3453
+ /**
3454
+ * Cap height in px at the plot's natural size, scaled down on a narrow chart
3455
+ * so a long word never runs past the edges. Default 64.
3456
+ */
3457
+ fontSize?: number;
3458
+ /** 0..1. Default 0.08, which reads as present without competing with bars. */
3459
+ opacity?: number;
3460
+ /** Default a neutral grey that works on either theme. */
3461
+ color?: string;
3462
+ font?: string;
3463
+ /**
3464
+ * Below the series by default. A mode marker that covered the candles would
3465
+ * be worse than no marker, since the candles are what the mode is about.
3466
+ */
3467
+ zOrder?: ZOrder;
3468
+ id?: string;
3469
+ }
3470
+ declare class TextWatermark implements IPrimitive {
3471
+ private _host;
3472
+ private _opts;
3473
+ constructor(opts: TextWatermarkOptions);
3474
+ zOrder(): ZOrder;
3475
+ attached(host: PrimitiveHost): void;
3476
+ detached(): void;
3477
+ autoscaleInfo(): null;
3478
+ /** Never hit: the mark must not eat a click aimed at the chart beneath it. */
3479
+ hitTest(): null;
3480
+ setOptions(patch: Partial<TextWatermarkOptions>): void;
3481
+ draw(ctx: CanvasRenderingContext2D, rc: PrimitiveRenderContext): void;
3482
+ }
3483
+
3296
3484
  /**
3297
3485
  * Top-level chart orchestrator (ARCHITECTURE.md §3.3). Owns the shared
3298
3486
  * DataLayer + time scale, the panes, the invalidate mask, and the render loop.
@@ -3317,6 +3505,12 @@ interface DoubleClickEvent {
3317
3505
  handled: boolean;
3318
3506
  }
3319
3507
 
3508
+ /** Optional background text. Blank text follows the chart's symbol and interval. */
3509
+ interface ChartWatermarkOptions extends Partial<TextWatermarkOptions> {
3510
+ visible?: boolean;
3511
+ }
3512
+ /** Defensive branding snapshot emitted synchronously after setBranding as `branding:changed`. */
3513
+ type BrandingChangedEvent = false | LogoWatermarkOptions;
3320
3514
  /**
3321
3515
  * Which corporate-action / news markers the chart draws. Every type defaults to
3322
3516
  * on; an unlisted type is always drawn. Only filters the strip the chart owns
@@ -3546,6 +3740,10 @@ interface ChartOptions {
3546
3740
  * of the chart. Pass `false` to drop them, or an options object to restyle.
3547
3741
  */
3548
3742
  timeNavigator?: boolean | Partial<TimeNavigatorOptions>;
3743
+ /** OpenAlgo corner mark by default. Pass false to hide it or options for custom branding. */
3744
+ branding?: boolean | LogoWatermarkOptions;
3745
+ /** Background text, off by default. Blank text follows setDataContext. */
3746
+ watermark?: boolean | ChartWatermarkOptions;
3549
3747
  }
3550
3748
  interface AddSeriesOptions {
3551
3749
  /** Target pane index (0 = price). Higher panes are created on demand. */
@@ -3964,6 +4162,11 @@ declare class Chart {
3964
4162
  private _timeNav;
3965
4163
  /** Pane the navigator is currently attached to, so it can follow the bottom. */
3966
4164
  private _timeNavPane;
4165
+ private _branding;
4166
+ private _brandingOptions;
4167
+ private _brandingPress;
4168
+ private _watermark;
4169
+ private _watermarkOptions;
3967
4170
  constructor(container: HTMLElement, options?: ChartOptions);
3968
4171
  /** Register a callback fired when the user pans near the left (oldest) edge. */
3969
4172
  setHistoryLoader(loader: () => void): void;
@@ -4102,6 +4305,15 @@ declare class Chart {
4102
4305
  getDataContext(): Readonly<ChartDataContext> | undefined;
4103
4306
  /** Clear the previous source bars before changing context, then load the new source. */
4104
4307
  setDataContext(context: ChartDataContext | undefined): void;
4308
+ /** Replace chart-owned branding. Manually attached primitives are independent. */
4309
+ setBranding(options: boolean | LogoWatermarkOptions): void;
4310
+ /** Host branding options, excluded from saved chart state. */
4311
+ brandingOptions(): false | LogoWatermarkOptions;
4312
+ /** Patch background text preferences. Boolean input changes visibility only. */
4313
+ setWatermarkOptions(options: boolean | ChartWatermarkOptions): void;
4314
+ /** JSON-safe preferences. Automatic text remains blank in this snapshot. */
4315
+ watermarkOptions(): Readonly<ChartWatermarkOptions>;
4316
+ private _syncWatermark;
4105
4317
  private _indicatorHost;
4106
4318
  /**
4107
4319
  * Take (or withdraw) the price bars' colour overlay on behalf of one
@@ -4721,11 +4933,13 @@ declare class Chart {
4721
4933
  * refreshed and still holds the *previous* left-click. Letting a non-primary
4722
4934
  * pointerup through would re-run the click branch against that stale position
4723
4935
  * and replay the last click (e.g. re-firing a Buy/Sell button → a phantom
4724
- * order). Touch/pen are unaffected (they contact with button 0). The internal
4936
+ * order). Touch and pen tip contact use button 0. The internal
4725
4937
  * recovery call from `_onPointerMove` invokes `_onPointerUp` directly, so it
4726
4938
  * bypasses this filter and still ends a drag when a button release is missed.
4727
4939
  */
4728
4940
  private readonly _onPointerUpNative;
4941
+ private readonly _onPointerCancel;
4942
+ private _brandingHit;
4729
4943
  private readonly _onPointerLeave;
4730
4944
  private readonly _onWheel;
4731
4945
  /** One zoom step, applied now. Shared by the instant path and each glide frame. */
@@ -6429,188 +6643,6 @@ declare class PriceLevels implements IPrimitive {
6429
6643
  draw(ctx: CanvasRenderingContext2D, rc: PrimitiveRenderContext): void;
6430
6644
  }
6431
6645
 
6432
- /**
6433
- * Logo / brand watermark (ARCHITECTURE.md §8). Draws a small image (or an
6434
- * already-decoded bitmap) faintly in a corner of the plot — the way charting
6435
- * apps stamp a product/brand mark. Because it draws on the canvas it is captured
6436
- * by `chart.takeScreenshot()`, and an optional `tint` recolors the opaque pixels
6437
- * so a single-color logo reads on both dark and light themes.
6438
- *
6439
- * Source-agnostic: pass a `src` (URL or data URI) or a preloaded `image`. The
6440
- * library ships no logo of its own, keeping the bundle lean.
6441
- */
6442
-
6443
- type WatermarkPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'center';
6444
- interface LogoWatermarkOptions {
6445
- /** Image URL or data URI. Ignored when `image` is provided. */
6446
- src?: string;
6447
- /** A preloaded image/bitmap to draw (skips loading). */
6448
- image?: CanvasImageSource & {
6449
- width: number;
6450
- height: number;
6451
- };
6452
- /** Corner (or center) to anchor to. Default `bottom-right`. */
6453
- position?: WatermarkPosition;
6454
- /** Gap from the plot edges in px. Default `12`. */
6455
- margin?: number;
6456
- /** Rendered logo height in px; width follows the source aspect. Default `28`. */
6457
- height?: number;
6458
- /** 0..1. Default `0.7`. */
6459
- opacity?: number;
6460
- /** Recolor the opaque pixels to this color (e.g. a faint theme gray). */
6461
- tint?: string;
6462
- /** Layer order vs the series. Default `top`. */
6463
- zOrder?: ZOrder;
6464
- /**
6465
- * Text revealed to the right of the mark on hover — "Chart by OpenAlgo".
6466
- * The mark alone is what sits on the chart at rest; the wording is only
6467
- * needed when someone looks at it, so it unrolls rather than occupying the
6468
- * corner permanently. Omit for a plain, non-interactive mark.
6469
- */
6470
- label?: string;
6471
- /** Hit-test id, so the chart can report hover. Default `watermark`. */
6472
- id?: string;
6473
- /** Reveal duration in seconds. Default 0.18. */
6474
- revealSeconds?: number;
6475
- /** Label colour. Defaults to `tint`, then the theme's text. */
6476
- labelColor?: string;
6477
- /** Label size in media px. Default 12. */
6478
- fontSize?: number;
6479
- /**
6480
- * Rounded plate behind the mark and label. Without one the wording sits
6481
- * straight on the candles and is unreadable wherever the chart is busy.
6482
- * Defaults to a translucent form of the theme background; `'none'` omits it.
6483
- */
6484
- background?: string;
6485
- /** Plate border. Defaults to the theme's axis line. `'none'` omits it. */
6486
- borderColor?: string;
6487
- /** Plate corner radius in media px. Default 6. */
6488
- radius?: number;
6489
- /**
6490
- * Plate padding around the lockup, in media px. A number pads both axes;
6491
- * `{ x, y }` pads them separately. Default `{ x: 7, y: 4 }`, which keeps the
6492
- * revealed label clear of the plate edge.
6493
- *
6494
- * Use it to size the resting plate exactly: a 40px mark with `padding: 2.5`
6495
- * sits in a 45x45 square. The plate widens as the label unrolls; the padding
6496
- * is what stays constant.
6497
- */
6498
- padding?: number | {
6499
- x: number;
6500
- y: number;
6501
- };
6502
- /**
6503
- * Where the mark points. A canvas cannot hold an anchor, so this only marks
6504
- * it as clickable — the hit reports a pointer cursor, and the host opens
6505
- * {@link href} from its own click handler.
6506
- *
6507
- * Given a bare URL, `href()` appends UTM parameters naming the page the chart
6508
- * is embedded in, so the referral is attributable. Pass a URL that already
6509
- * has a query string to compose your own and skip that entirely.
6510
- */
6511
- href?: string;
6512
- /** `utm_medium` for the composed link. Default `oac-link`. */
6513
- utmMedium?: string;
6514
- /** `utm_campaign` for the composed link. Default `oac-chart`. */
6515
- utmCampaign?: string;
6516
- }
6517
- /** Top-left placement (in media px) of a `w x h` logo within a `plotW x plotH` plot. */
6518
- declare function watermarkRect(position: WatermarkPosition, margin: number, w: number, h: number, plotW: number, plotH: number): {
6519
- x: number;
6520
- y: number;
6521
- w: number;
6522
- h: number;
6523
- };
6524
- declare class LogoWatermark implements IPrimitive {
6525
- private _opts;
6526
- /** 0..1 reveal progress, eased toward hover state each frame. */
6527
- private _reveal;
6528
- private _lastFrameMs;
6529
- /** Label width in media px, measured once the font is known. */
6530
- private _labelW;
6531
- private readonly _now;
6532
- private _host;
6533
- private _img;
6534
- private _ready;
6535
- private _tintCanvas;
6536
- private _tintKey;
6537
- constructor(opts?: LogoWatermarkOptions);
6538
- attached(host: PrimitiveHost): void;
6539
- detached(): void;
6540
- zOrder(): ZOrder;
6541
- autoscaleInfo(): null;
6542
- /** Live restyle. Pass a new `src`/`image` to swap the logo. */
6543
- setOptions(patch: Partial<LogoWatermarkOptions>): void;
6544
- /**
6545
- * The mark's box, in media px. The label unrolls to its right, so the hit
6546
- * area is the mark alone — hovering the revealed text keeps it open because
6547
- * the pointer is still within the widened box below.
6548
- */
6549
- private _rect;
6550
- /**
6551
- * The link to open, with attribution appended. A caller who supplied their
6552
- * own query string gets it back untouched.
6553
- */
6554
- href(): string | undefined;
6555
- hitTest(x: number, y: number, rc: PrimitiveRenderContext): PrimitiveHit | null;
6556
- draw(ctx: CanvasRenderingContext2D, rc: PrimitiveRenderContext): void;
6557
- /**
6558
- * The single colour the mark and its label share. Either option can set it;
6559
- * they follow each other so the pair never renders in two shades.
6560
- */
6561
- private _ink;
6562
- /** Ease the reveal toward the hover state, asking for frames while moving. */
6563
- private _advanceReveal;
6564
- /** Recolor the opaque logo pixels to `color` at (dw x dh) device px, cached. */
6565
- private _tinted;
6566
- }
6567
-
6568
- /**
6569
- * A word stamped faintly across the plot, to say what mode the chart is in.
6570
- *
6571
- * The case it exists for is replay: a chart showing a past session looks exactly
6572
- * like a chart showing the present one, and a trader who forgets which they are
6573
- * looking at can read a live decision off history. The mark is large, centred
6574
- * and static on purpose. It is not decoration and not a brand: it is the answer
6575
- * to "am I looking at the market or a recording of it", and it has to be
6576
- * readable without being looked for.
6577
- *
6578
- * Distinct from `LogoWatermark`, which is a small corner image with a hover
6579
- * label. This one draws text, takes no interaction, and reports no hit, so it
6580
- * never intercepts a click meant for the chart under it.
6581
- */
6582
-
6583
- interface TextWatermarkOptions {
6584
- /** The word itself. Kept short: it is read at a glance, not studied. */
6585
- text: string;
6586
- /**
6587
- * Cap height in px at the plot's natural size, scaled down on a narrow chart
6588
- * so a long word never runs past the edges. Default 64.
6589
- */
6590
- fontSize?: number;
6591
- /** 0..1. Default 0.08, which reads as present without competing with bars. */
6592
- opacity?: number;
6593
- /** Default a neutral grey that works on either theme. */
6594
- color?: string;
6595
- font?: string;
6596
- /**
6597
- * Below the series by default. A mode marker that covered the candles would
6598
- * be worse than no marker, since the candles are what the mode is about.
6599
- */
6600
- zOrder?: ZOrder;
6601
- id?: string;
6602
- }
6603
- declare class TextWatermark implements IPrimitive {
6604
- private _opts;
6605
- constructor(opts: TextWatermarkOptions);
6606
- zOrder(): ZOrder;
6607
- autoscaleInfo(): null;
6608
- /** Never hit: the mark must not eat a click aimed at the chart beneath it. */
6609
- hitTest(): null;
6610
- setOptions(patch: Partial<TextWatermarkOptions>): void;
6611
- draw(ctx: CanvasRenderingContext2D, rc: PrimitiveRenderContext): void;
6612
- }
6613
-
6614
6646
  /**
6615
6647
  * Dims everything from a bar onward, and draws the line where the cut falls.
6616
6648
  *
@@ -8574,4 +8606,4 @@ declare function lerp(a: number, b: number, t: number): number;
8574
8606
  */
8575
8607
  declare function roundToTick(value: number, step: number): number;
8576
8608
 
8577
- export { ALT_PRESET, type AddSeriesOptions, type AggTick, type AxisChromeOptions, type AxisStyle, BAR_CACHE_VERSION, BUILTIN_COMMANDS, type Bar, BarCache, type BarCacheOptions, type BarCacheStats, type BarCacheStore, type BarSubscriptionOptions, type BarUpdate, type BarsPage, type BarsPageRequest, type BarsRequest, type Bucketing, BuySellButtons, type BuySellButtonsOptions, CHART_STATE_VERSION, type CachedBars, type CachedBarsRequest, type CalendarBucketing, type CalendarUnit, CandleBuilder, type CandleBuilderOptions, type CandleGeometry, type CandleStyle, type CandleTier, type CandleUpdate, Canvas2dBackend, type CanvasLineStyle, type CanvasOptions, Chart, type ChartClickEvent, type ChartDataContext, type ChartDragEndEvent, type ChartDragEvent, type ChartEvent, type ChartEventOptions, type ChartNavigationOptions, type ChartObjectCapabilities, type ChartObjectDefinition, type ChartObjectDrawing, type ChartObjectDrawingSource, type ChartObjectKind, type ChartObjectProvider, type ChartObjectSnapshot, ChartObjects, type ChartObjectsOptions, type ChartOptions, type ChartSettingsColorPairInput, type ChartSettingsInput, type ChartSettingsState, type ChartSettingsTab, type ChartSettingsTabId, type ChartSettingsValue, type ChartSettingsValues, type ChartState, ChartTable, type ChartTableOptions, type ChartTheme, type ComparisonAlignment, type ComparisonChartHost, ComparisonController, type ComparisonControllerOptions, type ComparisonHandle, type ComparisonMode, type ComparisonOptions, type ComparisonPane, type ContextMenuEvent, type ContextMenuTarget, type ContextMenuTargetKind, type CrosshairMoveEvent, type CrosshairOptions, type CrosshairStyle, 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_TIMEZONE, DEFAULT_TIME_NAVIGATOR_OPTIONS, DEFAULT_TIME_SCALE_OPTIONS, DEFAULT_TRADING_COLORS, DEFAULT_ZOOM_GLIDE_OPTIONS, type DataFeed, DataLayer, DataLoadingController, type DataLoadingOptions, type DataLoadingSnapshot, type DataLoadingStatus, type DataUpdateReason, type DecodedOrder, type DepthLevel, type DoubleClickAction, type DoubleClickEvent, type DrawAnchor, type DrawItem, EventMarkers, type ExportSvgOptions, FakeDataFeed, type FeedScheduler, type FillGradient, type FillPoint, type GridAxisStyle, type GridOptions, type GridStyle, type HistogramStyle, type HistoryLoadingStatus, HistoryRequestPool, type HistoryRequestPoolOptions, INDICATOR_LINE_STYLES, INDICATOR_PLOT_STYLES, INDICATOR_SOURCES, type IPrimitive, type IRenderBackend, IST_OFFSET_SECONDS, type IndexedBar, type IndicatorAlertContext, type IndicatorAlertPayload, type IndicatorAlertSpec, type IndicatorApi, type IndicatorAttachContext, IndicatorBackground, type IndicatorCalcContext, type IndicatorDataChange, type IndicatorDataStatus, type IndicatorDescriptor, type IndicatorDrawing, IndicatorDrawings, IndicatorFill, type IndicatorFillOptions, type IndicatorFillSpec, type IndicatorHost, type IndicatorInput, type IndicatorLevel, type IndicatorLevelContext, type IndicatorLineStyle, type IndicatorPlot, type IndicatorSettings, type IndicatorSource, type IndicatorState, type IndicatorStore, type IndicatorValues, type IntervalBucketing, type IntervalDescriptor, type IntervalParts, InvalidationLevel, type IstParts, type KeymapEntry, LINK_CROSSHAIR_ALPHA, type LateTickPolicy, type LegendField, type LegendStatusData, type LegendStatusLineOptions, type LegendStatusSource, type LegendTitleMode, type LegendValue, type LinePoint, type LinkChart, LinkCrosshair, type LinkDataLayer, LinkGroup, type LinkMemberOptions, type LinkMissingPolicy, type LinkOptions, type LogicalRange, LogoWatermark, type LogoWatermarkOptions, type LtpEvent, type MarkerPosition, type MarkerShape, type MarkerSize, type MarketDepth, type MarketPhase, type MarketPhaseFn, type MaybePromise, type ModeCheck, type OpenAlgoConfig, OpenAlgoDataFeed, type OpenAlgoLiveConfig, OpenAlgoLiveDataFeed, type OpenAlgoTradeConfig, OpenAlgoTradeFeed, type OpenAlgoWsConfig, OpenAlgoWsFeed, type OrderBookSnapshot, type OrderDecodeCode, type OrderDecodeIssue, type OrderDecodeResult, type OrderSide$1 as OrderSide, type OrderType$1 as OrderType, type OrderUpdateEvent, type OriginalTime, PRICE_LEVEL_KINDS, PRICE_SCALE_MODES, Pane, type PaneInvalidation, PaneLegend, type PaneLegendAction, type PaneLegendOptions, type PaneState, type PickHost, type PickKind, type PlaceOrder, type PlotMarginOptions, type PointerInfo, type PointerKind, type PointerModifiers, type PointerSample, type PositionSide, type PriceAxisState, type PriceLevelInput, type PriceLevelKind, type PriceLevelQuote, type PriceLevelStyle, type PriceLevelValues, PriceLevels, type PriceLevelsOptions, PriceLine, type PriceLineOptions, type PriceRange, PriceScale, type PriceScaleId, type PriceScaleMode, type PriceScaleOptions, type PriceScaleState, type PrimitiveAnchor, type PrimitiveHit, type PrimitiveHost, type PrimitivePlacement, type PrimitiveRenderContext, type QuarantinedRow, type RawOrder, type RenderBackendFactory, type RenderBackendKind, type RenderDevice, type RendererChoice, type RendererEntry, type RendererFallbackEvent, type RendererFallbackReason, type ReplayChartHost, ReplayController, type ReplayOptions, type ReplayScheduler, ReplayShade, type ReplayShadeOptions, type ReplayState, type ReplayViewport, type ResolvedLinkOptions, type RestoreReport, SCALE_FONT_MAX, SCALE_FONT_MIN, type ScaleCanvasOptions, type SeriesApi, type SeriesDataItem, type SeriesId, type SeriesMarker, SeriesMarkers, type SeriesRenderContext, type SeriesState, type SeriesStyle, type SeriesType, type SessionSpec, type ShortcutListItem, ShortcutManager, type ShortcutManagerOptions, type ShortcutPreset, type ShortcutScope, type ShortcutTriggerEvent, type Size, type SocketFactory, type SocketLike, type SupertrendPoint, SvgContext, type SvgContextOptions, SvgLinearGradient, type TableCell, type TablePosition, TextWatermark, type TextWatermarkOptions, type Tick, TickBarAggregator, type TickBarOptions, type TickCountBucketing, 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, UnknownIntervalError, type UnsubscribeFn, VERSION, type VolumeBucketing, type VolumeMode, type WatermarkPosition, type Whitespace, type WsClientWarning, type WsControlMessage, type WsMode, type WsState, type ZOrder, type ZonedParts, type ZonedPeriod, type ZoomAnchor, ZoomGlide, type ZoomGlideOptions, addComparison, alignToPrimary, applyChartSettings, atr, autoscaleRange, backendDegradation, backoffDelayMs, barCacheKey, barCloseSec, beginPick, bestHit, bitmapSize, bucketStartOf, calendarPeriodFlags, candleGeometry, candleTier, chartSettingsSchema, clamp, classifyAuthAck, compactVolume, comparisonController, computePriceLevels, conflateBars, conflateItems, conflationGroupSize, createChart, createLinkGroup, createRenderBackend, darkTheme, dashPattern, decodeOrder, drawLabel, drawShape, effectiveMarkerPx, ema, emaSeries, epochMsToUtcSeconds, eventToCombo, followerIndex, followerRange, formatCombo, formatIstCrosshairLabel, formatIstDate, formatIstTime, formatIstTimeSeconds, formatSubscribe, formatUnsubscribe, formatZonedCrosshairLabel, formatZonedDate, formatZonedTime, formatZonedTimeSeconds, fromGradient, generateBars, getChartType, getIndicator, hasIndicator, inSessionAt, indicatorDefaults, indicatorStyleInputs, intervalParts, intervalToSeconds, isDailyInterval, isIntradayInterval, isKnownInterval, isNewIstDay, isNewZonedDay, isNewZonedMonth, isNewZonedPeriod, isNewZonedQuarter, isNewZonedWeek, isNewZonedYear, isRebasing, isReservedCombo, isSecondsInterval, isTickInterval, isTimeBucketed, isValidCombo, isValidTimezone, isWhitespace, istStringToUtcSeconds, lastPriceLevelFromSeriesStyle, lerp, lightTheme, mapHistoryResponse, mapOrder, mapOrderStatus, mapPosition, markerSizePx, mergeBars, nextBucketStart, niceTicks, normalizeCombo, optimalBarWidth, parseCombo, parseMessage, parseSessionSpec, parseTopic, plotStyleKeys, precisionForStep, readChartSettings, readSequence, registerChartType, registerIndicator, registerInterval, registerRenderBackend, registeredChartTypes, registeredIndicators, registeredIntervals, registeredRenderBackends, resolveCrosshairStyle, resolveGridStyle, resolveInterval, resolvePlotMargins, resolveRenderBackend, resolveScaleStyle, roundToTick, rowTimeToUtcSeconds, rsi, rsiSeries, seriesStyleForLastPriceLevel, sessionFlags, sessionStartFlags, sessionStartIndices, sharedHistoryRequests, snapToDevicePixel, sourceValue, sourceValues, startOfZonedDay, startOfZonedMonth, startOfZonedWeek, supertrend, supertrendSeries, tableOrigin, toBar, trueRange, tryResolveInterval, unregisterInterval, unregisterRenderBackend, utcSecondsToIstDateString, utcSecondsToIstParts, utcSecondsToZonedDateString, utcSecondsToZonedParts, version, verticalGradient, watermarkRect, withAlpha, withBarCache, zoneOffsetSeconds, zonedDayIndex, zonedStringToUtcSeconds, zonedWallClockToUtcSeconds, zonedWeekIndex };
8609
+ export { ALT_PRESET, type AddSeriesOptions, type AggTick, type AxisChromeOptions, type AxisStyle, BAR_CACHE_VERSION, BUILTIN_COMMANDS, type Bar, BarCache, type BarCacheOptions, type BarCacheStats, type BarCacheStore, type BarSubscriptionOptions, type BarUpdate, type BarsPage, type BarsPageRequest, type BarsRequest, type BrandingChangedEvent, type Bucketing, BuySellButtons, type BuySellButtonsOptions, CHART_STATE_VERSION, type CachedBars, type CachedBarsRequest, type CalendarBucketing, type CalendarUnit, CandleBuilder, type CandleBuilderOptions, type CandleGeometry, type CandleStyle, type CandleTier, type CandleUpdate, Canvas2dBackend, type CanvasLineStyle, type CanvasOptions, Chart, type ChartClickEvent, type ChartDataContext, type ChartDragEndEvent, type ChartDragEvent, type ChartEvent, type ChartEventOptions, type ChartNavigationOptions, type ChartObjectCapabilities, type ChartObjectDefinition, type ChartObjectDrawing, type ChartObjectDrawingSource, type ChartObjectKind, type ChartObjectProvider, type ChartObjectSnapshot, ChartObjects, type ChartObjectsOptions, type ChartOptions, type ChartSettingsColorPairInput, type ChartSettingsInput, type ChartSettingsState, type ChartSettingsTab, type ChartSettingsTabId, type ChartSettingsValue, type ChartSettingsValues, type ChartState, ChartTable, type ChartTableOptions, type ChartTheme, type ChartWatermarkOptions, type ComparisonAlignment, type ComparisonChartHost, ComparisonController, type ComparisonControllerOptions, type ComparisonHandle, type ComparisonMode, type ComparisonOptions, type ComparisonPane, type ContextMenuEvent, type ContextMenuTarget, type ContextMenuTargetKind, type CrosshairMoveEvent, type CrosshairOptions, type CrosshairStyle, 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_TIMEZONE, DEFAULT_TIME_NAVIGATOR_OPTIONS, DEFAULT_TIME_SCALE_OPTIONS, DEFAULT_TRADING_COLORS, DEFAULT_ZOOM_GLIDE_OPTIONS, type DataFeed, DataLayer, DataLoadingController, type DataLoadingOptions, type DataLoadingSnapshot, type DataLoadingStatus, type DataUpdateReason, type DecodedOrder, type DepthLevel, type DoubleClickAction, type DoubleClickEvent, type DrawAnchor, type DrawItem, EventMarkers, type ExportSvgOptions, FakeDataFeed, type FeedScheduler, type FillGradient, type FillPoint, type GridAxisStyle, type GridOptions, type GridStyle, type HistogramStyle, type HistoryLoadingStatus, HistoryRequestPool, type HistoryRequestPoolOptions, INDICATOR_LINE_STYLES, INDICATOR_PLOT_STYLES, INDICATOR_SOURCES, type IPrimitive, type IRenderBackend, IST_OFFSET_SECONDS, type IndexedBar, type IndicatorAlertContext, type IndicatorAlertPayload, type IndicatorAlertSpec, type IndicatorApi, type IndicatorAttachContext, IndicatorBackground, type IndicatorCalcContext, type IndicatorDataChange, type IndicatorDataStatus, type IndicatorDescriptor, type IndicatorDrawing, IndicatorDrawings, IndicatorFill, type IndicatorFillOptions, type IndicatorFillSpec, type IndicatorHost, type IndicatorInput, type IndicatorLevel, type IndicatorLevelContext, type IndicatorLineStyle, type IndicatorPlot, type IndicatorSettings, type IndicatorSource, type IndicatorState, type IndicatorStore, type IndicatorValues, type IntervalBucketing, type IntervalDescriptor, type IntervalParts, InvalidationLevel, type IstParts, type KeymapEntry, LINK_CROSSHAIR_ALPHA, type LateTickPolicy, type LegendField, type LegendStatusData, type LegendStatusLineOptions, type LegendStatusSource, type LegendTitleMode, type LegendValue, type LinePoint, type LinkChart, LinkCrosshair, type LinkDataLayer, LinkGroup, type LinkMemberOptions, type LinkMissingPolicy, type LinkOptions, type LogicalRange, LogoWatermark, type LogoWatermarkOptions, type LtpEvent, type MarkerPosition, type MarkerShape, type MarkerSize, type MarketDepth, type MarketPhase, type MarketPhaseFn, type MaybePromise, type ModeCheck, type OpenAlgoConfig, OpenAlgoDataFeed, type OpenAlgoLiveConfig, OpenAlgoLiveDataFeed, type OpenAlgoTradeConfig, OpenAlgoTradeFeed, type OpenAlgoWsConfig, OpenAlgoWsFeed, type OrderBookSnapshot, type OrderDecodeCode, type OrderDecodeIssue, type OrderDecodeResult, type OrderSide$1 as OrderSide, type OrderType$1 as OrderType, type OrderUpdateEvent, type OriginalTime, PRICE_LEVEL_KINDS, PRICE_SCALE_MODES, Pane, type PaneInvalidation, PaneLegend, type PaneLegendAction, type PaneLegendOptions, type PaneState, type PickHost, type PickKind, type PlaceOrder, type PlotMarginOptions, type PointerInfo, type PointerKind, type PointerModifiers, type PointerSample, type PositionSide, type PriceAxisState, type PriceLevelInput, type PriceLevelKind, type PriceLevelQuote, type PriceLevelStyle, type PriceLevelValues, PriceLevels, type PriceLevelsOptions, PriceLine, type PriceLineOptions, type PriceRange, PriceScale, type PriceScaleId, type PriceScaleMode, type PriceScaleOptions, type PriceScaleState, type PrimitiveAnchor, type PrimitiveHit, type PrimitiveHost, type PrimitivePlacement, type PrimitiveRenderContext, type QuarantinedRow, type RawOrder, type RenderBackendFactory, type RenderBackendKind, type RenderDevice, type RendererChoice, type RendererEntry, type RendererFallbackEvent, type RendererFallbackReason, type ReplayChartHost, ReplayController, type ReplayOptions, type ReplayScheduler, ReplayShade, type ReplayShadeOptions, type ReplayState, type ReplayViewport, type ResolvedLinkOptions, type RestoreReport, SCALE_FONT_MAX, SCALE_FONT_MIN, type ScaleCanvasOptions, type SeriesApi, type SeriesDataItem, type SeriesId, type SeriesMarker, SeriesMarkers, type SeriesRenderContext, type SeriesState, type SeriesStyle, type SeriesType, type SessionSpec, type ShortcutListItem, ShortcutManager, type ShortcutManagerOptions, type ShortcutPreset, type ShortcutScope, type ShortcutTriggerEvent, type Size, type SocketFactory, type SocketLike, type SupertrendPoint, SvgContext, type SvgContextOptions, SvgLinearGradient, type TableCell, type TablePosition, TextWatermark, type TextWatermarkOptions, type Tick, TickBarAggregator, type TickBarOptions, type TickCountBucketing, 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, UnknownIntervalError, type UnsubscribeFn, VERSION, type VolumeBucketing, type VolumeMode, type WatermarkPosition, type Whitespace, type WsClientWarning, type WsControlMessage, type WsMode, type WsState, type ZOrder, type ZonedParts, type ZonedPeriod, type ZoomAnchor, ZoomGlide, type ZoomGlideOptions, addComparison, alignToPrimary, applyChartSettings, atr, autoscaleRange, backendDegradation, backoffDelayMs, barCacheKey, barCloseSec, beginPick, bestHit, bitmapSize, bucketStartOf, calendarPeriodFlags, candleGeometry, candleTier, chartSettingsSchema, clamp, classifyAuthAck, compactVolume, comparisonController, computePriceLevels, conflateBars, conflateItems, conflationGroupSize, createChart, createLinkGroup, createRenderBackend, darkTheme, dashPattern, decodeOrder, drawLabel, drawShape, effectiveMarkerPx, ema, emaSeries, epochMsToUtcSeconds, eventToCombo, followerIndex, followerRange, formatCombo, formatIstCrosshairLabel, formatIstDate, formatIstTime, formatIstTimeSeconds, formatSubscribe, formatUnsubscribe, formatZonedCrosshairLabel, formatZonedDate, formatZonedTime, formatZonedTimeSeconds, fromGradient, generateBars, getChartType, getIndicator, hasIndicator, inSessionAt, indicatorDefaults, indicatorStyleInputs, intervalParts, intervalToSeconds, isDailyInterval, isIntradayInterval, isKnownInterval, isNewIstDay, isNewZonedDay, isNewZonedMonth, isNewZonedPeriod, isNewZonedQuarter, isNewZonedWeek, isNewZonedYear, isRebasing, isReservedCombo, isSecondsInterval, isTickInterval, isTimeBucketed, isValidCombo, isValidTimezone, isWhitespace, istStringToUtcSeconds, lastPriceLevelFromSeriesStyle, lerp, lightTheme, mapHistoryResponse, mapOrder, mapOrderStatus, mapPosition, markerSizePx, mergeBars, nextBucketStart, niceTicks, normalizeCombo, optimalBarWidth, parseCombo, parseMessage, parseSessionSpec, parseTopic, plotStyleKeys, precisionForStep, readChartSettings, readSequence, registerChartType, registerIndicator, registerInterval, registerRenderBackend, registeredChartTypes, registeredIndicators, registeredIntervals, registeredRenderBackends, resolveCrosshairStyle, resolveGridStyle, resolveInterval, resolvePlotMargins, resolveRenderBackend, resolveScaleStyle, roundToTick, rowTimeToUtcSeconds, rsi, rsiSeries, seriesStyleForLastPriceLevel, sessionFlags, sessionStartFlags, sessionStartIndices, sharedHistoryRequests, snapToDevicePixel, sourceValue, sourceValues, startOfZonedDay, startOfZonedMonth, startOfZonedWeek, supertrend, supertrendSeries, tableOrigin, toBar, trueRange, tryResolveInterval, unregisterInterval, unregisterRenderBackend, utcSecondsToIstDateString, utcSecondsToIstParts, utcSecondsToZonedDateString, utcSecondsToZonedParts, version, verticalGradient, watermarkRect, withAlpha, withBarCache, zoneOffsetSeconds, zonedDayIndex, zonedStringToUtcSeconds, zonedWallClockToUtcSeconds, zonedWeekIndex };