import { DerivativesInterval, SpreadRow, Candle } from '@tradejs/types'; type NumericHistoryBuffer = { values: number[]; start: number; size: number; }; type RollingWindowState = { period: number; values: number[]; sum: number; }; type SerializableSmaState = RollingWindowState; type SerializableEmaState = { period: number; exponent: number; current: number | null; seedSma: SerializableSmaState; }; type SerializableObvState = { current: number; lastClose: number | null; }; type SerializableAtrState = { period: number; prevClose: number | null; wema: SerializableEmaState; }; type SerializablePsarState = { start: number; increment: number; maximum: number; initialized: boolean; isLong: boolean | null; sar: number | null; extremePoint: number | null; acceleration: number; previousHigh: number | null; previousLow: number | null; previousPreviousHigh: number | null; previousPreviousLow: number | null; previousClose: number | null; }; type SerializableRsiState = { period: number; previousValue: number | null; gains: number[]; losses: number[]; avgGain: number; avgLoss: number; initialized: boolean; }; type SerializableAdxState = { period: number; smoothingPeriod: number; previousHigh: number | null; previousLow: number | null; previousClose: number | null; plusDMValues: number[]; minusDMValues: number[]; trValues: number[]; smoothedPlusDM: number | null; smoothedMinusDM: number | null; smoothedTR: number | null; smaSum: number; smaCount: number; adxEMA: number | null; }; type SerializableSdState = { period: number; values: number[]; sum: number; sumSquares: number; }; type SerializableBollingerState = { period: number; stdDev: number; sma: SerializableSmaState; sd: SerializableSdState; }; type SerializableMacdState = { fastPeriod: number; slowPeriod: number; signalPeriod: number; fast: SerializableEmaState | SerializableSmaState; slow: SerializableEmaState | SerializableSmaState; signal: SerializableEmaState | SerializableSmaState; simpleOscillator: boolean; simpleSignal: boolean; index: number; }; type SpreadValue = number | null | undefined; type SpreadPointInput = { timestamp: number; spread?: SpreadValue; binancePrice?: SpreadValue; coinbasePrice?: SpreadValue; }; declare const createSpreadSmoother: (window?: number) => { next: (params: { binancePrice?: SpreadValue; coinbasePrice?: SpreadValue; fallbackSpread?: SpreadValue; }) => number | null; }; type SpreadSmootherState = { binanceWindow: number[]; coinbaseWindow: number[]; binanceSum: number; coinbaseSum: number; }; declare const createSerializableSpreadSmoother: (window?: number, state?: Partial) => { next: (params: { binancePrice?: SpreadValue; coinbasePrice?: SpreadValue; fallbackSpread?: SpreadValue; }) => number | null; snapshot: () => SpreadSmootherState; }; declare const smoothSpreadSeries: (points: SpreadPointInput[], window?: number) => Array<{ timestamp: number; spread: number | null; }>; type PricePoint = { ts: number; close: number; }; declare const intervalToMs: (interval: DerivativesInterval) => number; declare const coinbaseProductFromSymbol: (symbol: string) => string | null; declare const alignSpreadRows: (params: { symbol: string; interval: DerivativesInterval; binance: PricePoint[]; coinbase: PricePoint[]; source: string; }) => SpreadRow[]; declare const rollingMeanStd: (values: number[], endIndex: number, window: number) => { mean: number; std: number; }; interface IndicatorPeriods { maFast: number; maMedium: number; maSlow: number; obvSma: number; atr: number; atrPctShort: number; atrPctLong: number; bb: number; bbStd: number; macdFast: number; macdSlow: number; macdSignal: number; levelLookback: number; levelDelay: number; } type CloseStreakRuntimeState = { up: number; down: number; }; type BreakoutRuntimeState = { side: 'high' | 'low' | null; barsSinceBreakout: number | null; }; type IndicatorRuntimeState = { maFast: SerializableSmaState; maMedium: SerializableSmaState; maSlow: SerializableSmaState; atr: SerializableAtrState; atrPctShort: SerializableSmaState; atrPctLong: SerializableSmaState; bb: SerializableBollingerState; obv: SerializableObvState; smaObv: SerializableSmaState; macd: SerializableMacdState; rsi: SerializableRsiState; adx: SerializableAdxState; baseContextHl2Ema: Record; baseContextCloseEma34: SerializableEmaState; baseContextTypicalSma20: SerializableSmaState; baseContextAdaptivePreviousCenterline: number | null; baseContextPsar: SerializablePsarState; baseContextPsarEma50: SerializableEmaState; baseContextPsarFilterBarsSinceSignal: number | null; btcMaFast: SerializableSmaState; btcMaSlow: SerializableSmaState; spreadSmoother: SpreadSmootherState; }; type IndicatorsControllerRuntimeState = { indicatorState: IndicatorRuntimeState; indicatorHistory: Record; btcRuntimeHistory: Record; latestIndicatorValues: Record; rawCoinCandles: Candle[]; rawBtcCandles: Candle[]; rawEthCandles?: Candle[]; coinResampledCandles: { h1: Candle[]; h4: Candle[]; d1: Candle[]; }; btcResampledCandles: { h1: Candle[]; h4: Candle[]; d1: Candle[]; }; ethResampledCandles?: { h1: Candle[]; h4: Candle[]; d1: Candle[]; }; closeStreaks: CloseStreakRuntimeState; breakoutState: BreakoutRuntimeState; btcCloses: number[]; btcBinanceCursor: number; btcCoinbaseCursor: number; }; type IndicatorsControllerCheckpointState = Pick & Partial>; export { type IndicatorPeriods as I, type PricePoint as P, type SpreadSmootherState as S, type IndicatorsControllerRuntimeState as a, type IndicatorsControllerCheckpointState as b, type IndicatorRuntimeState as c, alignSpreadRows as d, coinbaseProductFromSymbol as e, createSerializableSpreadSmoother as f, createSpreadSmoother as g, intervalToMs as i, rollingMeanStd as r, smoothSpreadSeries as s };