/*
 * 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";
import {
  UploadProjectAvatarAbuse,
  UploadProjectAvatarAbuse$inboundSchema,
  UploadProjectAvatarDefaultResourceConfig,
  UploadProjectAvatarDefaultResourceConfig$inboundSchema,
  UploadProjectAvatarDeploymentPolicy,
  UploadProjectAvatarDeploymentPolicy$inboundSchema,
  UploadProjectAvatarFeatures,
  UploadProjectAvatarFeatures$inboundSchema,
  UploadProjectAvatarGitComments,
  UploadProjectAvatarGitComments$inboundSchema,
  UploadProjectAvatarGitProviderOptions,
  UploadProjectAvatarGitProviderOptions$inboundSchema,
  UploadProjectAvatarInternalRoutes1,
  UploadProjectAvatarInternalRoutes1$inboundSchema,
  UploadProjectAvatarInternalRoutes2,
  UploadProjectAvatarInternalRoutes2$inboundSchema,
  UploadProjectAvatarLastAliasRequest,
  UploadProjectAvatarLastAliasRequest$inboundSchema,
  UploadProjectAvatarLastRollbackTarget,
  UploadProjectAvatarLastRollbackTarget$inboundSchema,
  UploadProjectAvatarOidcTokenConfig,
  UploadProjectAvatarOidcTokenConfig$inboundSchema,
  UploadProjectAvatarPermissions,
  UploadProjectAvatarPermissions$inboundSchema,
  UploadProjectAvatarProtectionBypass,
  UploadProjectAvatarProtectionBypass$inboundSchema,
  UploadProjectAvatarSecurity,
  UploadProjectAvatarSecurity$inboundSchema,
  UploadProjectAvatarSsoProtection,
  UploadProjectAvatarSsoProtection$inboundSchema,
  UploadProjectAvatarStaticIps,
  UploadProjectAvatarStaticIps$inboundSchema,
  UploadProjectAvatarTargets,
  UploadProjectAvatarTargets$inboundSchema,
  UploadProjectAvatarTier,
  UploadProjectAvatarTier$inboundSchema,
  UploadProjectAvatarTrustedIps,
  UploadProjectAvatarTrustedIps$inboundSchema,
  UploadProjectAvatarTrustedSources,
  UploadProjectAvatarTrustedSources$inboundSchema,
  UploadProjectAvatarUsageStatus,
  UploadProjectAvatarUsageStatus$inboundSchema,
  UploadProjectAvatarWebAnalytics,
  UploadProjectAvatarWebAnalytics$inboundSchema,
} from "./uploadprojectavatarinternalroutes1.js";
import {
  UploadProjectAvatarAlias,
  UploadProjectAvatarAlias$inboundSchema,
  UploadProjectAvatarAnalytics,
  UploadProjectAvatarAnalytics$inboundSchema,
  UploadProjectAvatarBlobs,
  UploadProjectAvatarBlobs$inboundSchema,
  UploadProjectAvatarConnectConfigurations,
  UploadProjectAvatarConnectConfigurations$inboundSchema,
  UploadProjectAvatarCreator,
  UploadProjectAvatarCreator$inboundSchema,
  UploadProjectAvatarCrons,
  UploadProjectAvatarCrons$inboundSchema,
  UploadProjectAvatarCustomEnvironments,
  UploadProjectAvatarCustomEnvironments$inboundSchema,
  UploadProjectAvatarDataCache,
  UploadProjectAvatarDataCache$inboundSchema,
  UploadProjectAvatarDeploymentExpiration,
  UploadProjectAvatarDeploymentExpiration$inboundSchema,
  UploadProjectAvatarEnv,
  UploadProjectAvatarEnv$inboundSchema,
  UploadProjectAvatarExpiration,
  UploadProjectAvatarExpiration$inboundSchema,
  UploadProjectAvatarFramework,
  UploadProjectAvatarFramework$inboundSchema,
  UploadProjectAvatarIpBuckets,
  UploadProjectAvatarIpBuckets$inboundSchema,
  UploadProjectAvatarJobs,
  UploadProjectAvatarJobs$inboundSchema,
  UploadProjectAvatarLatestDeployments,
  UploadProjectAvatarLatestDeployments$inboundSchema,
  UploadProjectAvatarLink,
  UploadProjectAvatarLink$inboundSchema,
  UploadProjectAvatarMicrofrontends,
  UploadProjectAvatarMicrofrontends$inboundSchema,
  UploadProjectAvatarNodeVersion,
  UploadProjectAvatarNodeVersion$inboundSchema,
  UploadProjectAvatarOptionsAllowlist,
  UploadProjectAvatarOptionsAllowlist$inboundSchema,
  UploadProjectAvatarPassport,
  UploadProjectAvatarPassport$inboundSchema,
  UploadProjectAvatarPasswordProtection,
  UploadProjectAvatarPasswordProtection$inboundSchema,
  UploadProjectAvatarProtectionConfig,
  UploadProjectAvatarProtectionConfig$inboundSchema,
  UploadProjectAvatarResourceConfig,
  UploadProjectAvatarResourceConfig$inboundSchema,
  UploadProjectAvatarRollbackDescription,
  UploadProjectAvatarRollbackDescription$inboundSchema,
  UploadProjectAvatarRollingRelease,
  UploadProjectAvatarRollingRelease$inboundSchema,
  UploadProjectAvatarSandbox,
  UploadProjectAvatarSandbox$inboundSchema,
  UploadProjectAvatarServices,
  UploadProjectAvatarServices$inboundSchema,
  UploadProjectAvatarSpeedInsights,
  UploadProjectAvatarSpeedInsights$inboundSchema,
} from "./uploadprojectavatarprojectsbuildmachinetype.js";

export type UploadProjectAvatarInternalRoutes =
  | UploadProjectAvatarInternalRoutes1
  | UploadProjectAvatarInternalRoutes2;

export const UploadProjectAvatarAction = {
  Accept: "accept",
  Cancel: "cancel",
  Delete: "delete",
} as const;
export type UploadProjectAvatarAction = ClosedEnum<
  typeof UploadProjectAvatarAction
>;

export type UploadProjectAvatarValuePreviousValue = string | number | boolean;

export type UploadProjectAvatarValueCurrentValue = string | number | boolean;

export type UploadProjectAvatarValue3 = {
  previousValue: string | number | boolean;
  currentValue: string | number | boolean;
};

export type UploadProjectAvatarValue =
  | UploadProjectAvatarValue3
  | string
  | number
  | boolean;

export type UploadProjectAvatarDismissedToasts = {
  key: string;
  dismissedAt: number;
  action: UploadProjectAvatarAction;
  value: UploadProjectAvatarValue3 | string | number | boolean | null;
};

export const UploadProjectAvatarProjectsEnv = {
  Preview: "preview",
  Production: "production",
} as const;
export type UploadProjectAvatarProjectsEnv = ClosedEnum<
  typeof UploadProjectAvatarProjectsEnv
>;

/**
 * Which tracing destination this rule applies to. `internal` is the hidden Vercel production-tracing drain (internal delivery); `external` is any customer-configured drain. Derived from the owning drain's delivery type when project tracing is computed; absent on configs persisted before this field existed.
 */
