{"version":3,"file":"span_query_helpers.cjs","names":["MessageType","json: JsonObject","UnknownFieldHandler","key: keyof Struct[\"fields\"] | undefined","val: Struct[\"fields\"][any] | undefined","WireType","MessageType","PbLong","UnknownFieldHandler","WireType","MessageType","UnknownFieldHandler","WireType","key: keyof WhereClause[\"fields\"] | undefined","val: WhereClause[\"fields\"][any] | undefined"],"sources":["../../generated/ts/google/protobuf/struct.ts","../../generated/ts/google/protobuf/timestamp.ts","../../generated/ts/query/span_query.ts","../../src/query/span_query_helpers.ts"],"sourcesContent":["// @generated by protobuf-ts 2.11.1 with parameter generate_dependencies\n// @generated from protobuf file \"google/protobuf/struct.proto\" (package \"google.protobuf\", syntax proto3)\n// tslint:disable\n//\n// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\nimport type { BinaryWriteOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryWriter } from \"@protobuf-ts/runtime\";\nimport { WireType } from \"@protobuf-ts/runtime\";\nimport type { BinaryReadOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryReader } from \"@protobuf-ts/runtime\";\nimport { UnknownFieldHandler } from \"@protobuf-ts/runtime\";\nimport type { PartialMessage } from \"@protobuf-ts/runtime\";\nimport { reflectionMergePartial } from \"@protobuf-ts/runtime\";\nimport { isJsonObject } from \"@protobuf-ts/runtime\";\nimport { typeofJsonValue } from \"@protobuf-ts/runtime\";\nimport type { JsonValue } from \"@protobuf-ts/runtime\";\nimport type { JsonReadOptions } from \"@protobuf-ts/runtime\";\nimport type { JsonWriteOptions } from \"@protobuf-ts/runtime\";\nimport type { JsonObject } from \"@protobuf-ts/runtime\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\n/**\n * `Struct` represents a structured data value, consisting of fields\n * which map to dynamically typed values. In some languages, `Struct`\n * might be supported by a native representation. For example, in\n * scripting languages like JS a struct is represented as an\n * object. The details of that representation are described together\n * with the proto support for the language.\n *\n * The JSON representation for `Struct` is JSON object.\n *\n * @generated from protobuf message google.protobuf.Struct\n */\nexport interface Struct {\n    /**\n     * Unordered map of dynamically typed values.\n     *\n     * @generated from protobuf field: map<string, google.protobuf.Value> fields = 1\n     */\n    fields: {\n        [key: string]: Value;\n    };\n}\n/**\n * `Value` represents a dynamically typed value which can be either\n * null, a number, a string, a boolean, a recursive struct value, or a\n * list of values. A producer of value is expected to set one of these\n * variants. Absence of any variant indicates an error.\n *\n * The JSON representation for `Value` is JSON value.\n *\n * @generated from protobuf message google.protobuf.Value\n */\nexport interface Value {\n    /**\n     * The kind of value.\n     *\n     * @generated from protobuf oneof: kind\n     */\n    kind: {\n        oneofKind: \"nullValue\";\n        /**\n         * Represents a null value.\n         *\n         * @generated from protobuf field: google.protobuf.NullValue null_value = 1\n         */\n        nullValue: NullValue;\n    } | {\n        oneofKind: \"numberValue\";\n        /**\n         * Represents a double value.\n         *\n         * @generated from protobuf field: double number_value = 2\n         */\n        numberValue: number;\n    } | {\n        oneofKind: \"stringValue\";\n        /**\n         * Represents a string value.\n         *\n         * @generated from protobuf field: string string_value = 3\n         */\n        stringValue: string;\n    } | {\n        oneofKind: \"boolValue\";\n        /**\n         * Represents a boolean value.\n         *\n         * @generated from protobuf field: bool bool_value = 4\n         */\n        boolValue: boolean;\n    } | {\n        oneofKind: \"structValue\";\n        /**\n         * Represents a structured value.\n         *\n         * @generated from protobuf field: google.protobuf.Struct struct_value = 5\n         */\n        structValue: Struct;\n    } | {\n        oneofKind: \"listValue\";\n        /**\n         * Represents a repeated `Value`.\n         *\n         * @generated from protobuf field: google.protobuf.ListValue list_value = 6\n         */\n        listValue: ListValue;\n    } | {\n        oneofKind: undefined;\n    };\n}\n/**\n * `ListValue` is a wrapper around a repeated field of values.\n *\n * The JSON representation for `ListValue` is JSON array.\n *\n * @generated from protobuf message google.protobuf.ListValue\n */\nexport interface ListValue {\n    /**\n     * Repeated field of dynamically typed values.\n     *\n     * @generated from protobuf field: repeated google.protobuf.Value values = 1\n     */\n    values: Value[];\n}\n/**\n * `NullValue` is a singleton enumeration to represent the null value for the\n * `Value` type union.\n *\n * The JSON representation for `NullValue` is JSON `null`.\n *\n * @generated from protobuf enum google.protobuf.NullValue\n */\nexport enum NullValue {\n    /**\n     * Null value.\n     *\n     * @generated from protobuf enum value: NULL_VALUE = 0;\n     */\n    NULL_VALUE = 0\n}\n// @generated message type with reflection information, may provide speed optimized methods\nclass Struct$Type extends MessageType<Struct> {\n    constructor() {\n        super(\"google.protobuf.Struct\", [\n            { no: 1, name: \"fields\", kind: \"map\", K: 9 /*ScalarType.STRING*/, V: { kind: \"message\", T: () => Value } }\n        ]);\n    }\n    /**\n     * Encode `Struct` to JSON object.\n     */\n    internalJsonWrite(message: Struct, options: JsonWriteOptions): JsonValue {\n        let json: JsonObject = {};\n        for (let [k, v] of Object.entries(message.fields)) {\n            json[k] = Value.toJson(v);\n        }\n        return json;\n    }\n    /**\n     * Decode `Struct` from JSON object.\n     */\n    internalJsonRead(json: JsonValue, options: JsonReadOptions, target?: Struct): Struct {\n        if (!isJsonObject(json))\n            throw new globalThis.Error(\"Unable to parse message \" + this.typeName + \" from JSON \" + typeofJsonValue(json) + \".\");\n        if (!target)\n            target = this.create();\n        for (let [k, v] of globalThis.Object.entries(json)) {\n            target.fields[k] = Value.fromJson(v);\n        }\n        return target;\n    }\n    create(value?: PartialMessage<Struct>): Struct {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.fields = {};\n        if (value !== undefined)\n            reflectionMergePartial<Struct>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Struct): Struct {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* map<string, google.protobuf.Value> fields */ 1:\n                    this.binaryReadMap1(message.fields, reader, options);\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    private binaryReadMap1(map: Struct[\"fields\"], reader: IBinaryReader, options: BinaryReadOptions): void {\n        let len = reader.uint32(), end = reader.pos + len, key: keyof Struct[\"fields\"] | undefined, val: Struct[\"fields\"][any] | undefined;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case 1:\n                    key = reader.string();\n                    break;\n                case 2:\n                    val = Value.internalBinaryRead(reader, reader.uint32(), options);\n                    break;\n                default: throw new globalThis.Error(\"unknown map entry field for google.protobuf.Struct.fields\");\n            }\n        }\n        map[key ?? \"\"] = val ?? Value.create();\n    }\n    internalBinaryWrite(message: Struct, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* map<string, google.protobuf.Value> fields = 1; */\n        for (let k of globalThis.Object.keys(message.fields)) {\n            writer.tag(1, WireType.LengthDelimited).fork().tag(1, WireType.LengthDelimited).string(k);\n            writer.tag(2, WireType.LengthDelimited).fork();\n            Value.internalBinaryWrite(message.fields[k], writer, options);\n            writer.join().join();\n        }\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message google.protobuf.Struct\n */\nexport const Struct = new Struct$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass Value$Type extends MessageType<Value> {\n    constructor() {\n        super(\"google.protobuf.Value\", [\n            { no: 1, name: \"null_value\", kind: \"enum\", oneof: \"kind\", T: () => [\"google.protobuf.NullValue\", NullValue] },\n            { no: 2, name: \"number_value\", kind: \"scalar\", oneof: \"kind\", T: 1 /*ScalarType.DOUBLE*/ },\n            { no: 3, name: \"string_value\", kind: \"scalar\", oneof: \"kind\", T: 9 /*ScalarType.STRING*/ },\n            { no: 4, name: \"bool_value\", kind: \"scalar\", oneof: \"kind\", T: 8 /*ScalarType.BOOL*/ },\n            { no: 5, name: \"struct_value\", kind: \"message\", oneof: \"kind\", T: () => Struct },\n            { no: 6, name: \"list_value\", kind: \"message\", oneof: \"kind\", T: () => ListValue }\n        ]);\n    }\n    /**\n     * Encode `Value` to JSON value.\n     */\n    internalJsonWrite(message: Value, options: JsonWriteOptions): JsonValue {\n        if (message.kind.oneofKind === undefined)\n            throw new globalThis.Error();\n        switch (message.kind.oneofKind) {\n            case undefined: throw new globalThis.Error();\n            case \"boolValue\": return message.kind.boolValue;\n            case \"nullValue\": return null;\n            case \"numberValue\":\n                let numberValue = message.kind.numberValue;\n                if (typeof numberValue == \"number\" && !Number.isFinite(numberValue))\n                    throw new globalThis.Error();\n                return numberValue;\n            case \"stringValue\": return message.kind.stringValue;\n            case \"listValue\":\n                let listValueField = this.fields.find(f => f.no === 6);\n                if (listValueField?.kind !== \"message\")\n                    throw new globalThis.Error();\n                return listValueField.T().toJson(message.kind.listValue);\n            case \"structValue\":\n                let structValueField = this.fields.find(f => f.no === 5);\n                if (structValueField?.kind !== \"message\")\n                    throw new globalThis.Error();\n                return structValueField.T().toJson(message.kind.structValue);\n        }\n    }\n    /**\n     * Decode `Value` from JSON value.\n     */\n    internalJsonRead(json: JsonValue, options: JsonReadOptions, target?: Value): Value {\n        if (!target)\n            target = this.create();\n        switch (typeof json) {\n            case \"number\":\n                target.kind = { oneofKind: \"numberValue\", numberValue: json };\n                break;\n            case \"string\":\n                target.kind = { oneofKind: \"stringValue\", stringValue: json };\n                break;\n            case \"boolean\":\n                target.kind = { oneofKind: \"boolValue\", boolValue: json };\n                break;\n            case \"object\":\n                if (json === null) {\n                    target.kind = { oneofKind: \"nullValue\", nullValue: NullValue.NULL_VALUE };\n                }\n                else if (globalThis.Array.isArray(json)) {\n                    target.kind = { oneofKind: \"listValue\", listValue: ListValue.fromJson(json) };\n                }\n                else {\n                    target.kind = { oneofKind: \"structValue\", structValue: Struct.fromJson(json) };\n                }\n                break;\n            default: throw new globalThis.Error(\"Unable to parse \" + this.typeName + \" from JSON \" + typeofJsonValue(json));\n        }\n        return target;\n    }\n    create(value?: PartialMessage<Value>): Value {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.kind = { oneofKind: undefined };\n        if (value !== undefined)\n            reflectionMergePartial<Value>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Value): Value {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* google.protobuf.NullValue null_value */ 1:\n                    message.kind = {\n                        oneofKind: \"nullValue\",\n                        nullValue: reader.int32()\n                    };\n                    break;\n                case /* double number_value */ 2:\n                    message.kind = {\n                        oneofKind: \"numberValue\",\n                        numberValue: reader.double()\n                    };\n                    break;\n                case /* string string_value */ 3:\n                    message.kind = {\n                        oneofKind: \"stringValue\",\n                        stringValue: reader.string()\n                    };\n                    break;\n                case /* bool bool_value */ 4:\n                    message.kind = {\n                        oneofKind: \"boolValue\",\n                        boolValue: reader.bool()\n                    };\n                    break;\n                case /* google.protobuf.Struct struct_value */ 5:\n                    message.kind = {\n                        oneofKind: \"structValue\",\n                        structValue: Struct.internalBinaryRead(reader, reader.uint32(), options, (message.kind as any).structValue)\n                    };\n                    break;\n                case /* google.protobuf.ListValue list_value */ 6:\n                    message.kind = {\n                        oneofKind: \"listValue\",\n                        listValue: ListValue.internalBinaryRead(reader, reader.uint32(), options, (message.kind as any).listValue)\n                    };\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: Value, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* google.protobuf.NullValue null_value = 1; */\n        if (message.kind.oneofKind === \"nullValue\")\n            writer.tag(1, WireType.Varint).int32(message.kind.nullValue);\n        /* double number_value = 2; */\n        if (message.kind.oneofKind === \"numberValue\")\n            writer.tag(2, WireType.Bit64).double(message.kind.numberValue);\n        /* string string_value = 3; */\n        if (message.kind.oneofKind === \"stringValue\")\n            writer.tag(3, WireType.LengthDelimited).string(message.kind.stringValue);\n        /* bool bool_value = 4; */\n        if (message.kind.oneofKind === \"boolValue\")\n            writer.tag(4, WireType.Varint).bool(message.kind.boolValue);\n        /* google.protobuf.Struct struct_value = 5; */\n        if (message.kind.oneofKind === \"structValue\")\n            Struct.internalBinaryWrite(message.kind.structValue, writer.tag(5, WireType.LengthDelimited).fork(), options).join();\n        /* google.protobuf.ListValue list_value = 6; */\n        if (message.kind.oneofKind === \"listValue\")\n            ListValue.internalBinaryWrite(message.kind.listValue, writer.tag(6, WireType.LengthDelimited).fork(), options).join();\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message google.protobuf.Value\n */\nexport const Value = new Value$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ListValue$Type extends MessageType<ListValue> {\n    constructor() {\n        super(\"google.protobuf.ListValue\", [\n            { no: 1, name: \"values\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => Value }\n        ]);\n    }\n    /**\n     * Encode `ListValue` to JSON array.\n     */\n    internalJsonWrite(message: ListValue, options: JsonWriteOptions): JsonValue {\n        return message.values.map(v => Value.toJson(v));\n    }\n    /**\n     * Decode `ListValue` from JSON array.\n     */\n    internalJsonRead(json: JsonValue, options: JsonReadOptions, target?: ListValue): ListValue {\n        if (!globalThis.Array.isArray(json))\n            throw new globalThis.Error(\"Unable to parse \" + this.typeName + \" from JSON \" + typeofJsonValue(json));\n        if (!target)\n            target = this.create();\n        let values = json.map(v => Value.fromJson(v));\n        target.values.push(...values);\n        return target;\n    }\n    create(value?: PartialMessage<ListValue>): ListValue {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.values = [];\n        if (value !== undefined)\n            reflectionMergePartial<ListValue>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListValue): ListValue {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* repeated google.protobuf.Value values */ 1:\n                    message.values.push(Value.internalBinaryRead(reader, reader.uint32(), options));\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: ListValue, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* repeated google.protobuf.Value values = 1; */\n        for (let i = 0; i < message.values.length; i++)\n            Value.internalBinaryWrite(message.values[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message google.protobuf.ListValue\n */\nexport const ListValue = new ListValue$Type();\n","// @generated by protobuf-ts 2.11.1 with parameter generate_dependencies\n// @generated from protobuf file \"google/protobuf/timestamp.proto\" (package \"google.protobuf\", syntax proto3)\n// tslint:disable\n//\n// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//     * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//     * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//     * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\nimport type { BinaryWriteOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryWriter } from \"@protobuf-ts/runtime\";\nimport { WireType } from \"@protobuf-ts/runtime\";\nimport type { BinaryReadOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryReader } from \"@protobuf-ts/runtime\";\nimport { UnknownFieldHandler } from \"@protobuf-ts/runtime\";\nimport type { PartialMessage } from \"@protobuf-ts/runtime\";\nimport { reflectionMergePartial } from \"@protobuf-ts/runtime\";\nimport { typeofJsonValue } from \"@protobuf-ts/runtime\";\nimport type { JsonValue } from \"@protobuf-ts/runtime\";\nimport type { JsonReadOptions } from \"@protobuf-ts/runtime\";\nimport type { JsonWriteOptions } from \"@protobuf-ts/runtime\";\nimport { PbLong } from \"@protobuf-ts/runtime\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\n/**\n * A Timestamp represents a point in time independent of any time zone or local\n * calendar, encoded as a count of seconds and fractions of seconds at\n * nanosecond resolution. The count is relative to an epoch at UTC midnight on\n * January 1, 1970, in the proleptic Gregorian calendar which extends the\n * Gregorian calendar backwards to year one.\n *\n * All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n * second table is needed for interpretation, using a [24-hour linear\n * smear](https://developers.google.com/time/smear).\n *\n * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n * restricting to that range, we ensure that we can convert to and from [RFC\n * 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n *\n * # Examples\n *\n * Example 1: Compute Timestamp from POSIX `time()`.\n *\n *     Timestamp timestamp;\n *     timestamp.set_seconds(time(NULL));\n *     timestamp.set_nanos(0);\n *\n * Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n *\n *     struct timeval tv;\n *     gettimeofday(&tv, NULL);\n *\n *     Timestamp timestamp;\n *     timestamp.set_seconds(tv.tv_sec);\n *     timestamp.set_nanos(tv.tv_usec * 1000);\n *\n * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n *\n *     FILETIME ft;\n *     GetSystemTimeAsFileTime(&ft);\n *     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n *\n *     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n *     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n *     Timestamp timestamp;\n *     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n *     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n *\n * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n *\n *     long millis = System.currentTimeMillis();\n *\n *     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n *         .setNanos((int) ((millis % 1000) * 1000000)).build();\n *\n * Example 5: Compute Timestamp from Java `Instant.now()`.\n *\n *     Instant now = Instant.now();\n *\n *     Timestamp timestamp =\n *         Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n *             .setNanos(now.getNano()).build();\n *\n * Example 6: Compute Timestamp from current time in Python.\n *\n *     timestamp = Timestamp()\n *     timestamp.GetCurrentTime()\n *\n * # JSON Mapping\n *\n * In JSON format, the Timestamp type is encoded as a string in the\n * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n * format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n * where {year} is always expressed using four digits while {month}, {day},\n * {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n * seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n * are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n * is required. A proto3 JSON serializer should always use UTC (as indicated by\n * \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n * able to accept both UTC and other timezones (as indicated by an offset).\n *\n * For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n * 01:30 UTC on January 15, 2017.\n *\n * In JavaScript, one can convert a Date object to this format using the\n * standard\n * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n * method. In Python, a standard `datetime.datetime` object can be converted\n * to this format using\n * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n * the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n * the Joda Time's [`ISODateTimeFormat.dateTime()`](\n * http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n * ) to obtain a formatter capable of generating timestamps in this format.\n *\n *\n * @generated from protobuf message google.protobuf.Timestamp\n */\nexport interface Timestamp {\n    /**\n     * Represents seconds of UTC time since Unix epoch\n     * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n     * 9999-12-31T23:59:59Z inclusive.\n     *\n     * @generated from protobuf field: int64 seconds = 1\n     */\n    seconds: bigint;\n    /**\n     * Non-negative fractions of a second at nanosecond resolution. Negative\n     * second values with fractions must still have non-negative nanos values\n     * that count forward in time. Must be from 0 to 999,999,999\n     * inclusive.\n     *\n     * @generated from protobuf field: int32 nanos = 2\n     */\n    nanos: number;\n}\n// @generated message type with reflection information, may provide speed optimized methods\nclass Timestamp$Type extends MessageType<Timestamp> {\n    constructor() {\n        super(\"google.protobuf.Timestamp\", [\n            { no: 1, name: \"seconds\", kind: \"scalar\", T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ },\n            { no: 2, name: \"nanos\", kind: \"scalar\", T: 5 /*ScalarType.INT32*/ }\n        ]);\n    }\n    /**\n     * Creates a new `Timestamp` for the current time.\n     */\n    now(): Timestamp {\n        const msg = this.create();\n        const ms = Date.now();\n        msg.seconds = PbLong.from(Math.floor(ms / 1000)).toBigInt();\n        msg.nanos = (ms % 1000) * 1000000;\n        return msg;\n    }\n    /**\n     * Converts a `Timestamp` to a JavaScript Date.\n     */\n    toDate(message: Timestamp): Date {\n        return new Date(PbLong.from(message.seconds).toNumber() * 1000 + Math.ceil(message.nanos / 1000000));\n    }\n    /**\n     * Converts a JavaScript Date to a `Timestamp`.\n     */\n    fromDate(date: Date): Timestamp {\n        const msg = this.create();\n        const ms = date.getTime();\n        msg.seconds = PbLong.from(Math.floor(ms / 1000)).toBigInt();\n        msg.nanos = ((ms % 1000) + (ms < 0 && ms % 1000 !== 0 ? 1000 : 0)) * 1000000;\n        return msg;\n    }\n    /**\n     * In JSON format, the `Timestamp` type is encoded as a string\n     * in the RFC 3339 format.\n     */\n    internalJsonWrite(message: Timestamp, options: JsonWriteOptions): JsonValue {\n        let ms = PbLong.from(message.seconds).toNumber() * 1000;\n        if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\"))\n            throw new Error(\"Unable to encode Timestamp to JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\");\n        if (message.nanos < 0)\n            throw new Error(\"Unable to encode invalid Timestamp to JSON. Nanos must not be negative.\");\n        let z = \"Z\";\n        if (message.nanos > 0) {\n            let nanosStr = (message.nanos + 1000000000).toString().substring(1);\n            if (nanosStr.substring(3) === \"000000\")\n                z = \".\" + nanosStr.substring(0, 3) + \"Z\";\n            else if (nanosStr.substring(6) === \"000\")\n                z = \".\" + nanosStr.substring(0, 6) + \"Z\";\n            else\n                z = \".\" + nanosStr + \"Z\";\n        }\n        return new Date(ms).toISOString().replace(\".000Z\", z);\n    }\n    /**\n     * In JSON format, the `Timestamp` type is encoded as a string\n     * in the RFC 3339 format.\n     */\n    internalJsonRead(json: JsonValue, options: JsonReadOptions, target?: Timestamp): Timestamp {\n        if (typeof json !== \"string\")\n            throw new Error(\"Unable to parse Timestamp from JSON \" + typeofJsonValue(json) + \".\");\n        let matches = json.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);\n        if (!matches)\n            throw new Error(\"Unable to parse Timestamp from JSON. Invalid format.\");\n        let ms = Date.parse(matches[1] + \"-\" + matches[2] + \"-\" + matches[3] + \"T\" + matches[4] + \":\" + matches[5] + \":\" + matches[6] + (matches[8] ? matches[8] : \"Z\"));\n        if (Number.isNaN(ms))\n            throw new Error(\"Unable to parse Timestamp from JSON. Invalid value.\");\n        if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\"))\n            throw new globalThis.Error(\"Unable to parse Timestamp from JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\");\n        if (!target)\n            target = this.create();\n        target.seconds = PbLong.from(ms / 1000).toBigInt();\n        target.nanos = 0;\n        if (matches[7])\n            target.nanos = (parseInt(\"1\" + matches[7] + \"0\".repeat(9 - matches[7].length)) - 1000000000);\n        return target;\n    }\n    create(value?: PartialMessage<Timestamp>): Timestamp {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.seconds = 0n;\n        message.nanos = 0;\n        if (value !== undefined)\n            reflectionMergePartial<Timestamp>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Timestamp): Timestamp {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* int64 seconds */ 1:\n                    message.seconds = reader.int64().toBigInt();\n                    break;\n                case /* int32 nanos */ 2:\n                    message.nanos = reader.int32();\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: Timestamp, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* int64 seconds = 1; */\n        if (message.seconds !== 0n)\n            writer.tag(1, WireType.Varint).int64(message.seconds);\n        /* int32 nanos = 2; */\n        if (message.nanos !== 0)\n            writer.tag(2, WireType.Varint).int32(message.nanos);\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message google.protobuf.Timestamp\n */\nexport const Timestamp = new Timestamp$Type();\n","// @generated by protobuf-ts 2.11.1 with parameter generate_dependencies\n// @generated from protobuf file \"query/span_query.proto\" (package \"tusk.drift.query.v1\", syntax proto3)\n// tslint:disable\nimport type { BinaryWriteOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryWriter } from \"@protobuf-ts/runtime\";\nimport { WireType } from \"@protobuf-ts/runtime\";\nimport type { BinaryReadOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryReader } from \"@protobuf-ts/runtime\";\nimport { UnknownFieldHandler } from \"@protobuf-ts/runtime\";\nimport type { PartialMessage } from \"@protobuf-ts/runtime\";\nimport { reflectionMergePartial } from \"@protobuf-ts/runtime\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\nimport { Value } from \"../google/protobuf/struct\";\nimport { Timestamp } from \"../google/protobuf/timestamp\";\n/**\n * @generated from protobuf message tusk.drift.query.v1.TimestampRange\n */\nexport interface TimestampRange {\n    /**\n     * @generated from protobuf field: google.protobuf.Timestamp start = 1\n     */\n    start?: Timestamp;\n    /**\n     * @generated from protobuf field: google.protobuf.Timestamp end = 2\n     */\n    end?: Timestamp;\n}\n/**\n * Optional extraction steps applied to a JSON-backed field predicate before\n * comparisons are evaluated.\n *\n * @generated from protobuf message tusk.drift.query.v1.FieldAccess\n */\nexport interface FieldAccess {\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.CastType cast_as = 1\n     */\n    castAs: CastType;\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.DecodeStrategy decode = 2\n     */\n    decode: DecodeStrategy;\n    /**\n     * @generated from protobuf field: optional string then_path = 3\n     */\n    thenPath?: string;\n}\n/**\n * Comparison operators applied to a single field path.\n *\n * Value-typed operators intentionally use google.protobuf.Value so the JSON\n * mapping stays ergonomic for humans and AI agents. Implementations should\n * validate which operators are valid for each field and how temporal values are\n * represented.\n *\n * @generated from protobuf message tusk.drift.query.v1.FieldPredicate\n */\nexport interface FieldPredicate {\n    /**\n     * @generated from protobuf field: google.protobuf.Value eq = 1\n     */\n    eq?: Value;\n    /**\n     * @generated from protobuf field: google.protobuf.Value neq = 2\n     */\n    neq?: Value;\n    /**\n     * @generated from protobuf field: repeated google.protobuf.Value in_values = 3\n     */\n    inValues: Value[];\n    /**\n     * @generated from protobuf field: repeated google.protobuf.Value not_in_values = 4\n     */\n    notInValues: Value[];\n    /**\n     * @generated from protobuf field: google.protobuf.Value gt = 5\n     */\n    gt?: Value;\n    /**\n     * @generated from protobuf field: google.protobuf.Value gte = 6\n     */\n    gte?: Value;\n    /**\n     * @generated from protobuf field: google.protobuf.Value lt = 7\n     */\n    lt?: Value;\n    /**\n     * @generated from protobuf field: google.protobuf.Value lte = 8\n     */\n    lte?: Value;\n    /**\n     * @generated from protobuf field: optional string contains = 9\n     */\n    contains?: string;\n    /**\n     * @generated from protobuf field: optional string starts_with = 10\n     */\n    startsWith?: string;\n    /**\n     * @generated from protobuf field: optional string ends_with = 11\n     */\n    endsWith?: string;\n    /**\n     * @generated from protobuf field: optional bool is_null = 12\n     */\n    isNull?: boolean;\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.TimestampRange between_timestamps = 13\n     */\n    betweenTimestamps?: TimestampRange;\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.FieldAccess access = 14\n     */\n    access?: FieldAccess;\n}\n/**\n * Recursive query clause.\n *\n * `fields` is keyed by canonical field path, for example:\n * - \"name\"\n * - \"packageName\"\n * - \"statusCode\"\n * - \"outputValue.statusCode\"\n * - \"inputValue.body\"\n *\n * @generated from protobuf message tusk.drift.query.v1.WhereClause\n */\nexport interface WhereClause {\n    /**\n     * @generated from protobuf field: map<string, tusk.drift.query.v1.FieldPredicate> fields = 1\n     */\n    fields: {\n        [key: string]: FieldPredicate;\n    };\n    /**\n     * @generated from protobuf field: repeated tusk.drift.query.v1.WhereClause and = 2\n     */\n    and: WhereClause[];\n    /**\n     * @generated from protobuf field: repeated tusk.drift.query.v1.WhereClause or = 3\n     */\n    or: WhereClause[];\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.WhereClause not = 4\n     */\n    not?: WhereClause;\n}\n/**\n * @generated from protobuf message tusk.drift.query.v1.SpanOrderBy\n */\nexport interface SpanOrderBy {\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.SpanSortField field = 1\n     */\n    field: SpanSortField;\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.SortDirection direction = 2\n     */\n    direction: SortDirection;\n}\n/**\n * @generated from protobuf message tusk.drift.query.v1.MetricOrderBy\n */\nexport interface MetricOrderBy {\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.AggregateMetric metric = 1\n     */\n    metric: AggregateMetric;\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.SortDirection direction = 2\n     */\n    direction: SortDirection;\n}\n/**\n * @generated from protobuf message tusk.drift.query.v1.SchemaComparisonPeriod\n */\nexport interface SchemaComparisonPeriod {\n    /**\n     * @generated from protobuf field: google.protobuf.Timestamp start_date = 1\n     */\n    startDate?: Timestamp;\n    /**\n     * @generated from protobuf field: google.protobuf.Timestamp end_date = 2\n     */\n    endDate?: Timestamp;\n}\n/**\n * @generated from protobuf message tusk.drift.query.v1.QuerySpansRequest\n */\nexport interface QuerySpansRequest {\n    /**\n     * @generated from protobuf field: string observable_service_id = 1\n     */\n    observableServiceId: string;\n    /**\n     * @generated from protobuf field: optional string client_id = 2\n     */\n    clientId?: string;\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.WhereClause where = 3\n     */\n    where?: WhereClause;\n    /**\n     * @generated from protobuf field: repeated tusk.drift.query.v1.SpanOrderBy order_by = 4\n     */\n    orderBy: SpanOrderBy[];\n    /**\n     * @generated from protobuf field: optional int32 limit = 5\n     */\n    limit?: number;\n    /**\n     * @generated from protobuf field: optional int32 offset = 6\n     */\n    offset?: number;\n    /**\n     * @generated from protobuf field: optional bool include_payloads = 7\n     */\n    includePayloads?: boolean;\n    /**\n     * @generated from protobuf field: optional int32 max_payload_length = 8\n     */\n    maxPayloadLength?: number;\n}\n/**\n * @generated from protobuf message tusk.drift.query.v1.GetSchemaRequest\n */\nexport interface GetSchemaRequest {\n    /**\n     * @generated from protobuf field: string observable_service_id = 1\n     */\n    observableServiceId: string;\n    /**\n     * @generated from protobuf field: optional string package_name = 2\n     */\n    packageName?: string;\n    /**\n     * @generated from protobuf field: optional string instrumentation_name = 3\n     */\n    instrumentationName?: string;\n    /**\n     * @generated from protobuf field: optional string name = 4\n     */\n    name?: string;\n    /**\n     * @generated from protobuf field: optional bool show_example = 5\n     */\n    showExample?: boolean;\n    /**\n     * @generated from protobuf field: optional int32 max_payload_length = 6\n     */\n    maxPayloadLength?: number;\n}\n/**\n * @generated from protobuf message tusk.drift.query.v1.ListDistinctValuesRequest\n */\nexport interface ListDistinctValuesRequest {\n    /**\n     * @generated from protobuf field: string observable_service_id = 1\n     */\n    observableServiceId: string;\n    /**\n     * @generated from protobuf field: optional string client_id = 2\n     */\n    clientId?: string;\n    /**\n     * @generated from protobuf field: string field = 3\n     */\n    field: string;\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.WhereClause where = 4\n     */\n    where?: WhereClause;\n    /**\n     * @generated from protobuf field: optional int32 limit = 5\n     */\n    limit?: number;\n}\n/**\n * @generated from protobuf message tusk.drift.query.v1.AggregateSpansRequest\n */\nexport interface AggregateSpansRequest {\n    /**\n     * @generated from protobuf field: string observable_service_id = 1\n     */\n    observableServiceId: string;\n    /**\n     * @generated from protobuf field: optional string client_id = 2\n     */\n    clientId?: string;\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.WhereClause where = 3\n     */\n    where?: WhereClause;\n    /**\n     * @generated from protobuf field: repeated tusk.drift.query.v1.AggregateGroupField group_by = 4\n     */\n    groupBy: AggregateGroupField[];\n    /**\n     * @generated from protobuf field: repeated tusk.drift.query.v1.AggregateMetric metrics = 5\n     */\n    metrics: AggregateMetric[];\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.TimeBucket time_bucket = 6\n     */\n    timeBucket: TimeBucket;\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.MetricOrderBy order_by = 7\n     */\n    orderBy?: MetricOrderBy;\n    /**\n     * @generated from protobuf field: optional int32 limit = 8\n     */\n    limit?: number;\n}\n/**\n * @generated from protobuf message tusk.drift.query.v1.GetTraceSpansRequest\n */\nexport interface GetTraceSpansRequest {\n    /**\n     * @generated from protobuf field: string observable_service_id = 1\n     */\n    observableServiceId: string;\n    /**\n     * @generated from protobuf field: optional string client_id = 2\n     */\n    clientId?: string;\n    /**\n     * @generated from protobuf field: string trace_id = 3\n     */\n    traceId: string;\n    /**\n     * @generated from protobuf field: optional bool include_payloads = 4\n     */\n    includePayloads?: boolean;\n    /**\n     * @generated from protobuf field: optional int32 max_payload_length = 5\n     */\n    maxPayloadLength?: number;\n}\n/**\n * @generated from protobuf message tusk.drift.query.v1.GetSpansByIdsRequest\n */\nexport interface GetSpansByIdsRequest {\n    /**\n     * @generated from protobuf field: string observable_service_id = 1\n     */\n    observableServiceId: string;\n    /**\n     * @generated from protobuf field: repeated string ids = 2\n     */\n    ids: string[];\n    /**\n     * @generated from protobuf field: repeated tusk.drift.query.v1.SelectableSpanField fields = 3\n     */\n    fields: SelectableSpanField[];\n    /**\n     * @generated from protobuf field: optional bool include_payloads = 4\n     */\n    includePayloads?: boolean;\n    /**\n     * @generated from protobuf field: optional int32 max_payload_length = 5\n     */\n    maxPayloadLength?: number;\n}\n/**\n * @generated from protobuf message tusk.drift.query.v1.CompareSchemaRequest\n */\nexport interface CompareSchemaRequest {\n    /**\n     * @generated from protobuf field: string observable_service_id = 1\n     */\n    observableServiceId: string;\n    /**\n     * @generated from protobuf field: optional string client_id = 2\n     */\n    clientId?: string;\n    /**\n     * @generated from protobuf field: string name = 3\n     */\n    name: string;\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.SchemaComparisonPeriod period_a = 4\n     */\n    periodA?: SchemaComparisonPeriod;\n    /**\n     * @generated from protobuf field: tusk.drift.query.v1.SchemaComparisonPeriod period_b = 5\n     */\n    periodB?: SchemaComparisonPeriod;\n    /**\n     * @generated from protobuf field: optional bool include_payloads = 6\n     */\n    includePayloads?: boolean;\n    /**\n     * @generated from protobuf field: optional int32 max_payload_length = 7\n     */\n    maxPayloadLength?: number;\n}\n// Canonical shared query schema for filtering and analyzing recorded spans.\n// \n// This package intentionally models the user-facing query shape shared by the\n// backend, MCP tools, and CLI instead of a lower-level AST that each client\n// would need to translate. Implementations are responsible for runtime\n// validation of field keys, operator compatibility, and JSON access rules.\n\n/**\n * Selectable fields when fetching spans by ID.\n *\n * @generated from protobuf enum tusk.drift.query.v1.SelectableSpanField\n */\nexport enum SelectableSpanField {\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_UNSPECIFIED = 0;\n     */\n    UNSPECIFIED = 0,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_ID = 1;\n     */\n    ID = 1,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_SPAN_ID = 2;\n     */\n    SPAN_ID = 2,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_TRACE_ID = 3;\n     */\n    TRACE_ID = 3,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_PARENT_SPAN_ID = 4;\n     */\n    PARENT_SPAN_ID = 4,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_NAME = 5;\n     */\n    NAME = 5,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_KIND = 6;\n     */\n    KIND = 6,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_STATUS = 7;\n     */\n    STATUS = 7,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_TIMESTAMP = 8;\n     */\n    TIMESTAMP = 8,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_DURATION = 9;\n     */\n    DURATION = 9,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_IS_ROOT_SPAN = 10;\n     */\n    IS_ROOT_SPAN = 10,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_METADATA = 11;\n     */\n    METADATA = 11,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_PACKAGE_NAME = 12;\n     */\n    PACKAGE_NAME = 12,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_INSTRUMENTATION_NAME = 13;\n     */\n    INSTRUMENTATION_NAME = 13,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_INPUT_VALUE = 14;\n     */\n    INPUT_VALUE = 14,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_OUTPUT_VALUE = 15;\n     */\n    OUTPUT_VALUE = 15,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_INPUT_SCHEMA = 16;\n     */\n    INPUT_SCHEMA = 16,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_OUTPUT_SCHEMA = 17;\n     */\n    OUTPUT_SCHEMA = 17,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_ENVIRONMENT = 18;\n     */\n    ENVIRONMENT = 18,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_CREATED_AT = 19;\n     */\n    CREATED_AT = 19,\n    /**\n     * @generated from protobuf enum value: SELECTABLE_SPAN_FIELD_UPDATED_AT = 20;\n     */\n    UPDATED_AT = 20\n}\n/**\n * JSON-backed columns that support JSONPath extraction.\n *\n * @generated from protobuf enum tusk.drift.query.v1.JsonColumn\n */\nexport enum JsonColumn {\n    /**\n     * @generated from protobuf enum value: JSON_COLUMN_UNSPECIFIED = 0;\n     */\n    UNSPECIFIED = 0,\n    /**\n     * @generated from protobuf enum value: JSON_COLUMN_INPUT_VALUE = 1;\n     */\n    INPUT_VALUE = 1,\n    /**\n     * @generated from protobuf enum value: JSON_COLUMN_OUTPUT_VALUE = 2;\n     */\n    OUTPUT_VALUE = 2,\n    /**\n     * @generated from protobuf enum value: JSON_COLUMN_METADATA = 3;\n     */\n    METADATA = 3,\n    /**\n     * @generated from protobuf enum value: JSON_COLUMN_STATUS = 4;\n     */\n    STATUS = 4\n}\n/**\n * Optional cast applied before comparisons.\n *\n * @generated from protobuf enum tusk.drift.query.v1.CastType\n */\nexport enum CastType {\n    /**\n     * @generated from protobuf enum value: CAST_TYPE_UNSPECIFIED = 0;\n     */\n    UNSPECIFIED = 0,\n    /**\n     * @generated from protobuf enum value: CAST_TYPE_TEXT = 1;\n     */\n    TEXT = 1,\n    /**\n     * @generated from protobuf enum value: CAST_TYPE_INT = 2;\n     */\n    INT = 2,\n    /**\n     * @generated from protobuf enum value: CAST_TYPE_FLOAT = 3;\n     */\n    FLOAT = 3,\n    /**\n     * @generated from protobuf enum value: CAST_TYPE_BOOLEAN = 4;\n     */\n    BOOLEAN = 4\n}\n/**\n * Optional decoding applied before an additional JSONPath extraction.\n *\n * @generated from protobuf enum tusk.drift.query.v1.DecodeStrategy\n */\nexport enum DecodeStrategy {\n    /**\n     * @generated from protobuf enum value: DECODE_STRATEGY_UNSPECIFIED = 0;\n     */\n    UNSPECIFIED = 0,\n    /**\n     * @generated from protobuf enum value: DECODE_STRATEGY_BASE64 = 1;\n     */\n    BASE64 = 1\n}\n/**\n * @generated from protobuf enum tusk.drift.query.v1.SortDirection\n */\nexport enum SortDirection {\n    /**\n     * @generated from protobuf enum value: SORT_DIRECTION_UNSPECIFIED = 0;\n     */\n    UNSPECIFIED = 0,\n    /**\n     * @generated from protobuf enum value: SORT_DIRECTION_ASC = 1;\n     */\n    ASC = 1,\n    /**\n     * @generated from protobuf enum value: SORT_DIRECTION_DESC = 2;\n     */\n    DESC = 2\n}\n/**\n * @generated from protobuf enum tusk.drift.query.v1.SpanSortField\n */\nexport enum SpanSortField {\n    /**\n     * @generated from protobuf enum value: SPAN_SORT_FIELD_UNSPECIFIED = 0;\n     */\n    UNSPECIFIED = 0,\n    /**\n     * @generated from protobuf enum value: SPAN_SORT_FIELD_TIMESTAMP = 1;\n     */\n    TIMESTAMP = 1,\n    /**\n     * @generated from protobuf enum value: SPAN_SORT_FIELD_CREATED_AT = 2;\n     */\n    CREATED_AT = 2,\n    /**\n     * @generated from protobuf enum value: SPAN_SORT_FIELD_UPDATED_AT = 3;\n     */\n    UPDATED_AT = 3,\n    /**\n     * @generated from protobuf enum value: SPAN_SORT_FIELD_DURATION = 4;\n     */\n    DURATION = 4,\n    /**\n     * @generated from protobuf enum value: SPAN_SORT_FIELD_NAME = 5;\n     */\n    NAME = 5,\n    /**\n     * @generated from protobuf enum value: SPAN_SORT_FIELD_TRACE_ID = 6;\n     */\n    TRACE_ID = 6\n}\n/**\n * @generated from protobuf enum tusk.drift.query.v1.AggregateMetric\n */\nexport enum AggregateMetric {\n    /**\n     * @generated from protobuf enum value: AGGREGATE_METRIC_UNSPECIFIED = 0;\n     */\n    UNSPECIFIED = 0,\n    /**\n     * @generated from protobuf enum value: AGGREGATE_METRIC_COUNT = 1;\n     */\n    COUNT = 1,\n    /**\n     * @generated from protobuf enum value: AGGREGATE_METRIC_ERROR_COUNT = 2;\n     */\n    ERROR_COUNT = 2,\n    /**\n     * @generated from protobuf enum value: AGGREGATE_METRIC_ERROR_RATE = 3;\n     */\n    ERROR_RATE = 3,\n    /**\n     * @generated from protobuf enum value: AGGREGATE_METRIC_AVG_DURATION = 4;\n     */\n    AVG_DURATION = 4,\n    /**\n     * @generated from protobuf enum value: AGGREGATE_METRIC_MIN_DURATION = 5;\n     */\n    MIN_DURATION = 5,\n    /**\n     * @generated from protobuf enum value: AGGREGATE_METRIC_MAX_DURATION = 6;\n     */\n    MAX_DURATION = 6,\n    /**\n     * @generated from protobuf enum value: AGGREGATE_METRIC_P50_DURATION = 7;\n     */\n    P50_DURATION = 7,\n    /**\n     * @generated from protobuf enum value: AGGREGATE_METRIC_P95_DURATION = 8;\n     */\n    P95_DURATION = 8,\n    /**\n     * @generated from protobuf enum value: AGGREGATE_METRIC_P99_DURATION = 9;\n     */\n    P99_DURATION = 9\n}\n/**\n * @generated from protobuf enum tusk.drift.query.v1.AggregateGroupField\n */\nexport enum AggregateGroupField {\n    /**\n     * @generated from protobuf enum value: AGGREGATE_GROUP_FIELD_UNSPECIFIED = 0;\n     */\n    UNSPECIFIED = 0,\n    /**\n     * @generated from protobuf enum value: AGGREGATE_GROUP_FIELD_NAME = 1;\n     */\n    NAME = 1,\n    /**\n     * @generated from protobuf enum value: AGGREGATE_GROUP_FIELD_KIND = 2;\n     */\n    KIND = 2,\n    /**\n     * @generated from protobuf enum value: AGGREGATE_GROUP_FIELD_PACKAGE_NAME = 3;\n     */\n    PACKAGE_NAME = 3,\n    /**\n     * @generated from protobuf enum value: AGGREGATE_GROUP_FIELD_INSTRUMENTATION_NAME = 4;\n     */\n    INSTRUMENTATION_NAME = 4,\n    /**\n     * @generated from protobuf enum value: AGGREGATE_GROUP_FIELD_ENVIRONMENT = 5;\n     */\n    ENVIRONMENT = 5,\n    /**\n     * @generated from protobuf enum value: AGGREGATE_GROUP_FIELD_STATUS_CODE = 6;\n     */\n    STATUS_CODE = 6\n}\n/**\n * @generated from protobuf enum tusk.drift.query.v1.TimeBucket\n */\nexport enum TimeBucket {\n    /**\n     * @generated from protobuf enum value: TIME_BUCKET_UNSPECIFIED = 0;\n     */\n    UNSPECIFIED = 0,\n    /**\n     * @generated from protobuf enum value: TIME_BUCKET_HOUR = 1;\n     */\n    HOUR = 1,\n    /**\n     * @generated from protobuf enum value: TIME_BUCKET_DAY = 2;\n     */\n    DAY = 2,\n    /**\n     * @generated from protobuf enum value: TIME_BUCKET_WEEK = 3;\n     */\n    WEEK = 3\n}\n// @generated message type with reflection information, may provide speed optimized methods\nclass TimestampRange$Type extends MessageType<TimestampRange> {\n    constructor() {\n        super(\"tusk.drift.query.v1.TimestampRange\", [\n            { no: 1, name: \"start\", kind: \"message\", T: () => Timestamp },\n            { no: 2, name: \"end\", kind: \"message\", T: () => Timestamp }\n        ]);\n    }\n    create(value?: PartialMessage<TimestampRange>): TimestampRange {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        if (value !== undefined)\n            reflectionMergePartial<TimestampRange>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: TimestampRange): TimestampRange {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* google.protobuf.Timestamp start */ 1:\n                    message.start = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.start);\n                    break;\n                case /* google.protobuf.Timestamp end */ 2:\n                    message.end = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.end);\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: TimestampRange, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* google.protobuf.Timestamp start = 1; */\n        if (message.start)\n            Timestamp.internalBinaryWrite(message.start, writer.tag(1, WireType.LengthDelimited).fork(), options).join();\n        /* google.protobuf.Timestamp end = 2; */\n        if (message.end)\n            Timestamp.internalBinaryWrite(message.end, writer.tag(2, WireType.LengthDelimited).fork(), options).join();\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message tusk.drift.query.v1.TimestampRange\n */\nexport const TimestampRange = new TimestampRange$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass FieldAccess$Type extends MessageType<FieldAccess> {\n    constructor() {\n        super(\"tusk.drift.query.v1.FieldAccess\", [\n            { no: 1, name: \"cast_as\", kind: \"enum\", T: () => [\"tusk.drift.query.v1.CastType\", CastType, \"CAST_TYPE_\"] },\n            { no: 2, name: \"decode\", kind: \"enum\", T: () => [\"tusk.drift.query.v1.DecodeStrategy\", DecodeStrategy, \"DECODE_STRATEGY_\"] },\n            { no: 3, name: \"then_path\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n    create(value?: PartialMessage<FieldAccess>): FieldAccess {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.castAs = 0;\n        message.decode = 0;\n        if (value !== undefined)\n            reflectionMergePartial<FieldAccess>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FieldAccess): FieldAccess {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* tusk.drift.query.v1.CastType cast_as */ 1:\n                    message.castAs = reader.int32();\n                    break;\n                case /* tusk.drift.query.v1.DecodeStrategy decode */ 2:\n                    message.decode = reader.int32();\n                    break;\n                case /* optional string then_path */ 3:\n                    message.thenPath = reader.string();\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: FieldAccess, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* tusk.drift.query.v1.CastType cast_as = 1; */\n        if (message.castAs !== 0)\n            writer.tag(1, WireType.Varint).int32(message.castAs);\n        /* tusk.drift.query.v1.DecodeStrategy decode = 2; */\n        if (message.decode !== 0)\n            writer.tag(2, WireType.Varint).int32(message.decode);\n        /* optional string then_path = 3; */\n        if (message.thenPath !== undefined)\n            writer.tag(3, WireType.LengthDelimited).string(message.thenPath);\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message tusk.drift.query.v1.FieldAccess\n */\nexport const FieldAccess = new FieldAccess$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass FieldPredicate$Type extends MessageType<FieldPredicate> {\n    constructor() {\n        super(\"tusk.drift.query.v1.FieldPredicate\", [\n            { no: 1, name: \"eq\", kind: \"message\", T: () => Value },\n            { no: 2, name: \"neq\", kind: \"message\", T: () => Value },\n            { no: 3, name: \"in_values\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => Value },\n            { no: 4, name: \"not_in_values\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => Value },\n            { no: 5, name: \"gt\", kind: \"message\", T: () => Value },\n            { no: 6, name: \"gte\", kind: \"message\", T: () => Value },\n            { no: 7, name: \"lt\", kind: \"message\", T: () => Value },\n            { no: 8, name: \"lte\", kind: \"message\", T: () => Value },\n            { no: 9, name: \"contains\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n            { no: 10, name: \"starts_with\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n            { no: 11, name: \"ends_with\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n            { no: 12, name: \"is_null\", kind: \"scalar\", opt: true, T: 8 /*ScalarType.BOOL*/ },\n            { no: 13, name: \"between_timestamps\", kind: \"message\", T: () => TimestampRange },\n            { no: 14, name: \"access\", kind: \"message\", T: () => FieldAccess }\n        ]);\n    }\n    create(value?: PartialMessage<FieldPredicate>): FieldPredicate {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.inValues = [];\n        message.notInValues = [];\n        if (value !== undefined)\n            reflectionMergePartial<FieldPredicate>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FieldPredicate): FieldPredicate {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* google.protobuf.Value eq */ 1:\n                    message.eq = Value.internalBinaryRead(reader, reader.uint32(), options, message.eq);\n                    break;\n                case /* google.protobuf.Value neq */ 2:\n                    message.neq = Value.internalBinaryRead(reader, reader.uint32(), options, message.neq);\n                    break;\n                case /* repeated google.protobuf.Value in_values */ 3:\n                    message.inValues.push(Value.internalBinaryRead(reader, reader.uint32(), options));\n                    break;\n                case /* repeated google.protobuf.Value not_in_values */ 4:\n                    message.notInValues.push(Value.internalBinaryRead(reader, reader.uint32(), options));\n                    break;\n                case /* google.protobuf.Value gt */ 5:\n                    message.gt = Value.internalBinaryRead(reader, reader.uint32(), options, message.gt);\n                    break;\n                case /* google.protobuf.Value gte */ 6:\n                    message.gte = Value.internalBinaryRead(reader, reader.uint32(), options, message.gte);\n                    break;\n                case /* google.protobuf.Value lt */ 7:\n                    message.lt = Value.internalBinaryRead(reader, reader.uint32(), options, message.lt);\n                    break;\n                case /* google.protobuf.Value lte */ 8:\n                    message.lte = Value.internalBinaryRead(reader, reader.uint32(), options, message.lte);\n                    break;\n                case /* optional string contains */ 9:\n                    message.contains = reader.string();\n                    break;\n                case /* optional string starts_with */ 10:\n                    message.startsWith = reader.string();\n                    break;\n                case /* optional string ends_with */ 11:\n                    message.endsWith = reader.string();\n                    break;\n                case /* optional bool is_null */ 12:\n                    message.isNull = reader.bool();\n                    break;\n                case /* tusk.drift.query.v1.TimestampRange between_timestamps */ 13:\n                    message.betweenTimestamps = TimestampRange.internalBinaryRead(reader, reader.uint32(), options, message.betweenTimestamps);\n                    break;\n                case /* tusk.drift.query.v1.FieldAccess access */ 14:\n                    message.access = FieldAccess.internalBinaryRead(reader, reader.uint32(), options, message.access);\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: FieldPredicate, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* google.protobuf.Value eq = 1; */\n        if (message.eq)\n            Value.internalBinaryWrite(message.eq, writer.tag(1, WireType.LengthDelimited).fork(), options).join();\n        /* google.protobuf.Value neq = 2; */\n        if (message.neq)\n            Value.internalBinaryWrite(message.neq, writer.tag(2, WireType.LengthDelimited).fork(), options).join();\n        /* repeated google.protobuf.Value in_values = 3; */\n        for (let i = 0; i < message.inValues.length; i++)\n            Value.internalBinaryWrite(message.inValues[i], writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n        /* repeated google.protobuf.Value not_in_values = 4; */\n        for (let i = 0; i < message.notInValues.length; i++)\n            Value.internalBinaryWrite(message.notInValues[i], writer.tag(4, WireType.LengthDelimited).fork(), options).join();\n        /* google.protobuf.Value gt = 5; */\n        if (message.gt)\n            Value.internalBinaryWrite(message.gt, writer.tag(5, WireType.LengthDelimited).fork(), options).join();\n        /* google.protobuf.Value gte = 6; */\n        if (message.gte)\n            Value.internalBinaryWrite(message.gte, writer.tag(6, WireType.LengthDelimited).fork(), options).join();\n        /* google.protobuf.Value lt = 7; */\n        if (message.lt)\n            Value.internalBinaryWrite(message.lt, writer.tag(7, WireType.LengthDelimited).fork(), options).join();\n        /* google.protobuf.Value lte = 8; */\n        if (message.lte)\n            Value.internalBinaryWrite(message.lte, writer.tag(8, WireType.LengthDelimited).fork(), options).join();\n        /* optional string contains = 9; */\n        if (message.contains !== undefined)\n            writer.tag(9, WireType.LengthDelimited).string(message.contains);\n        /* optional string starts_with = 10; */\n        if (message.startsWith !== undefined)\n            writer.tag(10, WireType.LengthDelimited).string(message.startsWith);\n        /* optional string ends_with = 11; */\n        if (message.endsWith !== undefined)\n            writer.tag(11, WireType.LengthDelimited).string(message.endsWith);\n        /* optional bool is_null = 12; */\n        if (message.isNull !== undefined)\n            writer.tag(12, WireType.Varint).bool(message.isNull);\n        /* tusk.drift.query.v1.TimestampRange between_timestamps = 13; */\n        if (message.betweenTimestamps)\n            TimestampRange.internalBinaryWrite(message.betweenTimestamps, writer.tag(13, WireType.LengthDelimited).fork(), options).join();\n        /* tusk.drift.query.v1.FieldAccess access = 14; */\n        if (message.access)\n            FieldAccess.internalBinaryWrite(message.access, writer.tag(14, WireType.LengthDelimited).fork(), options).join();\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message tusk.drift.query.v1.FieldPredicate\n */\nexport const FieldPredicate = new FieldPredicate$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass WhereClause$Type extends MessageType<WhereClause> {\n    constructor() {\n        super(\"tusk.drift.query.v1.WhereClause\", [\n            { no: 1, name: \"fields\", kind: \"map\", K: 9 /*ScalarType.STRING*/, V: { kind: \"message\", T: () => FieldPredicate } },\n            { no: 2, name: \"and\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => WhereClause },\n            { no: 3, name: \"or\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => WhereClause },\n            { no: 4, name: \"not\", kind: \"message\", T: () => WhereClause }\n        ]);\n    }\n    create(value?: PartialMessage<WhereClause>): WhereClause {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.fields = {};\n        message.and = [];\n        message.or = [];\n        if (value !== undefined)\n            reflectionMergePartial<WhereClause>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: WhereClause): WhereClause {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* map<string, tusk.drift.query.v1.FieldPredicate> fields */ 1:\n                    this.binaryReadMap1(message.fields, reader, options);\n                    break;\n                case /* repeated tusk.drift.query.v1.WhereClause and */ 2:\n                    message.and.push(WhereClause.internalBinaryRead(reader, reader.uint32(), options));\n                    break;\n                case /* repeated tusk.drift.query.v1.WhereClause or */ 3:\n                    message.or.push(WhereClause.internalBinaryRead(reader, reader.uint32(), options));\n                    break;\n                case /* tusk.drift.query.v1.WhereClause not */ 4:\n                    message.not = WhereClause.internalBinaryRead(reader, reader.uint32(), options, message.not);\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    private binaryReadMap1(map: WhereClause[\"fields\"], reader: IBinaryReader, options: BinaryReadOptions): void {\n        let len = reader.uint32(), end = reader.pos + len, key: keyof WhereClause[\"fields\"] | undefined, val: WhereClause[\"fields\"][any] | undefined;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case 1:\n                    key = reader.string();\n                    break;\n                case 2:\n                    val = FieldPredicate.internalBinaryRead(reader, reader.uint32(), options);\n                    break;\n                default: throw new globalThis.Error(\"unknown map entry field for tusk.drift.query.v1.WhereClause.fields\");\n            }\n        }\n        map[key ?? \"\"] = val ?? FieldPredicate.create();\n    }\n    internalBinaryWrite(message: WhereClause, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* map<string, tusk.drift.query.v1.FieldPredicate> fields = 1; */\n        for (let k of globalThis.Object.keys(message.fields)) {\n            writer.tag(1, WireType.LengthDelimited).fork().tag(1, WireType.LengthDelimited).string(k);\n            writer.tag(2, WireType.LengthDelimited).fork();\n            FieldPredicate.internalBinaryWrite(message.fields[k], writer, options);\n            writer.join().join();\n        }\n        /* repeated tusk.drift.query.v1.WhereClause and = 2; */\n        for (let i = 0; i < message.and.length; i++)\n            WhereClause.internalBinaryWrite(message.and[i], writer.tag(2, WireType.LengthDelimited).fork(), options).join();\n        /* repeated tusk.drift.query.v1.WhereClause or = 3; */\n        for (let i = 0; i < message.or.length; i++)\n            WhereClause.internalBinaryWrite(message.or[i], writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n        /* tusk.drift.query.v1.WhereClause not = 4; */\n        if (message.not)\n            WhereClause.internalBinaryWrite(message.not, writer.tag(4, WireType.LengthDelimited).fork(), options).join();\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message tusk.drift.query.v1.WhereClause\n */\nexport const WhereClause = new WhereClause$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass SpanOrderBy$Type extends MessageType<SpanOrderBy> {\n    constructor() {\n        super(\"tusk.drift.query.v1.SpanOrderBy\", [\n            { no: 1, name: \"field\", kind: \"enum\", T: () => [\"tusk.drift.query.v1.SpanSortField\", SpanSortField, \"SPAN_SORT_FIELD_\"] },\n            { no: 2, name: \"direction\", kind: \"enum\", T: () => [\"tusk.drift.query.v1.SortDirection\", SortDirection, \"SORT_DIRECTION_\"] }\n        ]);\n    }\n    create(value?: PartialMessage<SpanOrderBy>): SpanOrderBy {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.field = 0;\n        message.direction = 0;\n        if (value !== undefined)\n            reflectionMergePartial<SpanOrderBy>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: SpanOrderBy): SpanOrderBy {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* tusk.drift.query.v1.SpanSortField field */ 1:\n                    message.field = reader.int32();\n                    break;\n                case /* tusk.drift.query.v1.SortDirection direction */ 2:\n                    message.direction = reader.int32();\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: SpanOrderBy, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* tusk.drift.query.v1.SpanSortField field = 1; */\n        if (message.field !== 0)\n            writer.tag(1, WireType.Varint).int32(message.field);\n        /* tusk.drift.query.v1.SortDirection direction = 2; */\n        if (message.direction !== 0)\n            writer.tag(2, WireType.Varint).int32(message.direction);\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message tusk.drift.query.v1.SpanOrderBy\n */\nexport const SpanOrderBy = new SpanOrderBy$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass MetricOrderBy$Type extends MessageType<MetricOrderBy> {\n    constructor() {\n        super(\"tusk.drift.query.v1.MetricOrderBy\", [\n            { no: 1, name: \"metric\", kind: \"enum\", T: () => [\"tusk.drift.query.v1.AggregateMetric\", AggregateMetric, \"AGGREGATE_METRIC_\"] },\n            { no: 2, name: \"direction\", kind: \"enum\", T: () => [\"tusk.drift.query.v1.SortDirection\", SortDirection, \"SORT_DIRECTION_\"] }\n        ]);\n    }\n    create(value?: PartialMessage<MetricOrderBy>): MetricOrderBy {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.metric = 0;\n        message.direction = 0;\n        if (value !== undefined)\n            reflectionMergePartial<MetricOrderBy>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MetricOrderBy): MetricOrderBy {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* tusk.drift.query.v1.AggregateMetric metric */ 1:\n                    message.metric = reader.int32();\n                    break;\n                case /* tusk.drift.query.v1.SortDirection direction */ 2:\n                    message.direction = reader.int32();\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: MetricOrderBy, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* tusk.drift.query.v1.AggregateMetric metric = 1; */\n        if (message.metric !== 0)\n            writer.tag(1, WireType.Varint).int32(message.metric);\n        /* tusk.drift.query.v1.SortDirection direction = 2; */\n        if (message.direction !== 0)\n            writer.tag(2, WireType.Varint).int32(message.direction);\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message tusk.drift.query.v1.MetricOrderBy\n */\nexport const MetricOrderBy = new MetricOrderBy$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass SchemaComparisonPeriod$Type extends MessageType<SchemaComparisonPeriod> {\n    constructor() {\n        super(\"tusk.drift.query.v1.SchemaComparisonPeriod\", [\n            { no: 1, name: \"start_date\", kind: \"message\", T: () => Timestamp },\n            { no: 2, name: \"end_date\", kind: \"message\", T: () => Timestamp }\n        ]);\n    }\n    create(value?: PartialMessage<SchemaComparisonPeriod>): SchemaComparisonPeriod {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        if (value !== undefined)\n            reflectionMergePartial<SchemaComparisonPeriod>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: SchemaComparisonPeriod): SchemaComparisonPeriod {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* google.protobuf.Timestamp start_date */ 1:\n                    message.startDate = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.startDate);\n                    break;\n                case /* google.protobuf.Timestamp end_date */ 2:\n                    message.endDate = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.endDate);\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: SchemaComparisonPeriod, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* google.protobuf.Timestamp start_date = 1; */\n        if (message.startDate)\n            Timestamp.internalBinaryWrite(message.startDate, writer.tag(1, WireType.LengthDelimited).fork(), options).join();\n        /* google.protobuf.Timestamp end_date = 2; */\n        if (message.endDate)\n            Timestamp.internalBinaryWrite(message.endDate, writer.tag(2, WireType.LengthDelimited).fork(), options).join();\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message tusk.drift.query.v1.SchemaComparisonPeriod\n */\nexport const SchemaComparisonPeriod = new SchemaComparisonPeriod$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass QuerySpansRequest$Type extends MessageType<QuerySpansRequest> {\n    constructor() {\n        super(\"tusk.drift.query.v1.QuerySpansRequest\", [\n            { no: 1, name: \"observable_service_id\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"client_id\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n            { no: 3, name: \"where\", kind: \"message\", T: () => WhereClause },\n            { no: 4, name: \"order_by\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => SpanOrderBy },\n            { no: 5, name: \"limit\", kind: \"scalar\", opt: true, T: 5 /*ScalarType.INT32*/ },\n            { no: 6, name: \"offset\", kind: \"scalar\", opt: true, T: 5 /*ScalarType.INT32*/ },\n            { no: 7, name: \"include_payloads\", kind: \"scalar\", opt: true, T: 8 /*ScalarType.BOOL*/ },\n            { no: 8, name: \"max_payload_length\", kind: \"scalar\", opt: true, T: 5 /*ScalarType.INT32*/ }\n        ]);\n    }\n    create(value?: PartialMessage<QuerySpansRequest>): QuerySpansRequest {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.observableServiceId = \"\";\n        message.orderBy = [];\n        if (value !== undefined)\n            reflectionMergePartial<QuerySpansRequest>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: QuerySpansRequest): QuerySpansRequest {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* string observable_service_id */ 1:\n                    message.observableServiceId = reader.string();\n                    break;\n                case /* optional string client_id */ 2:\n                    message.clientId = reader.string();\n                    break;\n                case /* tusk.drift.query.v1.WhereClause where */ 3:\n                    message.where = WhereClause.internalBinaryRead(reader, reader.uint32(), options, message.where);\n                    break;\n                case /* repeated tusk.drift.query.v1.SpanOrderBy order_by */ 4:\n                    message.orderBy.push(SpanOrderBy.internalBinaryRead(reader, reader.uint32(), options));\n                    break;\n                case /* optional int32 limit */ 5:\n                    message.limit = reader.int32();\n                    break;\n                case /* optional int32 offset */ 6:\n                    message.offset = reader.int32();\n                    break;\n                case /* optional bool include_payloads */ 7:\n                    message.includePayloads = reader.bool();\n                    break;\n                case /* optional int32 max_payload_length */ 8:\n                    message.maxPayloadLength = reader.int32();\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: QuerySpansRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* string observable_service_id = 1; */\n        if (message.observableServiceId !== \"\")\n            writer.tag(1, WireType.LengthDelimited).string(message.observableServiceId);\n        /* optional string client_id = 2; */\n        if (message.clientId !== undefined)\n            writer.tag(2, WireType.LengthDelimited).string(message.clientId);\n        /* tusk.drift.query.v1.WhereClause where = 3; */\n        if (message.where)\n            WhereClause.internalBinaryWrite(message.where, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n        /* repeated tusk.drift.query.v1.SpanOrderBy order_by = 4; */\n        for (let i = 0; i < message.orderBy.length; i++)\n            SpanOrderBy.internalBinaryWrite(message.orderBy[i], writer.tag(4, WireType.LengthDelimited).fork(), options).join();\n        /* optional int32 limit = 5; */\n        if (message.limit !== undefined)\n            writer.tag(5, WireType.Varint).int32(message.limit);\n        /* optional int32 offset = 6; */\n        if (message.offset !== undefined)\n            writer.tag(6, WireType.Varint).int32(message.offset);\n        /* optional bool include_payloads = 7; */\n        if (message.includePayloads !== undefined)\n            writer.tag(7, WireType.Varint).bool(message.includePayloads);\n        /* optional int32 max_payload_length = 8; */\n        if (message.maxPayloadLength !== undefined)\n            writer.tag(8, WireType.Varint).int32(message.maxPayloadLength);\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message tusk.drift.query.v1.QuerySpansRequest\n */\nexport const QuerySpansRequest = new QuerySpansRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass GetSchemaRequest$Type extends MessageType<GetSchemaRequest> {\n    constructor() {\n        super(\"tusk.drift.query.v1.GetSchemaRequest\", [\n            { no: 1, name: \"observable_service_id\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"package_name\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n            { no: 3, name: \"instrumentation_name\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n            { no: 4, name: \"name\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n            { no: 5, name: \"show_example\", kind: \"scalar\", opt: true, T: 8 /*ScalarType.BOOL*/ },\n            { no: 6, name: \"max_payload_length\", kind: \"scalar\", opt: true, T: 5 /*ScalarType.INT32*/ }\n        ]);\n    }\n    create(value?: PartialMessage<GetSchemaRequest>): GetSchemaRequest {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.observableServiceId = \"\";\n        if (value !== undefined)\n            reflectionMergePartial<GetSchemaRequest>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetSchemaRequest): GetSchemaRequest {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* string observable_service_id */ 1:\n                    message.observableServiceId = reader.string();\n                    break;\n                case /* optional string package_name */ 2:\n                    message.packageName = reader.string();\n                    break;\n                case /* optional string instrumentation_name */ 3:\n                    message.instrumentationName = reader.string();\n                    break;\n                case /* optional string name */ 4:\n                    message.name = reader.string();\n                    break;\n                case /* optional bool show_example */ 5:\n                    message.showExample = reader.bool();\n                    break;\n                case /* optional int32 max_payload_length */ 6:\n                    message.maxPayloadLength = reader.int32();\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: GetSchemaRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* string observable_service_id = 1; */\n        if (message.observableServiceId !== \"\")\n            writer.tag(1, WireType.LengthDelimited).string(message.observableServiceId);\n        /* optional string package_name = 2; */\n        if (message.packageName !== undefined)\n            writer.tag(2, WireType.LengthDelimited).string(message.packageName);\n        /* optional string instrumentation_name = 3; */\n        if (message.instrumentationName !== undefined)\n            writer.tag(3, WireType.LengthDelimited).string(message.instrumentationName);\n        /* optional string name = 4; */\n        if (message.name !== undefined)\n            writer.tag(4, WireType.LengthDelimited).string(message.name);\n        /* optional bool show_example = 5; */\n        if (message.showExample !== undefined)\n            writer.tag(5, WireType.Varint).bool(message.showExample);\n        /* optional int32 max_payload_length = 6; */\n        if (message.maxPayloadLength !== undefined)\n            writer.tag(6, WireType.Varint).int32(message.maxPayloadLength);\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message tusk.drift.query.v1.GetSchemaRequest\n */\nexport const GetSchemaRequest = new GetSchemaRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ListDistinctValuesRequest$Type extends MessageType<ListDistinctValuesRequest> {\n    constructor() {\n        super(\"tusk.drift.query.v1.ListDistinctValuesRequest\", [\n            { no: 1, name: \"observable_service_id\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"client_id\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n            { no: 3, name: \"field\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 4, name: \"where\", kind: \"message\", T: () => WhereClause },\n            { no: 5, name: \"limit\", kind: \"scalar\", opt: true, T: 5 /*ScalarType.INT32*/ }\n        ]);\n    }\n    create(value?: PartialMessage<ListDistinctValuesRequest>): ListDistinctValuesRequest {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.observableServiceId = \"\";\n        message.field = \"\";\n        if (value !== undefined)\n            reflectionMergePartial<ListDistinctValuesRequest>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListDistinctValuesRequest): ListDistinctValuesRequest {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* string observable_service_id */ 1:\n                    message.observableServiceId = reader.string();\n                    break;\n                case /* optional string client_id */ 2:\n                    message.clientId = reader.string();\n                    break;\n                case /* string field */ 3:\n                    message.field = reader.string();\n                    break;\n                case /* tusk.drift.query.v1.WhereClause where */ 4:\n                    message.where = WhereClause.internalBinaryRead(reader, reader.uint32(), options, message.where);\n                    break;\n                case /* optional int32 limit */ 5:\n                    message.limit = reader.int32();\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: ListDistinctValuesRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* string observable_service_id = 1; */\n        if (message.observableServiceId !== \"\")\n            writer.tag(1, WireType.LengthDelimited).string(message.observableServiceId);\n        /* optional string client_id = 2; */\n        if (message.clientId !== undefined)\n            writer.tag(2, WireType.LengthDelimited).string(message.clientId);\n        /* string field = 3; */\n        if (message.field !== \"\")\n            writer.tag(3, WireType.LengthDelimited).string(message.field);\n        /* tusk.drift.query.v1.WhereClause where = 4; */\n        if (message.where)\n            WhereClause.internalBinaryWrite(message.where, writer.tag(4, WireType.LengthDelimited).fork(), options).join();\n        /* optional int32 limit = 5; */\n        if (message.limit !== undefined)\n            writer.tag(5, WireType.Varint).int32(message.limit);\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message tusk.drift.query.v1.ListDistinctValuesRequest\n */\nexport const ListDistinctValuesRequest = new ListDistinctValuesRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass AggregateSpansRequest$Type extends MessageType<AggregateSpansRequest> {\n    constructor() {\n        super(\"tusk.drift.query.v1.AggregateSpansRequest\", [\n            { no: 1, name: \"observable_service_id\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"client_id\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n            { no: 3, name: \"where\", kind: \"message\", T: () => WhereClause },\n            { no: 4, name: \"group_by\", kind: \"enum\", repeat: 1 /*RepeatType.PACKED*/, T: () => [\"tusk.drift.query.v1.AggregateGroupField\", AggregateGroupField, \"AGGREGATE_GROUP_FIELD_\"] },\n            { no: 5, name: \"metrics\", kind: \"enum\", repeat: 1 /*RepeatType.PACKED*/, T: () => [\"tusk.drift.query.v1.AggregateMetric\", AggregateMetric, \"AGGREGATE_METRIC_\"] },\n            { no: 6, name: \"time_bucket\", kind: \"enum\", T: () => [\"tusk.drift.query.v1.TimeBucket\", TimeBucket, \"TIME_BUCKET_\"] },\n            { no: 7, name: \"order_by\", kind: \"message\", T: () => MetricOrderBy },\n            { no: 8, name: \"limit\", kind: \"scalar\", opt: true, T: 5 /*ScalarType.INT32*/ }\n        ]);\n    }\n    create(value?: PartialMessage<AggregateSpansRequest>): AggregateSpansRequest {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.observableServiceId = \"\";\n        message.groupBy = [];\n        message.metrics = [];\n        message.timeBucket = 0;\n        if (value !== undefined)\n            reflectionMergePartial<AggregateSpansRequest>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AggregateSpansRequest): AggregateSpansRequest {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* string observable_service_id */ 1:\n                    message.observableServiceId = reader.string();\n                    break;\n                case /* optional string client_id */ 2:\n                    message.clientId = reader.string();\n                    break;\n                case /* tusk.drift.query.v1.WhereClause where */ 3:\n                    message.where = WhereClause.internalBinaryRead(reader, reader.uint32(), options, message.where);\n                    break;\n                case /* repeated tusk.drift.query.v1.AggregateGroupField group_by */ 4:\n                    if (wireType === WireType.LengthDelimited)\n                        for (let e = reader.int32() + reader.pos; reader.pos < e;)\n                            message.groupBy.push(reader.int32());\n                    else\n                        message.groupBy.push(reader.int32());\n                    break;\n                case /* repeated tusk.drift.query.v1.AggregateMetric metrics */ 5:\n                    if (wireType === WireType.LengthDelimited)\n                        for (let e = reader.int32() + reader.pos; reader.pos < e;)\n                            message.metrics.push(reader.int32());\n                    else\n                        message.metrics.push(reader.int32());\n                    break;\n                case /* tusk.drift.query.v1.TimeBucket time_bucket */ 6:\n                    message.timeBucket = reader.int32();\n                    break;\n                case /* tusk.drift.query.v1.MetricOrderBy order_by */ 7:\n                    message.orderBy = MetricOrderBy.internalBinaryRead(reader, reader.uint32(), options, message.orderBy);\n                    break;\n                case /* optional int32 limit */ 8:\n                    message.limit = reader.int32();\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: AggregateSpansRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* string observable_service_id = 1; */\n        if (message.observableServiceId !== \"\")\n            writer.tag(1, WireType.LengthDelimited).string(message.observableServiceId);\n        /* optional string client_id = 2; */\n        if (message.clientId !== undefined)\n            writer.tag(2, WireType.LengthDelimited).string(message.clientId);\n        /* tusk.drift.query.v1.WhereClause where = 3; */\n        if (message.where)\n            WhereClause.internalBinaryWrite(message.where, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n        /* repeated tusk.drift.query.v1.AggregateGroupField group_by = 4; */\n        if (message.groupBy.length) {\n            writer.tag(4, WireType.LengthDelimited).fork();\n            for (let i = 0; i < message.groupBy.length; i++)\n                writer.int32(message.groupBy[i]);\n            writer.join();\n        }\n        /* repeated tusk.drift.query.v1.AggregateMetric metrics = 5; */\n        if (message.metrics.length) {\n            writer.tag(5, WireType.LengthDelimited).fork();\n            for (let i = 0; i < message.metrics.length; i++)\n                writer.int32(message.metrics[i]);\n            writer.join();\n        }\n        /* tusk.drift.query.v1.TimeBucket time_bucket = 6; */\n        if (message.timeBucket !== 0)\n            writer.tag(6, WireType.Varint).int32(message.timeBucket);\n        /* tusk.drift.query.v1.MetricOrderBy order_by = 7; */\n        if (message.orderBy)\n            MetricOrderBy.internalBinaryWrite(message.orderBy, writer.tag(7, WireType.LengthDelimited).fork(), options).join();\n        /* optional int32 limit = 8; */\n        if (message.limit !== undefined)\n            writer.tag(8, WireType.Varint).int32(message.limit);\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message tusk.drift.query.v1.AggregateSpansRequest\n */\nexport const AggregateSpansRequest = new AggregateSpansRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass GetTraceSpansRequest$Type extends MessageType<GetTraceSpansRequest> {\n    constructor() {\n        super(\"tusk.drift.query.v1.GetTraceSpansRequest\", [\n            { no: 1, name: \"observable_service_id\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"client_id\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n            { no: 3, name: \"trace_id\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 4, name: \"include_payloads\", kind: \"scalar\", opt: true, T: 8 /*ScalarType.BOOL*/ },\n            { no: 5, name: \"max_payload_length\", kind: \"scalar\", opt: true, T: 5 /*ScalarType.INT32*/ }\n        ]);\n    }\n    create(value?: PartialMessage<GetTraceSpansRequest>): GetTraceSpansRequest {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.observableServiceId = \"\";\n        message.traceId = \"\";\n        if (value !== undefined)\n            reflectionMergePartial<GetTraceSpansRequest>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetTraceSpansRequest): GetTraceSpansRequest {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* string observable_service_id */ 1:\n                    message.observableServiceId = reader.string();\n                    break;\n                case /* optional string client_id */ 2:\n                    message.clientId = reader.string();\n                    break;\n                case /* string trace_id */ 3:\n                    message.traceId = reader.string();\n                    break;\n                case /* optional bool include_payloads */ 4:\n                    message.includePayloads = reader.bool();\n                    break;\n                case /* optional int32 max_payload_length */ 5:\n                    message.maxPayloadLength = reader.int32();\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: GetTraceSpansRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* string observable_service_id = 1; */\n        if (message.observableServiceId !== \"\")\n            writer.tag(1, WireType.LengthDelimited).string(message.observableServiceId);\n        /* optional string client_id = 2; */\n        if (message.clientId !== undefined)\n            writer.tag(2, WireType.LengthDelimited).string(message.clientId);\n        /* string trace_id = 3; */\n        if (message.traceId !== \"\")\n            writer.tag(3, WireType.LengthDelimited).string(message.traceId);\n        /* optional bool include_payloads = 4; */\n        if (message.includePayloads !== undefined)\n            writer.tag(4, WireType.Varint).bool(message.includePayloads);\n        /* optional int32 max_payload_length = 5; */\n        if (message.maxPayloadLength !== undefined)\n            writer.tag(5, WireType.Varint).int32(message.maxPayloadLength);\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message tusk.drift.query.v1.GetTraceSpansRequest\n */\nexport const GetTraceSpansRequest = new GetTraceSpansRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass GetSpansByIdsRequest$Type extends MessageType<GetSpansByIdsRequest> {\n    constructor() {\n        super(\"tusk.drift.query.v1.GetSpansByIdsRequest\", [\n            { no: 1, name: \"observable_service_id\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"ids\", kind: \"scalar\", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ },\n            { no: 3, name: \"fields\", kind: \"enum\", repeat: 1 /*RepeatType.PACKED*/, T: () => [\"tusk.drift.query.v1.SelectableSpanField\", SelectableSpanField, \"SELECTABLE_SPAN_FIELD_\"] },\n            { no: 4, name: \"include_payloads\", kind: \"scalar\", opt: true, T: 8 /*ScalarType.BOOL*/ },\n            { no: 5, name: \"max_payload_length\", kind: \"scalar\", opt: true, T: 5 /*ScalarType.INT32*/ }\n        ]);\n    }\n    create(value?: PartialMessage<GetSpansByIdsRequest>): GetSpansByIdsRequest {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.observableServiceId = \"\";\n        message.ids = [];\n        message.fields = [];\n        if (value !== undefined)\n            reflectionMergePartial<GetSpansByIdsRequest>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetSpansByIdsRequest): GetSpansByIdsRequest {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* string observable_service_id */ 1:\n                    message.observableServiceId = reader.string();\n                    break;\n                case /* repeated string ids */ 2:\n                    message.ids.push(reader.string());\n                    break;\n                case /* repeated tusk.drift.query.v1.SelectableSpanField fields */ 3:\n                    if (wireType === WireType.LengthDelimited)\n                        for (let e = reader.int32() + reader.pos; reader.pos < e;)\n                            message.fields.push(reader.int32());\n                    else\n                        message.fields.push(reader.int32());\n                    break;\n                case /* optional bool include_payloads */ 4:\n                    message.includePayloads = reader.bool();\n                    break;\n                case /* optional int32 max_payload_length */ 5:\n                    message.maxPayloadLength = reader.int32();\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: GetSpansByIdsRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* string observable_service_id = 1; */\n        if (message.observableServiceId !== \"\")\n            writer.tag(1, WireType.LengthDelimited).string(message.observableServiceId);\n        /* repeated string ids = 2; */\n        for (let i = 0; i < message.ids.length; i++)\n            writer.tag(2, WireType.LengthDelimited).string(message.ids[i]);\n        /* repeated tusk.drift.query.v1.SelectableSpanField fields = 3; */\n        if (message.fields.length) {\n            writer.tag(3, WireType.LengthDelimited).fork();\n            for (let i = 0; i < message.fields.length; i++)\n                writer.int32(message.fields[i]);\n            writer.join();\n        }\n        /* optional bool include_payloads = 4; */\n        if (message.includePayloads !== undefined)\n            writer.tag(4, WireType.Varint).bool(message.includePayloads);\n        /* optional int32 max_payload_length = 5; */\n        if (message.maxPayloadLength !== undefined)\n            writer.tag(5, WireType.Varint).int32(message.maxPayloadLength);\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message tusk.drift.query.v1.GetSpansByIdsRequest\n */\nexport const GetSpansByIdsRequest = new GetSpansByIdsRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass CompareSchemaRequest$Type extends MessageType<CompareSchemaRequest> {\n    constructor() {\n        super(\"tusk.drift.query.v1.CompareSchemaRequest\", [\n            { no: 1, name: \"observable_service_id\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"client_id\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n            { no: 3, name: \"name\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 4, name: \"period_a\", kind: \"message\", T: () => SchemaComparisonPeriod },\n            { no: 5, name: \"period_b\", kind: \"message\", T: () => SchemaComparisonPeriod },\n            { no: 6, name: \"include_payloads\", kind: \"scalar\", opt: true, T: 8 /*ScalarType.BOOL*/ },\n            { no: 7, name: \"max_payload_length\", kind: \"scalar\", opt: true, T: 5 /*ScalarType.INT32*/ }\n        ]);\n    }\n    create(value?: PartialMessage<CompareSchemaRequest>): CompareSchemaRequest {\n        const message = globalThis.Object.create((this.messagePrototype!));\n        message.observableServiceId = \"\";\n        message.name = \"\";\n        if (value !== undefined)\n            reflectionMergePartial<CompareSchemaRequest>(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CompareSchemaRequest): CompareSchemaRequest {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* string observable_service_id */ 1:\n                    message.observableServiceId = reader.string();\n                    break;\n                case /* optional string client_id */ 2:\n                    message.clientId = reader.string();\n                    break;\n                case /* string name */ 3:\n                    message.name = reader.string();\n                    break;\n                case /* tusk.drift.query.v1.SchemaComparisonPeriod period_a */ 4:\n                    message.periodA = SchemaComparisonPeriod.internalBinaryRead(reader, reader.uint32(), options, message.periodA);\n                    break;\n                case /* tusk.drift.query.v1.SchemaComparisonPeriod period_b */ 5:\n                    message.periodB = SchemaComparisonPeriod.internalBinaryRead(reader, reader.uint32(), options, message.periodB);\n                    break;\n                case /* optional bool include_payloads */ 6:\n                    message.includePayloads = reader.bool();\n                    break;\n                case /* optional int32 max_payload_length */ 7:\n                    message.maxPayloadLength = reader.int32();\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message: CompareSchemaRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n        /* string observable_service_id = 1; */\n        if (message.observableServiceId !== \"\")\n            writer.tag(1, WireType.LengthDelimited).string(message.observableServiceId);\n        /* optional string client_id = 2; */\n        if (message.clientId !== undefined)\n            writer.tag(2, WireType.LengthDelimited).string(message.clientId);\n        /* string name = 3; */\n        if (message.name !== \"\")\n            writer.tag(3, WireType.LengthDelimited).string(message.name);\n        /* tusk.drift.query.v1.SchemaComparisonPeriod period_a = 4; */\n        if (message.periodA)\n            SchemaComparisonPeriod.internalBinaryWrite(message.periodA, writer.tag(4, WireType.LengthDelimited).fork(), options).join();\n        /* tusk.drift.query.v1.SchemaComparisonPeriod period_b = 5; */\n        if (message.periodB)\n            SchemaComparisonPeriod.internalBinaryWrite(message.periodB, writer.tag(5, WireType.LengthDelimited).fork(), options).join();\n        /* optional bool include_payloads = 6; */\n        if (message.includePayloads !== undefined)\n            writer.tag(6, WireType.Varint).bool(message.includePayloads);\n        /* optional int32 max_payload_length = 7; */\n        if (message.maxPayloadLength !== undefined)\n            writer.tag(7, WireType.Varint).int32(message.maxPayloadLength);\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message tusk.drift.query.v1.CompareSchemaRequest\n */\nexport const CompareSchemaRequest = new CompareSchemaRequest$Type();\n","// This file is intentionally hand-authored instead of generated. It derives\n// ergonomic enum codecs and public query names from the generated protobuf\n// enums while living outside generated output so it survives schema regen.\nimport {\n  AggregateGroupField,\n  AggregateMetric,\n  CastType,\n  DecodeStrategy,\n  SelectableSpanField,\n  SortDirection,\n  SpanSortField,\n  TimeBucket,\n} from \"../../generated/ts/query/span_query\";\n\ntype EnumLike = Record<string, string | number>;\n\ntype EnumForwardKey<E extends EnumLike> = Exclude<\n  {\n    [K in Extract<keyof E, string>]: E[K] extends number ? K : never;\n  }[Extract<keyof E, string>],\n  \"UNSPECIFIED\"\n>;\n\ntype EnumValue<E extends EnumLike> = E[EnumForwardKey<E>] & number;\n\ntype SnakeToCamelCase<S extends string> = S extends `${infer Head}_${infer Tail}`\n  ? `${Lowercase<Head>}${Capitalize<SnakeToCamelCase<Tail>>}`\n  : Lowercase<S>;\n\nexport interface EnumCodec<TName extends string, TValue extends number> {\n  readonly names: readonly TName[];\n  readonly values: readonly TValue[];\n  readonly byName: Readonly<Record<TName, TValue>>;\n  readonly byValue: Readonly<Record<TValue, TName>>;\n  normalize(value: string | number): TName | null;\n  isName(value: unknown): value is TName;\n  isValue(value: unknown): value is TValue;\n}\n\nfunction hasOwn(value: object, key: PropertyKey): boolean {\n  return Object.prototype.hasOwnProperty.call(value, key);\n}\n\nfunction snakeToCamelCase(value: string): string {\n  return value.toLowerCase().replace(/_([a-z0-9])/g, (_, char: string) => char.toUpperCase());\n}\n\nfunction createEnumCodec<E extends EnumLike, TName extends string>(\n  enumObject: E,\n  mapKey: (key: EnumForwardKey<E>) => TName,\n): EnumCodec<TName, EnumValue<E>> {\n  const entries = Object.entries(enumObject).filter(\n    (entry): entry is [EnumForwardKey<E>, EnumValue<E>] =>\n      entry[0] !== \"UNSPECIFIED\" && typeof entry[1] === \"number\",\n  );\n\n  const pairs = entries.map(([key, value]) => [mapKey(key), value] as const);\n  const reversePairs = pairs.map(([name, value]) => [value, name] as const);\n\n  const byName = Object.freeze(Object.fromEntries(pairs)) as Readonly<Record<TName, EnumValue<E>>>;\n  const byValue = Object.freeze(\n    Object.fromEntries(reversePairs),\n  ) as Readonly<Record<EnumValue<E>, TName>>;\n\n  return {\n    names: Object.freeze(pairs.map(([name]) => name)) as readonly TName[],\n    values: Object.freeze(pairs.map(([, value]) => value)) as readonly EnumValue<E>[],\n    byName,\n    byValue,\n    normalize(value: string | number): TName | null {\n      if (typeof value === \"string\") {\n        return hasOwn(byName, value) ? (value as TName) : null;\n      }\n\n      return hasOwn(byValue, value) ? byValue[value as EnumValue<E>] : null;\n    },\n    isName(value: unknown): value is TName {\n      return typeof value === \"string\" && hasOwn(byName, value);\n    },\n    isValue(value: unknown): value is EnumValue<E> {\n      return typeof value === \"number\" && Number.isInteger(value) && hasOwn(byValue, value);\n    },\n  };\n}\n\nfunction createCamelCaseEnumCodec<E extends EnumLike>(\n  enumObject: E,\n): EnumCodec<SnakeToCamelCase<EnumForwardKey<E>>, EnumValue<E>> {\n  return createEnumCodec(enumObject, (key) => snakeToCamelCase(key) as SnakeToCamelCase<typeof key>);\n}\n\nfunction createIdentityEnumCodec<E extends EnumLike>(\n  enumObject: E,\n): EnumCodec<EnumForwardKey<E>, EnumValue<E>> {\n  return createEnumCodec(enumObject, (key) => key);\n}\n\nexport type SelectableSpanFieldName = SnakeToCamelCase<EnumForwardKey<typeof SelectableSpanField>>;\nexport type CastTypeName = SnakeToCamelCase<EnumForwardKey<typeof CastType>>;\nexport type DecodeStrategyName = SnakeToCamelCase<EnumForwardKey<typeof DecodeStrategy>>;\nexport type SpanSortFieldName = SnakeToCamelCase<EnumForwardKey<typeof SpanSortField>>;\nexport type AggregateMetricName = SnakeToCamelCase<EnumForwardKey<typeof AggregateMetric>>;\nexport type AggregateGroupFieldName = SnakeToCamelCase<EnumForwardKey<typeof AggregateGroupField>>;\nexport type TimeBucketName = SnakeToCamelCase<EnumForwardKey<typeof TimeBucket>>;\nexport type SortDirectionName = EnumForwardKey<typeof SortDirection>;\n\nexport const selectableSpanFieldCodec = createCamelCaseEnumCodec(SelectableSpanField);\nexport const castTypeCodec = createCamelCaseEnumCodec(CastType);\nexport const decodeStrategyCodec = createCamelCaseEnumCodec(DecodeStrategy);\nexport const spanSortFieldCodec = createCamelCaseEnumCodec(SpanSortField);\nexport const aggregateMetricCodec = createCamelCaseEnumCodec(AggregateMetric);\nexport const aggregateGroupFieldCodec = createCamelCaseEnumCodec(AggregateGroupField);\nexport const timeBucketCodec = createCamelCaseEnumCodec(TimeBucket);\nexport const sortDirectionCodec = createIdentityEnumCodec(SortDirection);\n"],"mappings":"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"}