/* * 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 { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import { CatalogActivationState, CatalogActivationState$inboundSchema, CatalogActivationState$outboundSchema, } from "./catalogactivationstate.js"; import { CatalogHealth, CatalogHealth$inboundSchema, CatalogHealth$Outbound, CatalogHealth$outboundSchema, } from "./cataloghealth.js"; import { CatalogPricePreview, CatalogPricePreview$inboundSchema, CatalogPricePreview$Outbound, CatalogPricePreview$outboundSchema, } from "./catalogpricepreview.js"; import { RegistryModelOrigin, RegistryModelOrigin$inboundSchema, RegistryModelOrigin$outboundSchema, } from "./registrymodelorigin.js"; import { RegistrySource, RegistrySource$inboundSchema, RegistrySource$outboundSchema, } from "./registrysource.js"; export type CatalogEntry = { modelId: string; source: RegistrySource; origin: RegistryModelOrigin | null; activationState: CatalogActivationState; blockerSource: RegistrySource | null; activatedBy: string | null; activatedAt: Date | null; provider: string; providerModelId: string; definition: { [k: string]: any }; health: CatalogHealth; createdAt: number | null; updatedAt: number | null; effectivePrice: CatalogPricePreview; }; /** @internal */ export const CatalogEntry$inboundSchema: z.ZodType< CatalogEntry, z.ZodTypeDef, unknown > = z.object({ model_id: z.string(), source: RegistrySource$inboundSchema, origin: z.nullable(RegistryModelOrigin$inboundSchema), activation_state: CatalogActivationState$inboundSchema, blocker_source: z.nullable(RegistrySource$inboundSchema), activated_by: z.nullable(z.string()), activated_at: z.nullable( z.string().datetime({ offset: true }).transform(v => new Date(v)), ), provider: z.string(), provider_model_id: z.string(), definition: z.record(z.any()), health: CatalogHealth$inboundSchema, created_at: z.nullable(z.number()), updated_at: z.nullable(z.number()), effective_price: CatalogPricePreview$inboundSchema, }).transform((v) => { return remap$(v, { "model_id": "modelId", "activation_state": "activationState", "blocker_source": "blockerSource", "activated_by": "activatedBy", "activated_at": "activatedAt", "provider_model_id": "providerModelId", "created_at": "createdAt", "updated_at": "updatedAt", "effective_price": "effectivePrice", }); }); /** @internal */ export type CatalogEntry$Outbound = { model_id: string; source: string; origin: string | null; activation_state: string; blocker_source: string | null; activated_by: string | null; activated_at: string | null; provider: string; provider_model_id: string; definition: { [k: string]: any }; health: CatalogHealth$Outbound; created_at: number | null; updated_at: number | null; effective_price: CatalogPricePreview$Outbound; }; /** @internal */ export const CatalogEntry$outboundSchema: z.ZodType< CatalogEntry$Outbound, z.ZodTypeDef, CatalogEntry > = z.object({ modelId: z.string(), source: RegistrySource$outboundSchema, origin: z.nullable(RegistryModelOrigin$outboundSchema), activationState: CatalogActivationState$outboundSchema, blockerSource: z.nullable(RegistrySource$outboundSchema), activatedBy: z.nullable(z.string()), activatedAt: z.nullable(z.date().transform(v => v.toISOString())), provider: z.string(), providerModelId: z.string(), definition: z.record(z.any()), health: CatalogHealth$outboundSchema, createdAt: z.nullable(z.number()), updatedAt: z.nullable(z.number()), effectivePrice: CatalogPricePreview$outboundSchema, }).transform((v) => { return remap$(v, { modelId: "model_id", activationState: "activation_state", blockerSource: "blocker_source", activatedBy: "activated_by", activatedAt: "activated_at", providerModelId: "provider_model_id", createdAt: "created_at", updatedAt: "updated_at", effectivePrice: "effective_price", }); }); export function catalogEntryToJSON(catalogEntry: CatalogEntry): string { return JSON.stringify(CatalogEntry$outboundSchema.parse(catalogEntry)); } export function catalogEntryFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => CatalogEntry$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'CatalogEntry' from JSON`, ); }