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

import * as z from "zod/v4";
import { remap as remap$ } from "../../lib/primitives.js";
import {
  ModerationLLMAction,
  ModerationLLMAction$outboundSchema,
} from "./moderationllmaction.js";
import {
  ModerationLlmv2CategoryThresholds,
  ModerationLlmv2CategoryThresholds$Outbound,
  ModerationLlmv2CategoryThresholds$outboundSchema,
} from "./moderationllmv2categorythresholds.js";

export type ModerationLlmv2Config = {
  /**
   * Override model name. Should be omitted in general.
   */
  modelName?: string | undefined;
  customCategoryThresholds?:
    | ModerationLlmv2CategoryThresholds
    | null
    | undefined;
  /**
   * If true, only evaluate categories in custom_category_thresholds; others are ignored.
   */
  ignoreOtherCategories?: boolean | undefined;
  action?: ModerationLLMAction | undefined;
};

/** @internal */
export type ModerationLlmv2Config$Outbound = {
  model_name: string;
  custom_category_thresholds?:
    | ModerationLlmv2CategoryThresholds$Outbound
    | null
    | undefined;
  ignore_other_categories: boolean;
  action?: string | undefined;
};

/** @internal */
export const ModerationLlmv2Config$outboundSchema: z.ZodType<
  ModerationLlmv2Config$Outbound,
  ModerationLlmv2Config
> = z.object({
  modelName: z.string().default("mistral-moderation-2603"),
  customCategoryThresholds: z.nullable(
    ModerationLlmv2CategoryThresholds$outboundSchema,
  ).optional(),
  ignoreOtherCategories: z.boolean().default(false),
  action: ModerationLLMAction$outboundSchema.optional(),
}).transform((v) => {
  return remap$(v, {
    modelName: "model_name",
    customCategoryThresholds: "custom_category_thresholds",
    ignoreOtherCategories: "ignore_other_categories",
  });
});

export function moderationLlmv2ConfigToJSON(
  moderationLlmv2Config: ModerationLlmv2Config,
): string {
  return JSON.stringify(
    ModerationLlmv2Config$outboundSchema.parse(moderationLlmv2Config),
  );
}
