@continuumdao/continuum-node-sdk 1.3.22 → 1.3.24

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 (57) hide show
  1. package/dist/core/chart/apply-chart-drawings.d.ts +25 -0
  2. package/dist/core/chart/apply-chart-drawings.d.ts.map +1 -0
  3. package/dist/core/chart/apply-chart-drawings.js +82 -0
  4. package/dist/core/chart/apply-chart-drawings.js.map +1 -0
  5. package/dist/core/chart/customization-catalog.d.ts +29 -0
  6. package/dist/core/chart/customization-catalog.d.ts.map +1 -0
  7. package/dist/core/chart/customization-catalog.js +61 -0
  8. package/dist/core/chart/customization-catalog.js.map +1 -0
  9. package/dist/core/chart/day-range.d.ts +14 -0
  10. package/dist/core/chart/day-range.d.ts.map +1 -0
  11. package/dist/core/chart/day-range.js +72 -0
  12. package/dist/core/chart/day-range.js.map +1 -0
  13. package/dist/core/chart/levels/calculate-tools.d.ts +53 -0
  14. package/dist/core/chart/levels/calculate-tools.d.ts.map +1 -0
  15. package/dist/core/chart/levels/calculate-tools.js +96 -0
  16. package/dist/core/chart/levels/calculate-tools.js.map +1 -0
  17. package/dist/core/chart/levels/key-levels.d.ts +20 -0
  18. package/dist/core/chart/levels/key-levels.d.ts.map +1 -0
  19. package/dist/core/chart/levels/key-levels.js +133 -0
  20. package/dist/core/chart/levels/key-levels.js.map +1 -0
  21. package/dist/core/chart/levels/pivot-points.d.ts +16 -0
  22. package/dist/core/chart/levels/pivot-points.d.ts.map +1 -0
  23. package/dist/core/chart/levels/pivot-points.js +47 -0
  24. package/dist/core/chart/levels/pivot-points.js.map +1 -0
  25. package/dist/core/chart/live/merge-tick.d.ts +3 -1
  26. package/dist/core/chart/live/merge-tick.d.ts.map +1 -1
  27. package/dist/core/chart/live/merge-tick.js +44 -27
  28. package/dist/core/chart/live/merge-tick.js.map +1 -1
  29. package/dist/core/chart/live/refresh.d.ts +4 -2
  30. package/dist/core/chart/live/refresh.d.ts.map +1 -1
  31. package/dist/core/chart/live/refresh.js +6 -3
  32. package/dist/core/chart/live/refresh.js.map +1 -1
  33. package/dist/core/chart/overlay-schemas.d.ts +258 -0
  34. package/dist/core/chart/overlay-schemas.d.ts.map +1 -1
  35. package/dist/core/chart/overlay-schemas.js +46 -1
  36. package/dist/core/chart/overlay-schemas.js.map +1 -1
  37. package/dist/core/chart/overlays.d.ts.map +1 -1
  38. package/dist/core/chart/overlays.js +96 -4
  39. package/dist/core/chart/overlays.js.map +1 -1
  40. package/dist/core/chart/prepare-from-rows.d.ts +183 -0
  41. package/dist/core/chart/prepare-from-rows.d.ts.map +1 -1
  42. package/dist/core/chart/prepare-replay.d.ts +6 -0
  43. package/dist/core/chart/prepare-replay.d.ts.map +1 -0
  44. package/dist/core/chart/prepare-replay.js +60 -0
  45. package/dist/core/chart/prepare-replay.js.map +1 -0
  46. package/dist/core/chart/prepare.d.ts.map +1 -1
  47. package/dist/core/chart/prepare.js +16 -5
  48. package/dist/core/chart/prepare.js.map +1 -1
  49. package/dist/core/chart/schemas.d.ts +512 -1
  50. package/dist/core/chart/schemas.d.ts.map +1 -1
  51. package/dist/core/chart/schemas.js +11 -2
  52. package/dist/core/chart/schemas.js.map +1 -1
  53. package/dist/mcp/chart.d.ts.map +1 -1
  54. package/dist/mcp/chart.js +64 -1
  55. package/dist/mcp/chart.js.map +1 -1
  56. package/dist/mcp/resources/chart.md +18 -0
  57. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-levels.js","sourceRoot":"","sources":["../../../../src/core/chart/levels/key-levels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { SdkResult } from '../../result.js';
