@abdullahjaswal/tickyr-charts-solid 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/LICENSE +14 -0
  2. package/README.md +43 -0
  3. package/dist/animation/animator.d.ts +52 -0
  4. package/dist/animation/bar-entry.d.ts +44 -0
  5. package/dist/animation/bar-update.d.ts +38 -0
  6. package/dist/animation/easings.d.ts +22 -0
  7. package/dist/animation/index.d.ts +4 -0
  8. package/dist/charts/bar-chart-controller.d.ts +98 -0
  9. package/dist/charts/bar-chart-helpers.d.ts +334 -0
  10. package/dist/charts/candle-chart-controller.d.ts +353 -0
  11. package/dist/charts/candle-chart-helpers.d.ts +781 -0
  12. package/dist/charts/depth-chart-controller.d.ts +84 -0
  13. package/dist/charts/depth-chart-helpers.d.ts +185 -0
  14. package/dist/charts/depth-series.d.ts +41 -0
  15. package/dist/charts/heatmap-chart-controller.d.ts +78 -0
  16. package/dist/charts/heatmap-chart-helpers.d.ts +174 -0
  17. package/dist/charts/heatmap-color-compute.d.ts +11 -0
  18. package/dist/charts/hierarchy.d.ts +49 -0
  19. package/dist/charts/histogram-binning.d.ts +33 -0
  20. package/dist/charts/histogram-chart-controller.d.ts +82 -0
  21. package/dist/charts/histogram-chart-helpers.d.ts +199 -0
  22. package/dist/charts/kagi-chart-controller.d.ts +154 -0
  23. package/dist/charts/line-chart-controller.d.ts +209 -0
  24. package/dist/charts/line-chart-helpers.d.ts +606 -0
  25. package/dist/charts/mark-buffers.d.ts +105 -0
  26. package/dist/charts/pie-chart-controller.d.ts +83 -0
  27. package/dist/charts/pie-chart-helpers.d.ts +155 -0
  28. package/dist/charts/pie-slice-compute.d.ts +44 -0
  29. package/dist/charts/pnf-chart-controller.d.ts +153 -0
  30. package/dist/charts/renko-chart-controller.d.ts +151 -0
  31. package/dist/charts/sankey-chart-controller.d.ts +176 -0
  32. package/dist/charts/sankey-layout.d.ts +64 -0
  33. package/dist/charts/scatter-chart-controller.d.ts +90 -0
  34. package/dist/charts/scatter-chart-helpers.d.ts +257 -0
  35. package/dist/charts/scatter-density.d.ts +5 -0
  36. package/dist/charts/scatter-regression.d.ts +27 -0
  37. package/dist/charts/sunburst-chart-controller.d.ts +107 -0
  38. package/dist/charts/sunburst-chart-helpers.d.ts +143 -0
  39. package/dist/charts/sunburst-layout.d.ts +40 -0
  40. package/dist/charts/time-off-algorithms.d.ts +53 -0
  41. package/dist/charts/treemap-chart-controller.d.ts +103 -0
  42. package/dist/charts/treemap-chart-helpers.d.ts +163 -0
  43. package/dist/charts/treemap-layout.d.ts +29 -0
  44. package/dist/charts/types.d.ts +38 -0
  45. package/dist/clock/clock.d.ts +10 -0
  46. package/dist/composition/chart-group-state.d.ts +46 -0
  47. package/dist/composition/index.d.ts +1 -0
  48. package/dist/composition/pane.d.ts +33 -0
  49. package/dist/domain/concat.d.ts +18 -0
  50. package/dist/domain/drawings.d.ts +44 -0
  51. package/dist/domain/heikin-ashi.d.ts +9 -0
  52. package/dist/domain/index.d.ts +7 -0
  53. package/dist/domain/ingestion.d.ts +7 -0
  54. package/dist/domain/live-state.d.ts +12 -0
  55. package/dist/domain/markers.d.ts +38 -0
  56. package/dist/domain/series.d.ts +22 -0
  57. package/dist/domain/values.d.ts +32 -0
  58. package/dist/engine/aggregation.d.ts +15 -0
  59. package/dist/engine/downsampling.d.ts +3 -0
  60. package/dist/engine/events.d.ts +14 -0
  61. package/dist/engine/index.d.ts +13 -0
  62. package/dist/engine/indicators.d.ts +37 -0
  63. package/dist/engine/markets.d.ts +8 -0
  64. package/dist/engine/module.d.ts +8 -0
  65. package/dist/engine/quadtree.d.ts +18 -0
  66. package/dist/engine/session.d.ts +11 -0
  67. package/dist/engine/signals.d.ts +52 -0
  68. package/dist/engine/streaming.d.ts +20 -0
  69. package/dist/engine/time-axis.d.ts +16 -0
  70. package/dist/engine/version.d.ts +16 -0
  71. package/dist/engine/views.d.ts +3 -0
  72. package/dist/index.js +17026 -0
  73. package/dist/interaction/keyboard.d.ts +16 -0
  74. package/dist/interaction/touch.d.ts +27 -0
  75. package/dist/perf/adaptive-complexity.d.ts +45 -0
  76. package/dist/perf/memory-pressure.d.ts +16 -0
  77. package/dist/perf/offscreen-canvas-host.d.ts +32 -0
  78. package/dist/perf/offscreen-canvas.d.ts +50 -0
  79. package/dist/perf/offscreen-canvas.worker.d.ts +1 -0
  80. package/dist/perf/shared-array-buffer.d.ts +10 -0
  81. package/dist/perf/visibility.d.ts +39 -0
  82. package/dist/perf/webgl-renderer.d.ts +24 -0
  83. package/dist/perf/wire-memory-pressure.d.ts +2 -0
  84. package/dist/personalization/accessibility.d.ts +16 -0
  85. package/dist/personalization/axes/animation.d.ts +33 -0
  86. package/dist/personalization/axes/area-baseline.d.ts +8 -0
  87. package/dist/personalization/axes/axis-labels.d.ts +3 -0
  88. package/dist/personalization/axes/bin-algorithm.d.ts +3 -0
  89. package/dist/personalization/axes/box-sizing.d.ts +22 -0
  90. package/dist/personalization/axes/cell-shape.d.ts +3 -0
  91. package/dist/personalization/axes/curve-type.d.ts +11 -0
  92. package/dist/personalization/axes/density.d.ts +4 -0
  93. package/dist/personalization/axes/depth-fill-type.d.ts +3 -0
  94. package/dist/personalization/axes/depth-limit.d.ts +2 -0
  95. package/dist/personalization/axes/glow.d.ts +21 -0
  96. package/dist/personalization/axes/heatmap-color-scale.d.ts +31 -0
  97. package/dist/personalization/axes/histogram-overlay.d.ts +18 -0
  98. package/dist/personalization/axes/indicator-pane-spec.d.ts +85 -0
  99. package/dist/personalization/axes/label-behavior.d.ts +3 -0
  100. package/dist/personalization/axes/label-content.d.ts +17 -0
  101. package/dist/personalization/axes/label-placement.d.ts +3 -0
  102. package/dist/personalization/axes/label-rotation.d.ts +3 -0
  103. package/dist/personalization/axes/level-highlight.d.ts +14 -0
  104. package/dist/personalization/axes/line-dash.d.ts +2 -0
  105. package/dist/personalization/axes/mid-line.d.ts +14 -0
  106. package/dist/personalization/axes/node-alignment.d.ts +3 -0
  107. package/dist/personalization/axes/null-behavior.d.ts +3 -0
  108. package/dist/personalization/axes/number-format.d.ts +18 -0
  109. package/dist/personalization/axes/pan-zoom.d.ts +42 -0
  110. package/dist/personalization/axes/pattern.d.ts +26 -0
  111. package/dist/personalization/axes/point-markers.d.ts +55 -0
  112. package/dist/personalization/axes/point-opacity.d.ts +6 -0
  113. package/dist/personalization/axes/point-size.d.ts +23 -0
  114. package/dist/personalization/axes/price-range.d.ts +9 -0
  115. package/dist/personalization/axes/radius-proportion.d.ts +3 -0
  116. package/dist/personalization/axes/regression-line.d.ts +36 -0
  117. package/dist/personalization/axes/sankey-link-color.d.ts +10 -0
  118. package/dist/personalization/axes/sankey-value-display.d.ts +4 -0
  119. package/dist/personalization/axes/small-slice-threshold.d.ts +15 -0
  120. package/dist/personalization/axes/sort-order.d.ts +3 -0
  121. package/dist/personalization/axes/spread-display.d.ts +4 -0
  122. package/dist/personalization/axes/stacking.d.ts +17 -0
  123. package/dist/personalization/axes/tile-layout.d.ts +3 -0
  124. package/dist/personalization/axes/time-off-axes.d.ts +19 -0
  125. package/dist/personalization/axes/treemap-color-scale.d.ts +3 -0
  126. package/dist/personalization/axes/value-labels.d.ts +21 -0
  127. package/dist/personalization/axes/view-mode.d.ts +3 -0
  128. package/dist/personalization/axes/volume-coloring.d.ts +24 -0
  129. package/dist/personalization/axes/y-axis-mode.d.ts +3 -0
  130. package/dist/personalization/index.d.ts +38 -0
  131. package/dist/personalization/locale/formatter.d.ts +45 -0
  132. package/dist/personalization/locale/resolver.d.ts +22 -0
  133. package/dist/personalization/palette/built-ins.d.ts +10 -0
  134. package/dist/personalization/palette/derive.d.ts +35 -0
  135. package/dist/personalization/palette/index.d.ts +6 -0
  136. package/dist/personalization/palette/oklch.d.ts +19 -0
  137. package/dist/personalization/palette/registry.d.ts +7 -0
  138. package/dist/personalization/palette/tonal-symmetry.d.ts +32 -0
  139. package/dist/personalization/palette/types.d.ts +63 -0
  140. package/dist/personalization/personalization.d.ts +137 -0
  141. package/dist/personalization/tooltip-props.d.ts +40 -0
  142. package/dist/rendering/canvas.d.ts +6 -0
  143. package/dist/rendering/color-tables.d.ts +52 -0
  144. package/dist/rendering/dirty-rect-tracker.d.ts +49 -0
  145. package/dist/rendering/dirty-rect.d.ts +17 -0
  146. package/dist/rendering/draw/area-fill-threshold.d.ts +19 -0
  147. package/dist/rendering/draw/area-fill.d.ts +47 -0
  148. package/dist/rendering/draw/area-gradient.d.ts +35 -0
  149. package/dist/rendering/draw/axis.d.ts +65 -0
  150. package/dist/rendering/draw/bar.d.ts +31 -0
  151. package/dist/rendering/draw/candle-live-treatment.d.ts +43 -0
  152. package/dist/rendering/draw/candle.d.ts +101 -0
  153. package/dist/rendering/draw/connection-indicator.d.ts +30 -0
  154. package/dist/rendering/draw/crosshair.d.ts +27 -0
  155. package/dist/rendering/draw/drawings.d.ts +64 -0
  156. package/dist/rendering/draw/grid.d.ts +20 -0
  157. package/dist/rendering/draw/indicator-band.d.ts +17 -0
  158. package/dist/rendering/draw/indicator-line.d.ts +15 -0
  159. package/dist/rendering/draw/last-price.d.ts +36 -0
  160. package/dist/rendering/draw/line.d.ts +16 -0
  161. package/dist/rendering/draw/live-bar.d.ts +31 -0
  162. package/dist/rendering/draw/markers.d.ts +53 -0
  163. package/dist/rendering/draw/pane-divider.d.ts +22 -0
  164. package/dist/rendering/draw/point-markers.d.ts +23 -0
  165. package/dist/rendering/glow/glow.d.ts +40 -0
  166. package/dist/rendering/index.d.ts +9 -0
  167. package/dist/rendering/layers/should-split.d.ts +12 -0
  168. package/dist/rendering/patterns/cross-hatch.d.ts +4 -0
  169. package/dist/rendering/patterns/pattern-tiles.d.ts +25 -0
  170. package/dist/rendering/pipeline.d.ts +21 -0
  171. package/dist/rendering/stacked-layout.d.ts +23 -0
  172. package/dist/rendering/standardization-tokens.d.ts +26 -0
  173. package/dist/rendering/static-layer-cache.d.ts +34 -0
  174. package/dist/rendering/threshold-split.d.ts +14 -0
  175. package/dist/shared/binary-search.d.ts +2 -0
  176. package/dist/shared/typed.d.ts +8 -0
  177. package/dist/solid/chart-group.d.ts +16 -0
  178. package/dist/solid/charts-provider.d.ts +38 -0
  179. package/dist/solid/components/area-chart.d.ts +21 -0
  180. package/dist/solid/components/bar-chart.d.ts +84 -0
  181. package/dist/solid/components/candle-chart.d.ts +142 -0
  182. package/dist/solid/components/chart-group-brush.d.ts +13 -0
  183. package/dist/solid/components/chart-group-navigator.d.ts +12 -0
  184. package/dist/solid/components/depth-chart.d.ts +8 -0
  185. package/dist/solid/components/heatmap-chart.d.ts +8 -0
  186. package/dist/solid/components/histogram-chart.d.ts +8 -0
  187. package/dist/solid/components/kagi-chart.d.ts +8 -0
  188. package/dist/solid/components/line-chart.d.ts +110 -0
  189. package/dist/solid/components/pie-chart.d.ts +20 -0
  190. package/dist/solid/components/point-figure-chart.d.ts +8 -0
  191. package/dist/solid/components/renko-chart.d.ts +8 -0
  192. package/dist/solid/components/sankey-chart.d.ts +8 -0
  193. package/dist/solid/components/scatter-chart.d.ts +8 -0
  194. package/dist/solid/components/sunburst-chart.d.ts +8 -0
  195. package/dist/solid/components/treemap-chart.d.ts +8 -0
  196. package/dist/solid/hooks/use-chart-theme.d.ts +2 -0
  197. package/dist/solid/hooks/use-streaming-candles.d.ts +33 -0
  198. package/dist/solid/index.d.ts +73 -0
  199. package/dist/solid/tooltips/default-candle-tooltip.d.ts +4 -0
  200. package/dist/solid/tooltips/default-extreme-tooltip.d.ts +6 -0
  201. package/dist/solid/tooltips/default-tooltip.d.ts +4 -0
  202. package/dist/solid/tooltips/default-volume-bar-tooltip.d.ts +4 -0
  203. package/dist/solid/tooltips/index.d.ts +4 -0
  204. package/dist/tickyr_charts_wasm-C-sFYtmv.js +828 -0
  205. package/dist/viewport/category-axis.d.ts +32 -0
  206. package/dist/viewport/clip-ticks.d.ts +8 -0
  207. package/dist/viewport/index.d.ts +6 -0
  208. package/dist/viewport/nice-ticks.d.ts +9 -0
  209. package/dist/viewport/nice-time-ticks.d.ts +7 -0
  210. package/dist/viewport/orientation.d.ts +56 -0
  211. package/dist/viewport/padded-domain.d.ts +16 -0
  212. package/dist/viewport/scales/linear.d.ts +9 -0
  213. package/dist/viewport/scales/log.d.ts +9 -0
  214. package/dist/viewport/scales/time.d.ts +7 -0
  215. package/dist/viewport/viewport-sizer.d.ts +15 -0
  216. package/dist/viewport/visible-window.d.ts +5 -0
  217. package/package.json +41 -0