export const UploadProjectAvatarDestination = {
  External: "external",
  Internal: "internal",
} as const;
/**
 * Which tracing destination this rule applies to. `internal` is the hidden Vercel production-tracing drain (internal delivery); `external` is any customer-configured drain. Derived from the owning drain's delivery type when project tracing is computed; absent on configs persisted before this field existed.
 */
export type UploadProjectAvatarDestination = ClosedEnum<
  typeof UploadProjectAvatarDestination
>;

export type UploadProjectAvatarSamplingRules = {
  rate: number;
  env?: UploadProjectAvatarProjectsEnv | undefined;
  requestPath?: string | undefined;
  /**
   * Which tracing destination this rule applies to. `internal` is the hidden Vercel production-tracing drain (internal delivery); `external` is any customer-configured drain. Derived from the owning drain's delivery type when project tracing is computed; absent on configs persisted before this field existed.
   */
  destination?: UploadProjectAvatarDestination | undefined;
};

export type UploadProjectAvatarTracing = {
  domains?: string | undefined;
  ignorePaths?: Array<string> | undefined;
  samplingRules?: Array<UploadProjectAvatarSamplingRules> | undefined;
};

export type UploadProjectAvatarResponseBody = {
  accountId: string;
  creator?: UploadProjectAvatarCreator | undefined;
  alias: Array<UploadProjectAvatarAlias>;
  analytics?: UploadProjectAvatarAnalytics | undefined;
  appliedCve55182Migration?: boolean | undefined;
  speedInsights?: UploadProjectAvatarSpeedInsights | undefined;
  autoExposeSystemEnvs?: boolean | undefined;
  autoAssignCustomDomains?: boolean | undefined;
  autoAssignCustomDomainsUpdatedBy?: string | undefined;
  buildCommand?: string | null | undefined;
  commandForIgnoringBuildStep?: string | null | undefined;
  connectConfigurations?:
    | Array<UploadProjectAvatarConnectConfigurations>
    | null
    | undefined;
  connectConfigurationId?: string | null | undefined;
  connectBuildsEnabled?: boolean | undefined;
  passiveConnectConfigurationId?: string | null | undefined;
  createdAt?: number | undefined;
  customerSupportCodeVisibility?: boolean | undefined;
  crons?: UploadProjectAvatarCrons | undefined;
  dataCache?: UploadProjectAvatarDataCache | undefined;
  /**
   * Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects.
   */
  deploymentExpiration: UploadProjectAvatarDeploymentExpiration;
  expiration?: UploadProjectAvatarExpiration | undefined;
  devCommand?: string | null | undefined;
  directoryListing: boolean;
  installCommand?: string | null | undefined;
  env?: Array<UploadProjectAvatarEnv> | undefined;
  customEnvironments?: Array<UploadProjectAvatarCustomEnvironments> | undefined;
  framework?: UploadProjectAvatarFramework | null | undefined;
  services?: Array<UploadProjectAvatarServices> | undefined;
  gitForkProtection?: boolean | undefined;
  gitLFS?: boolean | undefined;
  id: string;
  ipBuckets?: Array<UploadProjectAvatarIpBuckets> | undefined;
  jobs?: UploadProjectAvatarJobs | undefined;
  latestDeployments?: Array<UploadProjectAvatarLatestDeployments> | undefined;
  link?: UploadProjectAvatarLink | undefined;
  blobs?: UploadProjectAvatarBlobs | undefined;
  microfrontends?: UploadProjectAvatarMicrofrontends | undefined;
  name: string;
  nodeVersion: UploadProjectAvatarNodeVersion;
  optionsAllowlist?: UploadProjectAvatarOptionsAllowlist | null | undefined;
  outputDirectory?: string | null | undefined;
  passwordProtection?: UploadProjectAvatarPasswordProtection | null | undefined;
  passport?: UploadProjectAvatarPassport | null | undefined;
  protectionConfig?: UploadProjectAvatarProtectionConfig | undefined;
  sandbox?: UploadProjectAvatarSandbox | undefined;
  productionDeploymentsFastLane?: boolean | undefined;
  resourceConfig: UploadProjectAvatarResourceConfig;
  /**
   * Description of why a project was rolled back, and by whom. Note that lastAliasRequest contains the from/to details of the rollback.
   */
  rollbackDescription?: UploadProjectAvatarRollbackDescription | undefined;
  /**
   * Project-level rolling release configuration that defines how deployments should be gradually rolled out
   */
  rollingRelease?: UploadProjectAvatarRollingRelease | null | undefined;
  defaultResourceConfig: UploadProjectAvatarDefaultResourceConfig;
  rootDirectory?: string | null | undefined;
  serverlessFunctionZeroConfigFailover?: boolean | undefined;
  skewProtectionBoundaryAt?: number | undefined;
  skewProtectionMaxAge?: number | undefined;
  skewProtectionAllowedDomains?: Array<string> | undefined;
  skipGitConnectDuringLink?: boolean | undefined;
  staticIps?: UploadProjectAvatarStaticIps | undefined;
  sourceFilesOutsideRootDirectory?: boolean | undefined;
  enableAffectedProjectsDeployments?: boolean | undefined;
  enableExternalRewriteCaching?: boolean | undefined;
  ssoProtection?: UploadProjectAvatarSsoProtection | null | undefined;
  targets?: { [k: string]: UploadProjectAvatarTargets | null } | undefined;
  transferCompletedAt?: number | undefined;
  transferStartedAt?: number | undefined;
  transferToAccountId?: string | undefined;
  transferredFromAccountId?: string | undefined;
  updatedAt?: number | undefined;
  live?: boolean | undefined;
  enablePreviewFeedback?: boolean | null | undefined;
  enableProductionFeedback?: boolean | null | undefined;
  permissions?: UploadProjectAvatarPermissions | undefined;
  lastRollbackTarget?: UploadProjectAvatarLastRollbackTarget | null | undefined;
  lastAliasRequest?: UploadProjectAvatarLastAliasRequest | null | undefined;
  protectionBypass?:
    | { [k: string]: UploadProjectAvatarProtectionBypass }
    | undefined;
  hasActiveBranches?: boolean | undefined;
  trustedIps?: UploadProjectAvatarTrustedIps | null | undefined;
  trustedSources?: UploadProjectAvatarTrustedSources | null | undefined;
  gitComments?: UploadProjectAvatarGitComments | undefined;
  gitProviderOptions?: UploadProjectAvatarGitProviderOptions | undefined;
  paused?: boolean | undefined;
  concurrencyBucketName?: string | undefined;
  webAnalytics?: UploadProjectAvatarWebAnalytics | undefined;
  security?: UploadProjectAvatarSecurity | undefined;
  oidcTokenConfig?: UploadProjectAvatarOidcTokenConfig | undefined;
  /**
   * Project shape. `null` on a rule list clears the project's override for that rule type (fall back to team for every env); omitting is equivalent. Setting `deploymentPolicy` itself to `null` clears every override at once. Kept structurally distinct from {@link TeamDeploymentPolicy} so the two storage locations don't share a type by accident.
   */
  deploymentPolicy?: UploadProjectAvatarDeploymentPolicy | null | undefined;
  tier?: UploadProjectAvatarTier | undefined;
  usageStatus?: UploadProjectAvatarUsageStatus | undefined;
  features?: UploadProjectAvatarFeatures | undefined;
  v0?: boolean | undefined;
  v0Created?: boolean | undefined;
  abuse?: UploadProjectAvatarAbuse | undefined;
  internalRoutes?:
    | Array<
      UploadProjectAvatarInternalRoutes1 | UploadProjectAvatarInternalRoutes2
    >
    | undefined;
  hasDeployments?: boolean | undefined;
  dismissedToasts?: Array<UploadProjectAvatarDismissedToasts> | undefined;
  protectedSourcemaps?: boolean | undefined;
  tracing?: UploadProjectAvatarTracing | undefined;
  avatar?: string | null | undefined;
};

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

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

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