2
+ export type PivotLevel = {
3
+ id: string;
4
+ price: number;
5
+ };
6
+ export type CalculatePivotPointsResult = {
7
+ pivots: PivotLevel[];
8
+ sourceBar: {
9
+ high: number;
10
+ low: number;
11
+ close: number;
12
+ };
13
+ };
14
+ /** Classic floor pivot points from the last complete OHLC bar. */
15
+ export declare function calculatePivotPointsFromBars(bars: Record<string, unknown>[]): SdkResult<CalculatePivotPointsResult>;
16
+ //# sourceMappingURL=pivot-points.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pivot-points.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/levels/pivot-points.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAG/C,MAAM,MAAM,UAAU,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACxC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,SAAS,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC;CACtD,CAAC;AAEF,kEAAkE;AAClE,wBAAgB,4BAA4B,CAC3C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAC7B,SAAS,CAAC,0BAA0B,CAAC,CA8CvC"}
@@ -0,0 +1,47 @@
1
+ import { calculateTechnicalIndicator } from '../../ta/calculate.js';
2
+ import { coerceFiniteNumber } from '../point-normalize.js';
3
+ /** Classic floor pivot points from the last complete OHLC bar. */
4
+ export function calculatePivotPointsFromBars(bars) {
5
+ if (!bars.length) {
6
+ return { ok: false, reason: 'No OHLCV bars for pivot points.' };
7
+ }
8
+ const last = bars[bars.length - 1];
9
+ const high = coerceFiniteNumber(last.high);
10
+ const low = coerceFiniteNumber(last.low);
11
+ const close = coerceFiniteNumber(last.close);
12
+ if (high == null || low == null || close == null) {
13
+ return { ok: false, reason: 'Last bar missing high/low/close for pivot points.' };
14
+ }
15
+ const result = calculateTechnicalIndicator({
16
+ indicator: 'pivotpoints',
17
+ input: {
18
+ high: [high],
19
+ low: [low],
20
+ close: [close],
21
+ },
22
+ });
23
+ if (!result.ok) {
24
+ return result;
25
+ }
26
+ const row = result.data.result[0];
27
+ if (!row || typeof row !== 'object') {
28
+ return { ok: false, reason: 'pivotpoints returned no levels.' };
29
+ }
30
+ const pivots = [];
31
+ for (const [key, raw] of Object.entries(row)) {
32
+ const price = typeof raw === 'number' ? raw : Number(raw);
33
+ if (!Number.isFinite(price)) {
34
+ continue;
35
+ }
36
+ pivots.push({ id: key.toUpperCase(), price });
37
+ }
38
+ pivots.sort((a, b) => b.price - a.price);
39
+ return {
40
+ ok: true,
41
+ data: {
42
+ pivots,
43
+ sourceBar: { high, low, close },
44
+ },
45
+ };
46
+ }
47
+ //# sourceMappingURL=pivot-points.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pivot-points.js","sourceRoot":"","sources":["../../../../src/core/chart/levels/pivot-points.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,2BAA2B,EAAC,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AAYzD,kEAAkE;AAClE,MAAM,UAAU,4BAA4B,CAC3C,IAA+B;IAE/B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAC,CAAC;IAC/D,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACpC,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClD,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mDAAmD,EAAC,CAAC;IACjF,CAAC;IAED,MAAM,MAAM,GAAG,2BAA2B,CAAC;QAC1C,SAAS,EAAE,aAAa;QACxB,KAAK,EAAE;YACN,IAAI,EAAE,CAAC,IAAI,CAAC;YACZ,GAAG,EAAE,CAAC,GAAG,CAAC;YACV,KAAK,EAAE,CAAC,KAAK,CAAC;SACd;KACD,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAI,MAAM,CAAC,IAAI,CAAC,MAAyC,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAC,CAAC;IAC/D,CAAC;IAED,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,SAAS;QACV,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAC,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAEzC,OAAO;QACN,EAAE,EAAE,IAAI;QACR,IAAI,EAAE;YACL,MAAM;YACN,SAAS,EAAE,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAC;SAC7B;KACD,CAAC;AACH,CAAC"}
@@ -3,9 +3,11 @@ export type MergeLiveTickOptions = {
3
3
  bucketSec: number;
4
4
  maxPoints?: number;
5
5
  };
6
+ /** Infer bar period from the most recent spacing in the series (preferred over binding bucketSec). */
7
+ export declare function inferBarPeriodSec(bars: Record<string, unknown>[]): number | null;
6
8
  /**
7
9
  * Merge a normalized live tick into OHLCV bar rows (same shape as normalizeCandleRow output).
8
- * Returns updated bars and whether a new bar was appended (bucket rollover).
10
+ * Uses bar spacing from the series; appends at most one new bar per call (never ladders synthetic bars).
9
11
  */
