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

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 ModerationLlmv1CategoryThresholds = {
  sexual?: number | null | undefined;
  hateAndDiscrimination?: number | null | undefined;
  violenceAndThreats?: number | null | undefined;
  dangerousAndCriminalContent?: number | null | undefined;
  selfharm?: number | null | undefined;
  health?: number | null | undefined;
  financial?: number | null | undefined;
  law?: number | null | undefined;
  pii?: number | null | undefined;
};

/** @internal */
export const ModerationLlmv1CategoryThresholds$inboundSchema: z.ZodType<
  ModerationLlmv1CategoryThresholds,
  unknown
> = z.object({
  sexual: z.nullable(z.number()).optional(),
  hate_and_discrimination: z.nullable(z.number()).optional(),
  violence_and_threats: z.nullable(z.number()).optional(),
  dangerous_and_criminal_content: z.nullable(z.number()).optional(),
  selfharm: z.nullable(z.number()).optional(),
  health: z.nullable(z.number()).optional(),
  financial: z.nullable(z.number()).optional(),
  law: z.nullable(z.number()).optional(),
  pii: z.nullable(z.number()).optional(),
}).transform((v) => {
  return remap$(v, {
    "hate_and_discrimination": "hateAndDiscrimination",
    "violence_and_threats": "violenceAndThreats",
    "dangerous_and_criminal_content": "dangerousAndCriminalContent",
  });
});
/** @internal */
export type ModerationLlmv1CategoryThresholds$Outbound = {
  sexual?: number | null | undefined;
  hate_and_discrimination?: number | null | undefined;
  violence_and_threats?: number | null | undefined;
  dangerous_and_criminal_content?: number | null | undefined;
  selfharm?: number | null | undefined;
  health?: number | null | undefined;
  financial?: number | null | undefined;
  law?: number | null | undefined;
  pii?: number | null | undefined;
};

/** @internal */
export const ModerationLlmv1CategoryThresholds$outboundSchema: z.ZodType<
  ModerationLlmv1CategoryThresholds$Outbound,
  ModerationLlmv1CategoryThresholds
> = z.object({
  sexual: z.nullable(z.number()).optional(),
  hateAndDiscrimination: z.nullable(z.number()).optional(),
  violenceAndThreats: z.nullable(z.number()).optional(),
  dangerousAndCriminalContent: z.nullable(z.number()).optional(),
  selfharm: z.nullable(z.number()).optional(),
  health: z.nullable(z.number()).optional(),
  financial: z.nullable(z.number()).optional(),
  law: z.nullable(z.number()).optional(),
  pii: z.nullable(z.number()).optional(),
}).transform((v) => {
  return remap$(v, {
    hateAndDiscrimination: "hate_and_discrimination",
    violenceAndThreats: "violence_and_threats",
    dangerousAndCriminalContent: "dangerous_and_criminal_content",
  });
});

export function moderationLlmv1CategoryThresholdsToJSON(
  moderationLlmv1CategoryThresholds: ModerationLlmv1CategoryThresholds,
): string {
  return JSON.stringify(
    ModerationLlmv1CategoryThresholds$outboundSchema.parse(
      moderationLlmv1CategoryThresholds,
    ),
  );
}
export function moderationLlmv1CategoryThresholdsFromJSON(
  jsonString: string,
): SafeParseResult<ModerationLlmv1CategoryThresholds, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) => ModerationLlmv1CategoryThresholds$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'ModerationLlmv1CategoryThresholds' from JSON`,
  );
}
