/* * 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"; export const HardwareClass = { Gpu: "gpu", Cpu: "cpu", } as const; export type HardwareClass = ClosedEnum; /** * Present on every cpu-class entry, absent on gpu-class entries. */ export type Vcpu = { max: number; min: number; }; /** * Present on every gpu-class entry, absent on cpu-class entries. */ export const Vendor = { Nvidia: "nvidia", Amd: "amd", } as const; /** * Present on every gpu-class entry, absent on cpu-class entries. */ export type Vendor = ClosedEnum; /** * A catalogue entry. Each hardware class exposes what it has and omits what it lacks: gpu entries always carry vendor, memory_gb, gpu_counts and interconnects; cpu entries always carry vcpu and memory_gb_per_vcpu. Fields of the other class are absent, never reinterpreted. */ export type ComputeAccelerator = { displayName: string; /** * Present on every gpu-class entry, absent on cpu-class entries. */ gpuCounts?: Array | undefined; hardwareClass: HardwareClass; /** * Present on every gpu-class entry, absent on cpu-class entries. */ interconnects?: Array | undefined; /** * Present on every gpu-class entry, absent on cpu-class entries. */ memoryGb?: number | undefined; /** * Present on every cpu-class entry, absent on gpu-class entries. */ memoryGbPerVcpu?: number | undefined; name: string; /** * Present on every cpu-class entry, absent on gpu-class entries. */ vcpu?: Vcpu | undefined; /** * Present on every gpu-class entry, absent on cpu-class entries. */ vendor?: Vendor | undefined; }; /** @internal */ export const HardwareClass$inboundSchema: z.ZodNativeEnum< typeof HardwareClass > = z.nativeEnum(HardwareClass); /** @internal */ export const HardwareClass$outboundSchema: z.ZodNativeEnum< typeof HardwareClass > = HardwareClass$inboundSchema; /** @internal */ export const Vcpu$inboundSchema: z.ZodType = z .object({ max: z.number().int(), min: z.number().int(), }); /** @internal */ export type Vcpu$Outbound = { max: number; min: number; }; /** @internal */ export const Vcpu$outboundSchema: z.ZodType = z.object({ max: z.number().int(), min: z.number().int(), }); export function vcpuToJSON(vcpu: Vcpu): string { return JSON.stringify(Vcpu$outboundSchema.parse(vcpu)); } export function vcpuFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => Vcpu$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'Vcpu' from JSON`, ); } /** @internal */ export const Vendor$inboundSchema: z.ZodNativeEnum = z .nativeEnum(Vendor); /** @internal */ export const Vendor$outboundSchema: z.ZodNativeEnum = Vendor$inboundSchema; /** @internal */ export const ComputeAccelerator$inboundSchema: z.ZodType< ComputeAccelerator, z.ZodTypeDef, unknown > = z.object({ display_name: z.string(), gpu_counts: z.array(z.number().int()).optional(), hardware_class: HardwareClass$inboundSchema, interconnects: z.array(z.string()).optional(), memory_gb: z.number().int().optional(), memory_gb_per_vcpu: z.number().int().optional(), name: z.string(), vcpu: z.lazy(() => Vcpu$inboundSchema).optional(), vendor: Vendor$inboundSchema.optional(), }).transform((v) => { return remap$(v, { "display_name": "displayName", "gpu_counts": "gpuCounts", "hardware_class": "hardwareClass", "memory_gb": "memoryGb", "memory_gb_per_vcpu": "memoryGbPerVcpu", }); }); /** @internal */ export type ComputeAccelerator$Outbound = { display_name: string; gpu_counts?: Array | undefined; hardware_class: string; interconnects?: Array | undefined; memory_gb?: number | undefined; memory_gb_per_vcpu?: number | undefined; name: string; vcpu?: Vcpu$Outbound | undefined; vendor?: string | undefined; }; /** @internal */ export const ComputeAccelerator$outboundSchema: z.ZodType< ComputeAccelerator$Outbound, z.ZodTypeDef, ComputeAccelerator > = z.object({ displayName: z.string(), gpuCounts: z.array(z.number().int()).optional(), hardwareClass: HardwareClass$outboundSchema, interconnects: z.array(z.string()).optional(), memoryGb: z.number().int().optional(), memoryGbPerVcpu: z.number().int().optional(), name: z.string(), vcpu: z.lazy(() => Vcpu$outboundSchema).optional(), vendor: Vendor$outboundSchema.optional(), }).transform((v) => { return remap$(v, { displayName: "display_name", gpuCounts: "gpu_counts", hardwareClass: "hardware_class", memoryGb: "memory_gb", memoryGbPerVcpu: "memory_gb_per_vcpu", }); }); export function computeAcceleratorToJSON( computeAccelerator: ComputeAccelerator, ): string { return JSON.stringify( ComputeAccelerator$outboundSchema.parse(computeAccelerator), ); } export function computeAcceleratorFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => ComputeAccelerator$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'ComputeAccelerator' from JSON`, ); }