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.
*/
var FinancialCalculationSupportingCalculations = /** @class */ (function () {
    function FinancialCalculationSupportingCalculations() {
        this._implementation = this.createImplementation();
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    }
    FinancialCalculationSupportingCalculations.prototype.createImplementation = function () {
        return new FinancialCalculationSupportingCalculations_internal();
    };
    Object.defineProperty(FinancialCalculationSupportingCalculations.prototype, "i", {
        get: function () {
            return this._implementation;
        },
        enumerable: true,
        configurable: true
    });
    FinancialCalculationSupportingCalculations.prototype.onImplementationCreated = function () {
    };
    FinancialCalculationSupportingCalculations.prototype._provideImplementation = function (i) {
        this._implementation = i;
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    };
    Object.defineProperty(FinancialCalculationSupportingCalculations.prototype, "eMA", {
        /**
         * The strategy provided to calculate an exponential moving average for a collection.
        */
        get: function () {
            if (this.i.a == null) {
                return null;
            }
            return this.i.a.externalObject;
        },
        set: function (v) {
            v == null ? this.i.a = null : this.i.a = v.i;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(FinancialCalculationSupportingCalculations.prototype, "sMA", {
        /**
         * The strategy provided to calculate a simple moving average for a collection.
        */
        get: function () {
            if (this.i.c == null) {
                return null;
            }
            return this.i.c.externalObject;
        },
        set: function (v) {
            v == null ? this.i.c = null : this.i.c = v.i;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(FinancialCalculationSupportingCalculations.prototype, "sTDEV", {
        /**
         * The strategy provided to calculate a standard deviation for a collection.
        */
        get: function () {
            if (this.i.d == null) {
                return null;
            }
            return this.i.d.externalObject;
        },
        set: function (v) {
            v == null ? this.i.d = null : this.i.d = v.i;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(FinancialCalculationSupportingCalculations.prototype, "movingSum", {
        /**
         * The strategy provided to calculate a moving sum for a collection.
        */
        get: function () {
            if (this.i.b == null) {
                return null;
            }
            return this.i.b.externalObject;
        },
        set: function (v) {
            v == null ? this.i.b = null : this.i.b = v.i;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(FinancialCalculationSupportingCalculations.prototype, "shortVolumeOscillatorAverage", {
        /**
         * The strategy provided to calculate the short period moving average for volume oscillator indicators.
        */
        get: function () {
            if (this.i.h == null) {
                return null;
            }
            return this.i.h.externalObject;
        },
        set: function (v) {
            v == null ? this.i.h = null : this.i.h = v.i;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(FinancialCalculationSupportingCalculations.prototype, "longVolumeOscillatorAverage", {
        /**
         * The strategy provided to calculate the long period moving average for volume oscillator indicators.
        */
        get: function () {
            if (this.i.f == null) {
                return null;
            }
            return this.i.f.externalObject;
        },
        set: function (v) {
            v == null ? this.i.f = null : this.i.f = v.i;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(FinancialCalculationSupportingCalculations.prototype, "shortPriceOscillatorAverage", {
        /**
         * The strategy provided to calculate the short period moving average for price oscillator indicators.
        */
        get: function () {
            if (this.i.g == null) {
                return null;
            }
            return this.i.g.externalObject;
        },
        set: function (v) {
            v == null ? this.i.g = null : this.i.g = v.i;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(FinancialCalculationSupportingCalculations.prototype, "longPriceOscillatorAverage", {
        /**
         * The strategy provided to calculate the long period moving average for price oscillator indicators.
        */
        get: function () {
            if (this.i.e == null) {
                return null;
            }
            return this.i.e.externalObject;
        },
        set: function (v) {
            v == null ? this.i.e = null : this.i.e = v.i;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(FinancialCalculationSupportingCalculations.prototype, "makeSafe", {
        /**
         * The strategy provided to make doubles safe for plotting, by default will just make zero if the value
         * is invalid.
        */
        get: function () {
            return this.i.i;
        },
        set: function (v) {
            this.i.i = v;
        },
        enumerable: true,
        configurable: true
    });
    return FinancialCalculationSupportingCalculations;
}());
export { FinancialCalculationSupportingCalculations };
//# sourceMappingURL=igx-financial-calculation-supporting-calculations.js.map