import { MACD as MACDIndicator } from 'technicalindicators';
import { OHLC, OHLCEnum } from '../types';
import { IndicatorInput, Indicator } from './base-indicator';
export interface MovingAverageConvergenceDivergenceInput extends IndicatorInput {
    source?: OHLCEnum;
    signalPeriod?: number;
    fastPeriod?: number;
    slowPeriod?: number;
    simpleMAOscillator?: boolean;
    simpleMASignal?: boolean;
}
export interface MovingAverageConvergenceDivergenceOutput {
    MACD?: number;
    signal?: number;
    histogram?: number;
}
/**
 * Moving average convergence divergence (MACD) is a trend-following momentum
 * indicator that shows the relationship between two moving averages of a
 * security’s price. The MACD is calculated by subtracting the 26-period
 * exponential moving average (EMA) from the 12-period EMA. The result of that
 * calculation is the MACD line. A nine-day EMA of the MACD called the
 * "signal line," is then plotted on top of the MACD line, which can function
 * as a trigger for buy and sell signals. Traders may buy the security when the
 * MACD crosses above its signal line and sell—or short—the security when the
 * MACD crosses below the signal line. Moving average convergence divergence
 * (MACD) indicators can be interpreted in several ways, but the more common
 * methods are crossovers, divergences, and rapid rises/falls.
 */
export declare class MACD implements Indicator {
    indicator: MACDIndicator;
    source: OHLCEnum;
    /**
     *
     * @param {OHLC[]} series candle series
     * @param {OHLCEnum} source source values from candle
     * @param {number} fastPeriod
     * @param {number} slowPeriod
     * @param {number} signalPeriod signal line period
     * @param {boolean} simpleMAOscillator use simple MA for Oscillator
     * @param {boolean} simpleMASignal use simple MA for Signal
     */
    constructor(series: OHLC[], source?: OHLCEnum, fastPeriod?: number, slowPeriod?: number, signalPeriod?: number, simpleMAOscillator?: boolean, simpleMASignal?: boolean);
    /**
     * Retrieve MACD values for instance
     * @return {MovingAverageConvergenceDivergenceOutput[]} values for instance
     * data
     */
    getResults(): MovingAverageConvergenceDivergenceOutput[];
    /**
     * Calculate MACD to next tick
     * @param {OHLC} candle new candle to add to series
     * @return {MovingAverageConvergenceDivergenceOutput | undefined} next MACD
     * value or undefined if period is greater than actual series length
     */
    next(candle: OHLC): MovingAverageConvergenceDivergenceOutput | undefined;
    /**
     * Create instance from data
     * @param {MovingAverageConvergenceDivergenceInput} input input data
     * @return {MACD} MACD instance
     */
    static generator({ series, source, fastPeriod, slowPeriod, signalPeriod, simpleMAOscillator, simpleMASignal, }: MovingAverageConvergenceDivergenceInput): MACD;
    /**
     * Get MACD values from input
     * @param {MovingAverageConvergenceDivergenceInput} input input data
     * @return {MovingAverageConvergenceDivergenceOutput[]} MACD values
     */
    static calculate(input: MovingAverageConvergenceDivergenceInput): MovingAverageConvergenceDivergenceOutput[];
}
