/*
THIS INFRAGISTICS ULTIMATE SOFTWARE LICENSE  AGREEMENT ("AGREEMENT") LOCATED HERE:
https://www.infragistics.com/legal/license/igultimate-la
https://www.infragistics.com/legal/license/igultimate-eula
GOVERNS THE LICENSING, INSTALLATION AND USE OF INFRAGISTICS SOFTWARE. BY DOWNLOADING AND/OR INSTALLING AND USING INFRAGISTICS SOFTWARE:  you are indicating that you have read and understand this Agreement, and agree to be legally bound by it on behalf of the yourself and your company.
*/
import { FormatSpecifier } from "./FormatSpecifier";
import { markType } from "./type";
/**
 * @hidden
 */
export let NumberFormatSpecifier = /*@__PURE__*/ (() => {
    class NumberFormatSpecifier extends FormatSpecifier {
        constructor() {
            super();
            this._locale = null;
            this._compactDisplay = null;
            this._currency = null;
            this._currencyDisplay = null;
            this._currencySign = null;
            this._localeMatcher = null;
            this._notation = null;
            this._numberingSystem = null;
            this._signDisplay = null;
            this._style = null;
            this._unit = null;
            this._unitDisplay = null;
            this._useGrouping = false;
            this._minimumIntegerDigits = 0;
            this._minimumFractionDigits = 0;
            this._maximumFractionDigits = 0;
            this._minimumSignificantDigits = 0;
            this._maximumSignificantDigits = 0;
            this.useGrouping = true;
            this.minimumIntegerDigits = -1;
            this.minimumFractionDigits = -1;
            this.minimumSignificantDigits = -1;
            this.maximumFractionDigits = -1;
            this.maximumSignificantDigits = -1;
        }
        toIntl() {
            let a = {};
            if (this.compactDisplay != null) {
                this.t(a, "compactDisplay", this.compactDisplay);
            }
            if (this.currency != null) {
                this.t(a, "currency", this.currency);
            }
            if (this.currencyDisplay != null) {
                this.t(a, "currencyDisplay", this.currencyDisplay);
            }
            if (this.currencySign != null) {
                this.t(a, "currencySign", this.currencySign);
            }
            if (this.localeMatcher != null) {
                this.t(a, "localeMatcher", this.localeMatcher);
            }
            if (this.notation != null) {
                this.t(a, "notation", this.notation);
            }
            if (this.numberingSystem != null) {
                this.t(a, "numberingSystem", this.numberingSystem);
            }
            if (this.signDisplay != null) {
                this.t(a, "signDisplay", this.signDisplay);
            }
            if (this.style != null) {
                this.t(a, "style", this.style);
            }
            if (this.unit != null) {
                this.t(a, "unit", this.unit);
            }
            if (this.unitDisplay != null) {
                this.t(a, "unitDisplay", this.unitDisplay);
            }
            if (this.useGrouping != true) {
                this.t(a, "useGrouping", this.useGrouping);
            }
            if (this.minimumIntegerDigits != -1) {
                this.t(a, "minimumIntegerDigits", this.minimumIntegerDigits);
            }
            if (this.minimumFractionDigits != -1) {
                this.t(a, "minimumFractionDigits", this.minimumFractionDigits);
            }
            if (this.maximumFractionDigits != -1) {
                this.t(a, "maximumFractionDigits", this.maximumFractionDigits);
            }
            if (this.minimumSignificantDigits != -1) {
                this.t(a, "minimumSignificantDigits", this.minimumSignificantDigits);
            }
            if (this.maximumSignificantDigits != -1) {
                this.t(a, "maximumSignificantDigits", this.maximumSignificantDigits);
            }
            let locale_ = this.locale;
            let options_ = a;
            return new Intl.NumberFormat(locale_, options_);
        }
        t(options_, propertyName_, value_) {
            options_[propertyName_] = value_;
        }
        get locale() {
            return this._locale;
        }
        set locale(a) {
            this._locale = a;
        }
        get compactDisplay() {
            return this._compactDisplay;
        }
        set compactDisplay(a) {
            this._compactDisplay = a;
        }
        get currency() {
            return this._currency;
        }
        set currency(a) {
            this._currency = a;
        }
        get currencyDisplay() {
            return this._currencyDisplay;
        }
        set currencyDisplay(a) {
            this._currencyDisplay = a;
        }
        get currencySign() {
            return this._currencySign;
        }
        set currencySign(a) {
            this._currencySign = a;
        }
        get localeMatcher() {
            return this._localeMatcher;
        }
        set localeMatcher(a) {
            this._localeMatcher = a;
        }
        get notation() {
            return this._notation;
        }
        set notation(a) {
            this._notation = a;
        }
        get numberingSystem() {
            return this._numberingSystem;
        }
        set numberingSystem(a) {
            this._numberingSystem = a;
        }
        get signDisplay() {
            return this._signDisplay;
        }
        set signDisplay(a) {
            this._signDisplay = a;
        }
        get style() {
            return this._style;
        }
        set style(a) {
            this._style = a;
        }
        get unit() {
            return this._unit;
        }
        set unit(a) {
            this._unit = a;
        }
        get unitDisplay() {
            return this._unitDisplay;
        }
        set unitDisplay(a) {
            this._unitDisplay = a;
        }
        get useGrouping() {
            return this._useGrouping;
        }
        set useGrouping(a) {
            this._useGrouping = a;
        }
        get minimumIntegerDigits() {
            return this._minimumIntegerDigits;
        }
        set minimumIntegerDigits(a) {
            this._minimumIntegerDigits = a;
        }
        get minimumFractionDigits() {
            return this._minimumFractionDigits;
        }
        set minimumFractionDigits(a) {
            this._minimumFractionDigits = a;
        }
        get maximumFractionDigits() {
            return this._maximumFractionDigits;
        }
        set maximumFractionDigits(a) {
            this._maximumFractionDigits = a;
        }
        get minimumSignificantDigits() {
            return this._minimumSignificantDigits;
        }
        set minimumSignificantDigits(a) {
            this._minimumSignificantDigits = a;
        }
        get maximumSignificantDigits() {
            return this._maximumSignificantDigits;
        }
        set maximumSignificantDigits(a) {
            this._maximumSignificantDigits = a;
        }
    }
    NumberFormatSpecifier.$t = markType(NumberFormatSpecifier, 'NumberFormatSpecifier', FormatSpecifier.$);
    return NumberFormatSpecifier;
})();
