import type { HighLowClose } from '../../base/Candle.type.js';
import { TechnicalIndicator, TradingSignal } from '../../base/Indicator.js';
import type { SignalThresholds } from '../../base/SignalThresholds.type.js';
export type StochasticResult = {
    stochD: number;
    stochK: number;
};
export type StochasticOscillatorConfig = {
    dPeriod: number;
    kPeriod: number;
    kSlowingPeriod: number;
};
export declare class StochasticOscillator extends TechnicalIndicator<StochasticResult, HighLowClose<number>> {
    #private;
    readonly candles: HighLowClose<number>[];
    readonly kPeriod: number;
    readonly kSlowingPeriod: number;
    readonly dPeriod: number;
    constructor({ dPeriod, kPeriod, kSlowingPeriod }: StochasticOscillatorConfig, { overbought, oversold }?: SignalThresholds);
    getRequiredInputs(): number;
    update(candle: HighLowClose<number>, replace: boolean): {
        stochD: number;
        stochK: number;
    } | null;
    protected calculateSignal(result?: StochasticResult | null | undefined): "BEARISH" | "BULLISH" | "SIDEWAYS" | "UNKNOWN";
    getSignal(): {
        state: (typeof TradingSignal)[keyof typeof TradingSignal];
        hasChanged: boolean;
    };
}
