/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod/v3"; import { remap as remap$ } from "../../lib/primitives.js"; import { safeParse } from "../../lib/schemas.js"; import { ClosedEnum } from "../../types/enums.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import { InputImageMask, InputImageMask$inboundSchema, InputImageMask$Outbound, InputImageMask$outboundSchema, } from "./inputimagemask.js"; export const Background = { Transparent: "transparent", Opaque: "opaque", Auto: "auto", } as const; export type Background = ClosedEnum; export const InputFidelity = { High: "high", Low: "low", } as const; export type InputFidelity = ClosedEnum; export const Moderation = { Auto: "auto", Low: "low", None: "none", } as const; export type Moderation = ClosedEnum; export const ImageGenerationToolDefinitionOutputFormat = { Png: "png", Webp: "webp", Jpeg: "jpeg", } as const; export type ImageGenerationToolDefinitionOutputFormat = ClosedEnum< typeof ImageGenerationToolDefinitionOutputFormat >; export const ImageGenerationToolDefinitionQuality = { Low: "low", Medium: "medium", High: "high", Auto: "auto", } as const; export type ImageGenerationToolDefinitionQuality = ClosedEnum< typeof ImageGenerationToolDefinitionQuality >; export const ImageGenerationToolDefinitionSize = { OneThousandAndTwentyFourx1024: "1024x1024", OneThousandAndTwentyFourx1536: "1024x1536", OneThousandFiveHundredAndThirtySixx1024: "1536x1024", Auto: "auto", } as const; export type ImageGenerationToolDefinitionSize = ClosedEnum< typeof ImageGenerationToolDefinitionSize >; /** * Image generation tool definition: Enables image generation and configures output settings like model, quality, size, format, moderation, and optional masking. */ export type ImageGenerationToolDefinition = { type: "image_generation"; background?: Background | undefined; inputFidelity?: InputFidelity | undefined; inputImageMask?: InputImageMask | undefined; /** * The model to use for image generation. Defaults to 'auto' for automatic model selection. */ model?: string | undefined; moderation?: Moderation | undefined; outputCompression?: number | undefined; outputFormat?: ImageGenerationToolDefinitionOutputFormat | undefined; partialImages?: number | undefined; quality?: ImageGenerationToolDefinitionQuality | undefined; size?: ImageGenerationToolDefinitionSize | undefined; /** * Adds a guardrail to prevent the model from generating content that is not allowed. */ promptGuard?: string | undefined; }; /** @internal */ export const Background$inboundSchema: z.ZodNativeEnum = z .nativeEnum(Background); /** @internal */ export const Background$outboundSchema: z.ZodNativeEnum = Background$inboundSchema; /** @internal */ export const InputFidelity$inboundSchema: z.ZodNativeEnum< typeof InputFidelity > = z.nativeEnum(InputFidelity); /** @internal */ export const InputFidelity$outboundSchema: z.ZodNativeEnum< typeof InputFidelity > = InputFidelity$inboundSchema; /** @internal */ export const Moderation$inboundSchema: z.ZodNativeEnum = z .nativeEnum(Moderation); /** @internal */ export const Moderation$outboundSchema: z.ZodNativeEnum = Moderation$inboundSchema; /** @internal */ export const ImageGenerationToolDefinitionOutputFormat$inboundSchema: z.ZodNativeEnum = z .nativeEnum(ImageGenerationToolDefinitionOutputFormat); /** @internal */ export const ImageGenerationToolDefinitionOutputFormat$outboundSchema: z.ZodNativeEnum = ImageGenerationToolDefinitionOutputFormat$inboundSchema; /** @internal */ export const ImageGenerationToolDefinitionQuality$inboundSchema: z.ZodNativeEnum = z.nativeEnum( ImageGenerationToolDefinitionQuality, ); /** @internal */ export const ImageGenerationToolDefinitionQuality$outboundSchema: z.ZodNativeEnum = ImageGenerationToolDefinitionQuality$inboundSchema; /** @internal */ export const ImageGenerationToolDefinitionSize$inboundSchema: z.ZodNativeEnum< typeof ImageGenerationToolDefinitionSize > = z.nativeEnum(ImageGenerationToolDefinitionSize); /** @internal */ export const ImageGenerationToolDefinitionSize$outboundSchema: z.ZodNativeEnum< typeof ImageGenerationToolDefinitionSize > = ImageGenerationToolDefinitionSize$inboundSchema; /** @internal */ export const ImageGenerationToolDefinition$inboundSchema: z.ZodType< ImageGenerationToolDefinition, z.ZodTypeDef, unknown > = z.object({ type: z.literal("image_generation"), background: Background$inboundSchema.default("auto"), input_fidelity: InputFidelity$inboundSchema.default("low"), input_image_mask: InputImageMask$inboundSchema.optional(), model: z.string().default("auto"), moderation: Moderation$inboundSchema.default("auto"), output_compression: z.number().int().default(100), output_format: ImageGenerationToolDefinitionOutputFormat$inboundSchema .default("png"), partial_images: z.number().int().default(0), quality: ImageGenerationToolDefinitionQuality$inboundSchema.default("auto"), size: ImageGenerationToolDefinitionSize$inboundSchema.default("auto"), prompt_guard: z.string().optional(), }).transform((v) => { return remap$(v, { "input_fidelity": "inputFidelity", "input_image_mask": "inputImageMask", "output_compression": "outputCompression", "output_format": "outputFormat", "partial_images": "partialImages", "prompt_guard": "promptGuard", }); }); /** @internal */ export type ImageGenerationToolDefinition$Outbound = { type: "image_generation"; background: string; input_fidelity: string; input_image_mask?: InputImageMask$Outbound | undefined; model: string; moderation: string; output_compression: number; output_format: string; partial_images: number; quality: string; size: string; prompt_guard?: string | undefined; }; /** @internal */ export const ImageGenerationToolDefinition$outboundSchema: z.ZodType< ImageGenerationToolDefinition$Outbound, z.ZodTypeDef, ImageGenerationToolDefinition > = z.object({ type: z.literal("image_generation"), background: Background$outboundSchema.default("auto"), inputFidelity: InputFidelity$outboundSchema.default("low"), inputImageMask: InputImageMask$outboundSchema.optional(), model: z.string().default("auto"), moderation: Moderation$outboundSchema.default("auto"), outputCompression: z.number().int().default(100), outputFormat: ImageGenerationToolDefinitionOutputFormat$outboundSchema .default("png"), partialImages: z.number().int().default(0), quality: ImageGenerationToolDefinitionQuality$outboundSchema.default("auto"), size: ImageGenerationToolDefinitionSize$outboundSchema.default("auto"), promptGuard: z.string().optional(), }).transform((v) => { return remap$(v, { inputFidelity: "input_fidelity", inputImageMask: "input_image_mask", outputCompression: "output_compression", outputFormat: "output_format", partialImages: "partial_images", promptGuard: "prompt_guard", }); }); export function imageGenerationToolDefinitionToJSON( imageGenerationToolDefinition: ImageGenerationToolDefinition, ): string { return JSON.stringify( ImageGenerationToolDefinition$outboundSchema.parse( imageGenerationToolDefinition, ), ); } export function imageGenerationToolDefinitionFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => ImageGenerationToolDefinition$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'ImageGenerationToolDefinition' from JSON`, ); }