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

import * as z from "zod/v3";
import { safeParse } from "../lib/schemas.js";
import { Result as SafeParseResult } from "../types/fp.js";
import { smartUnion } from "../types/smartUnion.js";
import {
  AiGatewayVirtualModelConfig,
  AiGatewayVirtualModelConfig$inboundSchema,
} from "./aigatewayvirtualmodelconfig.js";
import {
  AiGatewayVirtualModelConfigList,
  AiGatewayVirtualModelConfigList$inboundSchema,
} from "./aigatewayvirtualmodelconfiglist.js";
import { SDKValidationError } from "./sdkvalidationerror.js";

export type GetAiGatewayVirtualModelConfigRequest = {
  ownerId?: string | undefined;
  virtualModelSlug?: string | undefined;
  limit?: number | undefined;
  cursor?: string | undefined;
  /**
   * The Team identifier to perform the request on behalf of.
   */
  teamId?: string | undefined;
  /**
   * The Team slug to perform the request on behalf of.
   */
  slug?: string | undefined;
};

export type GetAiGatewayVirtualModelConfigResponseBody =
  | AiGatewayVirtualModelConfig
  | AiGatewayVirtualModelConfigList;

/** @internal */
export type GetAiGatewayVirtualModelConfigRequest$Outbound = {
  ownerId?: string | undefined;
  virtualModelSlug?: string | undefined;
  limit?: number | undefined;
  cursor?: string | undefined;
  teamId?: string | undefined;
  slug?: string | undefined;
};

/** @internal */
export const GetAiGatewayVirtualModelConfigRequest$outboundSchema: z.ZodType<
  GetAiGatewayVirtualModelConfigRequest$Outbound,
  z.ZodTypeDef,
  GetAiGatewayVirtualModelConfigRequest
> = z.object({
  ownerId: z.string().optional(),
  virtualModelSlug: z.string().optional(),
  limit: z.number().int().optional(),
  cursor: z.string().optional(),
  teamId: z.string().optional(),
  slug: z.string().optional(),
});

export function getAiGatewayVirtualModelConfigRequestToJSON(
  getAiGatewayVirtualModelConfigRequest: GetAiGatewayVirtualModelConfigRequest,
): string {
  return JSON.stringify(
    GetAiGatewayVirtualModelConfigRequest$outboundSchema.parse(
      getAiGatewayVirtualModelConfigRequest,
    ),
  );
}

/** @internal */
export const GetAiGatewayVirtualModelConfigResponseBody$inboundSchema:
  z.ZodType<GetAiGatewayVirtualModelConfigResponseBody, z.ZodTypeDef, unknown> =
    smartUnion([
      AiGatewayVirtualModelConfig$inboundSchema,
      AiGatewayVirtualModelConfigList$inboundSchema,
    ]);

export function getAiGatewayVirtualModelConfigResponseBodyFromJSON(
  jsonString: string,
): SafeParseResult<
  GetAiGatewayVirtualModelConfigResponseBody,
  SDKValidationError
> {
  return safeParse(
    jsonString,
    (x) =>
      GetAiGatewayVirtualModelConfigResponseBody$inboundSchema.parse(
        JSON.parse(x),
      ),
    `Failed to parse 'GetAiGatewayVirtualModelConfigResponseBody' from JSON`,
  );
}