/** @internal */
export const UploadProjectAvatarValuePreviousValue$inboundSchema: z.ZodType<
  UploadProjectAvatarValuePreviousValue,
  z.ZodTypeDef,
  unknown
> = smartUnion([types.string(), types.number(), types.boolean()]);

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

/** @internal */
export const UploadProjectAvatarValueCurrentValue$inboundSchema: z.ZodType<
  UploadProjectAvatarValueCurrentValue,
  z.ZodTypeDef,
  unknown
> = smartUnion([types.string(), types.number(), types.boolean()]);

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

/** @internal */
export const UploadProjectAvatarValue3$inboundSchema: z.ZodType<
  UploadProjectAvatarValue3,
  z.ZodTypeDef,
  unknown
> = z.object({
  previousValue: smartUnion([types.string(), types.number(), types.boolean()]),
  currentValue: smartUnion([types.string(), types.number(), types.boolean()]),
});

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

/** @internal */
export const UploadProjectAvatarValue$inboundSchema: z.ZodType<
  UploadProjectAvatarValue,
  z.ZodTypeDef,
  unknown
> = smartUnion([
  z.lazy(() => UploadProjectAvatarValue3$inboundSchema),
  types.string(),
  types.number(),
  types.boolean(),
]);

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

/** @internal */
export const UploadProjectAvatarDismissedToasts$inboundSchema: z.ZodType<
  UploadProjectAvatarDismissedToasts,
  z.ZodTypeDef,
  unknown
