/*
 * 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 * as types from "../types/primitives.js";
import { smartUnion } from "../types/smartUnion.js";
import { SDKValidationError } from "./sdkvalidationerror.js";

export type CreateDeploymentCheckRunRequestBody = {
  checkId: string;
};

export type CreateDeploymentCheckRunRequest = {
  deploymentId: string;
  /**
   * 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;
  requestBody?: CreateDeploymentCheckRunRequestBody | undefined;
};

export const CreateDeploymentCheckRunResponseBodyRequires = {
  BuildReady: "build-ready",
  DeploymentUrl: "deployment-url",
  None: "none",
} as const;
export type CreateDeploymentCheckRunResponseBodyRequires = ClosedEnum<
  typeof CreateDeploymentCheckRunResponseBodyRequires
>;

export const CreateDeploymentCheckRunResponseBodyBlocks = {
  BuildStart: "build-start",
  DeploymentAlias: "deployment-alias",
  DeploymentPromotion: "deployment-promotion",
  DeploymentStart: "deployment-start",
  None: "none",
} as const;
export type CreateDeploymentCheckRunResponseBodyBlocks = ClosedEnum<
  typeof CreateDeploymentCheckRunResponseBodyBlocks
>;

export const CreateDeploymentCheckRunResponseBodyStatus = {
  Completed: "completed",
  Queued: "queued",
  Running: "running",
} as const;
export type CreateDeploymentCheckRunResponseBodyStatus = ClosedEnum<
  typeof CreateDeploymentCheckRunResponseBodyStatus
>;

export const ResponseBodyConclusion = {
  Canceled: "canceled",
  Failed: "failed",
  Neutral: "neutral",
  Skipped: "skipped",
  Succeeded: "succeeded",
  Timeout: "timeout",
} as const;
export type ResponseBodyConclusion = ClosedEnum<typeof ResponseBodyConclusion>;

export const CreateDeploymentCheckRunSourceOrigin = {
  Platform: "platform",
} as const;
export type CreateDeploymentCheckRunSourceOrigin = ClosedEnum<
  typeof CreateDeploymentCheckRunSourceOrigin
>;

/**
 * CI sentinel — check run `source` only (no parent check).
 */
export type CreateDeploymentCheckRunSourceChecksV22 = {
  subKind: "vercel-ci-sentinel";
  origin: CreateDeploymentCheckRunSourceOrigin;
};

export const SourceOrigin = {
  Config: "config",
} as const;
export type SourceOrigin = ClosedEnum<typeof SourceOrigin>;

/**
 * Config-driven CI task — check run `source` only (no parent check).
 */
export type CreateDeploymentCheckRunSourceChecksV21 = {
  subKind: "vercel-ci";
  origin: SourceOrigin;
  invocationId: string;
  jobDefinitionId: string;
};

export type CreateDeploymentCheckRunResponseBodySource =
  | CreateDeploymentCheckRunSourceChecksV21
  | CreateDeploymentCheckRunSourceChecksV22;

/**
 * Vercel CI check run without a parent `check` (no `checkId` field).
 */
export type CreateDeploymentCheckRunResponseBody2 = {
  id: string;
  name: string;
  ownerId: string;
  deploymentId: string;
  projectId?: string | undefined;
  requires?: CreateDeploymentCheckRunResponseBodyRequires | undefined;
  blocks?: CreateDeploymentCheckRunResponseBodyBlocks | undefined;
  targets?: Array<string> | undefined;
  status: CreateDeploymentCheckRunResponseBodyStatus;
  conclusion?: ResponseBodyConclusion | undefined;
  conclusionText?: string | undefined;
  externalId?: string | undefined;
  externalUrl?: string | undefined;
  output?: { [k: string]: any } | undefined;
  timeout: number;
  createdAt: number;
  updatedAt: number;
  completedAt?: number | undefined;
  source:
    | CreateDeploymentCheckRunSourceChecksV21
    | CreateDeploymentCheckRunSourceChecksV22;
};

export const ResponseBodyRequires = {
  BuildReady: "build-ready",
  DeploymentUrl: "deployment-url",
  None: "none",
} as const;
export type ResponseBodyRequires = ClosedEnum<typeof ResponseBodyRequires>;