@@ -0,0 +1,10 @@
1
+ export interface Clock {
2
+ now(): number;
3
+ }
4
+ export declare const realClock: Clock;
5
+ export declare function frozenClock(at?: number): Clock;
6
+ export interface SteppedClock extends Clock {
7
+ advance(deltaMs: number): void;
8
+ set(atMs: number): void;
9
+ }
10
+ export declare function steppedClock(start?: number): SteppedClock;
@@ -0,0 +1,46 @@
1
+ export type SyncYScale = "off" | "percent" | "absolute";
2
+ export type ReferencePoint = "first-visible" | "last-bar" | number;
3
+ export interface ChartGroupOptions {
4
+ /** Sync the visible x-domain across the group. */
5
+ readonly syncDomain: boolean;
6
+ readonly syncPanZoom: boolean;
7
+ readonly syncCrosshair: boolean;
8
+ readonly syncYScale: SyncYScale;
9
+ readonly referencePoint: ReferencePoint;
10
+ readonly syncSelection: boolean;
11
+ readonly syncTooltip: boolean;
12
+ /** Whether the group enables a brushable time-range selection. The
13
+ * separate `<ChartGroupBrush>` component reads + writes this state. */
14
+ readonly brush: boolean;
15
+ /** Whether a `<ChartGroupNavigator>` minimap should engage. */
16
+ readonly navigator: boolean;
17
+ }
18
+ export declare const DEFAULT_CHART_GROUP_OPTIONS: ChartGroupOptions;
19
+ /** Per-key optional input. Accepts `{ syncDomain?: boolean; ... }` shapes
20
+ * produced by adapter prop spread under exactOptionalPropertyTypes - each
21
+ * key may be present-with-undefined or missing. */
22
+ export type ChartGroupOptionsInput = {
23
+ readonly [K in keyof ChartGroupOptions]?: ChartGroupOptions[K] | undefined;
24
+ };
25
+ export declare function resolveChartGroupOptions(input: ChartGroupOptionsInput | undefined): ChartGroupOptions;
26
+ export interface TimeRange {
27
+ readonly start: number;
28
+ readonly end: number;
29
+ }
30
+ export interface ChartGroupState {
31
+ /** Last hover-position time observed in any sibling chart. */
32
+ readonly crosshairTime: number | null;
33
+ setCrosshairTime(t: number | null): void;
34
+ /** Last click-selection time. */
35
+ readonly selectedTime: number | null;
36
+ setSelectedTime(t: number | null): void;
37
+ /** Shared visible time-range when `syncDomain: true`. */
38
+ readonly domain: TimeRange | null;
39
+ setDomain(d: TimeRange | null): void;
40
+ /** Shared brush range. */
41
+ readonly brush: TimeRange | null;
42
+ setBrush(b: TimeRange | null): void;
43
+ /** Subscribe to any state change. Returns idempotent unsubscriber. */
44
+ subscribe(listener: () => void): () => void;
45
+ }
46
+ export declare function createChartGroupState(): ChartGroupState;
@@ -0,0 +1 @@
1
+ export { type Pane, type PaneRect, type ComputePaneRectsOpts, computePaneRects, } from './pane';
@@ -0,0 +1,33 @@
1
+ /** A single pane in a vertical stack. The renderer decides what to
2
+ * draw inside; this primitive only allocates pixel rects. */
3
+ export interface Pane {
4
+ /** Stable id used by the renderer to look up its draw config. */
5
+ readonly id: string;
6
+ /** Semantic kind; `price` is the main candle/line area, `volume` is
7
+ * the volume sub-pane, `indicator` is RSI / MACD / etc. */
8
+ readonly kind: "price" | "volume" | "indicator";
9
+ /** Fraction of the available content area this pane gets. Ratios are
10
+ * normalized - they don't have to sum to 1. */
11
+ readonly heightRatio: number;
12
+ }
13
+ export interface PaneRect {
14
+ readonly id: string;
15
+ readonly kind: Pane["kind"];
16
+ /** Top y in CSS px (closer to outerTop). */
17
+ readonly top: number;
18
+ /** Bottom y in CSS px (closer to outerBottom). */
19
+ readonly bottom: number;
20
+ /** Height in CSS px (= bottom - top). */
21
+ readonly height: number;
22
+ }
23
+ export interface ComputePaneRectsOpts {
24
+ /** Top y of the available area (typically the chart's `innerTop`). */
25
+ readonly outerTop: number;
26
+ /** Bottom y of the available area (typically `innerBottom`). */
27
+ readonly outerBottom: number;
28
+ /** Panes in top-to-bottom order. */
29
+ readonly panes: readonly Pane[];
30
+ /** Height of each divider between panes, in CSS px. */
31
+ readonly dividerHeightPx: number;
32
+ }
33
+ export declare function computePaneRects(opts: ComputePaneRectsOpts): PaneRect[];
@@ -0,0 +1,18 @@
1
+ import { CandleSeries, LineSeries } from './series';
2
+ /** Concatenate two ingested `CandleSeries` (history first, visible
3
+ * second). Re-runs ingestion on the combined typed arrays so the
4
+ * result is validated as a single monotonic series (catches
5
+ * history that overlaps the visible window via duplicate / out-of-
6
+ * order timestamps).
7
+ *
8
+ * When the history series is empty, returns the visible unchanged
9
+ * (zero-allocation fast path). */
10
+ export declare function concatCandleSeries(history: CandleSeries, visible: CandleSeries): CandleSeries;
11
+ /** Concatenate two ingested `LineSeries`. Same contract as
12
+ * `concatCandleSeries`. */
13
+ export declare function concatLineSeries(history: LineSeries, visible: LineSeries): LineSeries;
14
+ /** Slice the leading `n` values off a typed-array indicator output.
15
+ * Zero-copy via `subarray()`. Used to drop the warmup-history
16
+ * portion of an indicator result so the remainder aligns with the
17
+ * visible data window. */
18
+ export declare function sliceLeading(values: Float64Array, n: number): Float64Array;
@@ -0,0 +1,44 @@
1
+ export type DrawingType = "trend-line" | "horizontal-line" | "vertical-line" | "rectangle" | "ellipse" | "arrow" | "text" | "fib-retracement" | "fib-extension" | "pitchfork" | "channel" | "brush";
2
+ export interface Anchor {
3
+ /** Time in ms since the epoch. */
4
+ t: number;
5
+ /** Price (in the chart's price scale). */
6
+ y: number;
7
+ }
8
+ export interface DrawingStyle {
9
+ /** Stroke / fill base color (resolved CSS string OR `'auto'` to use
10
+ * the active palette's `drawings.stroke` slot). */
11
+ color?: string | "auto";
12
+ lineWidth?: number;
13
+ lineStyle?: "solid" | "dashed" | "dotted";
14
+ fillOpacity?: number;
15
+ /** Trend-line + arrow only - bool toggles arrowhead at the second
16
+ * anchor. */
17
+ arrowhead?: boolean;
18
+ /** Text-drawing only. */
19
+ text?: string;
20
+ fontSize?: number;
21
+ }
22
+ export interface Drawing {
23
+ readonly id: string;
24
+ readonly type: DrawingType;
25
+ /** Anchors in data coordinates. Cardinality varies by type:
26
+ * - 1: horizontal-line (y), vertical-line (t)
27
+ * - 2: trend-line, rectangle, ellipse, arrow, text (single anchor
28
+ * point + style.text), fib-retracement, fib-extension, brush
29
+ * - 3: pitchfork, channel
30
+ * Validation is host-side at construction; the chart trusts the
31
+ * cardinality for the type it sees. */
32
+ readonly anchors: readonly Anchor[];
33
+ readonly style: DrawingStyle;
34
+ /** Optional metadata for host bookkeeping; not used by the chart. */
35
+ readonly meta?: Record<string, unknown>;
36
+ }
37
+ /** Anchor count required for each drawing type. The chart's drawing
38
+ * pipeline asserts that `drawing.anchors.length >= ANCHOR_COUNTS[type]`. */
39
+ export declare const ANCHOR_COUNTS: Record<DrawingType, number>;
40
+ /** Standard fib retracement levels. */
41
+ export declare const FIB_RETRACEMENT_LEVELS: readonly [0, 0.236, 0.382, 0.5, 0.618, 0.786, 1];
42
+ /** Standard fib extension levels. */
43
+ export declare const FIB_EXTENSION_LEVELS: readonly [1, 1.272, 1.414, 1.618, 2, 2.618];
44
+ export declare function isValidDrawing(d: Drawing): boolean;
@@ -0,0 +1,9 @@
1
+ import { CandleSeries } from './series';
2
+ export interface HeikinAshiArrays {
3
+ readonly opens: Float64Array;
4
+ readonly highs: Float64Array;
5
+ readonly lows: Float64Array;
6
+ readonly closes: Float64Array;
7
+ }
8
+ export declare function computeHeikinAshi(opens: Float64Array, highs: Float64Array, lows: Float64Array, closes: Float64Array): HeikinAshiArrays;
9
+ export declare function computeHeikinAshiCached(series: CandleSeries): HeikinAshiArrays;
@@ -0,0 +1,7 @@
1
+ export { LineSeries, CandleSeries } from './series';
2
+ export { ingestLineSeries, ingestCandleSeries, type IngestOptions, } from './ingestion';
3
+ export { type LinePoint, type LineSeriesInput, type Candle, type CandleSeriesInput, type BinaryCandleSeriesInput, DataValidationError, } from './values';
4
+ export { type LiveState, type LiveStateInput, deriveLiveState, } from './live-state';
5
+ export { concatCandleSeries, concatLineSeries, sliceLeading } from './concat';
6
+ export { type Drawing, type DrawingType, type DrawingStyle, type Anchor, ANCHOR_COUNTS, FIB_RETRACEMENT_LEVELS, FIB_EXTENSION_LEVELS, isValidDrawing, } from './drawings';
7
+ export { type SignalMarker, type SignalSide, type OrderMarker, type OrderSide, type PositionMarker, type EventMarker, type EventKind, } from './markers';
@@ -0,0 +1,7 @@
1
+ import { CandleSeries, LineSeries } from './series';
2
+ import { CandleSeriesInput, LineSeriesInput } from './values';
3
+ export interface IngestOptions {
4
+ strict?: boolean;
5
+ }
6
+ export declare function ingestLineSeries(input: LineSeriesInput, opts?: IngestOptions): LineSeries;
7
+ export declare function ingestCandleSeries(input: CandleSeriesInput, opts?: IngestOptions): CandleSeries;
@@ -0,0 +1,12 @@
1
+ export type LiveState = "live" | "stale" | "disconnected";
2
+ export interface LiveStateInput {
3
+ /** Explicit override from host. When set, wins over auto-detection. */
4
+ readonly connectionState?: LiveState | undefined;
5
+ /** ms timestamp of the last successful tick. Undefined → no signal. */
6
+ readonly liveSince?: number | undefined;
7
+ /** ms; 0 disables auto-detection. */
8
+ readonly staleThreshold: number;
9
+ /** ms; clock used for the freshness comparison. Pure → injectable. */
10
+ readonly now: number;
11
+ }
12
+ export declare function deriveLiveState(input: LiveStateInput): LiveState;
@@ -0,0 +1,38 @@
1
+ export type SignalSide = "buy" | "sell";
2
+ export interface SignalMarker {
3
+ /** Time in ms (matches a candle's t). */
4
+ t: number;
5
+ side: SignalSide;
6
+ /** [0, 1] confidence - drives the marker size scale. */
7
+ confidence?: number;
8
+ /** Optional override for the chart's `signalTooltip` data. */
9
+ meta?: Record<string, unknown>;
10
+ }
11
+ export type OrderSide = "buy" | "sell";
12
+ export interface OrderMarker {
13
+ /** Bar t the order lives at (typically the most-recent bar). */
14
+ t: number;
15
+ side: OrderSide;
16
+ entryPrice: number;
17
+ stopLossPrice?: number;
18
+ takeProfitPrice?: number;
19
+ meta?: Record<string, unknown>;
20
+ }
21
+ export interface PositionMarker {
22
+ t: number;
23
+ side: "long" | "short";
24
+ entryPrice: number;
25
+ /** Quantity in shares / lots - used by P&L pill calculations. */
26
+ qty: number;
27
+ meta?: Record<string, unknown>;
28
+ }
29
+ export type EventKind = "earnings" | "dividend" | "split" | "news";
30
+ export interface EventMarker {
31
+ t: number;
32
+ kind: EventKind;
33
+ /** Short label (1-2 chars) for the glyph mode. */
34
+ glyph?: string;
35
+ /** Full title for the banner mode. */
36
+ title?: string;
37
+ meta?: Record<string, unknown>;
38
+ }
@@ -0,0 +1,22 @@
1
+ export declare class LineSeries {
2
+ #private;
3
+ readonly times: Float64Array;
4
+ readonly values: Float64Array;
5
+ readonly length: number;
6
+ constructor(times: Float64Array, values: Float64Array);
7
+ get revisionId(): number;
8
+ bumpRevision(): number;
9
+ }
10
+ export declare class CandleSeries {
11
+ #private;
12
+ readonly times: Float64Array;
13
+ readonly opens: Float64Array;
14
+ readonly highs: Float64Array;
15
+ readonly lows: Float64Array;
16
+ readonly closes: Float64Array;
17
+ readonly volumes: Float64Array | null;
18
+ readonly length: number;
19
+ constructor(times: Float64Array, opens: Float64Array, highs: Float64Array, lows: Float64Array, closes: Float64Array, volumes: Float64Array | null);
20
+ get revisionId(): number;
21
+ bumpRevision(): number;
22
+ }
@@ -0,0 +1,32 @@
1
+ export interface LinePoint {
2
+ t: number;
3
+ value: number;
4
+ }
5
+ export type LineSeriesInput = {
6
+ points: readonly LinePoint[];
7
+ } | {
8
+ times: Float64Array;
9
+ values: Float64Array;
10
+ };
11
+ export interface Candle {
12
+ t: number;
13
+ o: number;
14
+ h: number;
15
+ l: number;
16
+ c: number;
17
+ v?: number;
18
+ }
19
+ export interface BinaryCandleSeriesInput {
20
+ times: Float64Array;
21
+ opens: Float64Array;
22
+ highs: Float64Array;
23
+ lows: Float64Array;
24
+ closes: Float64Array;
25
+ volumes?: Float64Array;
26
+ }
27
+ export type CandleSeriesInput = {
28
+ candles: readonly Candle[];
29
+ } | BinaryCandleSeriesInput;
30
+ export declare class DataValidationError extends Error {
31
+ readonly name = "DataValidationError";
32
+ }
@@ -0,0 +1,15 @@
1
+ /** SoA result of `aggregateMinutes`. Typed-array views into engine
2
+ * linear memory - consumer either uses in-frame or copies via
3
+ * `copyOutF64` (per `./views.ts`) before the next engine call. */
4
+ export interface AggregatedSeries {
5
+ readonly times: Float64Array;
6
+ readonly opens: Float64Array;
7
+ readonly highs: Float64Array;
8
+ readonly lows: Float64Array;
9
+ readonly closes: Float64Array;
10
+ readonly volumes: Float64Array;
11
+ readonly length: number;
12
+ }
13
+ /** Roll up an OHLCV series from `baseTfMinutes` to `targetTfMinutes`.
14
+ * Throws if the target isn't a positive integer multiple of the base. */
15
+ export declare function aggregateMinutes(times: Float64Array, opens: Float64Array, highs: Float64Array, lows: Float64Array, closes: Float64Array, volumes: Float64Array, baseTfMinutes: number, targetTfMinutes: number): Promise<AggregatedSeries>;
@@ -0,0 +1,3 @@
1
+ export declare function lttb(xs: Float64Array, ys: Float64Array, target: number): Promise<Float64Array>;
2
+ export declare function douglasPeucker(xs: Float64Array, ys: Float64Array, epsilon: number): Promise<Uint8Array>;
3
+ export declare function cullByX(xs: Float64Array, x0: number, x1: number): Promise<[number, number]>;
@@ -0,0 +1,14 @@
1
+ export declare const AggregationEventKind: {
2
+ readonly NoEvent: 0;
3
+ readonly MutateLast: 1;
4
+ readonly AppendNew: 2;
5
+ };
6
+ export type AggregationEventKindValue = (typeof AggregationEventKind)[keyof typeof AggregationEventKind];
7
+ export interface AggregationEvent {
8
+ kind: AggregationEventKindValue;
9
+ bucketStartMs: number;
10
+ index: number;
11
+ }
12
+ export declare function createAggregationEventScratch(): AggregationEvent;
13
+ export declare function isMutateLast(e: AggregationEvent): boolean;
14
+ export declare function isAppendNew(e: AggregationEvent): boolean;
@@ -0,0 +1,13 @@
1
+ export { loadEngine, getEnginePing, EngineLoadError } from './module';
2
+ export { parseEngineVersion, isEngineCompatible, ENGINE_COMPATIBILITY, EngineVersionParseError, EngineVersionMismatchError, type EngineVersion, } from './version';
3
+ export { AggregationEventKind, createAggregationEventScratch, isMutateLast, isAppendNew, type AggregationEvent, type AggregationEventKindValue, } from './events';
4
+ export { copyOutF64, copyOutU32, type TypedView, } from './views';
5
+ export { createMarket, type MarketHandle, type MarketKind, } from './markets';
6
+ export { timeAxisWallClock, timeAxisSessionOrdinal, type AxisTick, type TimeAxisHandle, } from './time-axis';
7
+ export { createQuadtree, type QuadtreeHandle, type NearestHit, type RangeHit, } from './quadtree';
8
+ export { sma, ema, wma, rsi, macd, bollinger, atr, stochastic, vwap, IndicatorComputeService, type IndicatorSpecKey, type BollingerOutput, type MacdOutput, type StochasticOutput, } from './indicators';
9
+ export { lttb, douglasPeucker, cullByX, } from './downsampling';
10
+ export { createStreamingEngine, type StreamingEngineHandle, } from './streaming';
11
+ export { createEngineSession, type EngineSession, type CreateEngineSessionOptions, } from './session';
12
+ export { maCrossSignal, rsiSignal, stochasticSignal, macdSignal, bollingerSignal, vwapSignal, confluence, type Signal, type SignalDirection, SIGNAL_BULLISH, SIGNAL_BEARISH, SIGNAL_NEUTRAL, INDICATOR_SMA, INDICATOR_EMA, INDICATOR_WMA, INDICATOR_RSI, INDICATOR_MACD, INDICATOR_BOLLINGER, INDICATOR_ATR, INDICATOR_STOCHASTIC, INDICATOR_VWAP, } from './signals';
13
+ export { aggregateMinutes, type AggregatedSeries, } from './aggregation';
@@ -0,0 +1,37 @@
1
+ export interface BollingerOutput {
2
+ upper: Float64Array;
3
+ middle: Float64Array;
4
+ lower: Float64Array;
5
+ }
6
+ export interface MacdOutput {
7
+ macd: Float64Array;
8
+ signal: Float64Array;
9
+ histogram: Float64Array;
10
+ }
11
+ export interface StochasticOutput {
12
+ k: Float64Array;
13
+ d: Float64Array;
14
+ }
15
+ export declare function sma(closes: Float64Array, period: number): Promise<Float64Array>;
16
+ export declare function ema(closes: Float64Array, period: number): Promise<Float64Array>;
17
+ export declare function wma(closes: Float64Array, period: number): Promise<Float64Array>;
18
+ export declare function rsi(closes: Float64Array, period: number): Promise<Float64Array>;
19
+ export declare function macd(closes: Float64Array, fast: number, slow: number, signal: number): Promise<MacdOutput>;
20
+ export declare function bollinger(closes: Float64Array, period: number, multiplier: number): Promise<BollingerOutput>;
21
+ export declare function atr(highs: Float64Array, lows: Float64Array, closes: Float64Array, period: number): Promise<Float64Array>;
22
+ export declare function stochastic(highs: Float64Array, lows: Float64Array, closes: Float64Array, fastK: number, slowK: number, slowD: number, fast: boolean): Promise<StochasticOutput>;
23
+ export declare function vwap(highs: Float64Array, lows: Float64Array, closes: Float64Array, volumes: Float64Array, sessionStarts: Uint32Array): Promise<Float64Array>;
24
+ export interface IndicatorSpecKey {
25
+ hash: number;
26
+ revisionId: number;
27
+ }
28
+ export declare class IndicatorComputeService<T> {
29
+ readonly capacity: number;
30
+ private readonly entries;
31
+ constructor(capacity?: number);
32
+ private indexOf;
33
+ get(key: IndicatorSpecKey): T | undefined;
34
+ set(key: IndicatorSpecKey, value: T): void;
35
+ clear(): void;
36
+ get size(): number;
37
+ }
@@ -0,0 +1,8 @@
1
+ export type MarketKind = "equity" | "dst-equity" | "crypto-24-7";
2
+ export interface MarketHandle {
3
+ kind: MarketKind;
4
+ inner: import('@abdullahjaswal/tickyr-charts-wasm').Market;
5
+ free(): void;
6
+ [Symbol.dispose](): void;
7
+ }
8
+ export declare function createMarket(kind: MarketKind): Promise<MarketHandle>;
@@ -0,0 +1,8 @@
1
+ type EngineModule = typeof import("@abdullahjaswal/tickyr-charts-wasm");
2
+ export declare class EngineLoadError extends Error {
3
+ readonly name = "EngineLoadError";
4
+ }
5
+ export declare function loadEngine(): Promise<EngineModule>;
6
+ export declare function getEnginePing(): string | null;
7
+ export declare function resetEngineModuleForTests(): void;
8
+ export {};
@@ -0,0 +1,18 @@
1
+ export interface NearestHit {
2
+ id: number;
3
+ x: number;
4
+ y: number;
5
+ }
6
+ export interface RangeHit {
7
+ id: number;
8
+ x: number;
9
+ y: number;
10
+ }
11
+ export interface QuadtreeHandle {
12
+ readonly length: number;
13
+ nearest(x: number, y: number): NearestHit | null;
14
+ rangeQuery(minX: number, minY: number, maxX: number, maxY: number): RangeHit[];
15
+ free(): void;
16
+ [Symbol.dispose](): void;
17
+ }
18
+ export declare function createQuadtree(xyInterleaved: Float64Array, ids: Uint32Array): Promise<QuadtreeHandle>;
@@ -0,0 +1,11 @@
1
+ import { MarketHandle, MarketKind } from './markets';
2
+ export interface EngineSession {
3
+ readonly disposed: boolean;
4
+ readonly market: MarketHandle;
5
+ dispose(): void;
6
+ [Symbol.dispose](): void;
7
+ }
8
+ export interface CreateEngineSessionOptions {
9
+ marketKind: MarketKind;
10
+ }
11
+ export declare function createEngineSession(opts: CreateEngineSessionOptions): Promise<EngineSession>;
@@ -0,0 +1,52 @@
1
+ /** Direction code mirrors `DirectionJs` from the engine. */
2
+ export type SignalDirection = 0 | 1 | 2;
3
+ export declare const SIGNAL_BULLISH: SignalDirection;
4
+ export declare const SIGNAL_BEARISH: SignalDirection;
5
+ export declare const SIGNAL_NEUTRAL: SignalDirection;
6
+ export interface Signal {
7
+ /** 0 = Bullish, 1 = Bearish, 2 = Neutral. */
8
+ readonly direction: SignalDirection;
9
+ /** `[0, 1]` - magnitude of the verdict. */
10
+ readonly strength: number;
11
+ /** `[0, 1]` - interpreter's confidence; 0 means warm-up / NaN. */
12
+ readonly confidence: number;
13
+ }
14
+ /** Indicator codes mirror engine's IndicatorId.code mapping. Used as
15
+ * the `indicator_codes` payload of `confluence`. */
16
+ export declare const INDICATOR_SMA = 0;
17
+ export declare const INDICATOR_EMA = 1;
18
+ export declare const INDICATOR_WMA = 2;
19
+ export declare const INDICATOR_RSI = 3;
20
+ export declare const INDICATOR_MACD = 4;
21
+ export declare const INDICATOR_BOLLINGER = 5;
22
+ export declare const INDICATOR_ATR = 6;
23
+ export declare const INDICATOR_STOCHASTIC = 7;
24
+ export declare const INDICATOR_VWAP = 8;
25
+ /** Moving-average crossover. Bullish when close crosses MA from below
26
+ * AND momentum confirms; bearish on the inverse. **NOT FINANCIAL ADVICE.** */
27
+ export declare function maCrossSignal(closeAt: number, closePrev: number, maAt: number, maPrev: number): Promise<Signal>;
28
+ /** RSI signal. Oversold → Bullish, overbought → Bearish, in-band →
29
+ * Neutral. **NOT FINANCIAL ADVICE.** */
30
+ export declare function rsiSignal(rsiAt: number, oversold: number, overbought: number): Promise<Signal>;
31
+ /** Stochastic signal. Same oversold/overbought logic on the K line.
32
+ * **NOT FINANCIAL ADVICE.** */
33
+ export declare function stochasticSignal(kAt: number, oversold: number, overbought: number): Promise<Signal>;
34
+ /** MACD signal. Histogram sign + slope (Appel 2005). **NOT FINANCIAL ADVICE.** */
35
+ export declare function macdSignal(histAt: number, histPrev: number): Promise<Signal>;
36
+ /** Bollinger Bands signal - mean-reversion convention. Close near or
37
+ * past upper band ⇒ Bearish; close near or past lower band ⇒ Bullish;
38
+ * inside ⇒ Neutral. **NOT FINANCIAL ADVICE.** */
39
+ export declare function bollingerSignal(close: number, upper: number, lower: number): Promise<Signal>;
40
+ /** VWAP signal - close above VWAP ⇒ Bullish, below ⇒ Bearish, equal ⇒
41
+ * Neutral. **NOT FINANCIAL ADVICE.** */
42
+ export declare function vwapSignal(close: number, vwapAt: number): Promise<Signal>;
43
+ /** Confluence - combine N indicator signals into one via weighted vote.
44
+ * All input arrays are parallel + row-major.
45
+ *
46
+ * - `indicatorCodes` - one of the `INDICATOR_*` constants per signal.
47
+ * - `directionCodes` - Bullish (0) / Bearish (1) / Neutral (2).
48
+ * - `strengths`, `confidences` - `[0, 1]` per signal.
49
+ * - `weightCodes`, `weightValues` - indicator → weight, sorted parallel.
50
+ *
51
+ * Throws on length mismatch. **NOT FINANCIAL ADVICE.** */
52
+ export declare function confluence(indicatorCodes: Uint8Array, directionCodes: Uint8Array, strengths: Float64Array, confidences: Float64Array, weightCodes: Uint8Array, weightValues: Float64Array): Promise<Signal>;
@@ -0,0 +1,20 @@
1
+ import { MarketHandle } from './markets';
2
+ import { AggregationEvent } from './events';
3
+ export interface StreamingEngineHandle {
4
+ readonly length: number;
5
+ pushTick(tsMs: number, priceRaw: number, volumeRaw: number, out: AggregationEvent): void;
6
+ reset(): void;
7
+ setAnomalyPolicy(maxRelativePriceJump: number, rejectZeroVolumeTrade: boolean, clockSkewToleranceMs: number, maxGapMs: number): void;
8
+ setAuditCallback(callback: ((...args: unknown[]) => void) | null): void;
9
+ setTelemetryCallback(callback: ((...args: unknown[]) => void) | null): void;
10
+ free(): void;
11
+ [Symbol.dispose](): void;
12
+ }
13
+ export declare function createStreamingEngine(opts: {
14
+ timeframeMinutes: number;
15
+ capacity: number;
16
+ market: MarketHandle;
17
+ minPriceRaw: number;
18
+ maxPriceRaw: number;
19
+ maxVolumeRaw: number;
20
+ }): Promise<StreamingEngineHandle>;
@@ -0,0 +1,16 @@
1
+ import { MarketHandle } from './markets';
2
+ export interface AxisTick {
3
+ atMs: number;
4
+ kind: number;
5
+ label: string;
6
+ }
7
+ export interface TimeAxisHandle {
8
+ position(tMs: number): number;
9
+ inversePosition(p: number): number;
10
+ ticks(viewportPxWidth: number): AxisTick[];
11
+ visibleSpanMs(): number;
12
+ free(): void;
13
+ [Symbol.dispose](): void;
14
+ }
15
+ export declare function timeAxisWallClock(startMs: number, endMs: number): Promise<TimeAxisHandle>;
16
+ export declare function timeAxisSessionOrdinal(startMs: number, endMs: number, market: MarketHandle): Promise<TimeAxisHandle>;
@@ -0,0 +1,16 @@
1
+ export type EngineVersion = `${number}.${number}.${number}`;
2
+ export declare const ENGINE_COMPATIBILITY: {
3
+ readonly major: 0;
4
+ readonly minorMin: 1;
5
+ readonly minorMax: number;
6
+ };
7
+ export declare function parseEngineVersion(pingToken: string): EngineVersion;
8
+ export declare function isEngineCompatible(version: EngineVersion): boolean;
9
+ export declare class EngineVersionParseError extends Error {
10
+ readonly name = "EngineVersionParseError";
11
+ constructor(token: string);
12
+ }
13
+ export declare class EngineVersionMismatchError extends Error {
14
+ readonly name = "EngineVersionMismatchError";
15
+ constructor(actual: string);
16
+ }
@@ -0,0 +1,3 @@
1
+ export type TypedView<T extends ArrayBufferView> = T;
2
+ export declare function copyOutF64(view: Float64Array): Float64Array;
3
+ export declare function copyOutU32(view: Uint32Array): Uint32Array;