> = z.object({
  key: types.string(),
  dismissedAt: types.number(),
  action: UploadProjectAvatarAction$inboundSchema,
  value: types.nullable(
    smartUnion([
      z.lazy(() => UploadProjectAvatarValue3$inboundSchema),
      types.string(),
      types.number(),
      types.boolean(),
    ]),
  ),
});

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

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

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

/** @internal */
export const UploadProjectAvatarSamplingRules$inboundSchema: z.ZodType<
  UploadProjectAvatarSamplingRules,
  z.ZodTypeDef,
  unknown
> = z.object({
  rate: types.number(),
  env: types.optional(UploadProjectAvatarProjectsEnv$inboundSchema),
  requestPath: types.optional(types.string()),
  destination: types.optional(UploadProjectAvatarDestination$inboundSchema),
});

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

/** @internal */
export const UploadProjectAvatarTracing$inboundSchema: z.ZodType<
  UploadProjectAvatarTracing,
  z.ZodTypeDef,
  unknown
> = z.object({
  domains: types.optional(types.string()),
  ignorePaths: types.optional(z.array(types.string())),
  samplingRules: types.optional(
    z.array(z.lazy(() => UploadProjectAvatarSamplingRules$inboundSchema)),
  ),
});

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

/** @internal */
export const UploadProjectAvatarResponseBody$inboundSchema: z.ZodType<
  UploadProjectAvatarResponseBody,
  z.ZodTypeDef,
  unknown