export const ResponseBodyBlocks = {
  BuildStart: "build-start",
  DeploymentAlias: "deployment-alias",
  DeploymentPromotion: "deployment-promotion",
  DeploymentStart: "deployment-start",
  None: "none",
} as const;
export type ResponseBodyBlocks = ClosedEnum<typeof ResponseBodyBlocks>;

export const ResponseBodyStatus = {
  Completed: "completed",
  Queued: "queued",
  Running: "running",
} as const;
export type ResponseBodyStatus = ClosedEnum<typeof ResponseBodyStatus>;

export const CreateDeploymentCheckRunResponseBodyConclusion = {
  Canceled: "canceled",
  Failed: "failed",
  Neutral: "neutral",
  Skipped: "skipped",
  Succeeded: "succeeded",
  Timeout: "timeout",
} as const;
export type CreateDeploymentCheckRunResponseBodyConclusion = ClosedEnum<
  typeof CreateDeploymentCheckRunResponseBodyConclusion
>;

export const SubKind = {
  VercelNativeCheck: "vercel-native-check",
} as const;
export type SubKind = ClosedEnum<typeof SubKind>;

export const CreateDeploymentCheckRunSourceChecksV2Origin = {
  Api: "api",
  Platform: "platform",
} as const;
export type CreateDeploymentCheckRunSourceChecksV2Origin = ClosedEnum<
  typeof CreateDeploymentCheckRunSourceChecksV2Origin
>;

/**
 * Native Vercel checks — check definition and check run `source`.
 */
export type CreateDeploymentCheckRunSource4 = {
  subKind?: SubKind | undefined;
  origin?: CreateDeploymentCheckRunSourceChecksV2Origin | undefined;
};

export const CreateDeploymentCheckRunSourceChecksV2ResponseKind = {
  GitProvider: "git-provider",
} as const;
export type CreateDeploymentCheckRunSourceChecksV2ResponseKind = ClosedEnum<
  typeof CreateDeploymentCheckRunSourceChecksV2ResponseKind
>;

export const CreateDeploymentCheckRunSourceProvider = {
  Bitbucket: "bitbucket",
  Github: "github",
  Gitlab: "gitlab",
} as const;
export type CreateDeploymentCheckRunSourceProvider = ClosedEnum<
  typeof CreateDeploymentCheckRunSourceProvider
>;

export type CreateDeploymentCheckRunSource3 = {
  kind: CreateDeploymentCheckRunSourceChecksV2ResponseKind;
  provider: CreateDeploymentCheckRunSourceProvider;
  externalCheckName: string;
};

export const CreateDeploymentCheckRunSourceChecksV2Kind = {
  Webhook: "webhook",
} as const;
export type CreateDeploymentCheckRunSourceChecksV2Kind = ClosedEnum<
  typeof CreateDeploymentCheckRunSourceChecksV2Kind
>;

export type CreateDeploymentCheckRunSource2 = {
  kind: CreateDeploymentCheckRunSourceChecksV2Kind;
  webhookId?: string | undefined;
};

export const CreateDeploymentCheckRunSourceKind = {
  Integration: "integration",
} as const;
export type CreateDeploymentCheckRunSourceKind = ClosedEnum<
  typeof CreateDeploymentCheckRunSourceKind
>;

export type CreateDeploymentCheckRunSource1 = {
  kind: CreateDeploymentCheckRunSourceKind;
  integrationId: string;
  integrationConfigurationId: string;
  resourceId?: string | undefined;
  externalResourceId?: string | undefined;
};

export type ResponseBodySource =
  | CreateDeploymentCheckRunSource1
  | CreateDeploymentCheckRunSource3
  | CreateDeploymentCheckRunSource2
  | CreateDeploymentCheckRunSource4;

/**
 * Check run backed by a project-level `check` definition.
 */
export type CreateDeploymentCheckRunResponseBody1 = {
  id: string;
  name: string;
  ownerId: string;
  deploymentId: string;
  projectId?: string | undefined;
  requires?: ResponseBodyRequires | undefined;
  blocks?: ResponseBodyBlocks | undefined;
  targets?: Array<string> | undefined;
  status: ResponseBodyStatus;
  conclusion?: CreateDeploymentCheckRunResponseBodyConclusion | undefined;
  conclusionText?: string | undefined;
  externalId?: string | undefined;
  externalUrl?: string | undefined;
  output?: { [k: string]: any } | undefined;
  timeout: number;
  createdAt: number;
  updatedAt: number;
  completedAt?: number | undefined;
  checkId: string;
  source:
    | CreateDeploymentCheckRunSource1
    | CreateDeploymentCheckRunSource3
    | CreateDeploymentCheckRunSource2
    | CreateDeploymentCheckRunSource4;
};

