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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import AnalyticsBaseModel from "./AnalyticsBaseModel/AnalyticsBaseModel";
import Route from "../../Types/API/Route";
import AnalyticsTableEngine from "../../Types/AnalyticsDatabase/AnalyticsTableEngine";
import AnalyticsTableName from "../../Types/AnalyticsDatabase/AnalyticsTableName";
import AnalyticsTableColumn, { SkipIndexType, } from "../../Types/AnalyticsDatabase/TableColumn";
import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType";
import OperationalResource from "../../Types/Database/AccessControl/OperationalResource";
import OwnedThrough from "../../Types/Database/AccessControl/OwnedThrough";
import Permission from "../../Types/Permission";
import Service from "../DatabaseModels/Service";
let ExceptionInstance = class ExceptionInstance extends AnalyticsBaseModel {
    constructor() {
        const projectIdColumn = new AnalyticsTableColumn({
            key: "projectId",
            title: "Project ID",
            description: "ID of project",
            required: true,
            type: TableColumnType.ObjectID,
            isTenantId: true,
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const primaryEntityIdColumn = new AnalyticsTableColumn({
            key: "primaryEntityId",
            title: "Service ID",
            description: "ID of the resource the exception belongs to (Service / Host / DockerHost / KubernetesCluster / Monitor — disambiguated by primaryEntityType)",
            required: true,
            type: TableColumnType.ObjectID,
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const primaryEntityTypeColumn = new AnalyticsTableColumn({
            key: "primaryEntityType",
            isLowCardinality: true,
            title: "Service Type",
            description: "Discriminator for primaryEntityId — tells the read side which resource table to dispatch to",
            required: false,
            type: TableColumnType.Text,
            skipIndex: {
                name: "idx_service_type",
                type: SkipIndexType.Set,
                params: [10],
                granularity: 4,
            },
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const timeColumn = new AnalyticsTableColumn({
            key: "time",
            codec: [{ codec: "DoubleDelta" }, { codec: "ZSTD", level: 1 }],
            title: "Time",
            description: "When was the log created?",
            required: true,
            type: TableColumnType.DateTime64,
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const timeUnixNanoColumn = new AnalyticsTableColumn({
            key: "timeUnixNano",
            codec: [{ codec: "DoubleDelta" }, { codec: "ZSTD", level: 1 }],
            title: "Time (in Unix Nano)",
            description: "When was the log created?",
            required: true,
            type: TableColumnType.UInt64,
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const exceptionTypeColumn = new AnalyticsTableColumn({
            key: "exceptionType",
            title: "Exception Type",
            description: "Exception Type", // Examples: java.net.ConnectException; OSError; etc.
            required: false,
            type: TableColumnType.Text,
            skipIndex: {
                name: "idx_exception_type",
                type: SkipIndexType.BloomFilter,
                params: [0.01],
                granularity: 1,
            },
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const stackTraceColumn = new AnalyticsTableColumn({
            key: "stackTrace",
            title: "Stack Trace",
            description: "Exception Stack Trace", // Examples: Division by zero; Can't convert 'int' object to str implicitly
            required: false,
            type: TableColumnType.Text,
            codec: {
                codec: "ZSTD",
                level: 3,
            },
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const messageColumn = new AnalyticsTableColumn({
            key: "message",
            title: "Exception Message",
            description: "Exception Message", // Examples: Division by zero; Can't convert 'int' object to str implicitly
            required: false,
            type: TableColumnType.Text,
            codec: {
                codec: "ZSTD",
                level: 3,
            },
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const spanStatusCodeColumn = new AnalyticsTableColumn({
            key: "spanStatusCode",
            title: "Span Status Code",
            description: "Span Status Code",
            required: false,
            type: TableColumnType.Number,
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const escapedColumn = new AnalyticsTableColumn({
            key: "escaped",
            title: "Exception Escaped",
            description: "Exception Escaped", // SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.
            required: false,
            type: TableColumnType.Boolean,
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const traceIdColumn = new AnalyticsTableColumn({
            key: "traceId",
            codec: { codec: "ZSTD", level: 1 },
            title: "Trace ID",
            description: "ID of the trace",
            required: false,
            type: TableColumnType.Text,
            skipIndex: {
                name: "idx_trace_id",
                type: SkipIndexType.BloomFilter,
                params: [0.01],
                granularity: 1,
            },
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const spanIdColumn = new AnalyticsTableColumn({
            key: "spanId",
            codec: { codec: "ZSTD", level: 1 },
            title: "Span ID",
            description: "ID of the span",
            required: false,
            type: TableColumnType.Text,
            skipIndex: {
                name: "idx_span_id",
                type: SkipIndexType.BloomFilter,
                params: [0.01],
                granularity: 1,
            },
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const fingerprintColumn = new AnalyticsTableColumn({
            key: "fingerprint",
            title: "Fingerprint",
            description: "Fingerprint of the exception",
            required: true,
            type: TableColumnType.Text,
            skipIndex: {
                name: "idx_fingerprint",
                type: SkipIndexType.BloomFilter,
                params: [0.01],
                granularity: 1,
            },
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const spanNameColumn = new AnalyticsTableColumn({
            key: "spanName",
            title: "Span Name",
            description: "Name of the span",
            required: false,
            type: TableColumnType.Text,
            skipIndex: {
                name: "idx_span_name",
                type: SkipIndexType.TokenBF,
                params: [10240, 3, 0],
                granularity: 4,
            },
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryServiceTraces,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryServiceTraces,
                ],
                update: [],
            },
        });
        const releaseColumn = new AnalyticsTableColumn({
            key: "release",
            title: "Release",
            description: "Service version / release from service.version resource attribute",
            required: false,
            type: TableColumnType.Text,
            skipIndex: {
                name: "idx_release",
                type: SkipIndexType.Set,
                params: [100],
                granularity: 4,
            },
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const environmentColumn = new AnalyticsTableColumn({
            key: "environment",
            title: "Environment",
            description: "Deployment environment from deployment.environment resource attribute",
            required: false,
            type: TableColumnType.Text,
            skipIndex: {
                name: "idx_environment",
                type: SkipIndexType.Set,
                params: [10],
                granularity: 4,
            },
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const parsedFramesColumn = new AnalyticsTableColumn({
            key: "parsedFrames",
            // JSON-as-String blob, same body-family treatment as stackTrace.
            codec: { codec: "ZSTD", level: 3 },
            title: "Parsed Stack Frames",
            description: "Stack trace parsed into structured frames (JSON array)",
            required: false,
            type: TableColumnType.Text,
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const attributesColumn = new AnalyticsTableColumn({
            key: "attributes",
            codec: { codec: "ZSTD", level: 3 },
            title: "Attributes",
            description: "Attributes",
            required: true,
            defaultValue: {},
            type: TableColumnType.MapStringString,
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        const entityKeysColumn = new AnalyticsTableColumn({
            key: "entityKeys",
            codec: { codec: "ZSTD", level: 3 },
            title: "Entity Keys",
            description: "Stable keys of every OpenTelemetry entity (service, host, k8s.pod, container, ...) this signal belongs to. A superset that includes the primary entity. Enables cross-cutting membership queries via has(entityKeys, :key).",
            required: true,
            defaultValue: [],
            type: TableColumnType.ArrayText,
            skipIndex: {
                name: "idx_entity_keys",
                type: SkipIndexType.BloomFilter,
                params: [0.01],
                granularity: 1,
            },
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [],
            },
        });
        /*
         * Scalar per-entity-type key columns — denormalized single-value
         * siblings of `entityKeys`. Each holds the 16-hex key (see
         * Common/Utils/Telemetry/EntityKey) of the row's entity of that type,
         * or '' when the resource carries no such entity (non-Nullable String,
         * so old rows read the type default ''). Unlike the array column, a
         * scalar equality predicate is usable as an MV/sort key and gets a
         * cheaper bloom-filter probe; only the high-traffic keys
         * (service/host/k8s.pod) carry skip indexes. Stamped at ingest by the
         * same extractor that fills `entityKeys`; never part of identity.
         */
        const scalarEntityKeyColumns = [
            {
                key: "serviceEntityKey",
                title: "Service Entity Key",
                indexName: "idx_service_entity_key",
            },
            {
                key: "hostEntityKey",
                title: "Host Entity Key",
                indexName: "idx_host_entity_key",
            },
            {
                key: "k8sPodEntityKey",
                title: "Kubernetes Pod Entity Key",
                indexName: "idx_k8s_pod_entity_key",
            },
            { key: "k8sNodeEntityKey", title: "Kubernetes Node Entity Key" },
            { key: "k8sClusterEntityKey", title: "Kubernetes Cluster Entity Key" },
            { key: "containerEntityKey", title: "Container Entity Key" },
        ].map((def) => {
            return new AnalyticsTableColumn({
                key: def.key,
                title: def.title,
                description: "Scalar entity key for this entity type (see entityKeys); '' when the resource has no entity of this type.",
                required: true,
                defaultValue: "",
                type: TableColumnType.Text,
                codec: { codec: "ZSTD", level: 1 },
                skipIndex: def.indexName
                    ? {
                        name: def.indexName,
                        type: SkipIndexType.BloomFilter,
                        params: [0.01],
                        granularity: 1,
                    }
                    : undefined,
                accessControl: entityKeysColumn.accessControl,
            });
        });
        const retentionDateColumn = new AnalyticsTableColumn({
            key: "retentionDate",
            codec: [{ codec: "DoubleDelta" }, { codec: "ZSTD", level: 1 }],
            title: "Retention Date",
            description: "Date after which this row is eligible for TTL deletion, computed at ingest time as time + service.retainTelemetryDataForDays",
            required: true,
            type: TableColumnType.Date,
            defaultValue: undefined,
        });
        super({
            tableName: AnalyticsTableName.ExceptionInstance,
            tableEngine: AnalyticsTableEngine.MergeTree,
            singularName: "Exception Instance",
            pluralName: "Exception Instances",
            enableRealtimeEventsOn: {
                create: true,
            },
            accessControl: {
                read: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.Viewer,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.TelemetryViewer,
                    Permission.ReadTelemetryException,
                ],
                create: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.CreateTelemetryException,
                ],
                update: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.EditTelemetryException,
                ],
                delete: [
                    Permission.ProjectOwner,
                    Permission.ProjectAdmin,
                    Permission.ProjectMember,
                    Permission.TelemetryAdmin,
                    Permission.TelemetryMember,
                    Permission.DeleteTelemetryException,
                ],
            },
            crudApiPath: new Route("/exceptions"),
            enableDocumentation: true,
            tableDescription: "Individual exception occurrences captured from your telemetry. Query application errors and their attributes over time.",
            tableColumns: [
                projectIdColumn,
                primaryEntityIdColumn,
                primaryEntityTypeColumn,
                timeColumn,
                timeUnixNanoColumn,
                exceptionTypeColumn,
                stackTraceColumn,
                messageColumn,
                spanStatusCodeColumn,
                escapedColumn,
                traceIdColumn,
                spanIdColumn,
                fingerprintColumn,
                spanNameColumn,
                releaseColumn,
                environmentColumn,
                parsedFramesColumn,
                attributesColumn,
                entityKeysColumn,
                ...scalarEntityKeyColumns,
                retentionDateColumn,
            ],
            projections: [
                {
                    name: "proj_exception_group",
                    query: "SELECT projectId, primaryEntityId, fingerprint, exceptionType, count() AS cnt, max(time) AS last_seen GROUP BY projectId, primaryEntityId, fingerprint, exceptionType",
                },
            ],
            sortKeys: ["projectId", "time", "primaryEntityId", "fingerprint"],
            primaryKeys: ["projectId", "time", "primaryEntityId", "fingerprint"],
            partitionKey: "toYYYYMMDD(time)",
            tableSettings: "ttl_only_drop_parts = 1, non_replicated_deduplication_window = 10000",
            ttlExpression: "retentionDate DELETE",
            defaultSortColumn: "time",
        });
    }
    get projectId() {
        return this.getColumnValue("projectId");
    }
    set projectId(v) {
        this.setColumnValue("projectId", v);
    }
    get primaryEntityId() {
        return this.getColumnValue("primaryEntityId");
    }
    set primaryEntityId(v) {
        this.setColumnValue("primaryEntityId", v);
    }
    get primaryEntityType() {
        return this.getColumnValue("primaryEntityType");
    }
    set primaryEntityType(v) {
        this.setColumnValue("primaryEntityType", v);
    }
    get time() {
        return this.getColumnValue("time");
    }
    set time(v) {
        this.setColumnValue("time", v);
    }
    get timeUnixNano() {
        return this.getColumnValue("timeUnixNano");
    }
    set timeUnixNano(v) {
        this.setColumnValue("timeUnixNano", v);
    }
    get traceId() {
        return this.getColumnValue("traceId");
    }
    set traceId(v) {
        this.setColumnValue("traceId", v);
    }
    get spanId() {
        return this.getColumnValue("spanId");
    }
    set spanId(v) {
        this.setColumnValue("spanId", v);
    }
    get exceptionType() {
        return this.getColumnValue("exceptionType");
    }
    set exceptionType(v) {
        this.setColumnValue("exceptionType", v);
    }
    get stackTrace() {
        return this.getColumnValue("stackTrace");
    }
    set stackTrace(v) {
        this.setColumnValue("stackTrace", v);
    }
    get message() {
        return this.getColumnValue("message");
    }
    set message(v) {
        this.setColumnValue("message", v);
    }
    get escaped() {
        return this.getColumnValue("escaped");
    }
    set escaped(v) {
        this.setColumnValue("escaped", v);
    }
    get fingerprint() {
        return this.getColumnValue("fingerprint");
    }
    set fingerprint(v) {
        this.setColumnValue("fingerprint", v);
    }
    get attributes() {
        return this.getColumnValue("attributes");
    }
    set attributes(v) {
        this.setColumnValue("attributes", v);
    }
    get entityKeys() {
        return this.getColumnValue("entityKeys");
    }
    set entityKeys(v) {
        this.setColumnValue("entityKeys", v);
    }
    get spanStatusCode() {
        return this.getColumnValue("spanStatusCode");
    }
    set spanStatusCode(v) {
        this.setColumnValue("spanStatusCode", v);
    }
    get spanName() {
        return this.getColumnValue("spanName");
    }
    set spanName(v) {
        this.setColumnValue("spanName", v);
    }
    get release() {
        return this.getColumnValue("release");
    }
    set release(v) {
        this.setColumnValue("release", v);
    }
    get environment() {
        return this.getColumnValue("environment");
    }
    set environment(v) {
        this.setColumnValue("environment", v);
    }
    get parsedFrames() {
        return this.getColumnValue("parsedFrames");
    }
    set parsedFrames(v) {
        this.setColumnValue("parsedFrames", v);
    }
    get retentionDate() {
        return this.getColumnValue("retentionDate");
    }
    set retentionDate(v) {
        this.setColumnValue("retentionDate", v);
    }
};
ExceptionInstance = __decorate([
    OperationalResource(),
    OwnedThrough("primaryEntityId", Service, { includeProjectScope: true }),
    __metadata("design:paramtypes", [])
], ExceptionInstance);
export default ExceptionInstance;
//# sourceMappingURL=ExceptionInstance.js.map