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

import * as z from "zod/v3";
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 GetDeploymentCheckRunRequest = {
  deploymentId: string;
  /**
   * The ID of the resource that will be updated.
   */
  checkRunId: 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;
};

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

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

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

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

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

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

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

/**
 * Config-driven CI task — check run `source` only (no parent check).
 */
export type GetDeploymentCheckRunSourceChecksV21 = {
  subKind: "vercel-ci";
  origin: GetDeploymentCheckRunSourceChecksV2Origin;
  invocationId: string;
  invocationAttempt?: number | undefined;
  jobDefinitionId: string;
};

export type GetDeploymentCheckRunResponseBodyChecksV2Source =
  | GetDeploymentCheckRunSourceChecksV21
  | GetDeploymentCheckRunSourceChecksV22;

/**
 * Vercel CI check run without a parent `check` (no `checkId` field).
 */
export type GetDeploymentCheckRunResponseBody2 = {
  id: string;
  name: string;
  ownerId: string;
  deploymentId: string;
  projectId?: string | undefined;
  requires?: GetDeploymentCheckRunResponseBodyChecksV2Requires | undefined;
  blocks?: GetDeploymentCheckRunResponseBodyChecksV2Blocks | undefined;
  targets?: Array<string> | undefined;
  status: GetDeploymentCheckRunResponseBodyChecksV2Status;
  conclusion?: GetDeploymentCheckRunResponseBodyChecksV2Conclusion | 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:
    | GetDeploymentCheckRunSourceChecksV21
    | GetDeploymentCheckRunSourceChecksV22;
};

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

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

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

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

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

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

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

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

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

export type GetDeploymentCheckRunSource3 = {
  kind: GetDeploymentCheckRunSourceChecksV2ResponseKind;
  provider: GetDeploymentCheckRunSourceProvider;
  externalCheckName: string;
};

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

export type GetDeploymentCheckRunSource2 = {
  kind: GetDeploymentCheckRunSourceChecksV2Kind;
  webhookId?: string | undefined;
};

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

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

export type GetDeploymentCheckRunResponseBodySource =
  | GetDeploymentCheckRunSource1
  | GetDeploymentCheckRunSource3
  | GetDeploymentCheckRunSource2
  | Source4;

/**
 * Check run backed by a project-level `check` definition.
 */
export type GetDeploymentCheckRunResponseBody1 = {
  id: string;
  name: string;
  ownerId: string;
  deploymentId: string;
  projectId?: string | undefined;
  requires?: GetDeploymentCheckRunResponseBodyRequires | undefined;
  blocks?: GetDeploymentCheckRunResponseBodyBlocks | undefined;
  targets?: Array<string> | undefined;
  status: GetDeploymentCheckRunResponseBodyStatus;
  conclusion?: GetDeploymentCheckRunResponseBodyConclusion | 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:
    | GetDeploymentCheckRunSource1
    | GetDeploymentCheckRunSource3
    | GetDeploymentCheckRunSource2
    | Source4;
};

export type GetDeploymentCheckRunResponseBody =
  | GetDeploymentCheckRunResponseBody1
  | GetDeploymentCheckRunResponseBody2;

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

/** @internal */
export const GetDeploymentCheckRunRequest$outboundSchema: z.ZodType<
  GetDeploymentCheckRunRequest$Outbound,
  z.ZodTypeDef,
  GetDeploymentCheckRunRequest
> = z.object({
  deploymentId: z.string(),
  checkRunId: z.string(),
  teamId: z.string().optional(),
  slug: z.string().optional(),
});

export function getDeploymentCheckRunRequestToJSON(
  getDeploymentCheckRunRequest: GetDeploymentCheckRunRequest,
): string {
  return JSON.stringify(
    GetDeploymentCheckRunRequest$outboundSchema.parse(
      getDeploymentCheckRunRequest,
    ),
  );
}

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetDeploymentCheckRunResponseBody2$inboundSchema: z.ZodType<
  GetDeploymentCheckRunResponseBody2,
  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(
    GetDeploymentCheckRunResponseBodyChecksV2Requires$inboundSchema,
  ),
  blocks: types.optional(
    GetDeploymentCheckRunResponseBodyChecksV2Blocks$inboundSchema,
  ),
  targets: types.optional(z.array(types.string())),
  status: GetDeploymentCheckRunResponseBodyChecksV2Status$inboundSchema,
  conclusion: types.optional(
    GetDeploymentCheckRunResponseBodyChecksV2Conclusion$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(() => GetDeploymentCheckRunSourceChecksV21$inboundSchema),
    z.lazy(() => GetDeploymentCheckRunSourceChecksV22$inboundSchema),
  ]),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetDeploymentCheckRunResponseBodySource$inboundSchema: z.ZodType<
  GetDeploymentCheckRunResponseBodySource,
  z.ZodTypeDef,
  unknown
> = smartUnion([
  z.lazy(() => GetDeploymentCheckRunSource1$inboundSchema),
  z.lazy(() => GetDeploymentCheckRunSource3$inboundSchema),
  z.lazy(() => GetDeploymentCheckRunSource2$inboundSchema),
  z.lazy(() => Source4$inboundSchema),
]);

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

/** @internal */
export const GetDeploymentCheckRunResponseBody1$inboundSchema: z.ZodType<
  GetDeploymentCheckRunResponseBody1,
  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(
    GetDeploymentCheckRunResponseBodyRequires$inboundSchema,
  ),
  blocks: types.optional(GetDeploymentCheckRunResponseBodyBlocks$inboundSchema),
  targets: types.optional(z.array(types.string())),
  status: GetDeploymentCheckRunResponseBodyStatus$inboundSchema,
  conclusion: types.optional(
    GetDeploymentCheckRunResponseBodyConclusion$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(() => GetDeploymentCheckRunSource1$inboundSchema),
    z.lazy(() => GetDeploymentCheckRunSource3$inboundSchema),
    z.lazy(() => GetDeploymentCheckRunSource2$inboundSchema),
    z.lazy(() => Source4$inboundSchema),
  ]),
});

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

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

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