10
12
  export declare function mergeLiveTickIntoBars(bars: Record<string, unknown>[], tick: ChartLiveTick, options: MergeLiveTickOptions): {
11
13
  bars: Record<string, unknown>[];
@@ -1 +1 @@
1
- {"version":3,"file":"merge-tick.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/live/merge-tick.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAGhD,MAAM,MAAM,oBAAoB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAqBF;;;GAGG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,oBAAoB,GAC3B;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAC,CAwD3D;AAYD,6EAA6E;AAC7E,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CAAC,CAAC,GAC5D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAM3B"}
1
+ {"version":3,"file":"merge-tick.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/live/merge-tick.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAGhD,MAAM,MAAM,oBAAoB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAyBF,sGAAsG;AACtG,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,GAAG,IAAI,CAUhF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,oBAAoB,GAC3B;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAC,CA2D3D;AAYD,6EAA6E;AAC7E,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CAAC,CAAC,GAC5D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAM3B"}
@@ -9,15 +9,30 @@ function barTimeSec(row) {
9
9
  }
10
10
  return Math.floor(Date.UTC(time.year, time.month - 1, time.day) / 1000);
11
11
  }
12
+ function periodStartSec(timeSec, barPeriod) {
13
+ return Math.floor(timeSec / barPeriod) * barPeriod;
14
+ }
12
15
  function bucketStartSec(timeSec, bucketSec) {
13
16
  return Math.floor(timeSec / bucketSec) * bucketSec;
14
17
  }
15
18
  function cloneBar(row) {
16
19
  return { ...row };
17
20
  }
21
+ /** Infer bar period from the most recent spacing in the series (preferred over binding bucketSec). */
22
+ export function inferBarPeriodSec(bars) {
23
+ if (bars.length < 2) {
24
+ return null;
25
+ }
26
+ const prev = barTimeSec(bars[bars.length - 2]);
27
+ const last = barTimeSec(bars[bars.length - 1]);
28
+ if (prev == null || last == null || last <= prev) {
29
+ return null;
30
+ }
31
+ return last - prev;
32
+ }
18
33
  /**
19
34
  * Merge a normalized live tick into OHLCV bar rows (same shape as normalizeCandleRow output).
20
- * Returns updated bars and whether a new bar was appended (bucket rollover).
35
+ * Uses bar spacing from the series; appends at most one new bar per call (never ladders synthetic bars).
21
36
  */
