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

import * as z from "zod/v4";
import {
  VoiceAppearance,
  VoiceAppearance$Outbound,
  VoiceAppearance$outboundSchema,
} from "./voiceappearance.js";

/**
 * Request model for partially updating voice metadata.
 */
export type VoiceUpdateRequest = {
  name?: string | null | undefined;
  languages?: Array<string> | null | undefined;
  gender?: string | null | undefined;
  age?: number | null | undefined;
  tags?: Array<string> | null | undefined;
  description?: string | null | undefined;
  appearance?: VoiceAppearance | null | undefined;
};

/** @internal */
export type VoiceUpdateRequest$Outbound = {
  name?: string | null | undefined;
  languages?: Array<string> | null | undefined;
  gender?: string | null | undefined;
  age?: number | null | undefined;
  tags?: Array<string> | null | undefined;
  description?: string | null | undefined;
  appearance?: VoiceAppearance$Outbound | null | undefined;
};

/** @internal */
export const VoiceUpdateRequest$outboundSchema: z.ZodType<
  VoiceUpdateRequest$Outbound,
  VoiceUpdateRequest
> = z.object({
  name: z.nullable(z.string()).optional(),
  languages: z.nullable(z.array(z.string())).optional(),
  gender: z.nullable(z.string()).optional(),
  age: z.nullable(z.int()).optional(),
  tags: z.nullable(z.array(z.string())).optional(),
  description: z.nullable(z.string()).optional(),
  appearance: z.nullable(VoiceAppearance$outboundSchema).optional(),
});

export function voiceUpdateRequestToJSON(
  voiceUpdateRequest: VoiceUpdateRequest,
): string {
  return JSON.stringify(
    VoiceUpdateRequest$outboundSchema.parse(voiceUpdateRequest),
  );
}
