/*
 * 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 const UpdateDeploymentCheckRunStatus = {
  Queued: "queued",
  Running: "running",
  Completed: "completed",
} as const;
export type UpdateDeploymentCheckRunStatus = ClosedEnum<
  typeof UpdateDeploymentCheckRunStatus
>;

export type Output = {};

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

export type UpdateDeploymentCheckRunRequestBody = {
  externalId?: string | undefined;
  externalUrl?: string | undefined;
  status?: UpdateDeploymentCheckRunStatus | undefined;
  output?: Output | undefined;
  completedAt?: number | undefined;
  conclusion?: Conclusion | undefined;
  conclusionText?: string | undefined;
};

export type UpdateDeploymentCheckRunRequest = {
  deploymentId: string;
  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;
  requestBody?: UpdateDeploymentCheckRunRequestBody | undefined;
};

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

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

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

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

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

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

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

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

export type UpdateDeploymentCheckRunResponseBodyChecksV2Source =
  | UpdateDeploymentCheckRunSourceChecksV21
  | UpdateDeploymentCheckRunSourceChecksV22;

/**
 * Vercel CI check run without a parent `check` (no `checkId` field).
 */
export type UpdateDeploymentCheckRunResponseBody2 = {
  id: string;
  name: string;
  ownerId: string;
  deploymentId: string;
  projectId?: string | undefined;
  requires?: UpdateDeploymentCheckRunResponseBodyChecksV2Requires | undefined;
  blocks?: UpdateDeploymentCheckRunResponseBodyChecksV2Blocks | undefined;
  targets?: Array<string> | undefined;
  status: UpdateDeploymentCheckRunResponseBodyChecksV2Status;
  conclusion?:
    | UpdateDeploymentCheckRunResponseBodyChecksV2Conclusion
    | 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:
    | UpdateDeploymentCheckRunSourceChecksV21
    | UpdateDeploymentCheckRunSourceChecksV22;
};

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

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

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

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

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

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

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

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

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

export type UpdateDeploymentCheckRunSource3 = {
  kind: UpdateDeploymentCheckRunSourceChecksV2ResponseKind;
  provider: UpdateDeploymentCheckRunSourceProvider;
  externalCheckName: string;
};

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

export type UpdateDeploymentCheckRunSource2 = {
  kind: UpdateDeploymentCheckRunSourceChecksV2Kind;
  webhookId?: string | undefined;
};

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

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

export type UpdateDeploymentCheckRunResponseBodySource =
  | UpdateDeploymentCheckRunSource1
  | UpdateDeploymentCheckRunSource3
  | UpdateDeploymentCheckRunSource2
  | UpdateDeploymentCheckRunSource4;

/**
 * Check run backed by a project-level `check` definition.
 */
export type UpdateDeploymentCheckRunResponseBody1 = {
  id: string;
  name: string;
  ownerId: string;
  deploymentId: string;
  projectId?: string | undefined;
  requires?: UpdateDeploymentCheckRunResponseBodyRequires | undefined;
  blocks?: UpdateDeploymentCheckRunResponseBodyBlocks | undefined;
  targets?: Array<string> | undefined;
  status: UpdateDeploymentCheckRunResponseBodyStatus;
  conclusion?: UpdateDeploymentCheckRunResponseBodyConclusion | 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:
    | UpdateDeploymentCheckRunSource1
    | UpdateDeploymentCheckRunSource3
    | UpdateDeploymentCheckRunSource2
    | UpdateDeploymentCheckRunSource4;
};

export type UpdateDeploymentCheckRunResponseBody =
  | UpdateDeploymentCheckRunResponseBody1
  | UpdateDeploymentCheckRunResponseBody2;

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

/** @internal */
export type Output$Outbound = {};

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

export function outputToJSON(output: Output): string {
  return JSON.stringify(Output$outboundSchema.parse(output));
}

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