22
37
  export function mergeLiveTickIntoBars(bars, tick, options) {
23
38
  if (bars.length === 0) {
@@ -35,42 +50,44 @@ export function mergeLiveTickIntoBars(bars, tick, options) {
35
50
  return { bars: [row], barRolledOver: true };
36
51
  }
37
52
  const tickSec = Math.floor(tick.timeMs / 1000);
38
- const tickBucket = bucketStartSec(tickSec, options.bucketSec);
39
53
  const out = bars.map(cloneBar);
40
- const last = out[out.length - 1];
54
+ let last = out[out.length - 1];
41
55
  const lastSec = barTimeSec(last);
42
56
  if (lastSec == null) {
43
57
  return { bars: out, barRolledOver: false };
44
58
  }
45
- const lastBucket = bucketStartSec(lastSec, options.bucketSec);
46
- if (tickBucket < lastBucket) {
47
- return { bars: out, barRolledOver: false };
48
- }
49
- if (tickBucket === lastBucket) {
50
- const high = coerceFiniteNumber(last.high) ?? tick.price;
51
- const low = coerceFiniteNumber(last.low) ?? tick.price;
52
- last.high = Math.max(high, tick.price);
53
- last.low = Math.min(low, tick.price);
54
- last.close = tick.price;
59
+ const barPeriod = inferBarPeriodSec(out) ?? options.bucketSec;
60
+ let barRolledOver = false;
61
+ if (tickSec >= lastSec + barPeriod) {
62
+ const prevClose = coerceFiniteNumber(last.close);
63
+ if (prevClose == null) {
64
+ return { bars: out, barRolledOver: false };
65
+ }
66
+ const newBarTime = lastSec + barPeriod;
67
+ const newBar = {
68
+ time: newBarTime,
69
+ open: prevClose,
70
+ high: Math.max(prevClose, tick.price),
71
+ low: Math.min(prevClose, tick.price),
72
+ close: tick.price,
73
+ };
55
74
  if (tick.volume != null) {
56
- const prevVol = coerceFiniteNumber(last.volume) ?? 0;
57
- last.volume = prevVol + tick.volume;
75
+ newBar.volume = tick.volume;
58
76
  }
59
- return { bars: trimBars(out, options.maxPoints), barRolledOver: false };
77
+ out.push(newBar);
78
+ last = newBar;
79
+ barRolledOver = true;
60
80
  }
61
- const prevClose = coerceFiniteNumber(last.close) ?? tick.price;
62
- const newBar = {
63
- time: tickBucket,
64
- open: prevClose,
65
- high: Math.max(prevClose, tick.price),
66
- low: Math.min(prevClose, tick.price),
67
- close: tick.price,
68
- };
81
+ const high = coerceFiniteNumber(last.high) ?? tick.price;
82
+ const low = coerceFiniteNumber(last.low) ?? tick.price;
83
+ last.high = Math.max(high, tick.price);
84
+ last.low = Math.min(low, tick.price);
85
+ last.close = tick.price;
69
86
  if (tick.volume != null) {
70
- newBar.volume = tick.volume;
87
+ const prevVol = coerceFiniteNumber(last.volume) ?? 0;
88
+ last.volume = prevVol + tick.volume;
71
89
  }
72
- out.push(newBar);
73
- return { bars: trimBars(out, options.maxPoints), barRolledOver: true };
90
+ return { bars: trimBars(out, options.maxPoints), barRolledOver };
74
91
  }
75
92
  function trimBars(bars, maxPoints) {
76
93
  if (maxPoints == null || maxPoints <= 0 || bars.length <= maxPoints) {
@@ -1 +1 @@
1
- {"version":3,"file":"merge-tick.js","sourceRoot":"","sources":["../../../../src/core/chart/live/merge-tick.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge-tick.js","sourceRoot":"","sources":["../../../../src/core/chart/live/merge-tick.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
1
  import type { ChartLiveBinding, ChartLiveTick } from './schemas.js';
2
- import type { ChartV1Payload } from '../schemas.js';
2
+ import type { ChartPrepareReplay, ChartV1Payload, PrepareChartOutput } from '../schemas.js';
3
3
  export type RefreshChartFromLiveTickResult = {
4
4
  chart: ChartV1Payload;
5
5
  barRolledOver: boolean;
6
+ prepareReplay?: ChartPrepareReplay;
6
7
  };
7
8
  /**
8
9
  * Apply a live tick to an existing chart payload and rebuild series via prepareChart
9
10
  * (same overlay/pane rules as the initial static chart).
10
11
  */
11
- export declare function refreshChartFromLiveTick(chart: ChartV1Payload, tick: ChartLiveTick, binding: ChartLiveBinding): RefreshChartFromLiveTickResult | null;
12
+ export declare function refreshChartFromLiveTick(chart: ChartV1Payload, tick: ChartLiveTick, binding: ChartLiveBinding, prepareReplay?: ChartPrepareReplay): RefreshChartFromLiveTickResult | null;
13
+ export type { PrepareChartOutput };
12
14
  //# sourceMappingURL=refresh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/live/refresh.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,gBAAgB,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AAElE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,8BAA8B,GAAG;IAC5C,KAAK,EAAE,cAAc,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CACvB,CAAC;AAYF;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,gBAAgB,GACvB,8BAA8B,GAAG,IAAI,CAoCvC"}
1
+ {"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/live/refresh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,gBAAgB,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AAElE,OAAO,KAAK,EAAC,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAC,MAAM,eAAe,CAAC;AAE1F,MAAM,MAAM,8BAA8B,GAAG;IAC5C,KAAK,EAAE,cAAc,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACnC,CAAC;AAYF;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,gBAAgB,EACzB,aAAa,CAAC,EAAE,kBAAkB,GAChC,8BAA8B,GAAG,IAAI,CAuCvC;AAED,YAAY,EAAC,kBAAkB,EAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { prepareChart } from '../prepare.js';
2
+ import { applyPrepareReplayToInput } from '../prepare-replay.js';
2
3
  import { candlestickBarsFromChart, mergeLiveTickIntoBars } from './merge-tick.js';
3
4
  function primaryCandlestick(chart) {
4
5
  const candle = chart.series.find(s => s.type === 'candlestick');
@@ -11,7 +12,7 @@ function primaryCandlestick(chart) {
11
12
  * Apply a live tick to an existing chart payload and rebuild series via prepareChart
12
13
  * (same overlay/pane rules as the initial static chart).
13
14
  */
14
- export function refreshChartFromLiveTick(chart, tick, binding) {
15
+ export function refreshChartFromLiveTick(chart, tick, binding, prepareReplay) {
15
16
  const meta = primaryCandlestick(chart);
16
17
  if (!meta) {
17
18
  return null;
@@ -21,7 +22,7 @@ export function refreshChartFromLiveTick(chart, tick, binding) {
21
22
  bucketSec: binding.bucketSec,
22
23
  ...(binding.maxPoints != null ? { maxPoints: binding.maxPoints } : {}),
23
24
  });
24
- const prepared = prepareChart({
25
+ const baseInput = {
25
26
  ...(chart.title?.trim() ? { title: chart.title.trim() } : {}),
26
27
  ...(chart.height != null ? { height: chart.height } : {}),
27
28
  series: [
@@ -35,13 +36,15 @@ export function refreshChartFromLiveTick(chart, tick, binding) {
35
36
  options: {
36
37
  maxPoints: binding.maxPoints,
37
38
  },
38
- });
39
+ };
40
+ const prepared = prepareChart(applyPrepareReplayToInput(baseInput, prepareReplay));
39
41
  if (!prepared.ok) {
40
42
  return null;
41
43
  }
42
44
  return {
43
45
  chart: prepared.data.chart,
44
46
  barRolledOver,
47
+ prepareReplay: prepared.data.prepareReplay ?? prepareReplay,
45
48
  };
46
49
  }
47
50
  //# sourceMappingURL=refresh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../../src/core/chart/live/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAC,wBAAwB,EAAE,qBAAqB,EAAC,MAAM,iBAAiB,CAAC;AAQhF,SAAS,kBAAkB,CAC1B,KAAqB;IAErB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,EAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACvC,KAAqB,EACrB,IAAmB,EACnB,OAAyB;IAEzB,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,IAAI,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAC,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE;QACvE,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,YAAY,CAAC;QAC7B,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,EAAE;YACP;gBACC,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,MAAM;aACZ;SACD;QACD,OAAO,EAAE;YACR,SAAS,EAAE,OAAO,CAAC,SAAS;SAC5B;KACD,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO;QACN,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;QAC1B,aAAa;KACb,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../../src/core/chart/live/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAC,yBAAyB,EAAC,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAC,wBAAwB,EAAE,qBAAqB,EAAC,MAAM,iBAAiB,CAAC;AAShF,SAAS,kBAAkB,CAC1B,KAAqB;IAErB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,EAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACvC,KAAqB,EACrB,IAAmB,EACnB,OAAyB,EACzB,aAAkC;IAElC,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,IAAI,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAC,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE;QACvE,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG;QACjB,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,EAAE;YACP;gBACC,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,aAAsB;gBAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,MAAM;aACZ;SACD;QACD,OAAO,EAAE;YACR,SAAS,EAAE,OAAO,CAAC,SAAS;SAC5B;KACD,CAAC;IAEF,MAAM,QAAQ,GAAG,YAAY,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IAEnF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO;QACN,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;QAC1B,aAAa;QACb,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,IAAI,aAAa;KAC3D,CAAC;AACH,CAAC"}
@@ -83,6 +83,64 @@ export declare const ChartFibonacciOverlaySchema: z.ZodObject<{
83
83
  dotted: "dotted";
84
84
  }>>;
85
85
  }, z.core.$strict>>;
86
+ levelStyles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
87
+ color: z.ZodOptional<z.ZodString>;
88
+ lineWidth: z.ZodOptional<z.ZodNumber>;
89
+ lineStyle: z.ZodOptional<z.ZodEnum<{
90
+ solid: "solid";
91
+ dashed: "dashed";
92
+ dotted: "dotted";
93
+ }>>;
94
+ }, z.core.$strict>>>;
95
+ highlightLevels: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
96
+ }, z.core.$strict>;
97
+ export declare const ChartHorizontalLevelsOverlaySchema: z.ZodObject<{
98
+ type: z.ZodLiteral<"horizontal_levels">;
99
+ levels: z.ZodArray<z.ZodObject<{
100
+ price: z.ZodNumber;
101
+ label: z.ZodOptional<z.ZodString>;
102
+ kind: z.ZodOptional<z.ZodEnum<{
103
+ level: "level";
104
+ support: "support";
105
+ resistance: "resistance";
106
+ }>>;
107
+ }, z.core.$strict>>;
108
+ id: z.ZodOptional<z.ZodString>;
109
+ style: z.ZodOptional<z.ZodObject<{
110
+ color: z.ZodOptional<z.ZodString>;
111
+ lineWidth: z.ZodOptional<z.ZodNumber>;
112
+ lineStyle: z.ZodOptional<z.ZodEnum<{
113
+ solid: "solid";
114
+ dashed: "dashed";
115
+ dotted: "dotted";
116
+ }>>;
117
+ }, z.core.$strict>>;
118
+ }, z.core.$strict>;
119
+ export declare const ChartPivotLevelsOverlaySchema: z.ZodObject<{
120
+ type: z.ZodLiteral<"pivot_levels">;
121
+ levels: z.ZodArray<z.ZodObject<{
122
+ id: z.ZodString;
123
+ price: z.ZodNumber;
124
+ }, z.core.$strict>>;
125
+ pivotStyle: z.ZodOptional<z.ZodObject<{
126
+ color: z.ZodOptional<z.ZodString>;
127
+ lineWidth: z.ZodOptional<z.ZodNumber>;
128
+ lineStyle: z.ZodOptional<z.ZodEnum<{
129
+ solid: "solid";
130
+ dashed: "dashed";
131
+ dotted: "dotted";
132
+ }>>;
133
+ }, z.core.$strict>>;
134
+ style: z.ZodOptional<z.ZodObject<{
135
+ color: z.ZodOptional<z.ZodString>;
136
+ lineWidth: z.ZodOptional<z.ZodNumber>;
137
+ lineStyle: z.ZodOptional<z.ZodEnum<{
138
+ solid: "solid";
139
+ dashed: "dashed";
140
+ dotted: "dotted";
141
+ }>>;
142
+ }, z.core.$strict>>;
143
+ id: z.ZodOptional<z.ZodString>;
86
144
  }, z.core.$strict>;
87
145
  export declare const ChartRsiOverlaySchema: z.ZodObject<{
88
146
  type: z.ZodLiteral<"rsi">;
@@ -209,6 +267,62 @@ export declare const ChartOverlayInputSchema: z.ZodDiscriminatedUnion<[z.ZodObje
209
267
  dotted: "dotted";
210
268
  }>>;
211
269
  }, z.core.$strict>>;
270
+ levelStyles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
271
+ color: z.ZodOptional<z.ZodString>;
272
+ lineWidth: z.ZodOptional<z.ZodNumber>;
273
+ lineStyle: z.ZodOptional<z.ZodEnum<{
274
+ solid: "solid";
275
+ dashed: "dashed";
276
+ dotted: "dotted";
277
+ }>>;
278
+ }, z.core.$strict>>>;
279
+ highlightLevels: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
280
+ }, z.core.$strict>, z.ZodObject<{
281
+ type: z.ZodLiteral<"horizontal_levels">;
282
+ levels: z.ZodArray<z.ZodObject<{
283
+ price: z.ZodNumber;
284
+ label: z.ZodOptional<z.ZodString>;
285
+ kind: z.ZodOptional<z.ZodEnum<{
286
+ level: "level";
287
+ support: "support";
288
+ resistance: "resistance";
289
+ }>>;
290
+ }, z.core.$strict>>;
291
+ id: z.ZodOptional<z.ZodString>;
292
+ style: z.ZodOptional<z.ZodObject<{
293
+ color: z.ZodOptional<z.ZodString>;
294
+ lineWidth: z.ZodOptional<z.ZodNumber>;
295
+ lineStyle: z.ZodOptional<z.ZodEnum<{
296
+ solid: "solid";
297
+ dashed: "dashed";
298
+ dotted: "dotted";
299
+ }>>;
300
+ }, z.core.$strict>>;
301
+ }, z.core.$strict>, z.ZodObject<{
302
+ type: z.ZodLiteral<"pivot_levels">;
303
+ levels: z.ZodArray<z.ZodObject<{
304
+ id: z.ZodString;
305
+ price: z.ZodNumber;
306
+ }, z.core.$strict>>;
307
+ pivotStyle: z.ZodOptional<z.ZodObject<{
308
+ color: z.ZodOptional<z.ZodString>;
309
+ lineWidth: z.ZodOptional<z.ZodNumber>;
310
+ lineStyle: z.ZodOptional<z.ZodEnum<{
311
+ solid: "solid";
312
+ dashed: "dashed";
313
+ dotted: "dotted";
314
+ }>>;
315
+ }, z.core.$strict>>;
316
+ style: z.ZodOptional<z.ZodObject<{
317
+ color: z.ZodOptional<z.ZodString>;
318
+ lineWidth: z.ZodOptional<z.ZodNumber>;
319
+ lineStyle: z.ZodOptional<z.ZodEnum<{
320
+ solid: "solid";
321
+ dashed: "dashed";
322
+ dotted: "dotted";
323
+ }>>;
324
+ }, z.core.$strict>>;
325
+ id: z.ZodOptional<z.ZodString>;
212
326
  }, z.core.$strict>, z.ZodObject<{
213
327
  type: z.ZodLiteral<"rsi">;
214
328
  sourceSeriesId: z.ZodString;
@@ -332,6 +446,62 @@ export declare const PrepareChartOverlaysSchema: z.ZodArray<z.ZodDiscriminatedUn
332
446
  dotted: "dotted";
333
447
  }>>;
334
448
  }, z.core.$strict>>;
449
+ levelStyles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
450
+ color: z.ZodOptional<z.ZodString>;
451
+ lineWidth: z.ZodOptional<z.ZodNumber>;
452
+ lineStyle: z.ZodOptional<z.ZodEnum<{
453
+ solid: "solid";
454
+ dashed: "dashed";
455
+ dotted: "dotted";
456
+ }>>;
457
+ }, z.core.$strict>>>;
458
+ highlightLevels: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
459
+ }, z.core.$strict>, z.ZodObject<{
460
+ type: z.ZodLiteral<"horizontal_levels">;
461
+ levels: z.ZodArray<z.ZodObject<{
462
+ price: z.ZodNumber;
463
+ label: z.ZodOptional<z.ZodString>;
464
+ kind: z.ZodOptional<z.ZodEnum<{
465
+ level: "level";
466
+ support: "support";
467
+ resistance: "resistance";
468
+ }>>;
469
+ }, z.core.$strict>>;
470
+ id: z.ZodOptional<z.ZodString>;
471
+ style: z.ZodOptional<z.ZodObject<{
472
+ color: z.ZodOptional<z.ZodString>;
473
+ lineWidth: z.ZodOptional<z.ZodNumber>;
474
+ lineStyle: z.ZodOptional<z.ZodEnum<{
475
+ solid: "solid";
476
+ dashed: "dashed";
477
+ dotted: "dotted";
478
+ }>>;
479
+ }, z.core.$strict>>;
480
+ }, z.core.$strict>, z.ZodObject<{
481
+ type: z.ZodLiteral<"pivot_levels">;
482
+ levels: z.ZodArray<z.ZodObject<{
483
+ id: z.ZodString;
484
+ price: z.ZodNumber;
485
+ }, z.core.$strict>>;
486
+ pivotStyle: z.ZodOptional<z.ZodObject<{
487
+ color: z.ZodOptional<z.ZodString>;
488
+ lineWidth: z.ZodOptional<z.ZodNumber>;
489
+ lineStyle: z.ZodOptional<z.ZodEnum<{
490
+ solid: "solid";
491
+ dashed: "dashed";
492
+ dotted: "dotted";
493
+ }>>;
494
+ }, z.core.$strict>>;
495
+ style: z.ZodOptional<z.ZodObject<{
496
+ color: z.ZodOptional<z.ZodString>;
497
+ lineWidth: z.ZodOptional<z.ZodNumber>;
498
+ lineStyle: z.ZodOptional<z.ZodEnum<{
499
+ solid: "solid";
500
+ dashed: "dashed";
501
+ dotted: "dotted";
502
+ }>>;
503
+ }, z.core.$strict>>;
504
+ id: z.ZodOptional<z.ZodString>;
335
505
  }, z.core.$strict>, z.ZodObject<{
336
506
  type: z.ZodLiteral<"rsi">;
337
507
  sourceSeriesId: z.ZodString;
@@ -381,5 +551,93 @@ export declare const PrepareChartOverlaysSchema: z.ZodArray<z.ZodDiscriminatedUn
381
551
  }>>;
382
552
  }, z.core.$strict>>;
383
553
  }, z.core.$strict>], "type">>;
554
+ export declare const PrepareChartDrawingsSchema: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
555
+ type: z.ZodLiteral<"horizontal_levels">;
556
+ levels: z.ZodArray<z.ZodObject<{
557
+ price: z.ZodNumber;
558
+ label: z.ZodOptional<z.ZodString>;
559
+ kind: z.ZodOptional<z.ZodEnum<{
560
+ level: "level";
561
+ support: "support";
562
+ resistance: "resistance";
563
+ }>>;
564
+ }, z.core.$strict>>;
565
+ id: z.ZodOptional<z.ZodString>;
566
+ style: z.ZodOptional<z.ZodObject<{
567
+ color: z.ZodOptional<z.ZodString>;
568
+ lineWidth: z.ZodOptional<z.ZodNumber>;
569
+ lineStyle: z.ZodOptional<z.ZodEnum<{
570
+ solid: "solid";
571
+ dashed: "dashed";
572
+ dotted: "dotted";
573
+ }>>;
574
+ }, z.core.$strict>>;
575
+ }, z.core.$strict>, z.ZodObject<{
576
+ type: z.ZodLiteral<"pivot_levels">;
577
+ levels: z.ZodArray<z.ZodObject<{
578
+ id: z.ZodString;
579
+ price: z.ZodNumber;
580
+ }, z.core.$strict>>;
581
+ pivotStyle: z.ZodOptional<z.ZodObject<{
582
+ color: z.ZodOptional<z.ZodString>;
583
+ lineWidth: z.ZodOptional<z.ZodNumber>;
584
+ lineStyle: z.ZodOptional<z.ZodEnum<{
585
+ solid: "solid";
586
+ dashed: "dashed";
587
+ dotted: "dotted";
588
+ }>>;
589
+ }, z.core.$strict>>;
590
+ style: z.ZodOptional<z.ZodObject<{
591
+ color: z.ZodOptional<z.ZodString>;
592
+ lineWidth: z.ZodOptional<z.ZodNumber>;
593
+ lineStyle: z.ZodOptional<z.ZodEnum<{
594
+ solid: "solid";
595
+ dashed: "dashed";
596
+ dotted: "dotted";
597
+ }>>;
598
+ }, z.core.$strict>>;
599
+ id: z.ZodOptional<z.ZodString>;
600
+ }, z.core.$strict>, z.ZodObject<{
601
+ type: z.ZodLiteral<"fibonacci">;
602
+ sourceSeriesId: z.ZodOptional<z.ZodString>;
603
+ range: z.ZodOptional<z.ZodObject<{
604
+ high: z.ZodNumber;
605
+ low: z.ZodNumber;
606
+ trend: z.ZodEnum<{
607
+ up: "up";
608
+ down: "down";
609
+ }>;
610
+ }, z.core.$strict>>;
611
+ levels: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
612
+ trend: z.ZodOptional<z.ZodEnum<{
613
+ up: "up";
614
+ down: "down";
615
+ }>>;
616
+ id: z.ZodOptional<z.ZodString>;
617
+ overlay: z.ZodOptional<z.ZodBoolean>;
618
+ priceScaleId: z.ZodOptional<z.ZodEnum<{
619
+ left: "left";
620
+ right: "right";
621
+ }>>;
622
+ style: z.ZodOptional<z.ZodObject<{
623
+ color: z.ZodOptional<z.ZodString>;
624
+ lineWidth: z.ZodOptional<z.ZodNumber>;
625
+ lineStyle: z.ZodOptional<z.ZodEnum<{
626
+ solid: "solid";
627
+ dashed: "dashed";
628
+ dotted: "dotted";
629
+ }>>;
630
+ }, z.core.$strict>>;
631
+ levelStyles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
632
+ color: z.ZodOptional<z.ZodString>;
633
+ lineWidth: z.ZodOptional<z.ZodNumber>;
634
+ lineStyle: z.ZodOptional<z.ZodEnum<{
635
+ solid: "solid";
636
+ dashed: "dashed";
637
+ dotted: "dotted";
638
+ }>>;
639
+ }, z.core.$strict>>>;
640
+ highlightLevels: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
641
+ }, z.core.$strict>], "type">>;
384
642
  export type ChartOverlayInput = z.infer<typeof ChartOverlayInputSchema>;
385
643
  //# sourceMappingURL=overlay-schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"overlay-schemas.d.ts","sourceRoot":"","sources":["../../../src/core/chart/overlay-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAUtB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;kBAWvB,CAAC;AAEX,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;kBAW9B,CAAC;AAEX,eAAO,MAAM,yBAAyB;;;;;;;kBAM5B,CAAC;AAEX,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAgBrC,CAAC;AAEJ,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;kBASxB,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;kBAUzB,CAAC;AAEX,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;kBAWlC,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAOlC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAA0C,CAAC;AAElF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
1
+ {"version":3,"file":"overlay-schemas.d.ts","sourceRoot":"","sources":["../../../src/core/chart/overlay-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAUtB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;kBAWvB,CAAC;AAEX,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;kBAW9B,CAAC;AAEX,eAAO,MAAM,yBAAyB;;;;;;;kBAM5B,CAAC;AAEX,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoBrC,CAAC;AAUJ,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;kBAOrC,CAAC;AAEX,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;kBAkBhC,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;kBASxB,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;kBAUzB,CAAC;AAEX,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;kBAWlC,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BASlC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAA2C,CAAC;AAEnF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAQ/B,CAAC;AAET,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}