type Nullable = Result | null; interface Indicator { isStable: boolean; add(input: Input): Nullable; getRequiredInputs(): number; getResult(): Nullable; getResultOrThrow(): Result; replace(input: Input): Nullable; update(input: Input, replace: boolean): Nullable; updates(input: Input[], replace: boolean): Nullable[]; } export declare const TradingSignal: { readonly BEARISH: 'BEARISH'; readonly BULLISH: 'BULLISH'; readonly SIDEWAYS: 'SIDEWAYS'; readonly UNKNOWN: 'UNKNOWN'; }; export type TradingSignals = (typeof TradingSignal)[keyof typeof TradingSignal]; export declare abstract class TechnicalIndicator implements Indicator { protected result: Result | undefined; abstract getRequiredInputs(): number; getResult(): (Result & {}) | null; getResultOrThrow(): Result & ({} | null); get isStable(): boolean; add(input: Input): Result | null; replace(input: Input): Result | null; abstract update(input: Input, replace: boolean): Result | null; updates(inputs: readonly Input[], replace?: boolean): (Result | null)[]; } export declare abstract class IndicatorSeries extends TechnicalIndicator { protected previousResult?: number; protected setResult(value: number, replace: boolean): number; protected rollbackLastResult(): void; } export declare abstract class TrendIndicatorSeries extends IndicatorSeries { #private; protected abstract calculateSignalState(result?: number | null | undefined): SignalState; protected setResult(value: number, replace: boolean): number; getSignal(): { state: SignalState; hasChanged: boolean; }; } export {};