> = z.object({
  accountId: types.string(),
  creator: types.optional(UploadProjectAvatarCreator$inboundSchema),
  alias: z.array(UploadProjectAvatarAlias$inboundSchema),
  analytics: types.optional(UploadProjectAvatarAnalytics$inboundSchema),
  appliedCve55182Migration: types.optional(types.boolean()),
  speedInsights: types.optional(UploadProjectAvatarSpeedInsights$inboundSchema),
  autoExposeSystemEnvs: types.optional(types.boolean()),
  autoAssignCustomDomains: types.optional(types.boolean()),
  autoAssignCustomDomainsUpdatedBy: types.optional(types.string()),
  buildCommand: z.nullable(types.string()).optional(),
  commandForIgnoringBuildStep: z.nullable(types.string()).optional(),
  connectConfigurations: z.nullable(
    z.array(UploadProjectAvatarConnectConfigurations$inboundSchema),
  ).optional(),
  connectConfigurationId: z.nullable(types.string()).optional(),
  connectBuildsEnabled: types.optional(types.boolean()),
  passiveConnectConfigurationId: z.nullable(types.string()).optional(),
  createdAt: types.optional(types.number()),
  customerSupportCodeVisibility: types.optional(types.boolean()),
  crons: types.optional(UploadProjectAvatarCrons$inboundSchema),
  dataCache: types.optional(UploadProjectAvatarDataCache$inboundSchema),
  deploymentExpiration: UploadProjectAvatarDeploymentExpiration$inboundSchema,
  expiration: types.optional(UploadProjectAvatarExpiration$inboundSchema),
  devCommand: z.nullable(types.string()).optional(),
  directoryListing: types.boolean(),
  installCommand: z.nullable(types.string()).optional(),
  env: types.optional(z.array(UploadProjectAvatarEnv$inboundSchema)),
  customEnvironments: types.optional(
    z.array(UploadProjectAvatarCustomEnvironments$inboundSchema),
  ),
  framework: z.nullable(UploadProjectAvatarFramework$inboundSchema).optional(),
  services: types.optional(z.array(UploadProjectAvatarServices$inboundSchema)),
  gitForkProtection: types.optional(types.boolean()),
  gitLFS: types.optional(types.boolean()),
  id: types.string(),
  ipBuckets: types.optional(
    z.array(UploadProjectAvatarIpBuckets$inboundSchema),
  ),
  jobs: types.optional(UploadProjectAvatarJobs$inboundSchema),
  latestDeployments: types.optional(
    z.array(UploadProjectAvatarLatestDeployments$inboundSchema),
  ),
  link: types.optional(UploadProjectAvatarLink$inboundSchema),
  blobs: types.optional(UploadProjectAvatarBlobs$inboundSchema),
  microfrontends: types.optional(
    UploadProjectAvatarMicrofrontends$inboundSchema,
  ),
  name: types.string(),
  nodeVersion: UploadProjectAvatarNodeVersion$inboundSchema,
  optionsAllowlist: z.nullable(
    UploadProjectAvatarOptionsAllowlist$inboundSchema,
  ).optional(),
  outputDirectory: z.nullable(types.string()).optional(),
  passwordProtection: z.nullable(
    UploadProjectAvatarPasswordProtection$inboundSchema,
  ).optional(),
  passport: z.nullable(UploadProjectAvatarPassport$inboundSchema).optional(),
  protectionConfig: types.optional(
    UploadProjectAvatarProtectionConfig$inboundSchema,
  ),
  sandbox: types.optional(UploadProjectAvatarSandbox$inboundSchema),
  productionDeploymentsFastLane: types.optional(types.boolean()),
  resourceConfig: UploadProjectAvatarResourceConfig$inboundSchema,
  rollbackDescription: types.optional(
    UploadProjectAvatarRollbackDescription$inboundSchema,
  ),
  rollingRelease: z.nullable(UploadProjectAvatarRollingRelease$inboundSchema)
    .optional(),
  defaultResourceConfig: UploadProjectAvatarDefaultResourceConfig$inboundSchema,
  rootDirectory: z.nullable(types.string()).optional(),
  serverlessFunctionZeroConfigFailover: types.optional(types.boolean()),
  skewProtectionBoundaryAt: types.optional(types.number()),
  skewProtectionMaxAge: types.optional(types.number()),
  skewProtectionAllowedDomains: types.optional(z.array(types.string())),
  skipGitConnectDuringLink: types.optional(types.boolean()),
  staticIps: types.optional(UploadProjectAvatarStaticIps$inboundSchema),
  sourceFilesOutsideRootDirectory: types.optional(types.boolean()),
  enableAffectedProjectsDeployments: types.optional(types.boolean()),
  enableExternalRewriteCaching: types.optional(types.boolean()),
  ssoProtection: z.nullable(UploadProjectAvatarSsoProtection$inboundSchema)
    .optional(),
  targets: types.optional(
    z.record(types.nullable(UploadProjectAvatarTargets$inboundSchema)),
  ),
  transferCompletedAt: types.optional(types.number()),
  transferStartedAt: types.optional(types.number()),
  transferToAccountId: types.optional(types.string()),
  transferredFromAccountId: types.optional(types.string()),
  updatedAt: types.optional(types.number()),
  live: types.optional(types.boolean()),
  enablePreviewFeedback: z.nullable(types.boolean()).optional(),
  enableProductionFeedback: z.nullable(types.boolean()).optional(),
  permissions: types.optional(UploadProjectAvatarPermissions$inboundSchema),
  lastRollbackTarget: z.nullable(
    UploadProjectAvatarLastRollbackTarget$inboundSchema,
  ).optional(),
  lastAliasRequest: z.nullable(
    UploadProjectAvatarLastAliasRequest$inboundSchema,
  ).optional(),
  protectionBypass: types.optional(
    z.record(UploadProjectAvatarProtectionBypass$inboundSchema),
  ),
  hasActiveBranches: types.optional(types.boolean()),
  trustedIps: z.nullable(UploadProjectAvatarTrustedIps$inboundSchema)
    .optional(),
  trustedSources: z.nullable(UploadProjectAvatarTrustedSources$inboundSchema)
    .optional(),
  gitComments: types.optional(UploadProjectAvatarGitComments$inboundSchema),
  gitProviderOptions: types.optional(
    UploadProjectAvatarGitProviderOptions$inboundSchema,
  ),
  paused: types.optional(types.boolean()),
  concurrencyBucketName: types.optional(types.string()),
  webAnalytics: types.optional(UploadProjectAvatarWebAnalytics$inboundSchema),
  security: types.optional(UploadProjectAvatarSecurity$inboundSchema),
  oidcTokenConfig: types.optional(
    UploadProjectAvatarOidcTokenConfig$inboundSchema,
  ),
  deploymentPolicy: z.nullable(
    UploadProjectAvatarDeploymentPolicy$inboundSchema,
  ).optional(),
  tier: types.optional(UploadProjectAvatarTier$inboundSchema),
  usageStatus: types.optional(UploadProjectAvatarUsageStatus$inboundSchema),
  features: types.optional(UploadProjectAvatarFeatures$inboundSchema),
  v0: types.optional(types.boolean()),
  v0Created: types.optional(types.boolean()),
  abuse: types.optional(UploadProjectAvatarAbuse$inboundSchema),
  internalRoutes: types.optional(
    z.array(
      smartUnion([
        UploadProjectAvatarInternalRoutes1$inboundSchema,
        UploadProjectAvatarInternalRoutes2$inboundSchema,
      ]),
    ),
  ),
  hasDeployments: types.optional(types.boolean()),
  dismissedToasts: types.optional(
    z.array(z.lazy(() => UploadProjectAvatarDismissedToasts$inboundSchema)),
  ),
  protectedSourcemaps: types.optional(types.boolean()),
  tracing: types.optional(
    z.lazy(() => UploadProjectAvatarTracing$inboundSchema),
  ),
  avatar: z.nullable(types.string()).optional(),
});

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