import type { Bar } from '../../api/types'; export declare class DataSource { /** Bars sorted by time ascending */ private bars; /** Map timestamp → index for O(1) lookup */ private timeIndex; get length(): number; get first(): Bar | undefined; get last(): Bar | undefined; /** Replace all data */ setData(bars: Bar[]): void; /** Add bars to the beginning (scroll-back / history load) */ prepend(bars: Bar[]): void; /** Add or update the last bar (real-time tick) */ updateLast(bar: Bar): void; /** Get bar at index */ getBar(index: number): Bar | undefined; /** Get bar by timestamp */ getBarByTime(time: number): Bar | undefined; /** Get index of bar by timestamp (or -1) */ indexOfTime(time: number): number; /** * Find the bar index nearest to a given timestamp. * Uses binary search for O(log n). */ nearestIndex(time: number): number; /** Get slice of bars by index range [from, to) */ getRange(from: number, to: number): Bar[]; /** Get all bars whose time is within [timeFrom, timeTo] */ getRangeByTime(timeFrom: number, timeTo: number): Bar[]; /** Get min/max price in an index range [from, to) */ getPriceRange(from: number, to: number): { min: number; max: number; } | null; /** Get max volume in an index range [from, to) */ getMaxVolume(from: number, to: number): number; /** Get all bars (readonly view) */ getAllBars(): readonly Bar[]; private rebuildIndex; }