/** * TimeScale — business-day / session-aware X mapping for trading charts. * Stage 2.1–2.3 */ export type TimeScaleCalendar = "continuous" | "business-day"; export type MarketSession = "24x7" | "NYSE"; export interface TimeScaleOptions { calendar?: TimeScaleCalendar; session?: MarketSession; /** IANA timezone (reserved for future session-hour filtering) */ timezone?: string; } export interface BusinessDayMapping { /** X values for chart (consecutive indices on business days) */ scaledX: Float64Array; /** Original timestamp per scaled index (for tooltips / ticks) */ timeByIndex: Float64Array; /** Original index → scaled index (-1 if skipped) */ sourceToScaled: Int32Array; } /** Weekend check (NYSE calendar MVP — UTC weekends). */ export declare function isBusinessDay(ts: number, _opts?: TimeScaleOptions): boolean; /** * Map timestamp series to consecutive business-day indices (skips Sat/Sun bars). * NaN in scaledX marks non-business bars (hidden gap). */ export declare function mapToBusinessDayScale(times: Float32Array | Float64Array, opts?: TimeScaleOptions): BusinessDayMapping; /** Resolve timestamp at a scaled business-day index (for axis ticks). */ export declare function timeAtBusinessIndex(mapping: BusinessDayMapping, index: number): number | undefined; /** Visible span in ms using business-day mapping. */ export declare function businessDaySpanMs(mapping: BusinessDayMapping, xMin: number, xMax: number): number;