import type { LivelinePalette, ChartLayout, LivelinePoint, Momentum, ReferenceLine, OrderbookData, DegenOptions, CandlePoint } from '../types'; import { type GridState } from './grid'; import type { MultiSeriesHoverEntry } from './crosshair'; import { type TimeAxisState } from './timeAxis'; import { type OrderbookState } from './orderbook'; import { type ParticleState } from './particles'; export declare const FADE_EDGE_WIDTH = 40; export interface ArrowState { up: number; down: number; } export interface ShakeState { amplitude: number; } export declare function createShakeState(): ShakeState; export interface DrawOptions { visible: LivelinePoint[]; smoothValue: number; now: number; momentum: Momentum; arrowState: ArrowState; showGrid: boolean; showMomentum: boolean; showPulse: boolean; showFill: boolean; referenceLine?: ReferenceLine; hoverX: number | null; hoverValue: number | null; hoverTime: number | null; scrubAmount: number; windowSecs: number; formatValue: (v: number) => string; formatTime: (t: number) => string; gridState: GridState; timeAxisState: TimeAxisState; dt: number; targetWindowSecs: number; tooltipY: number; tooltipOutline: boolean; orderbookData?: OrderbookData; orderbookState?: OrderbookState; particleState?: ParticleState; particleOptions?: DegenOptions; swingMagnitude: number; shakeState?: ShakeState; chartReveal: number; pauseProgress: number; now_ms: number; } /** * Master draw function — calls each draw module in order. * Mutates arrowState in place. */ export declare function drawFrame(ctx: CanvasRenderingContext2D, layout: ChartLayout, palette: LivelinePalette, opts: DrawOptions): void; export interface MultiSeriesEntry { visible: LivelinePoint[]; smoothValue: number; palette: LivelinePalette; label?: string; alpha?: number; } export interface MultiSeriesDrawOptions { series: MultiSeriesEntry[]; now: number; showGrid: boolean; showPulse: boolean; referenceLine?: ReferenceLine; hoverX: number | null; hoverTime: number | null; hoverEntries: MultiSeriesHoverEntry[]; scrubAmount: number; windowSecs: number; formatValue: (v: number) => string; formatTime: (t: number) => string; gridState: GridState; timeAxisState: TimeAxisState; dt: number; targetWindowSecs: number; tooltipY: number; tooltipOutline: boolean; chartReveal: number; pauseProgress: number; now_ms: number; /** Primary palette (from first series) for grid/axis/crosshair colors */ primaryPalette: LivelinePalette; } /** * Multi-series draw function — draws multiple overlapping lines sharing the same axes. * No fill, no momentum arrows, no badge (those are per-chart concerns handled by the engine). */ export declare function drawMultiFrame(ctx: CanvasRenderingContext2D, layout: ChartLayout, opts: MultiSeriesDrawOptions): void; export interface CandleDrawOptions { candles: CandlePoint[]; displayCandleWidth: number; oldCandles: CandlePoint[]; oldWidth: number; morphT: number; liveCandle?: CandlePoint; /** Pre-blend live candle for the dashed close-price line (unaffected by line mode morph) */ closePriceCandle?: CandlePoint; liveTime: number; liveBirthAlpha: number; liveBullBlend: number; lineModeProg: number; chartReveal: number; now_ms: number; now: number; pauseProgress: number; showGrid: boolean; scrubAmount: number; hoverX: number | null; hoverValue: number | null; hoverTime: number | null; hoveredCandle: CandlePoint | null; formatValue: (v: number) => string; formatTime: (t: number) => string; gridState: GridState; timeAxisState: TimeAxisState; dt: number; targetWindowSecs: number; tooltipY: number; tooltipOutline: boolean; lineVisible: LivelinePoint[]; lineSmoothValue: number; emptyText?: string; loadingAlpha: number; showEmptyOverlay: boolean; } /** * Candlestick draw orchestrator — calls each draw module in the correct * order for candle mode. Pure drawing function, no state management. */ export declare function drawCandleFrame(ctx: CanvasRenderingContext2D, layout: ChartLayout, palette: LivelinePalette, opts: CandleDrawOptions): void; //# sourceMappingURL=index.d.ts.map