"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.OptionsWithBreakdown = exports.OptionsCurrency = exports.Options = exports.TimeRange = exports.OrderDirection = exports.Grouping = exports.Op = void 0;
const jackson_js_1 = require("jackson-js");
const filter_1 = require("./filter");
var Op;
(function (Op) {
    Op["SUM"] = "SUM";
    Op["AVG"] = "AVG";
    Op["STDDEV"] = "STDDEV";
    Op["KURT"] = "KURT";
    Op["SKEW"] = "SKEW";
    Op["VAR"] = "VAR";
})(Op = exports.Op || (exports.Op = {}));
var Grouping;
(function (Grouping) {
    Grouping["BY"] = "BY";
    Grouping["ROLLUP"] = "ROLLUP";
    Grouping["SETS"] = "SETS";
})(Grouping = exports.Grouping || (exports.Grouping = {}));
var OrderDirection;
(function (OrderDirection) {
    OrderDirection["ASC"] = "ASC";
    OrderDirection["DESC"] = "DESC";
})(OrderDirection = exports.OrderDirection || (exports.OrderDirection = {}));
class TimeRange {
}
__decorate([
    (0, jackson_js_1.JsonProperty)(),
    (0, jackson_js_1.JsonClassType)({ type: () => [Date] })
], TimeRange.prototype, "from", void 0);
__decorate([
    (0, jackson_js_1.JsonProperty)(),
    (0, jackson_js_1.JsonClassType)({ type: () => [Date] })
], TimeRange.prototype, "to", void 0);
exports.TimeRange = TimeRange;
class Options {
}
__decorate([
    (0, jackson_js_1.JsonProperty)()
], Options.prototype, "grouping", void 0);
__decorate([
    (0, jackson_js_1.JsonProperty)()
    // @JsonClassType({ type: () => Object })
], Options.prototype, "selects", void 0);
__decorate([
    (0, jackson_js_1.JsonProperty)(),
    (0, jackson_js_1.JsonClassType)({ type: () => [Object, [String, filter_1.FilterArguments]] })
], Options.prototype, "filters", void 0);
__decorate([
    (0, jackson_js_1.JsonProperty)(),
    (0, jackson_js_1.JsonClassType)({ type: () => [Object, [String, filter_1.FilterArguments]] })
], Options.prototype, "partitionFilters", void 0);
__decorate([
    (0, jackson_js_1.JsonProperty)(),
    (0, jackson_js_1.JsonClassType)({ type: () => [TimeRange] })
], Options.prototype, "timeRange", void 0);
__decorate([
    (0, jackson_js_1.JsonProperty)(),
    (0, jackson_js_1.JsonClassType)({ type: () => [Array, [String]] })
], Options.prototype, "groupBy", void 0);
__decorate([
    (0, jackson_js_1.JsonProperty)(),
    (0, jackson_js_1.JsonClassType)({ type: () => [Array, [String]] })
], Options.prototype, "partitionGroupBy", void 0);
__decorate([
    (0, jackson_js_1.JsonProperty)()
], Options.prototype, "orderBy", void 0);
__decorate([
    (0, jackson_js_1.JsonProperty)()
], Options.prototype, "seriesBucketSize", void 0);
__decorate([
    (0, jackson_js_1.JsonProperty)()
], Options.prototype, "partition", void 0);
__decorate([
    (0, jackson_js_1.JsonProperty)()
], Options.prototype, "limit", void 0);
__decorate([
    (0, jackson_js_1.JsonProperty)()
], Options.prototype, "retrospective", void 0);
exports.Options = Options;
class OptionsCurrency extends Options {
}
__decorate([
    (0, jackson_js_1.JsonProperty)()
], OptionsCurrency.prototype, "currency", void 0);
exports.OptionsCurrency = OptionsCurrency;
class OptionsWithBreakdown extends OptionsCurrency {
}
__decorate([
    (0, jackson_js_1.JsonProperty)()
], OptionsWithBreakdown.prototype, "breakdown", void 0);
__decorate([
    (0, jackson_js_1.JsonProperty)()
], OptionsWithBreakdown.prototype, "selects", void 0);
exports.OptionsWithBreakdown = OptionsWithBreakdown;
//# sourceMappingURL=options.js.map