wickchart 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/types/feeds.d.ts CHANGED
@@ -40,6 +40,131 @@ export declare function genSynthetic(key: string, sec: number, n: number, base?:
40
40
  * @param {number} [startPrice] bridge continuity from the last known price
41
41
  */
42
42
  export declare function makeSynthStream(sec: number, startPrice?: number): () => any;
43
+ /** Default thresholds per kind. They are per-instrument — there is no
44
+ * universal "one bar" size, treat these as starting points to tune. */
45
+ export declare const AGG_DEFAULTS: {
46
+ tick: number;
47
+ volume: number;
48
+ dollar: number;
49
+ };
50
+ /**
51
+ * Parse an `aggregate` spec — `tick`, `volume:50`, `dollar:25000` (case and
52
+ * whitespace tolerant; the value is the bar size in trades / base units /
53
+ * quote units respectively).
54
+ * @param {string} spec attribute value
55
+ * @returns {{kind: 'tick'|'volume'|'dollar', threshold: number}|null} null when invalid
56
+ */
57
+ export declare function parseAggregate(spec: string): {
58
+ kind: 'tick' | 'volume' | 'dollar';
59
+ threshold: number;
60
+ } | null;
61
+ /**
62
+ * Streaming aggregator: feed it trades, get bars back. `add()` returns a
63
+ * bar the moment the threshold is crossed ({@link current} keeps exposing
64
+ * the forming bar meanwhile). The completing trade belongs entirely to the
65
+ * closing bar — a whale print is never split across two bars.
66
+ */
67
+ export declare class TickBarAggregator {
68
+ kind: string;
69
+ threshold: any;
70
+ _bar: {
71
+ time: number;
72
+ open: number;
73
+ high: number;
74
+ low: number;
75
+ close: number;
76
+ volume: number;
77
+ n: number;
78
+ notional: number;
79
+ };
80
+ /**
81
+ * @param {'tick'|'volume'|'dollar'} kind what the threshold counts
82
+ * @param {number} threshold bar size (trades / base units / quote units)
83
+ */
84
+ constructor(kind?: 'tick' | 'volume' | 'dollar', threshold?: number);
85
+ /**
86
+ * Feed one trade `{ time, price, size }` (seconds auto-upgraded to ms,
87
+ * same heuristic as the chart). Returns the completed bar —
88
+ * `{ time, open, high, low, close, volume, closed: true }` — when the
89
+ * threshold is reached, else null.
90
+ * @returns {object|null}
91
+ */
92
+ add(trade: any): object | null;
93
+ /** The forming bar as plain chart-bar fields (no internals), or null. */
94
+ current(): {
95
+ time: number;
96
+ open: number;
97
+ high: number;
98
+ low: number;
99
+ close: number;
100
+ volume: number;
101
+ };
102
+ /** Close the forming bar as-is (end of tape / teardown), or null. */
103
+ flush(): {
104
+ time: number;
105
+ open: number;
106
+ high: number;
107
+ low: number;
108
+ close: number;
109
+ volume: number;
110
+ closed: boolean;
111
+ };
112
+ }
113
+ /**
114
+ * One-pass batch aggregation of a trade history. Returns the closed bars,
115
+ * the still-forming remainder, and the live aggregator positioned at the end
116
+ * of the tape so streaming can continue without a seam.
117
+ * @param {Array<object>} trades `{ time, price, size }` prints
118
+ * @param {'tick'|'volume'|'dollar'} kind
119
+ * @param {number} threshold
120
+ */
121
+ export declare function aggregateTrades(trades: Array<object>, kind: 'tick' | 'volume' | 'dollar', threshold: number): {
122
+ bars: any[];
123
+ pending: {
124
+ time: number;
125
+ open: number;
126
+ high: number;
127
+ low: number;
128
+ close: number;
129
+ volume: number;
130
+ };
131
+ aggregator: TickBarAggregator;
132
+ };
133
+ /**
134
+ * Coerce a generic JSON trades array into plain `{ time, price, size }`
135
+ * (ms, seconds auto-upgraded; `size` also read from `qty`/`amount`).
136
+ * Invalid entries are dropped, never thrown — same contract as the chart's
137
+ * other normalizers. Output is sorted by time.
138
+ */
139
+ export declare function normalizeTrades(list: any): any[];
140
+ /**
141
+ * Deterministic synthetic trade prints (random-walk price with volatility
142
+ * regimes, heavy-tailed sizes). Same key → same tape.
143
+ * @param {string} key seed key
144
+ * @param {number} [n=24000] print count
145
+ * @param {number} [base=100] starting price
146
+ */
147
+ export declare function genSyntheticTrades(key: string, n?: number, base?: number): any[];
148
+ /**
149
+ * Stateful synthetic live tape: one print per call, bridging from
150
+ * `startPrice` (e.g. the last price of a seeded history).
151
+ * @param {number} [startPrice=100]
152
+ */
153
+ export declare function makeSynthTradeStream(startPrice?: number): () => {
154
+ time: number;
155
+ price: number;
156
+ size: number;
157
+ };
158
+ /**
159
+ * Expected synthetic prints per bar — used to size the offline seed so a
160
+ * demo chart starts with roughly the requested bar count.
161
+ * @param {{kind: string, threshold: number}} agg
162
+ * @param {number} [base=100]
163
+ */
164
+ export declare function synthTradesPerBar(agg: {
165
+ kind: string;
166
+ threshold: number;
167
+ }, base?: number): number;
43
168
  /**
44
169
  * Fetch klines from Binance's public REST API.
45
170
  * @param {string} symbol e.g. 'BTCUSDT'
@@ -56,3 +181,43 @@ export declare function fetchBinanceKlines(symbol: string, tfId: string, limit?:
56
181
  export declare function openBinanceSocket(symbol: any, tfId: any, onBar: any, onDown: any, timeoutMs?: number): {
57
182
  close(): void;
58
183
  };
184
+ /**
185
+ * Fetch Binance aggTrades, paging backwards from the newest prints (or from
186
+ * below `beforeId`) until `minTrades` prints / `maxPages` requests / the
187
+ * start of the symbol's history. Returns `{ trades, oldestId }` ascending by
188
+ * time; each print carries its Binance id so live streams can resume without
189
+ * overlaps.
190
+ * @param {string} symbol e.g. 'BTCUSDT'
191
+ * @param {number} [minTrades=1000] stop once at least this many prints are held
192
+ * @param {number} [maxPages=25] hard request cap (1000 prints per page)
193
+ * @param {number} [beforeId] only fetch prints with an id lower than this
194
+ */
195
+ export declare function fetchBinanceAggTrades(symbol: string, minTrades?: number, maxPages?: number, beforeId?: number): Promise<{
196
+ trades: any[];
197
+ oldestId: number;
198
+ }>;
199
+ /**
200
+ * One forward window of aggTrades starting at `fromId` — the catch-up call
201
+ * for REST polling after a trade socket drops. Returns `{ trades, latestId }`.
202
+ * @param {string} symbol
203
+ * @param {number} fromId first print id to fetch (use lastSeenId + 1)
204
+ */
205
+ export declare function fetchBinanceAggTradesSince(symbol: string, fromId: number): Promise<{
206
+ trades: {
207
+ id: any;
208
+ time: any;
209
+ price: number;
210
+ size: number;
211
+ }[];
212
+ latestId: any;
213
+ }>;
214
+ /**
215
+ * Open a Binance aggTrade WebSocket — raw prints for information-based bar
216
+ * aggregation. Same lifecycle contract as openBinanceSocket: `onDown(err)`
217
+ * fires on error/close/timeout, after which the socket is dead and the
218
+ * caller should fall back.
219
+ * @returns {{close(): void}}
220
+ */
221
+ export declare function openBinanceTradeSocket(symbol: any, onTrade: any, onDown: any, timeoutMs?: number): {
222
+ close(): void;
223
+ };
@@ -0,0 +1,114 @@
1
+ /** Decimals worth showing for a price of this magnitude. */
2
+ export declare function decimalsFor(price: any): 2 | 3 | 6;
3
+ /** 1234 → '1.2k', 1234567 → '1.23M', 12 → '12'. */
4
+ export declare function compact(v: any): string;
5
+ export declare function pct(v: any, digits?: number): string;
6
+ /** Greatest index whose time is <= t (binary search; bars are ascending). */
7
+ export declare function indexForTime(bars: any, t: any): number;
8
+ /** Resolve the report colors: theme palettes, overridden by the chart's own
9
+ * --wick-* variables when readable (browser) and theme is 'auto'. */
10
+ export declare function reportColors(chart: any, theme?: string): {
11
+ bg: string;
12
+ panel: string;
13
+ text: string;
14
+ muted: string;
15
+ up: string;
16
+ down: string;
17
+ accent: string;
18
+ } | {
19
+ bg: string;
20
+ panel: string;
21
+ text: string;
22
+ muted: string;
23
+ up: string;
24
+ down: string;
25
+ accent: string;
26
+ };
27
+ /** Relative luminance of a #hex / rgb() string (0..1, best effort). */
28
+ export declare function luminance(color: any): number;
29
+ /**
30
+ * Build the whole report as data: sizes, bands, stat rows, colors, labels.
31
+ * @param {object} chart a <wick-chart> (public API only: data,
32
+ * getVisibleRange, exportPNG, clientWidth/Height, getAttribute)
33
+ * @param {{title?: string, source?: string, brand?: string, theme?: string,
34
+ * scale?: number, precision?: number}} [opts]
35
+ */
36
+ export declare function reportModel(chart: object, opts?: {
37
+ title?: string;
38
+ source?: string;
39
+ brand?: string;
40
+ theme?: string;
41
+ scale?: number;
42
+ precision?: number;
43
+ }): {
44
+ scale: number;
45
+ width: number;
46
+ height: number;
47
+ bands: {
48
+ header: number;
49
+ stats: number;
50
+ footer: number;
51
+ chart: number;
52
+ };
53
+ grid: {
54
+ cols: number;
55
+ };
56
+ title: any;
57
+ brand: string;
58
+ source: string;
59
+ range: {
60
+ from: any;
61
+ to: any;
62
+ };
63
+ last: any;
64
+ precision: number;
65
+ rows: ({
66
+ label: string;
67
+ value: string;
68
+ color: string;
69
+ } | {
70
+ color?: undefined;
71
+ label: string;
72
+ value: string;
73
+ })[];
74
+ generatedAt: number;
75
+ colors: {
76
+ bg: string;
77
+ panel: string;
78
+ text: string;
79
+ muted: string;
80
+ up: string;
81
+ down: string;
82
+ accent: string;
83
+ } | {
84
+ bg: string;
85
+ panel: string;
86
+ text: string;
87
+ muted: string;
88
+ up: string;
89
+ down: string;
90
+ accent: string;
91
+ };
92
+ stats: {
93
+ n: number;
94
+ changePct: number;
95
+ min: number;
96
+ max: number;
97
+ maxDDPct: number;
98
+ annVolPct: number;
99
+ up: number;
100
+ dn: number;
101
+ avgVolume: number;
102
+ };
103
+ };
104
+ /**
105
+ * Compose the branded report and return it as a PNG data URL (default), a
106
+ * Blob, or the canvas itself.
107
+ * @returns {Promise<string|Blob|HTMLCanvasElement>}
108
+ */
109
+ export declare function exportReport(chart: any, opts?: {}): Promise<string | Blob | HTMLCanvasElement>;
110
+ /**
111
+ * Compose and trigger a download (browser only).
112
+ * @returns {Promise<void>}
113
+ */
114
+ export declare function downloadReport(chart: any, filename?: string, opts?: {}): Promise<void>;
@@ -21,7 +21,7 @@ declare class WickChart extends HTMLElementBase {
21
21
  _hover: {
22
22
  index: any;
23
23
  x: number;
24
- y: number;
24
+ y: any;
25
25
  } | {
26
26
  index: number;
27
27
  x: number;
@@ -164,6 +164,19 @@ declare class WickChart extends HTMLElementBase {
164
164
  panes: any[];
165
165
  volume: boolean;
166
166
  };
167
+ _workerOn: boolean;
168
+ _epoch: number;
169
+ _workerCache: {
170
+ epoch: number;
171
+ map: {};
172
+ pending: {};
173
+ sent: number;
174
+ };
175
+ _sid: number;
176
+ _onlineSeries: {
177
+ epoch: number;
178
+ map: {};
179
+ };
167
180
  _pointers: Map<any, any>;
168
181
  _pan: {
169
182
  x: number;
@@ -176,6 +189,13 @@ declare class WickChart extends HTMLElementBase {
176
189
  idxAtMid: number;
177
190
  midX: number;
178
191
  };
192
+ _scrub: boolean;
193
+ _pressTimer: number;
194
+ _pressOrigin: {
195
+ pointerId: any;
196
+ x: any;
197
+ y: any;
198
+ };
179
199
  _layers: any[];
180
200
  _layerClaim: {
181
201
  layer: any;
@@ -187,6 +207,10 @@ declare class WickChart extends HTMLElementBase {
187
207
  _positions: any[];
188
208
  _alerts: any[];
189
209
  _seq: number;
210
+ _alertEval: string;
211
+ _lastClosedIdx: number;
212
+ _tz: string;
213
+ _vwapAnchor: string;
190
214
  _overlays: any[];
191
215
  _scenario: {
192
216
  path: {
@@ -219,8 +243,11 @@ declare class WickChart extends HTMLElementBase {
219
243
  _onWheel: (e: any) => void;
220
244
  _onDbl: () => void;
221
245
  _onKey: (e: any) => void;
246
+ _onTouchMove: (e: any) => void;
247
+ _onDprChange: () => void;
222
248
  tabIndex: number;
223
249
  _ro: any;
250
+ _dprMq: MediaQueryList;
224
251
  _posVersion: any;
225
252
  _pendingRange: {
226
253
  from: number;
@@ -237,9 +264,18 @@ declare class WickChart extends HTMLElementBase {
237
264
  rawHi: number;
238
265
  };
239
266
  static get observedAttributes(): string[];
267
+ /**
268
+ * Shared ChartWorkerPool for the worker compute path (set by importing
269
+ * 'wickchart/worker'; null — everything sync — until then).
270
+ * @type {object|null}
271
+ */
272
+ static _workerPool: object | null;
240
273
  constructor();
241
274
  connectedCallback(): void;
242
275
  disconnectedCallback(): void;
276
+ /** (Re)arm the devicePixelRatio watcher for the current ratio. */
277
+ _watchDpr(): void;
278
+ _unwatchDpr(): void;
243
279
  attributeChangedCallback(name: any, _old: any, val: any): void;
244
280
  /** Indicator registry (module scope — shared with the legacy alias tag). */
245
281
  static _registry(): Map<string, {
@@ -282,7 +318,7 @@ declare class WickChart extends HTMLElementBase {
282
318
  smooth?: undefined;
283
319
  period?: undefined;
284
320
  };
285
- compute: (bars: any) => number[];
321
+ compute: (bars: any, p: any) => number[];
286
322
  color?: undefined;
287
323
  guides?: undefined;
288
324
  range?: undefined;
@@ -497,7 +533,8 @@ declare class WickChart extends HTMLElementBase {
497
533
  */
498
534
  /** @param {import('./core.js').IndicatorDef} def */
499
535
  static registerIndicator(name: any, def: import('./core.js').IndicatorDef): void;
500
- /** The custom element class (also exported implicitly for users). */
536
+ /** The tag this class registers as. (<hab-chart> is a deprecated alias
537
+ * registered from the HabChart subclass, not this name.) */
501
538
  static get elementName(): string;
502
539
  get data(): any[];
503
540
  /**
@@ -712,6 +749,24 @@ declare class WickChart extends HTMLElementBase {
712
749
  /** Check alerts against an incoming bar (prev close → new close).
713
750
  * Scripted (`when`) alerts evaluate their predicate series, cached per
714
751
  * data version, and fire on the false→true edge. */
752
+ /**
753
+ * Index of the newest bar known to be final: any bar with a newer bar
754
+ * behind it, plus the front bar when the feed flagged it `closed: true`
755
+ * (Binance's `k.x`). -1 when nothing has closed yet.
756
+ */
757
+ _lastClosedIndex(): number;
758
+ /** Re-baseline the closed-bar cursor without firing anything. */
759
+ _syncClosedIdx(): void;
760
+ /**
761
+ * Resolve an alert's evaluation mode: an explicit 'close' / 'live' on the
762
+ * alert wins, otherwise the chart-level `alert-evaluate` default (itself
763
+ * 'live', so 1.x behaviour is unchanged unless asked for).
764
+ * @param {string|undefined} v
765
+ * @returns {'live'|'close'}
766
+ */
767
+ _evalMode(v: string | undefined): 'live' | 'close';
768
+ /** Dispatch one alert, retiring it when it was a `once` alert. */
769
+ _fireAlert(alert: any, detail: any): void;
715
770
  _checkAlerts(prevClose: any, bar: any): void;
716
771
  /** Cached boolean series for a scripted alert's predicate (per data version). */
717
772
  _predicateCache(alert: any): any;
@@ -724,14 +779,18 @@ declare class WickChart extends HTMLElementBase {
724
779
  get indicators(): any;
725
780
  set indicators(v: any);
726
781
  static _MAX_SP: number;
782
+ /** Hold this long on a touchscreen to open the crosshair (ms). */
783
+ static _PRESS_MS: number;
784
+ /** Finger travel that cancels the press and makes it a pan (px). */
785
+ static _PRESS_SLOP: number;
727
786
  /**
728
787
  * Lowest allowed px/bar: either 0.35, or whatever fits the entire
729
788
  * dataset on screen — so any history can be zoomed out fully.
730
789
  */
731
790
  _minSpacing(): number;
732
- static _timeToMs(t: any): any;
791
+ static _timeToMs(t: any): number;
733
792
  static _normBar(b: any): {
734
- time: any;
793
+ time: number;
735
794
  open: any;
736
795
  high: any;
737
796
  low: any;
@@ -759,6 +818,33 @@ declare class WickChart extends HTMLElementBase {
759
818
  _volShadeCache(): any;
760
819
  /** Compute (and cache per data version) an indicator entry's series. */
761
820
  _indicatorSeries(entry: any): any;
821
+ /**
822
+ * After a live stream tick (append or forming-bar replace), patch every
823
+ * online-capable series by recomputing a bounded tail with the same
824
+ * batch definition — O(warm-up) instead of a full-history recompute per
825
+ * indicator per tick. Bases are seeded by the sync or worker path; bulk
826
+ * loads (epoch changes) reseed automatically.
827
+ */
828
+ _onlineTick(): void;
829
+ /** Recompute the last K bars of one series in place (K = max(400,
830
+ * 10×period), clamped to the data). False when the series and data
831
+ * lengths can't line up — the caller drops the base and reseeds. */
832
+ _patchSeriesTail(res: any, entry: any, d: any): boolean;
833
+ /** Remember a fresh series as the base for incremental tick updates
834
+ * (online-capable builtins only). */
835
+ _seedOnline(k: any, entry: any, res: any): void;
836
+ /** Bar count from which the worker path engages (below it, sync wins). */
837
+ _workerCols(): {
838
+ time: Float64Array<ArrayBuffer>;
839
+ open: Float64Array<ArrayBuffer>;
840
+ high: Float64Array<ArrayBuffer>;
841
+ low: Float64Array<ArrayBuffer>;
842
+ close: Float64Array<ArrayBuffer>;
843
+ volume: Float64Array<ArrayBuffer>;
844
+ };
845
+ /** Kick an off-thread compute for one indicator (idempotent per epoch). */
846
+ _workerCompute(pool: any, entry: any, k: any): void;
847
+ _workerArrived(k: any, epoch: any, res: any, entry: any): void;
762
848
  /** Resolve a line color: #hex / rgb() / CSS name / palette key ('rsi', 'up', …) / cycle.
763
849
  * Untrusted values (URL/attribute-sourced) are validated — never interpolated raw. */
764
850
  _lineColor(entry: any, line: any, pal: any, cycleIdx: any): any;
@@ -782,6 +868,8 @@ declare class WickChart extends HTMLElementBase {
782
868
  * the walk to those bars — used at deep zoom where bars are aggregated
783
869
  * into pixel columns (keeps this O(screen) instead of O(visible bars)).
784
870
  */
871
+ /** An instant shifted into the chart's display zone, for the formatters. */
872
+ _zt(t: any): any;
785
873
  _timeTicks(i0: any, i1: any, sampleIdx: any): any[];
786
874
  _render(): void;
787
875
  _pill(x: any, y: any, text: any, bg: any, fg: any, align: string, widthOverride: any): void;
@@ -873,6 +961,21 @@ declare class WickChart extends HTMLElementBase {
873
961
  x: number;
874
962
  y: number;
875
963
  };
964
+ /**
965
+ * Put the crosshair on the bar under a point and announce it. Shared by
966
+ * mouse hover, keyboard walking and the touch scrub gesture.
967
+ */
968
+ _hoverAt(pt: any): void;
969
+ /**
970
+ * Start the long-press timer for a touch. A touchscreen has no hover, so
971
+ * without this there is no way to read a bar's values on a phone: a tap
972
+ * selects, a drag pans, and the legend never leaves the last candle.
973
+ * Holding still opens the crosshair; moving first cancels and pans.
974
+ */
975
+ _armPress(pointerId: any, pt: any): void;
976
+ _disarmPress(): void;
977
+ /** Leave scrub mode and put the crosshair away. */
978
+ _endScrub(): void;
876
979
  _pointerDown(e: any): void;
877
980
  _pointerMove(e: any): void;
878
981
  _pointerUp(e: any): void;
@@ -25,7 +25,26 @@ declare class WickFeed extends HTMLElementBase {
25
25
  _binance(gen: any, chart: any, sym: any, tfId: any, limit: any, live: any): Promise<void>;
26
26
  _pollBinance(gen: any, chart: any, sym: any, tfId: any): void;
27
27
  _degrade(gen: any, chart: any, sym: any, tfId: any, limit: any, live: any, err: any): void;
28
+ /**
29
+ * Wrap chart.update for aggregated bars: the chart keys bars by timestamp,
30
+ * and two groups can close inside the same millisecond, so emitted times
31
+ * are nudged +1ms to stay strictly increasing (keeps the one-bar-per-
32
+ * timestamp integrity invariant; display-only, values are untouched).
33
+ */
34
+ _aggEmit(gen: any, chart: any): (bar: any) => void;
35
+ /** Seed + stream one aggregator onto the chart (shared by all sources). */
36
+ _aggAttach(gen: any, chart: any, res: any, bars: any, limit: any, status: any): {
37
+ emit: (bar: any) => void;
38
+ aggregator: any;
39
+ /** Push one print through; emits the closed bar, then the forming one. */
40
+ push(t: any): void;
41
+ };
42
+ _syntheticTrades(gen: any, chart: any, key: any, agg: any, limit: any, live: any, status?: string): void;
43
+ _binanceTrades(gen: any, chart: any, sym: any, agg: any, limit: any, live: any): Promise<void>;
44
+ _pollBinanceTrades(gen: any, chart: any, sym: any, handle: any, fromId: any, agg: any, limit: any, live: any): void;
45
+ _restTrades(gen: any, chart: any, url: any, agg: any, limit: any, live: any): Promise<void>;
28
46
  _rest(gen: any, chart: any, url: any, limit: any, live: any): Promise<void>;
29
47
  }
30
48
  export default WickFeed;
31
49
  export { WickFeed };
50
+ export { parseAggregate, TickBarAggregator, aggregateTrades, normalizeTrades, genSyntheticTrades, makeSynthTradeStream, } from './feeds.js';
@@ -0,0 +1,11 @@
1
+ /** Rebuild the bar-object tape from a columnar snapshot (worker-side only —
2
+ * this cost never touches the main thread). */
3
+ export declare function barsFromCols(cols: any): any[];
4
+ /**
5
+ * Create a worker-core state + dispatcher.
6
+ * @returns {{sessions: Map, handle(message: object): object}} the reply object
7
+ */
8
+ export declare function createWorkerCore(): {
9
+ sessions: Map<any, any>;
10
+ handle(message: object): object;
11
+ };
@@ -0,0 +1,36 @@
1
+ import { WickChart } from './wick-chart.js';
2
+ export { WickChart };
3
+ /**
4
+ * A single-Worker task runner. The factory is injectable so tests can drive
5
+ * the protocol with a fake Worker; the default spawns the module worker
6
+ * sitting next to this file.
7
+ */
8
+ export declare class ChartWorkerPool {
9
+ _factory: () => Worker;
10
+ available: boolean;
11
+ _worker: Worker;
12
+ _seq: number;
13
+ _pending: Map<any, any>;
14
+ /** @param {() => Worker} [factory] */
15
+ constructor(factory?: () => Worker);
16
+ /**
17
+ * Post a task; resolves with the reply's `res`, rejects on failure or
18
+ * worker death (a `stale` rejection means: resend the epoch data first).
19
+ * @param {object} msg task message without the id
20
+ * @returns {Promise<any>}
21
+ */
22
+ run(msg: object): Promise<any>;
23
+ _spawn(): void;
24
+ /** Reject everything in flight and drop the worker; the next run() respawns
25
+ * — a transient worker crash must not permanently kill the mode. */
26
+ _die(): void;
27
+ /** Shut the pool down for good (in-flight tasks reject). */
28
+ terminate(): void;
29
+ }
30
+ /** The page-wide pool (created on first use). */
31
+ export declare function getSharedPool(): any;
32
+ /**
33
+ * Point the chart class at a pool (or null to disable the worker path).
34
+ * @param {ChartWorkerPool|null} pool
35
+ */
36
+ export declare function setChartWorkerPool(pool: ChartWorkerPool | null): ChartWorkerPool;