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

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

/** @internal */
export const ModerationLlmv2CategoryThresholds$inboundSchema: z.ZodType<
  ModerationLlmv2CategoryThresholds,
  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: z.nullable(z.number()).optional(),
  criminal: 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(),
  jailbreaking: z.nullable(z.number()).optional(),
}).transform((v) => {
  return remap$(v, {
    "hate_and_discrimination": "hateAndDiscrimination",
    "violence_and_threats": "violenceAndThreats",
  });
});
/** @internal */
export type ModerationLlmv2CategoryThresholds$Outbound = {
  sexual?: number | null | undefined;
  hate_and_discrimination?: number | null | undefined;
  violence_and_threats?: number | null | undefined;
  dangerous?: number | null | undefined;
  criminal?: number | null | undefined;
  selfharm?: number | null | undefined;
  health?: number | null | undefined;
  financial?: number | null | undefined;
  law?: number | null | undefined;
  pii?: number | null | undefined;
  jailbreaking?: number | null | undefined;
};

/** @internal */
export const ModerationLlmv2CategoryThresholds$outboundSchema: z.ZodType<
  ModerationLlmv2CategoryThresholds$Outbound,
  ModerationLlmv2CategoryThresholds
> = z.object({
  sexual: z.nullable(z.number()).optional(),
  hateAndDiscrimination: z.nullable(z.number()).optional(),
  violenceAndThreats: z.nullable(z.number()).optional(),
  dangerous: z.nullable(z.number()).optional(),
  criminal: 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(),
  jailbreaking: z.nullable(z.number()).optional(),
}).transform((v) => {
  return remap$(v, {
    hateAndDiscrimination: "hate_and_discrimination",
    violenceAndThreats: "violence_and_threats",
  });
});

export function moderationLlmv2CategoryThresholdsToJSON(
  moderationLlmv2CategoryThresholds: ModerationLlmv2CategoryThresholds,
): string {
  return JSON.stringify(
    ModerationLlmv2CategoryThresholds$outboundSchema.parse(
      moderationLlmv2CategoryThresholds,
    ),
  );
}
export function moderationLlmv2CategoryThresholdsFromJSON(
  jsonString: string,
): SafeParseResult<ModerationLlmv2CategoryThresholds, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) => ModerationLlmv2CategoryThresholds$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'ModerationLlmv2CategoryThresholds' from JSON`,
  );
}
