import { FinancialCalculationSupportingCalculations as FinancialCalculationSupportingCalculations_internal } from "./FinancialCalculationSupportingCalculations";
/**
 * Represents a contract between the financial series and the calculation strategies
 * detailing the supporting calculation strategies that the financial series will
 * provide in order for the indicator calculations to be performed.
*/
export class IgxFinancialCalculationSupportingCalculations {
    createImplementation() {
        return new FinancialCalculationSupportingCalculations_internal();
    }
    /**
     * @hidden
     */
    get i() {
        return this._implementation;
    }
    onImplementationCreated() {
    }
    constructor() {
        this._implementation = this.createImplementation();
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    }
    _provideImplementation(i) {
        this._implementation = i;
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    }
    /**
     * The strategy provided to calculate an exponential moving average for a collection.
    */
    get eMA() {
        if (this.i.a == null) {
            return null;
        }
        return this.i.a.externalObject;
    }
    set eMA(v) {
        v == null ? this.i.a = null : this.i.a = v.i;
    }
    /**
     * The strategy provided to calculate a simple moving average for a collection.
    */
    get sMA() {
        if (this.i.c == null) {
            return null;
        }
        return this.i.c.externalObject;
    }
    set sMA(v) {
        v == null ? this.i.c = null : this.i.c = v.i;
    }
    /**
     * The strategy provided to calculate a standard deviation for a collection.
    */
    get sTDEV() {
        if (this.i.d == null) {
            return null;
        }
        return this.i.d.externalObject;
    }
    set sTDEV(v) {
        v == null ? this.i.d = null : this.i.d = v.i;
    }
    /**
     * The strategy provided to calculate a moving sum for a collection.
    */
    get movingSum() {
        if (this.i.b == null) {
            return null;
        }
        return this.i.b.externalObject;
    }
    set movingSum(v) {
        v == null ? this.i.b = null : this.i.b = v.i;
    }
    /**
     * The strategy provided to calculate the short period moving average for volume oscillator indicators.
    */
    get shortVolumeOscillatorAverage() {
        if (this.i.h == null) {
            return null;
        }
        return this.i.h.externalObject;
    }
    set shortVolumeOscillatorAverage(v) {
        v == null ? this.i.h = null : this.i.h = v.i;
    }
    /**
     * The strategy provided to calculate the long period moving average for volume oscillator indicators.
    */
    get longVolumeOscillatorAverage() {
        if (this.i.f == null) {
            return null;
        }
        return this.i.f.externalObject;
    }
    set longVolumeOscillatorAverage(v) {
        v == null ? this.i.f = null : this.i.f = v.i;
    }
    /**
     * The strategy provided to calculate the short period moving average for price oscillator indicators.
    */
    get shortPriceOscillatorAverage() {
        if (this.i.g == null) {
            return null;
        }
        return this.i.g.externalObject;
    }
    set shortPriceOscillatorAverage(v) {
        v == null ? this.i.g = null : this.i.g = v.i;
    }
    /**
     * The strategy provided to calculate the long period moving average for price oscillator indicators.
    */
    get longPriceOscillatorAverage() {
        if (this.i.e == null) {
            return null;
        }
        return this.i.e.externalObject;
    }
    set longPriceOscillatorAverage(v) {
        v == null ? this.i.e = null : this.i.e = v.i;
    }
    /**
     * The strategy provided to make doubles safe for plotting, by default will just make zero if the value
     * is invalid.
    */
    get makeSafe() {
        return this.i.i;
    }
    set makeSafe(v) {
        this.i.i = v;
    }
}
//# sourceMappingURL=igx-financial-calculation-supporting-calculations.js.map