export type CreateDeploymentCheckRunResponseBody =
  | CreateDeploymentCheckRunResponseBody1
  | CreateDeploymentCheckRunResponseBody2;

/** @internal */
export type CreateDeploymentCheckRunRequestBody$Outbound = {
  checkId: string;
};

/** @internal */
export const CreateDeploymentCheckRunRequestBody$outboundSchema: z.ZodType<
  CreateDeploymentCheckRunRequestBody$Outbound,
  z.ZodTypeDef,
  CreateDeploymentCheckRunRequestBody
> = z.object({
  checkId: z.string(),
});

export function createDeploymentCheckRunRequestBodyToJSON(
  createDeploymentCheckRunRequestBody: CreateDeploymentCheckRunRequestBody,
): string {
  return JSON.stringify(
    CreateDeploymentCheckRunRequestBody$outboundSchema.parse(
      createDeploymentCheckRunRequestBody,
    ),
  );
}

/** @internal */
export type CreateDeploymentCheckRunRequest$Outbound = {
  deploymentId: string;
  teamId?: string | undefined;
  slug?: string | undefined;
  RequestBody?: CreateDeploymentCheckRunRequestBody$Outbound | undefined;
};

/** @internal */
export const CreateDeploymentCheckRunRequest$outboundSchema: z.ZodType<
  CreateDeploymentCheckRunRequest$Outbound,
  z.ZodTypeDef,
  CreateDeploymentCheckRunRequest
> = z.object({
  deploymentId: z.string(),
  teamId: z.string().optional(),
  slug: z.string().optional(),
  requestBody: z.lazy(() => CreateDeploymentCheckRunRequestBody$outboundSchema)
    .optional(),
}).transform((v) => {
  return remap$(v, {
    requestBody: "RequestBody",
  });
});

export function createDeploymentCheckRunRequestToJSON(
  createDeploymentCheckRunRequest: CreateDeploymentCheckRunRequest,
): string {
  return JSON.stringify(
    CreateDeploymentCheckRunRequest$outboundSchema.parse(
      createDeploymentCheckRunRequest,
    ),
  );
}

/** @internal */
export const CreateDeploymentCheckRunResponseBodyRequires$inboundSchema:
  z.ZodNativeEnum<typeof CreateDeploymentCheckRunResponseBodyRequires> = z
    .nativeEnum(CreateDeploymentCheckRunResponseBodyRequires);

/** @internal */
export const CreateDeploymentCheckRunResponseBodyBlocks$inboundSchema:
  z.ZodNativeEnum<typeof CreateDeploymentCheckRunResponseBodyBlocks> = z
    .nativeEnum(CreateDeploymentCheckRunResponseBodyBlocks);

/** @internal */
export const CreateDeploymentCheckRunResponseBodyStatus$inboundSchema:
  z.ZodNativeEnum<typeof CreateDeploymentCheckRunResponseBodyStatus> = z
    .nativeEnum(CreateDeploymentCheckRunResponseBodyStatus);

/** @internal */
export const ResponseBodyConclusion$inboundSchema: z.ZodNativeEnum<
  typeof ResponseBodyConclusion
> = z.nativeEnum(ResponseBodyConclusion);

/** @internal */
export const CreateDeploymentCheckRunSourceOrigin$inboundSchema:
  z.ZodNativeEnum<typeof CreateDeploymentCheckRunSourceOrigin> = z.nativeEnum(
    CreateDeploymentCheckRunSourceOrigin,
  );

/** @internal */
export const CreateDeploymentCheckRunSourceChecksV22$inboundSchema: z.ZodType<
  CreateDeploymentCheckRunSourceChecksV22,
  z.ZodTypeDef,
  unknown
> = z.object({
  subKind: types.literal("vercel-ci-sentinel"),
  origin: CreateDeploymentCheckRunSourceOrigin$inboundSchema,
});

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

/** @internal */
export const SourceOrigin$inboundSchema: z.ZodNativeEnum<typeof SourceOrigin> =
  z.nativeEnum(SourceOrigin);

