@use-tusk/drift-schemas 0.1.32 → 0.1.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"span_query.cjs","names":["MessageType","Timestamp","UnknownFieldHandler","WireType","Value","key: keyof WhereClause[\"fields\"] | undefined","val: WhereClause[\"fields\"][any] | undefined"],"sources":["../../generated/ts/query/span_query.ts"],"sourcesContent":["// @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"],"mappings":"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"}