/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 * @generated-id: d6e3e4f66e0a
 */

import * as z from "zod/v4";
import { remap as remap$ } from "../../lib/primitives.js";

export type GetSpanByIdV1ObservabilityTracesTraceIdSpansSpanIdGetRequest = {
  traceId: string;
  spanId: string;
  from?: Date | null | undefined;
  to?: Date | null | undefined;
};

/** @internal */
export type GetSpanByIdV1ObservabilityTracesTraceIdSpansSpanIdGetRequest$Outbound =
  {
    trace_id: string;
    span_id: string;
    from?: string | null | undefined;
    to?: string | null | undefined;
  };

/** @internal */
export const GetSpanByIdV1ObservabilityTracesTraceIdSpansSpanIdGetRequest$outboundSchema:
  z.ZodType<
    GetSpanByIdV1ObservabilityTracesTraceIdSpansSpanIdGetRequest$Outbound,
    GetSpanByIdV1ObservabilityTracesTraceIdSpansSpanIdGetRequest
  > = z.object({
    traceId: z.string(),
    spanId: z.string(),
    from: z.nullable(z.date().transform(v => v.toISOString())).optional(),
    to: z.nullable(z.date().transform(v => v.toISOString())).optional(),
  }).transform((v) => {
    return remap$(v, {
      traceId: "trace_id",
      spanId: "span_id",
    });
  });

export function getSpanByIdV1ObservabilityTracesTraceIdSpansSpanIdGetRequestToJSON(
  getSpanByIdV1ObservabilityTracesTraceIdSpansSpanIdGetRequest:
    GetSpanByIdV1ObservabilityTracesTraceIdSpansSpanIdGetRequest,
): string {
  return JSON.stringify(
    GetSpanByIdV1ObservabilityTracesTraceIdSpansSpanIdGetRequest$outboundSchema
      .parse(getSpanByIdV1ObservabilityTracesTraceIdSpansSpanIdGetRequest),
  );
}