/** @internal */
export const CreateDeploymentCheckRunSourceChecksV21$inboundSchema: z.ZodType<
  CreateDeploymentCheckRunSourceChecksV21,
  z.ZodTypeDef,
  unknown
> = z.object({
  subKind: types.literal("vercel-ci"),
  origin: SourceOrigin$inboundSchema,
  invocationId: types.string(),
  jobDefinitionId: types.string(),
});

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

/** @internal */
export const CreateDeploymentCheckRunResponseBodySource$inboundSchema:
  z.ZodType<CreateDeploymentCheckRunResponseBodySource, z.ZodTypeDef, unknown> =
    z.union([
      z.lazy(() => CreateDeploymentCheckRunSourceChecksV21$inboundSchema),
      z.lazy(() => CreateDeploymentCheckRunSourceChecksV22$inboundSchema),
    ]);

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

/** @internal */
export const CreateDeploymentCheckRunResponseBody2$inboundSchema: z.ZodType<
  CreateDeploymentCheckRunResponseBody2,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  name: types.string(),
  ownerId: types.string(),
  deploymentId: types.string(),
  projectId: types.optional(types.string()),
  requires: types.optional(
    CreateDeploymentCheckRunResponseBodyRequires$inboundSchema,
  ),
  blocks: types.optional(
    CreateDeploymentCheckRunResponseBodyBlocks$inboundSchema,
  ),
  targets: types.optional(z.array(types.string())),
  status: CreateDeploymentCheckRunResponseBodyStatus$inboundSchema,
  conclusion: types.optional(ResponseBodyConclusion$inboundSchema),
  conclusionText: types.optional(types.string()),
  externalId: types.optional(types.string()),
  externalUrl: types.optional(types.string()),
  output: types.optional(z.record(z.any())),
  timeout: types.number(),
  createdAt: types.number(),
  updatedAt: types.number(),
  completedAt: types.optional(types.number()),
  source: z.union([
    z.lazy(() => CreateDeploymentCheckRunSourceChecksV21$inboundSchema),
    z.lazy(() => CreateDeploymentCheckRunSourceChecksV22$inboundSchema),
  ]),
});

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

/** @internal */
export const ResponseBodyRequires$inboundSchema: z.ZodNativeEnum<
  typeof ResponseBodyRequires
> = z.nativeEnum(ResponseBodyRequires);

/** @internal */
export const ResponseBodyBlocks$inboundSchema: z.ZodNativeEnum<
  typeof ResponseBodyBlocks
> = z.nativeEnum(ResponseBodyBlocks);

/** @internal */
export const ResponseBodyStatus$inboundSchema: z.ZodNativeEnum<
  typeof ResponseBodyStatus
> = z.nativeEnum(ResponseBodyStatus);

/** @internal */
export const CreateDeploymentCheckRunResponseBodyConclusion$inboundSchema:
  z.ZodNativeEnum<typeof CreateDeploymentCheckRunResponseBodyConclusion> = z
    .nativeEnum(CreateDeploymentCheckRunResponseBodyConclusion);

/** @internal */
export const SubKind$inboundSchema: z.ZodNativeEnum<typeof SubKind> = z
  .nativeEnum(SubKind);

/** @internal */
export const CreateDeploymentCheckRunSourceChecksV2Origin$inboundSchema:
  z.ZodNativeEnum<typeof CreateDeploymentCheckRunSourceChecksV2Origin> = z
    .nativeEnum(CreateDeploymentCheckRunSourceChecksV2Origin);

/** @internal */
export const CreateDeploymentCheckRunSource4$inboundSchema: z.ZodType<
  CreateDeploymentCheckRunSource4,
  z.ZodTypeDef,
  unknown
> = z.object({
  subKind: types.optional(SubKind$inboundSchema),
  origin: types.optional(
    CreateDeploymentCheckRunSourceChecksV2Origin$inboundSchema,
  ),
});

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

/** @internal */
export const CreateDeploymentCheckRunSourceChecksV2ResponseKind$inboundSchema:
  z.ZodNativeEnum<typeof CreateDeploymentCheckRunSourceChecksV2ResponseKind> = z
    .nativeEnum(CreateDeploymentCheckRunSourceChecksV2ResponseKind);

