"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
# @generated-id: 8bb3c013aa76

from __future__ import annotations
from .tempotracebatch import TempoTraceBatch, TempoTraceBatchTypedDict
from mistralai.client.types import BaseModel, UNSET_SENTINEL
from pydantic import model_serializer
from typing import List, Optional
from typing_extensions import NotRequired, TypedDict


class TempoGetTraceResponseTypedDict(TypedDict):
    r"""Trace response in OpenTelemetry format.

    This is the unified trace format used across all trace providers (Tempo, ClickHouse, etc.).
    Regardless of the underlying backend, all trace data is normalized to this Tempo-compatible
    OpenTelemetry format to ensure consistency in the API response structure.
    """

    batches: NotRequired[List[TempoTraceBatchTypedDict]]
    r"""The batches of the trace"""


class TempoGetTraceResponse(BaseModel):
    r"""Trace response in OpenTelemetry format.

    This is the unified trace format used across all trace providers (Tempo, ClickHouse, etc.).
    Regardless of the underlying backend, all trace data is normalized to this Tempo-compatible
    OpenTelemetry format to ensure consistency in the API response structure.
    """

    batches: Optional[List[TempoTraceBatch]] = None
    r"""The batches of the trace"""

    @model_serializer(mode="wrap")
    def serialize_model(self, handler):
        optional_fields = set(["batches"])
        serialized = handler(self)
        m = {}

        for n, f in type(self).model_fields.items():
            k = f.alias or n
            val = serialized.get(k, serialized.get(n))

            if val != UNSET_SENTINEL:
                if val is not None or k not in optional_fields:
                    m[k] = val

        return m