/** @internal */
export type UpdateDeploymentCheckRunRequestBody$Outbound = {
  externalId?: string | undefined;
  externalUrl?: string | undefined;
  status?: string | undefined;
  output?: Output$Outbound | undefined;
  completedAt?: number | undefined;
  conclusion?: string | undefined;
  conclusionText?: string | undefined;
};

/** @internal */
export const UpdateDeploymentCheckRunRequestBody$outboundSchema: z.ZodType<
  UpdateDeploymentCheckRunRequestBody$Outbound,
  z.ZodTypeDef,
  UpdateDeploymentCheckRunRequestBody
> = z.object({
  externalId: z.string().optional(),
  externalUrl: z.string().optional(),
  status: UpdateDeploymentCheckRunStatus$outboundSchema.optional(),
  output: z.lazy(() => Output$outboundSchema).optional(),
  completedAt: z.number().optional(),
  conclusion: Conclusion$outboundSchema.optional(),
  conclusionText: z.string().optional(),
});

export function updateDeploymentCheckRunRequestBodyToJSON(
  updateDeploymentCheckRunRequestBody: UpdateDeploymentCheckRunRequestBody,
): string {
  return JSON.stringify(
    UpdateDeploymentCheckRunRequestBody$outboundSchema.parse(
      updateDeploymentCheckRunRequestBody,
    ),
  );
}

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

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

export function updateDeploymentCheckRunRequestToJSON(
  updateDeploymentCheckRunRequest: UpdateDeploymentCheckRunRequest,
): string {
  return JSON.stringify(
    UpdateDeploymentCheckRunRequest$outboundSchema.parse(
      updateDeploymentCheckRunRequest,
    ),
  );
}

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const UpdateDeploymentCheckRunResponseBody2$inboundSchema: z.ZodType<
  UpdateDeploymentCheckRunResponseBody2,
  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(
    UpdateDeploymentCheckRunResponseBodyChecksV2Requires$inboundSchema,
  ),
  blocks: types.optional(
    UpdateDeploymentCheckRunResponseBodyChecksV2Blocks$inboundSchema,
  ),
  targets: types.optional(z.array(types.string())),
  status: UpdateDeploymentCheckRunResponseBodyChecksV2Status$inboundSchema,
  conclusion: types.optional(
    UpdateDeploymentCheckRunResponseBodyChecksV2Conclusion$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(() => UpdateDeploymentCheckRunSourceChecksV21$inboundSchema),
    z.lazy(() => UpdateDeploymentCheckRunSourceChecksV22$inboundSchema),
  ]),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const UpdateDeploymentCheckRunResponseBodySource$inboundSchema:
  z.ZodType<UpdateDeploymentCheckRunResponseBodySource, z.ZodTypeDef, unknown> =
    smartUnion([
      z.lazy(() => UpdateDeploymentCheckRunSource1$inboundSchema),
      z.lazy(() => UpdateDeploymentCheckRunSource3$inboundSchema),
      z.lazy(() => UpdateDeploymentCheckRunSource2$inboundSchema),
      z.lazy(() => UpdateDeploymentCheckRunSource4$inboundSchema),
    ]);

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

/** @internal */
export const UpdateDeploymentCheckRunResponseBody1$inboundSchema: z.ZodType<
  UpdateDeploymentCheckRunResponseBody1,
  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(
    UpdateDeploymentCheckRunResponseBodyRequires$inboundSchema,
  ),
  blocks: types.optional(
    UpdateDeploymentCheckRunResponseBodyBlocks$inboundSchema,
  ),
  targets: types.optional(z.array(types.string())),
  status: UpdateDeploymentCheckRunResponseBodyStatus$inboundSchema,
  conclusion: types.optional(
    UpdateDeploymentCheckRunResponseBodyConclusion$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(() => UpdateDeploymentCheckRunSource1$inboundSchema),
    z.lazy(() => UpdateDeploymentCheckRunSource3$inboundSchema),
    z.lazy(() => UpdateDeploymentCheckRunSource2$inboundSchema),
    z.lazy(() => UpdateDeploymentCheckRunSource4$inboundSchema),
  ]),
});

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

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

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