/** @internal */
export const CreateDeploymentCheckRunSourceProvider$inboundSchema:
  z.ZodNativeEnum<typeof CreateDeploymentCheckRunSourceProvider> = z.nativeEnum(
    CreateDeploymentCheckRunSourceProvider,
  );

/** @internal */
export const CreateDeploymentCheckRunSource3$inboundSchema: z.ZodType<
  CreateDeploymentCheckRunSource3,
  z.ZodTypeDef,
  unknown
> = z.object({
  kind: CreateDeploymentCheckRunSourceChecksV2ResponseKind$inboundSchema,
  provider: CreateDeploymentCheckRunSourceProvider$inboundSchema,
  externalCheckName: types.string(),
});

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

/** @internal */
export const CreateDeploymentCheckRunSourceChecksV2Kind$inboundSchema:
  z.ZodNativeEnum<typeof CreateDeploymentCheckRunSourceChecksV2Kind> = z
    .nativeEnum(CreateDeploymentCheckRunSourceChecksV2Kind);

/** @internal */
export const CreateDeploymentCheckRunSource2$inboundSchema: z.ZodType<
  CreateDeploymentCheckRunSource2,
  z.ZodTypeDef,
  unknown
> = z.object({
  kind: CreateDeploymentCheckRunSourceChecksV2Kind$inboundSchema,
  webhookId: types.optional(types.string()),
});

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

/** @internal */
export const CreateDeploymentCheckRunSourceKind$inboundSchema: z.ZodNativeEnum<
  typeof CreateDeploymentCheckRunSourceKind
> = z.nativeEnum(CreateDeploymentCheckRunSourceKind);

/** @internal */
export const CreateDeploymentCheckRunSource1$inboundSchema: z.ZodType<
  CreateDeploymentCheckRunSource1,
  z.ZodTypeDef,
  unknown
> = z.object({
  kind: CreateDeploymentCheckRunSourceKind$inboundSchema,
  integrationId: types.string(),
  integrationConfigurationId: types.string(),
  resourceId: types.optional(types.string()),
  externalResourceId: types.optional(types.string()),
});

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

/** @internal */
export const ResponseBodySource$inboundSchema: z.ZodType<
  ResponseBodySource,
  z.ZodTypeDef,
  unknown
> = smartUnion([
  z.lazy(() => CreateDeploymentCheckRunSource1$inboundSchema),
  z.lazy(() => CreateDeploymentCheckRunSource3$inboundSchema),
  z.lazy(() => CreateDeploymentCheckRunSource2$inboundSchema),
  z.lazy(() => CreateDeploymentCheckRunSource4$inboundSchema),
]);

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

/** @internal */
export const CreateDeploymentCheckRunResponseBody1$inboundSchema: z.ZodType<
  CreateDeploymentCheckRunResponseBody1,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  name: types.string(),
  ownerId: types.string(),
  deploymentId: types.string(),
  projectId: types.optional(types.string()),
  requires: types.optional(ResponseBodyRequires$inboundSchema),
  blocks: types.optional(ResponseBodyBlocks$inboundSchema),
  targets: types.optional(z.array(types.string())),
  status: ResponseBodyStatus$inboundSchema,
  conclusion: types.optional(
    CreateDeploymentCheckRunResponseBodyConclusion$inboundSchema,
  ),
  conclusionText: types.optional(types.string()),
  externalId: types.optional(types.string()),
  externalUrl: types.optional(types.string()),
  output: types.optional(z.record(z.any())),
  timeout: types.number(),
  createdAt: types.number(),
  updatedAt: types.number(),
  completedAt: types.optional(types.number()),
  checkId: types.string(),
  source: smartUnion([
    z.lazy(() => CreateDeploymentCheckRunSource1$inboundSchema),
    z.lazy(() => CreateDeploymentCheckRunSource3$inboundSchema),
    z.lazy(() => CreateDeploymentCheckRunSource2$inboundSchema),
    z.lazy(() => CreateDeploymentCheckRunSource4$inboundSchema),
  ]),
});

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

/** @internal */
export const CreateDeploymentCheckRunResponseBody$inboundSchema: z.ZodType<
  CreateDeploymentCheckRunResponseBody,
  z.ZodTypeDef,
  unknown
> = smartUnion([
  z.lazy(() => CreateDeploymentCheckRunResponseBody1$inboundSchema),
  z.lazy(() => CreateDeploymentCheckRunResponseBody2$inboundSchema),
]);

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