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;
};
import { JsonClassType, JsonProperty } from "jackson-js";
import { FilterArguments } from "./filter";
export var Op;
(function (Op) {
    Op["SUM"] = "SUM";
    Op["AVG"] = "AVG";
    Op["STDDEV"] = "STDDEV";
    Op["KURT"] = "KURT";
    Op["SKEW"] = "SKEW";
    Op["VAR"] = "VAR";
})(Op || (Op = {}));
export var Grouping;
(function (Grouping) {
    Grouping["BY"] = "BY";
    Grouping["ROLLUP"] = "ROLLUP";
    Grouping["SETS"] = "SETS";
})(Grouping || (Grouping = {}));
export var OrderDirection;
(function (OrderDirection) {
    OrderDirection["ASC"] = "ASC";
    OrderDirection["DESC"] = "DESC";
})(OrderDirection || (OrderDirection = {}));
export class TimeRange {
}
__decorate([
    JsonProperty(),
    JsonClassType({ type: () => [Date] })
], TimeRange.prototype, "from", void 0);
__decorate([
    JsonProperty(),
    JsonClassType({ type: () => [Date] })
], TimeRange.prototype, "to", void 0);
export class Options {
}
__decorate([
    JsonProperty()
], Options.prototype, "grouping", void 0);
__decorate([
    JsonProperty()
    // @JsonClassType({ type: () => Object })
], Options.prototype, "selects", void 0);
__decorate([
    JsonProperty(),
    JsonClassType({ type: () => [Object, [String, FilterArguments]] })
], Options.prototype, "filters", void 0);
__decorate([
    JsonProperty(),
    JsonClassType({ type: () => [Object, [String, FilterArguments]] })
], Options.prototype, "partitionFilters", void 0);
__decorate([
    JsonProperty(),
    JsonClassType({ type: () => [TimeRange] })
], Options.prototype, "timeRange", void 0);
__decorate([
    JsonProperty(),
    JsonClassType({ type: () => [Array, [String]] })
], Options.prototype, "groupBy", void 0);
__decorate([
    JsonProperty(),
    JsonClassType({ type: () => [Array, [String]] })
], Options.prototype, "partitionGroupBy", void 0);
__decorate([
    JsonProperty()
], Options.prototype, "orderBy", void 0);
__decorate([
    JsonProperty()
], Options.prototype, "seriesBucketSize", void 0);
__decorate([
    JsonProperty()
], Options.prototype, "partition", void 0);
__decorate([
    JsonProperty()
], Options.prototype, "limit", void 0);
__decorate([
    JsonProperty()
], Options.prototype, "retrospective", void 0);
export class OptionsCurrency extends Options {
}
__decorate([
    JsonProperty()
], OptionsCurrency.prototype, "currency", void 0);
export class OptionsWithBreakdown extends OptionsCurrency {
}
__decorate([
    JsonProperty()
], OptionsWithBreakdown.prototype, "breakdown", void 0);
__decorate([
    JsonProperty()
], OptionsWithBreakdown.prototype, "selects", void 0);
//# sourceMappingURL=options.js.map