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

import * as z from "zod/v4";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";

export type GetSpanEvaluation = {
  customerId: string;
  organizationId: string;
  workspaceId: string;
  userId: string;
  traceId: string;
  spanId: string;
  responseId: string;
  conversationId: string;
  timestamp: Date;
  evaluationName: string;
  scoreValue: number;
  scoreLabel: string;
  explanation: string;
  metadata: { [k: string]: string };
};

/** @internal */
export const GetSpanEvaluation$inboundSchema: z.ZodType<
  GetSpanEvaluation,
  unknown
> = z.object({
  customer_id: z.string(),
  organization_id: z.string(),
  workspace_id: z.string(),
  user_id: z.string(),
  trace_id: z.string(),
  span_id: z.string(),
  response_id: z.string(),
  conversation_id: z.string(),
  timestamp: z.iso.datetime({ offset: true }).transform(v => new Date(v)),
  evaluation_name: z.string(),
  score_value: z.number(),
  score_label: z.string(),
  explanation: z.string(),
  metadata: z.record(z.string(), z.string()),
}).transform((v) => {
  return remap$(v, {
    "customer_id": "customerId",
    "organization_id": "organizationId",
    "workspace_id": "workspaceId",
    "user_id": "userId",
    "trace_id": "traceId",
    "span_id": "spanId",
    "response_id": "responseId",
    "conversation_id": "conversationId",
    "evaluation_name": "evaluationName",
    "score_value": "scoreValue",
    "score_label": "scoreLabel",
  });
});

export function getSpanEvaluationFromJSON(
  jsonString: string,
): SafeParseResult<GetSpanEvaluation, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) => GetSpanEvaluation$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'GetSpanEvaluation' from JSON`,
  );
}
