import { __extends } from "tslib";
import { delegateCombine, delegateRemove } from "igniteui-react-core";
import { IgrCategoryAxisBase } from "./igr-category-axis-base";
import { IgrNumericYAxis } from "./igr-numeric-y-axis";
import { CategoryTransitionInMode_$type } from "./CategoryTransitionInMode";
import { IgrAssigningCategoryStyleEventArgs } from "./igr-assigning-category-style-event-args";
import { IgrFinancialEventArgs } from "./igr-financial-event-args";
import { IgrSeries } from "./igr-series";
import { ensureBool, brushToString, stringToBrush, ensureEnum, toPoint, fromPoint } from "igniteui-react-core";
/**
 * Represents the base class for all financial indicator and overlay series.
*
* The `FinancialSeries` represents the base class for all financial indicator and overlay series.
*
* ```ts
* <IgrDataChart
*     dataSource={this.state.dataSource}
*     width="700px"
*     height="500px">
*
*
*     <IgrCategoryXAxis name="xAxis" label="Date" />
*     <IgrNumericYAxis  name="yAxis" />
*
*
*     <IgrFinancialPriceSeries
*     name="series2"
*     xAxisName="xAxis"
*     yAxisName="yAxis"
*     displayType="Candlestick"
*     lowMemberPath="Low"
*     highMemberPath="High"
*     openMemberPath="Open"
*     closeMemberPath="Close"
*     volumeMemberPath="Volume" />
*
*  </IgrDataChart>
* ```
*
* ```ts
* this.financialSeries = new IgrFinancialPriceSeries({name: "financialSeries"});
* this.financialSeries.dataSource = this.financialData;
* this.financialSeries.xAxis = this.timeXAxis;
* this.financialSeries.yAxis = this.numericYAxis;
* this.financialSeries.xAxisName = "timeXAxis";
* this.financialSeries.yAxisName = "numericYAxis";
* this.financialSeries.highMemberPath="High" ;
* this.financialSeries.lowMemberPath="Low" ;
* this.financialSeries.closeMemberPath="Close" ;
* this.financialSeries.openMemberPath="Open";
* this.financialSeries.volumeMemberPath="Volume";
* ```
*/
var IgrFinancialSeries = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(IgrFinancialSeries, _super);
    function IgrFinancialSeries(props) {
        var _this = _super.call(this, props) || this;
        _this._xAxisName = null;
        _this._yAxisName = null;
        _this._assigningCategoryStyle = null;
        _this._assigningCategoryStyle_wrapped = null;
        _this._typical = null;
        _this._typical_wrapped = null;
        _this._typicalBasedOn = null;
        _this._typicalBasedOn_wrapped = null;
        return _this;
    }
    Object.defineProperty(IgrFinancialSeries.prototype, "i", {
        /**
                                     * @hidden
                                     */
        get: function () {
            return this._implementation;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "isFinancial", {
        /**
         * Gets whether the current series is a financial type series.
        */
        get: function () {
            return this.i.el;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "negativeBrush", {
        /**
         * Gets or sets the brush to use for negative portions of the series.
        *
        * The `NegativeBrush` property is used to brush the negative portions of the series.
        *
        * ```ts
        * <IgrDataChart
        *     dataSource={this.state.dataSource}
        *     width="700px"
        *     height="500px">
        *
        *
        *     <IgrCategoryXAxis name="xAxis" label="Date" />
        *     <IgrNumericYAxis  name="yAxis" />
        *
        *
        *     <IgrFinancialPriceSeries
        *     name="series2"
        *     xAxisName="xAxis"
        *     yAxisName="yAxis"
        *     displayType="Candlestick"
        *     lowMemberPath="Low"
        *     highMemberPath="High"
        *     openMemberPath="Open"
        *     closeMemberPath="Close"
        *     volumeMemberPath="Volume"
        * 	negativeBrush="Red" />
        *  </IgrDataChart>
        * ```
        *
        * ```ts
        * series.negativeBrush="red";
        * ```
        */
        get: function () {
            return brushToString(this.i.x1);
        },
        set: function (v) {
            this.i.x1 = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "hasValueAxis", {
        get: function () {
            return this.i.d0;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "isValueAxisInverted", {
        get: function () {
            return this.i.fj;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "xAxis", {
        /**
         * Gets or sets the effective x-axis for the current FinancialSeries object.
        *
        * Use `XAxis` property to set effective x-axis for the current FinancialSeries object.
        *
        * ```ts
        * <IgrDataChart
        *     dataSource={this.state.dataSource}
        *     width="700px"
        *     height="500px">
        *
        *
        *     <IgrCategoryXAxis name="xAxis" label="Date" />
        *     <IgrNumericYAxis  name="yAxis" />
        *
        *
        *     <IgrFinancialPriceSeries
        *     name="series2"
        *     xAxisName="xAxis"
        *     yAxisName="yAxis"
        *     displayType="Candlestick"
        *     lowMemberPath="Low"
        *     highMemberPath="High"
        *     openMemberPath="Open"
        *     closeMemberPath="Close"
        *     volumeMemberPath="Volume" />
        *  </IgrDataChart>
        * ```
        *
        * ```ts
        * this.financialSeries = new IgrFinancialPriceSeries({name: "financialSeries"});
        * this.financialSeries.dataSource = this.financialData;
        * this.financialSeries.xAxis = this.timeXAxis;
        * this.financialSeries.yAxis = this.numericYAxis;
        * this.financialSeries.xAxisName = "timeXAxis";
        * this.financialSeries.yAxisName = "numericYAxis";
        * this.financialSeries.highMemberPath="High" ;
        * this.financialSeries.lowMemberPath="Low";
        * this.financialSeries.closeMemberPath="Close";
        * this.financialSeries.openMemberPath="Open";
        * this.financialSeries.volumeMemberPath="Volume";
        * ```
        */
        get: function () {
            var r = this.i.ub;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = IgrCategoryAxisBase._createFromInternal(r);
                if (e) {
                    e._implementation = r;
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        set: function (v) {
            if (v != null && this._stylingContainer && v._styling)
                v._styling(this._stylingContainer, this, this);
            v == null ? this.i.ub = null : this.i.ub = v.i;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "xAxisName", {
        /**
        * Gets or sets the name to use to resolve xAxis from markup.
        */
        get: function () {
            return this._xAxisName;
        },
        set: function (v) {
            this._xAxisName = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "yAxis", {
        /**
         * Gets or sets the effective y-axis for the current FinancialSeries object.
        *
        * Use `YAxis` property to set the effective y-axis for the current FinancialSeries object.
        *
        * ```ts
        * <IgrDataChart
        *     dataSource={this.state.dataSource}
        *     width="700px"
        *     height="500px">
        *
        *
        *     <IgrCategoryXAxis name="xAxis" label="Date" />
        *     <IgrNumericYAxis  name="yAxis" />
        *
        *
        *     <IgrFinancialPriceSeries
        *     name="series2"
        *     xAxisName="xAxis"
        *     yAxisName="yAxis"
        *     displayType="Candlestick"
        *     lowMemberPath="Low"
        *     highMemberPath="High"
        *     openMemberPath="Open"
        *     closeMemberPath="Close"
        *     volumeMemberPath="Volume" />
        *  </IgrDataChart>
        * ```
        *
        * ```ts
        *     this.financialSeries = new IgrFinancialPriceSeries({name: "financialSeries"});
        *     this.financialSeries.dataSource = this.financialData;
        *     this.financialSeries.xAxis = this.timeXAxis;
        *     this.financialSeries.yAxis = this.numericYAxis;
        *     this.financialSeries.xAxisName = "timeXAxis";
        *     this.financialSeries.yAxisName = "numericYAxis";
        *     this.financialSeries.highMemberPath="High" ;
        *     this.financialSeries.lowMemberPath="Low";
        *     this.financialSeries.closeMemberPath="Close";
        *     this.financialSeries.openMemberPath="Open";
        *     this.financialSeries.volumeMemberPath="Volume";
        * ```
        */
        get: function () {
            var r = this.i.uu;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = IgrNumericYAxis._createFromInternal(r);
                if (e) {
                    e._implementation = r;
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        set: function (v) {
            if (v != null && this._stylingContainer && v._styling)
                v._styling(this._stylingContainer, this, this);
            v == null ? this.i.uu = null : this.i.uu = v.i;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "yAxisName", {
        /**
        * Gets or sets the name to use to resolve yAxis from markup.
        */
        get: function () {
            return this._yAxisName;
        },
        set: function (v) {
            this._yAxisName = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "openMemberPath", {
        /**
         * Gets or sets the open mapping property for the current series object.
        *
        * The `OpenMemberPath` property is used for open mapping of the current series object.
        *
        * ```ts
        * <IgrDataChart
        *     dataSource={this.state.dataSource}
        *     width="700px"
        *     height="500px">
        *
        *
        *     <IgrCategoryXAxis name="xAxis" label="Date" />
        *     <IgrNumericYAxis  name="yAxis" />
        *
        *
        *     <IgrFinancialPriceSeries
        *     name="series2"
        *     xAxisName="xAxis"
        *     yAxisName="yAxis"
        *     displayType="Candlestick"
        *     lowMemberPath="Low"
        *     highMemberPath="High"
        *     openMemberPath="Open"
        *     closeMemberPath="Close"
        *     volumeMemberPath="Volume" />
        *
        *  </IgrDataChart>
        * ```
        *
        * ```ts
        * this.series = new IgrFinancialPriceSeries({name: "series"});
        * this.series.dataSource = this.financialData;
        * this.series.xAxis = this.timeXAxis;
        * this.series.yAxis = this.numericYAxis;
        * this.series.xAxisName = "timeXAxis";
        * this.series.yAxisName = "numericYAxis";
        * this.series.highMemberPath="High"
        * this.series.lowMemberPath="Low"
        * this.series.closeMemberPath="Close"
        * this.series.openMemberPath="Open"
        * this.series.volumeMemberPath="Volume"
        * ```
        */
        get: function () {
            return this.i.w1;
        },
        set: function (v) {
            this.i.w1 = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "highMemberPath", {
        /**
         * Gets or sets the high mapping property for the current series object.
        *
        * Use `HighMemberPath` propert for high mapping of the current series object.
        *
        * ```ts
        * <IgrDataChart
        *     dataSource={this.state.dataSource}
        *     width="700px"
        *     height="500px">
        *
        *
        *     <IgrCategoryXAxis name="xAxis" label="Date" />
        *     <IgrNumericYAxis  name="yAxis" />
        *
        *
        *     <IgrFinancialPriceSeries
        *     name="series2"
        *     xAxisName="xAxis"
        *     yAxisName="yAxis"
        *     displayType="Candlestick"
        *     lowMemberPath="Low"
        *     highMemberPath="High"
        *     openMemberPath="Open"
        *     closeMemberPath="Close"
        *     volumeMemberPath="Volume" />
        *  </IgrDataChart>
        * ```
        *
        * ```ts
        *     this.financialSeries = new IgrFinancialPriceSeries({name: "financialSeries"});
        *     this.financialSeries.dataSource = this.financialData;
        *     this.financialSeries.xAxis = this.timeXAxis;
        *     this.financialSeries.yAxis = this.numericYAxis;
        *     this.financialSeries.xAxisName = "timeXAxis";
        *     this.financialSeries.yAxisName = "numericYAxis";
        *     this.financialSeries.highMemberPath="High" ;
        *     this.financialSeries.lowMemberPath="Low";
        *     this.financialSeries.closeMemberPath="Close";
        *     this.financialSeries.openMemberPath="Open";
        *     this.financialSeries.volumeMemberPath="Volume";
        * ```
        */
        get: function () {
            return this.i.ws;
        },
        set: function (v) {
            this.i.ws = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "lowMemberPath", {
        /**
         * Gets or sets the low mapping property for the current series object.
        *
        * The `LowMemberPath` is used for low mapping property of the current series object.
        *
        * ```ts
        * <IgrDataChart
        *     dataSource={this.state.dataSource}
        *     width="700px"
        *     height="500px">
        *
        *
        *     <IgrCategoryXAxis name="xAxis" label="Date" />
        *     <IgrNumericYAxis  name="yAxis" />
        *
        *
        *     <IgrFinancialPriceSeries
        *     name="series2"
        *     xAxisName="xAxis"
        *     yAxisName="yAxis"
        *     displayType="Candlestick"
        *     lowMemberPath="Low"
        *     highMemberPath="High"
        *     openMemberPath="Open"
        *     closeMemberPath="Close"
        *     volumeMemberPath="Volume" />
        *
        *  </IgrDataChart>
        * ```
        *
        * ```ts
        *     this.financialSeries = new IgrFinancialPriceSeries({name: "financialSeries"});
        *     this.financialSeries.dataSource = this.financialData;
        *     this.financialSeries.xAxis = this.timeXAxis;
        *     this.financialSeries.yAxis = this.numericYAxis;
        *     this.financialSeries.xAxisName = "timeXAxis";
        *     this.financialSeries.yAxisName = "numericYAxis";
        *     this.financialSeries.highMemberPath="High" ;
        *     this.financialSeries.lowMemberPath="Low";
        *     this.financialSeries.closeMemberPath="Close";
        *     this.financialSeries.openMemberPath="Open";
        *     this.financialSeries.volumeMemberPath="Volume";
        * ```
        */
        get: function () {
            return this.i.wx;
        },
        set: function (v) {
            this.i.wx = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "closeMemberPath", {
        /**
         * Gets or sets the close mapping property for the current series object.
        *
        * Use `CloseMemberPath` property for the close mapping of the current series object.
        *
        * ```ts
        * <IgrDataChart
        *     dataSource={this.state.dataSource}
        *     width="700px"
        *     height="500px">
        *
        *
        *     <IgrCategoryXAxis name="xAxis" label="Date" />
        *     <IgrNumericYAxis  name="yAxis" />
        *
        *
        *     <IgrFinancialPriceSeries
        *     name="series2"
        *     xAxisName="xAxis"
        *     yAxisName="yAxis"
        *     displayType="Candlestick"
        *     lowMemberPath="Low"
        *     highMemberPath="High"
        *     openMemberPath="Open"
        *     closeMemberPath="Close"
        *     volumeMemberPath="Volume" />
        *
        *  </IgrDataChart>
        * ```
        *
        * ```ts
        * this.financialSeries = new IgrFinancialPriceSeries({name: "financialSeries"});
        * this.financialSeries.dataSource = this.financialData;
        * this.financialSeries.xAxis = this.timeXAxis;
        * this.financialSeries.yAxis = this.numericYAxis;
        * this.financialSeries.xAxisName = "timeXAxis";
        * this.financialSeries.yAxisName = "numericYAxis";
        * this.financialSeries.highMemberPath="High"
        * this.financialSeries.lowMemberPath="Low"
        * this.financialSeries.closeMemberPath="Close"
        * this.financialSeries.openMemberPath="Open"
        * this.financialSeries.volumeMemberPath="Volume"
        * ```
        */
        get: function () {
            return this.i.wf;
        },
        set: function (v) {
            this.i.wf = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "volumeMemberPath", {
        /**
         * Gets or sets the volume mapping property for the current series object.
        *
        * The `VolumeMemberPath` property is used for the volume mapping property of the current series object.
        *
        * ```ts
        * <IgrDataChart
        *     dataSource={this.state.dataSource}
        *     width="700px"
        *     height="500px">
        *
        *
        *     <IgrCategoryXAxis name="xAxis" label="Date" />
        *     <IgrNumericYAxis  name="yAxis" />
        *
        *
        *     <IgrFinancialPriceSeries
        *     name="series2"
        *     xAxisName="xAxis"
        *     yAxisName="yAxis"
        *     displayType="Candlestick"
        *     lowMemberPath="Low"
        *     highMemberPath="High"
        *     openMemberPath="Open"
        *     closeMemberPath="Close"
        *     volumeMemberPath="Volume" />
        *  </IgrDataChart>
        * ```
        *
        * ```ts
        *     this.financialSeries = new IgrFinancialPriceSeries({name: "financialSeries"});
        *     this.financialSeries.dataSource = this.financialData;
        *     this.financialSeries.xAxis = this.timeXAxis;
        *     this.financialSeries.yAxis = this.numericYAxis;
        *     this.financialSeries.xAxisName = "timeXAxis";
        *     this.financialSeries.yAxisName = "numericYAxis";
        *     this.financialSeries.highMemberPath="High" ;
        *     this.financialSeries.lowMemberPath="Low";
        *     this.financialSeries.closeMemberPath="Close";
        *     this.financialSeries.openMemberPath="Open";
        *     this.financialSeries.volumeMemberPath="Volume";
        * ```
        */
        get: function () {
            return this.i.w5;
        },
        set: function (v) {
            this.i.w5 = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "highlightedOpenMemberPath", {
        /**
         * Gets or sets the highlighted X value mapping property for the current series object.
        */
        get: function () {
            return this.i.wo;
        },
        set: function (v) {
            this.i.wo = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "highlightedHighMemberPath", {
        /**
         * Gets or sets the highlighted Y value mapping property for the current series object.
        */
        get: function () {
            return this.i.wk;
        },
        set: function (v) {
            this.i.wk = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "highlightedLowMemberPath", {
        /**
         * Gets or sets the highlighted X value mapping property for the current series object.
        */
        get: function () {
            return this.i.wm;
        },
        set: function (v) {
            this.i.wm = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "highlightedCloseMemberPath", {
        /**
         * Gets or sets the highlighted Y value mapping property for the current series object.
        */
        get: function () {
            return this.i.wi;
        },
        set: function (v) {
            this.i.wi = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "highlightedVolumeMemberPath", {
        /**
         * Gets or sets the highlighted Y value mapping property for the current series object.
        */
        get: function () {
            return this.i.wq;
        },
        set: function (v) {
            this.i.wq = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "isCustomCategoryStyleAllowed", {
        /**
         * Gets or sets whether this category series should allow custom style overrides of its individual visuals.
        *
        * The `IsCustomCategoryStyleAllowed` property is used to check if the category series should allow custom style.
        *
        * ```ts
        * <IgrDataChart
        *     dataSource={this.state.dataSource}
        *     width="700px"
        *     height="500px">
        *
        *
        *     <IgrCategoryXAxis name="xAxis" label="Date" />
        *     <IgrNumericYAxis  name="yAxis" />
        *
        *
        *     <IgrFinancialPriceSeries
        *     name="series2"
        *     xAxisName="xAxis"
        *     yAxisName="yAxis"
        *     displayType="Candlestick"
        *     lowMemberPath="Low"
        *     highMemberPath="High"
        *     openMemberPath="Open"
        *     closeMemberPath="Close"
        *     volumeMemberPath="Volume"
        * 	isCustomCategoryStyleAllowed="True" />
        *  </IgrDataChart>
        * ```
        *
        * ```ts
        * series.isCustomCategoryStyleAllowed= true;
        * ```
        */
        get: function () {
            return this.i.vh;
        },
        set: function (v) {
            this.i.vh = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "transitionInMode", {
        /**
         * Gets or sets the method by which to animate the data into the chart when the chart data source is swapped.
         * Note: Transitions are not currently supported for stacked series.
        *
        * The `TransitionInMode` property is used to gets or sets the method by which to animate the data into the chart when the chart data source is swapped.
        *
        * ```ts
        * <IgrDataChart
        *     dataSource={this.state.dataSource}
        *     width="700px"
        *     height="500px">
        *
        *
        *     <IgrCategoryXAxis name="xAxis" label="Date" />
        *     <IgrNumericYAxis  name="yAxis" />
        *
        *
        *     <IgrFinancialPriceSeries
        *     name="series2"
        *     xAxisName="xAxis"
        *     yAxisName="yAxis"
        *     displayType="Candlestick"
        *     lowMemberPath="Low"
        *     highMemberPath="High"
        *     openMemberPath="Open"
        *     closeMemberPath="Close"
        *     volumeMemberPath="Volume"
        * 	transitionInMode="Auto"/>
        *  </IgrDataChart>
        * ```
        *
        * ```ts
        * series.transitionInMode =CategoryTransitionInMode.Auto;
        * ```
        */
        get: function () {
            return this.i.um;
        },
        set: function (v) {
            this.i.um = ensureEnum(CategoryTransitionInMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "isTransitionInEnabled", {
        /**
         * Gets or sets whether the series should transition into the plot area when a new data source is assigned.
         * Note: Transitions are not currently supported for stacked series.
        *
        * The `IsTransitionInEnabled` property is used to check if the series should transition into the plot area when a new data source is assigned.
        *
        * ```ts
        * <IgrDataChart
        *     dataSource={this.state.dataSource}
        *     width="700px"
        *     height="500px">
        *
        *
        *     <IgrCategoryXAxis name="xAxis" label="Date" />
        *     <IgrNumericYAxis  name="yAxis" />
        *
        *
        *     <IgrFinancialPriceSeries
        *     name="series2"
        *     xAxisName="xAxis"
        *     yAxisName="yAxis"
        *     displayType="Candlestick"
        *     lowMemberPath="Low"
        *     highMemberPath="High"
        *     openMemberPath="Open"
        *     closeMemberPath="Close"
        *     volumeMemberPath="Volume"
        * 	isTransitionInEnabled="true" />
        *
        *  </IgrDataChart>
        * ```
        *
        * ```ts
        * series.isTransitionInEnabled= true;
        * ```
        */
        get: function () {
            return this.i.vi;
        },
        set: function (v) {
            this.i.vi = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "isNegativeColorSupported", {
        /**
         * Overridden by derived series classes to indicate when negative colors are supported or not.
        */
        get: function () {
            return this.i.e0;
        },
        enumerable: false,
        configurable: true
    });
    IgrFinancialSeries.prototype.bindAxes = function (axes) {
        _super.prototype.bindAxes.call(this, axes);
        for (var i = 0; i < axes.length; i++) {
            if (this.xAxisName && this.xAxisName.length > 0 &&
                axes[i].name == this.xAxisName) {
                this.xAxis = axes[i];
            }
        }
        for (var i = 0; i < axes.length; i++) {
            if (this.yAxisName && this.yAxisName.length > 0 &&
                axes[i].name == this.yAxisName) {
                this.yAxis = axes[i];
            }
        }
    };
    IgrFinancialSeries.prototype.findByName = function (name) {
        var baseResult = _super.prototype.findByName.call(this, name);
        if (baseResult) {
            return baseResult;
        }
        if (this.xAxis && this.xAxis.name && this.xAxis.name == name) {
            return this.xAxis;
        }
        if (this.yAxis && this.yAxis.name && this.yAxis.name == name) {
            return this.yAxis;
        }
        return null;
    };
    IgrFinancialSeries.prototype._styling = function (container, component, parent) {
        _super.prototype._styling.call(this, container, component, parent);
        this._inStyling = true;
        if (this.xAxis && this.xAxis._styling) {
            this.xAxis._styling(container, component, this);
        }
        if (this.yAxis && this.yAxis._styling) {
            this.yAxis._styling(container, component, this);
        }
        this._inStyling = false;
    };
    IgrFinancialSeries.prototype.getItemValue = function (item, memberPathName) {
        var iv = this.i.jv(item, memberPathName);
        return (iv);
    };
    IgrFinancialSeries.prototype.getPreviousOrExactIndex = function (world, skipUnknowns) {
        var iv = this.i.jg(toPoint(world), skipUnknowns);
        return (iv);
    };
    IgrFinancialSeries.prototype.getNextOrExactIndex = function (world, skipUnknowns) {
        var iv = this.i.je(toPoint(world), skipUnknowns);
        return (iv);
    };
    /**
     * Returns the offset value for this series if grouped on a category axis.
    
    *
    * The `GetOffsetValue` method returns the offset value for this series if grouped on a category axis.
    *
    * ```ts
    * number offset= series.getOffsetValue();
    * ```
    */
    IgrFinancialSeries.prototype.getOffsetValue = function () {
        var iv = this.i.getOffsetValue();
        return (iv);
    };
    /**
     * Returns the width of the category grouping this series is in.
    
    *
    * The `GetCategoryWidth` method returns the width of the category grouping this series is in.
    *
    * ```ts
    * number width = series.getCategoryWidth();
    * ```
    */
    IgrFinancialSeries.prototype.getCategoryWidth = function () {
        var iv = this.i.getCategoryWidth();
        return (iv);
    };
    IgrFinancialSeries.prototype.getSeriesValuePosition = function (world, useInterpolation, skipUnknowns) {
        var iv = this.i.tj(toPoint(world), useInterpolation, skipUnknowns);
        return fromPoint(iv);
    };
    IgrFinancialSeries.prototype.getSeriesValue = function (world, useInterpolation, skipUnknowns) {
        var iv = this.i.ia(toPoint(world), useInterpolation, skipUnknowns);
        return (iv);
    };
    IgrFinancialSeries.prototype.getSeriesHighValue = function (world, useInterpolation, skipUnknowns) {
        var iv = this.i.h6(toPoint(world), useInterpolation, skipUnknowns);
        return (iv);
    };
    IgrFinancialSeries.prototype.getSeriesLowValue = function (world, useInterpolation, skipUnknowns) {
        var iv = this.i.h8(toPoint(world), useInterpolation, skipUnknowns);
        return (iv);
    };
    IgrFinancialSeries.prototype.getSeriesCloseValue = function (world, useInterpolation, skipUnknowns) {
        var iv = this.i.v3(toPoint(world), useInterpolation, skipUnknowns);
        return (iv);
    };
    IgrFinancialSeries.prototype.getSeriesOpenValue = function (world, useInterpolation, skipUnknowns) {
        var iv = this.i.v4(toPoint(world), useInterpolation, skipUnknowns);
        return (iv);
    };
    IgrFinancialSeries.prototype.getSeriesVolumeValue = function (world, useInterpolation, skipUnknowns) {
        var iv = this.i.v5(toPoint(world), useInterpolation, skipUnknowns);
        return (iv);
    };
    IgrFinancialSeries.prototype.getSeriesHighValuePosition = function (world, useInterpolation, skipUnknowns) {
        var iv = this.i.tf(toPoint(world), useInterpolation, skipUnknowns);
        return fromPoint(iv);
    };
    IgrFinancialSeries.prototype.getSeriesLowValuePosition = function (world, useInterpolation, skipUnknowns) {
        var iv = this.i.th(toPoint(world), useInterpolation, skipUnknowns);
        return fromPoint(iv);
    };
    IgrFinancialSeries.prototype.getSeriesOpenValuePosition = function (world, useInterpolation, skipUnknowns) {
        var iv = this.i.x3(toPoint(world), useInterpolation, skipUnknowns);
        return fromPoint(iv);
    };
    IgrFinancialSeries.prototype.getSeriesCloseValuePosition = function (world, useInterpolation, skipUnknowns) {
        var iv = this.i.x2(toPoint(world), useInterpolation, skipUnknowns);
        return fromPoint(iv);
    };
    IgrFinancialSeries.prototype.getSeriesVolumeValuePosition = function (world, useInterpolation, skipUnknowns) {
        var iv = this.i.x4(toPoint(world), useInterpolation, skipUnknowns);
        return fromPoint(iv);
    };
    /**
     * Determine if object can be used as YAxis
    
    * @param axis  * The object to check
    *
    * Use `CanUseAsYAxis` method to determine if the object can be used as YAxis.
    *
    * ```ts
    *   boolean canY =series.canUseAsYAxis(yAxis);
    * ```
    */
    IgrFinancialSeries.prototype.canUseAsYAxis = function (axis) {
        var iv = this.i.ve(axis);
        return (iv);
    };
    /**
     * Determine if object can be used as XAxis
    
    * @param axis  * The object to check
    *
    * Use `CanUseAsXAxis` method to determine if the object can be used as XAxis.
    *
    * ```ts
    *   boolean canX =series.canUseAsXAxis(xAxis);
    * ```
    */
    IgrFinancialSeries.prototype.canUseAsXAxis = function (axis) {
        var iv = this.i.vd(axis);
        return (iv);
    };
    /**
     * Gets the precise item index, if possible, based on the closeness to the previous or next whole integer. If the series cannot provide this information, GetExactItemIndex will return the same integer value as GetItemIndex.
    
    * @param world  * The world position for which to return the index.
    *
    * The `GetExactItemIndex` method gets the precise item index, if possible, based on the closeness to the previous or next whole integer.
    *
    * If the series cannot provide this information, GetExactItemIndex will return the same integer value as GetItemIndex.
    *
    * ```ts
    * number index = series.getExactItemIndex(world);
    * ```
    */
    IgrFinancialSeries.prototype.getExactItemIndex = function (world) {
        var iv = this.i.hw(toPoint(world));
        return (iv);
    };
    /**
     * Gets the index of the item that resides at the provided world coordinates.
    
    * @param world  * The world coordinates of the requested item.
    *
    * The `GetItemIndex` method gets the index of the item that resides at the provided world coordinates.
    *
    * ```ts
    * number itemindex= series.getItemIndex(world);
    * ```
    */
    IgrFinancialSeries.prototype.getItemIndex = function (world) {
        var iv = this.i.i9(toPoint(world));
        return (iv);
    };
    /**
     * Gets the item that is the best match for the specified world coordinates.
    
    * @param world  * The world coordinates to use.
    *
    * The `GetItem` method gets the item that is the best match for the specified world coordinates.
    */
    IgrFinancialSeries.prototype.getItem = function (world) {
        var iv = this.i.js(toPoint(world));
        return (iv);
    };
    IgrFinancialSeries.prototype.setNegativeColors = function (negativeBrush, negativeOutline) {
        this.i.p1(stringToBrush(negativeBrush), stringToBrush(negativeOutline));
    };
    Object.defineProperty(IgrFinancialSeries.prototype, "assigningCategoryStyle", {
        /**
         * Event raised when Assigning Category Style
        *
        * The `AssigningCategoryStyle` event raised when assigning Category Style.
        *
        * ```ts
        * series.assigningCategoryStyle= this.chart_AssigningCategoryStyle;
        * chart_AssigningCategoryStyle(sender :any,args: AssigningCategoryStyleEventArgs )
        *   {
        *
        *
        *   }
        * ```
        *
        * ```ts
        * <IgrDataChart
        *     ref={this.onChartRef}
        *     dataSource={this.data}
        *     width="100%"
        *     height="100%" >
        *
        *     <IgrCategoryXAxis name="xAxis" label="Label" />
        *     <IgrNumericYAxis name="yAxis" />
        *
        *     <IgrFinancialPriceSeries
        *         name="series1"
        *         xAxisName="xAxis"
        *         yAxisName="yAxis"
        *         highMemberPath="High"
        *         lowMemberPath="Low"
        *         closeMemberPath="Close"
        *         openMemberPath="Open"
        *         volumeMemberPath="Volume"
        *         trendLineType={this.state.trendLineType}
        *         displayType= "Candlestick"
        *         trendLinePeriod = {2}
        *         actualTrendLineBrush= "blue"
        *         assigningCategoryStyle ={this.chart_assigningCategoryStyle}/>
        *
        * </IgrDataChart>
        * ```
        *
        * ```ts
        * series.assigningCategoryStyle= this.chart_AssigningCategoryStyle;
        * chart_AssigningCategoryStyle(sender :IgrFinancialSeries,args: AssigningCategoryStyleEventArgs )
        *   {
        *
        *
        *   }
        * ```
        */
        get: function () {
            return this._assigningCategoryStyle;
        },
        set: function (ev) {
            var _this = this;
            if (this._assigningCategoryStyle_wrapped !== null) {
                this.i.assigningCategoryStyle = delegateRemove(this.i.assigningCategoryStyle, this._assigningCategoryStyle_wrapped);
                this._assigningCategoryStyle_wrapped = null;
                this._assigningCategoryStyle = null;
            }
            this._assigningCategoryStyle = ev;
            this._assigningCategoryStyle_wrapped = function (o, e) {
                var outerArgs = new IgrAssigningCategoryStyleEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeAssigningCategoryStyle) {
                    _this.beforeAssigningCategoryStyle(_this, outerArgs);
                }
                if (_this._assigningCategoryStyle) {
                    _this._assigningCategoryStyle(_this, outerArgs);
                }
            };
            this.i.assigningCategoryStyle = delegateCombine(this.i.assigningCategoryStyle, this._assigningCategoryStyle_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "typical", {
        /**
         * Handle this event in order to perform a custom typical price calculation.
        *
        * Use `Typical` event to perform a custom typical price calculation.
        *
        * ```ts
        * series.typical= this.chart_typical;
        *
        *   chart_typical(sender :any,args: FinancialEventArgs )
        *   {
        *
        *
        *   }
        * ```
        *
        * ```ts
        * <IgrDataChart
        *     ref={this.onChartRef}
        *     dataSource={this.data}
        *     width="100%"
        *     height="100%" >
        *
        *     <IgrCategoryXAxis name="xAxis" label="Label" />
        *     <IgrNumericYAxis name="yAxis" />
        *
        *     <IgrFinancialPriceSeries
        *         name="series1"
        *         xAxisName="xAxis"
        *         yAxisName="yAxis"
        *         highMemberPath="High"
        *         lowMemberPath="Low"
        *         closeMemberPath="Close"
        *         openMemberPath="Open"
        *         volumeMemberPath="Volume"
        *         trendLineType={this.state.trendLineType}
        *         displayType= "Candlestick"
        *         trendLinePeriod = {2}
        *         actualTrendLineBrush= "blue"
        *         typical ={this.chart_typical}/>
        *
        * </IgrDataChart>
        * ```
        *
        * ```ts
        *  this.financialSeries.typical=this.chart_typical;
        *     }
        *     public chart_typical =( s:IgrFinancialSeries, e: FinancialEventArgs) => {
        *
        *        }
        * ```
        */
        get: function () {
            return this._typical;
        },
        set: function (ev) {
            var _this = this;
            if (this._typical_wrapped !== null) {
                this.i.typical = delegateRemove(this.i.typical, this._typical_wrapped);
                this._typical_wrapped = null;
                this._typical = null;
            }
            this._typical = ev;
            this._typical_wrapped = function (o, e) {
                var outerArgs = new IgrFinancialEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeTypical) {
                    _this.beforeTypical(_this, outerArgs);
                }
                if (_this._typical) {
                    _this._typical(_this, outerArgs);
                }
            };
            this.i.typical = delegateCombine(this.i.typical, this._typical_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrFinancialSeries.prototype, "typicalBasedOn", {
        /**
         * Handle this event in order to specify which columns the Typical price calculation is based on.
        *
        * Use `TypicalBasedOn` event to specify which columns the Typical price calculation is based on.
        *
        * ```ts
        *    series.typicalBasedOn= this.chart_typicalBasedOn;
        *     chart_typicalBasedOn(sender :any,args: FinancialEventArgs )
        *   {
        *
        *   }
        * ```
        *
        * ````ts
        *    <IgrDataChart
        *        ref={this.onChartRef}
        *        dataSource={this.data}
        *        width="100%"
        *        height="100%" >
        *
        *        <IgrCategoryXAxis name="xAxis" label="Label" />
        *        <IgrNumericYAxis name="yAxis" />
        *
        *        <IgrFinancialPriceSeries
        *            name="series1"
        *            xAxisName="xAxis"
        *            yAxisName="yAxis"
        *            highMemberPath="High"
        *            lowMemberPath="Low"
        *            closeMemberPath="Close"
        *            openMemberPath="Open"
        *            volumeMemberPath="Volume"
        *            trendLineType={this.state.trendLineType}
        *            displayType= "Candlestick"
        *            trendLinePeriod = {2}
        *            actualTrendLineBrush= "blue"
        *            typicalBasedOn ={this.chart_typicalBasedOn}/>
        *
        *    </IgrDataChart>
        * 	```
        *
        * ```ts
        * this.financialSeries.typicalBasedOn=this.chart_typicalBasedOn;
        * public chart_typicalBasedOn =( s:IgrFinancialSeries, e: FinancialEventArgs) => {
        *
        * }
        * ````
        */
        get: function () {
            return this._typicalBasedOn;
        },
        set: function (ev) {
            var _this = this;
            if (this._typicalBasedOn_wrapped !== null) {
                this.i.typicalBasedOn = delegateRemove(this.i.typicalBasedOn, this._typicalBasedOn_wrapped);
                this._typicalBasedOn_wrapped = null;
                this._typicalBasedOn = null;
            }
            this._typicalBasedOn = ev;
            this._typicalBasedOn_wrapped = function (o, e) {
                var outerArgs = new IgrFinancialEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeTypicalBasedOn) {
                    _this.beforeTypicalBasedOn(_this, outerArgs);
                }
                if (_this._typicalBasedOn) {
                    _this._typicalBasedOn(_this, outerArgs);
                }
            };
            this.i.typicalBasedOn = delegateCombine(this.i.typicalBasedOn, this._typicalBasedOn_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    return IgrFinancialSeries;
}(IgrSeries));
export { IgrFinancialSeries };
