/*
 * 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";
import {
  UpdateMicrofrontendsAnalytics,
  UpdateMicrofrontendsAnalytics$inboundSchema,
  UpdateMicrofrontendsConnectConfigurations,
  UpdateMicrofrontendsConnectConfigurations$inboundSchema,
  UpdateMicrofrontendsCrons,
  UpdateMicrofrontendsCrons$inboundSchema,
  UpdateMicrofrontendsCustomEnvironments,
  UpdateMicrofrontendsCustomEnvironments$inboundSchema,
  UpdateMicrofrontendsDataCache,
  UpdateMicrofrontendsDataCache$inboundSchema,
  UpdateMicrofrontendsDefaultResourceConfig,
  UpdateMicrofrontendsDefaultResourceConfig$inboundSchema,
  UpdateMicrofrontendsDeploymentExpiration,
  UpdateMicrofrontendsDeploymentExpiration$inboundSchema,
  UpdateMicrofrontendsEnv,
  UpdateMicrofrontendsEnv$inboundSchema,
  UpdateMicrofrontendsExpiration,
  UpdateMicrofrontendsExpiration$inboundSchema,
  UpdateMicrofrontendsFramework,
  UpdateMicrofrontendsFramework$inboundSchema,
  UpdateMicrofrontendsGitComments,
  UpdateMicrofrontendsGitComments$inboundSchema,
  UpdateMicrofrontendsGitProviderOptions,
  UpdateMicrofrontendsGitProviderOptions$inboundSchema,
  UpdateMicrofrontendsIpBuckets,
  UpdateMicrofrontendsIpBuckets$inboundSchema,
  UpdateMicrofrontendsJobs,
  UpdateMicrofrontendsJobs$inboundSchema,
  UpdateMicrofrontendsLastAliasRequest,
  UpdateMicrofrontendsLastAliasRequest$inboundSchema,
  UpdateMicrofrontendsLastRollbackTarget,
  UpdateMicrofrontendsLastRollbackTarget$inboundSchema,
  UpdateMicrofrontendsLatestDeployments,
  UpdateMicrofrontendsLatestDeployments$inboundSchema,
  UpdateMicrofrontendsLink,
  UpdateMicrofrontendsLink$inboundSchema,
  UpdateMicrofrontendsMicrofrontends,
  UpdateMicrofrontendsMicrofrontends$inboundSchema,
  UpdateMicrofrontendsNodeVersion,
  UpdateMicrofrontendsNodeVersion$inboundSchema,
  UpdateMicrofrontendsOptionsAllowlist,
  UpdateMicrofrontendsOptionsAllowlist$inboundSchema,
  UpdateMicrofrontendsPassport,
  UpdateMicrofrontendsPassport$inboundSchema,
  UpdateMicrofrontendsPasswordProtection,
  UpdateMicrofrontendsPasswordProtection$inboundSchema,
  UpdateMicrofrontendsPermissions,
  UpdateMicrofrontendsPermissions$inboundSchema,
  UpdateMicrofrontendsProtectionBypass,
  UpdateMicrofrontendsProtectionBypass$inboundSchema,
  UpdateMicrofrontendsProtectionConfig,
  UpdateMicrofrontendsProtectionConfig$inboundSchema,
  UpdateMicrofrontendsResourceConfig,
  UpdateMicrofrontendsResourceConfig$inboundSchema,
  UpdateMicrofrontendsRollbackDescription,
  UpdateMicrofrontendsRollbackDescription$inboundSchema,
  UpdateMicrofrontendsRollingRelease,
  UpdateMicrofrontendsRollingRelease$inboundSchema,
  UpdateMicrofrontendsServices,
  UpdateMicrofrontendsServices$inboundSchema,
  UpdateMicrofrontendsSpeedInsights,
  UpdateMicrofrontendsSpeedInsights$inboundSchema,
  UpdateMicrofrontendsSsoProtection,
  UpdateMicrofrontendsSsoProtection$inboundSchema,
  UpdateMicrofrontendsStaticIps,
  UpdateMicrofrontendsStaticIps$inboundSchema,
  UpdateMicrofrontendsTargets,
  UpdateMicrofrontendsTargets$inboundSchema,
  UpdateMicrofrontendsTrustedIps,
  UpdateMicrofrontendsTrustedIps$inboundSchema,
  UpdateMicrofrontendsTrustedSources,
  UpdateMicrofrontendsTrustedSources$inboundSchema,
  UpdateMicrofrontendsVercelRuleset,
  UpdateMicrofrontendsVercelRuleset$inboundSchema,
  UpdateMicrofrontendsWebAnalytics,
  UpdateMicrofrontendsWebAnalytics$inboundSchema,
} from "./updatemicrofrontendsvercelruleset.js";

export const UpdateMicrofrontendsProjectsResponse200ApplicationJSONResponseBodySecurityAction =
  {
    Challenge: "challenge",
    Deny: "deny",
    Log: "log",
  } as const;
export type UpdateMicrofrontendsProjectsResponse200ApplicationJSONResponseBodySecurityAction =
  ClosedEnum<
    typeof UpdateMicrofrontendsProjectsResponse200ApplicationJSONResponseBodySecurityAction
  >;

export type UpdateMicrofrontendsTrafficSources = {
  active: boolean;
  action?:
    | UpdateMicrofrontendsProjectsResponse200ApplicationJSONResponseBodySecurityAction
    | undefined;
};

export const UpdateMicrofrontendsProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesAction =
  {
    Challenge: "challenge",
    Deny: "deny",
    Log: "log",
  } as const;
export type UpdateMicrofrontendsProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesAction =
  ClosedEnum<
    typeof UpdateMicrofrontendsProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesAction
  >;

export type UpdateMicrofrontendsBotFilter = {
  active: boolean;
  action?:
    | UpdateMicrofrontendsProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesAction
    | undefined;
};

export const UpdateMicrofrontendsProjectsResponse200Action = {
  Challenge: "challenge",
  Deny: "deny",
  Log: "log",
} as const;
export type UpdateMicrofrontendsProjectsResponse200Action = ClosedEnum<
  typeof UpdateMicrofrontendsProjectsResponse200Action
>;

export type UpdateMicrofrontendsAiBots = {
  active: boolean;
  action?: UpdateMicrofrontendsProjectsResponse200Action | undefined;
};

export const UpdateMicrofrontendsProjectsResponse200ApplicationJSONAction = {
  Challenge: "challenge",
  Deny: "deny",
  Log: "log",
} as const;
export type UpdateMicrofrontendsProjectsResponse200ApplicationJSONAction =
  ClosedEnum<
    typeof UpdateMicrofrontendsProjectsResponse200ApplicationJSONAction
  >;

export type UpdateMicrofrontendsOwasp = {
  active: boolean;
  action?:
    | UpdateMicrofrontendsProjectsResponse200ApplicationJSONAction
    | undefined;
};

export type UpdateMicrofrontendsManagedRules = {
  vercelRuleset: UpdateMicrofrontendsVercelRuleset;
  trafficSources: UpdateMicrofrontendsTrafficSources;
  botFilter: UpdateMicrofrontendsBotFilter;
  aiBots: UpdateMicrofrontendsAiBots;
  owasp: UpdateMicrofrontendsOwasp;
};

export const UpdateMicrofrontendsLogHeaders2 = {
  Wildcard: "*",
} as const;
export type UpdateMicrofrontendsLogHeaders2 = ClosedEnum<
  typeof UpdateMicrofrontendsLogHeaders2
>;

export type UpdateMicrofrontendsLogHeaders =
  | Array<string>
  | UpdateMicrofrontendsLogHeaders2;

export type UpdateMicrofrontendsSecurityPlusMetadata = {
  updatedAt: number;
  /**
   * Timestamp when the feature was first enabled. Never changes after initial enablement.
   */
  firstEnabledAt?: number | undefined;
};

export type UpdateMicrofrontendsSecurity = {
  attackModeEnabled?: boolean | undefined;
  attackModeUpdatedAt?: number | undefined;
  firewallEnabled?: boolean | undefined;
  firewallUpdatedAt?: number | undefined;
  attackModeActiveUntil?: number | null | undefined;
  firewallConfigVersion?: number | undefined;
  firewallSeawallEnabled?: boolean | undefined;
  ja3Enabled?: boolean | undefined;
  ja4Enabled?: boolean | undefined;
  firewallBypassIps?: Array<string> | undefined;
  managedRules?: UpdateMicrofrontendsManagedRules | null | undefined;
  botIdEnabled?: boolean | undefined;
  logHeaders?: Array<string> | UpdateMicrofrontendsLogHeaders2 | undefined;
  securityPlus?: boolean | undefined;
  securityPlusMetadata?: UpdateMicrofrontendsSecurityPlusMetadata | undefined;
  /**
   * Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table.
   */
  pageIntegrityEnabled?: boolean | undefined;
};

/**
 * - team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`
 */
export const UpdateMicrofrontendsIssuerMode = {
  Global: "global",
  Team: "team",
} as const;
/**
 * - team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`
 */
export type UpdateMicrofrontendsIssuerMode = ClosedEnum<
  typeof UpdateMicrofrontendsIssuerMode
>;

export type UpdateMicrofrontendsOidcTokenConfig = {
  /**
   * Whether or not to generate OpenID Connect JSON Web Tokens.
   */
  enabled?: boolean | undefined;
  /**
   * - team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`
   */
  issuerMode?: UpdateMicrofrontendsIssuerMode | undefined;
};

/**
 * Allowlist entry for GitLab, which uses nested groups rather than a flat org/repo. `namespace` is the full group path (e.g. `group` or `group/subgroup`); `project` is the leaf project name. Omit `project` to match any project under the namespace. Namespace is matched case-insensitively.
 */
export type UpdateMicrofrontendsSources2 = {
  provider: "gitlab";
  namespace: string;
  project?: string | undefined;
};

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

/**
 * Allowlist entry for GitHub and Bitbucket, whose repos are identified by a flat `org`/`repo` (Bitbucket's workspace/owner maps to `org`, its repo slug to `repo`). Omit `repo` to match any repo in the org. Org is matched case-insensitively.
 */
export type UpdateMicrofrontendsSources1 = {
  provider: UpdateMicrofrontendsSourcesProvider;
  org: string;
  repo?: string | undefined;
};

export type UpdateMicrofrontendsSources =
  | (UpdateMicrofrontendsSources1 & { provider: "bitbucket" })
  | (UpdateMicrofrontendsSources1 & { provider: "github" })
  | UpdateMicrofrontendsSources2;

export type UpdateMicrofrontendsEnvironments2 = {
  type: "custom";
  environmentId: string;
};

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

export type UpdateMicrofrontendsEnvironments1 = {
  type: "system";
  target: UpdateMicrofrontendsEnvironmentsTarget;
};

export type UpdateMicrofrontendsEnvironments =
  | UpdateMicrofrontendsEnvironments1
  | UpdateMicrofrontendsEnvironments2;

/**
 * `enabled: true` with empty `sources` is deny-all.
 */
export type UpdateMicrofrontendsGitSources = {
  sources: Array<
    | (UpdateMicrofrontendsSources1 & { provider: "bitbucket" })
    | (UpdateMicrofrontendsSources1 & { provider: "github" })
    | UpdateMicrofrontendsSources2
  >;
  enabled: boolean;
  environments: Array<
    UpdateMicrofrontendsEnvironments1 | UpdateMicrofrontendsEnvironments2
  >;
};

/**
 * Customer-configurable deployment sources. Every deploy classifies to exactly one. JSON schema in `packages/deployment-policy/schemas/body.ts` enumerates exactly these values. - `'git'` — git provider webhook. - `'cli'` — Vercel CLI (legacy classic-token CLI and SIWV CLI both). - `'rest-api'` — direct user/team-token REST upload. Does NOT cover deploy hooks, Marketplace integrations, or first-party app tokens. - `'deploy-hook'` — project deploy-hook URL. The URL is the credential. - `'integration'` — third-party Marketplace actor: Marketplace integration token, user-delegated OAuth from a Marketplace app, or an unrecognized third-party Vercel App. First-party Vercel Apps are never `'integration'`. - `'v0'` — the v0 product surface (entitlement-gated). v0 deploys through the CLI under the hood, but classifies as its own source so a team can allow or deny v0 independently of `'cli'`. First-party Vercel apps (Toolbar, etc.) classify as `'first-party'` — see `ClassifiedSource` in `./checks`. They're not in this union because they aren't customer-configurable; they bypass `checkDeploymentSources` entirely. v0 is intentionally NOT among them: like the CLI, it's a real product surface and is policy-controllable.
 */
export const UpdateMicrofrontendsProjectsSources = {
  Cli: "cli",
  DeployHook: "deploy-hook",
  Git: "git",
  Integration: "integration",
  RestApi: "rest-api",
  V0: "v0",
} as const;
/**
 * Customer-configurable deployment sources. Every deploy classifies to exactly one. JSON schema in `packages/deployment-policy/schemas/body.ts` enumerates exactly these values. - `'git'` — git provider webhook. - `'cli'` — Vercel CLI (legacy classic-token CLI and SIWV CLI both). - `'rest-api'` — direct user/team-token REST upload. Does NOT cover deploy hooks, Marketplace integrations, or first-party app tokens. - `'deploy-hook'` — project deploy-hook URL. The URL is the credential. - `'integration'` — third-party Marketplace actor: Marketplace integration token, user-delegated OAuth from a Marketplace app, or an unrecognized third-party Vercel App. First-party Vercel Apps are never `'integration'`. - `'v0'` — the v0 product surface (entitlement-gated). v0 deploys through the CLI under the hood, but classifies as its own source so a team can allow or deny v0 independently of `'cli'`. First-party Vercel apps (Toolbar, etc.) classify as `'first-party'` — see `ClassifiedSource` in `./checks`. They're not in this union because they aren't customer-configurable; they bypass `checkDeploymentSources` entirely. v0 is intentionally NOT among them: like the CLI, it's a real product surface and is policy-controllable.
 */
export type UpdateMicrofrontendsProjectsSources = ClosedEnum<
  typeof UpdateMicrofrontendsProjectsSources
>;

export type UpdateMicrofrontendsEnvironmentsProjects2 = {
  type: "custom";
  environmentId: string;
};

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

export type UpdateMicrofrontendsEnvironmentsProjects1 = {
  type: "system";
  target: UpdateMicrofrontendsEnvironmentsProjectsTarget;
};

export type UpdateMicrofrontendsProjectsEnvironments =
  | UpdateMicrofrontendsEnvironmentsProjects1
  | UpdateMicrofrontendsEnvironmentsProjects2;

/**
 * `enabled: true` with empty `sources` is deny-all.
 */
export type UpdateMicrofrontendsDeploymentSources = {
  sources: Array<UpdateMicrofrontendsProjectsSources>;
  enabled: boolean;
  environments: Array<
    | UpdateMicrofrontendsEnvironmentsProjects1
    | UpdateMicrofrontendsEnvironmentsProjects2
  >;
};

/**
 * 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.
 */
export type UpdateMicrofrontendsDeploymentPolicy = {
  gitSources?: Array<UpdateMicrofrontendsGitSources> | null | undefined;
  deploymentSources?:
    | Array<UpdateMicrofrontendsDeploymentSources>
    | null
    | undefined;
};

export const UpdateMicrofrontendsFlatRateTier = {
  Advanced: "advanced",
  Base: "base",
  Critical: "critical",
  Standard: "standard",
} as const;
export type UpdateMicrofrontendsFlatRateTier = ClosedEnum<
  typeof UpdateMicrofrontendsFlatRateTier
>;

/**
 * Billing mode. Always 'flat' for flat-rate projects.
 */
export const UpdateMicrofrontendsKind = {
  Flat: "flat",
} as const;
/**
 * Billing mode. Always 'flat' for flat-rate projects.
 */
export type UpdateMicrofrontendsKind = ClosedEnum<
  typeof UpdateMicrofrontendsKind
>;

export type UpdateMicrofrontendsUsageStatus = {
  /**
   * Billing mode. Always 'flat' for flat-rate projects.
   */
  kind: UpdateMicrofrontendsKind;
  /**
   * Timestamp until which the project has exceeded its CDN allowance.
   */
  exceededAllowanceUntil?: number | undefined;
  /**
   * Timestamp until which throttling is bypassed (project pays list rates for overage).
   */
  bypassThrottleUntil?: number | undefined;
  /**
   * Whether the project is currently throttled.
   */
  throttled?: boolean | undefined;
};

export type UpdateMicrofrontendsFeatures = {
  webAnalytics?: boolean | undefined;
};

export type UpdateMicrofrontendsHistory = {
  scanner: string;
  reason: string;
  by: string;
  byId: string;
  at: number;
};

export const UpdateMicrofrontendsProjectsResponseAction = {
  Blocked: "blocked",
} as const;
export type UpdateMicrofrontendsProjectsResponseAction = ClosedEnum<
  typeof UpdateMicrofrontendsProjectsResponseAction
>;

export type UpdateMicrofrontendsBlock = {
  action: UpdateMicrofrontendsProjectsResponseAction;
  reason: string;
  statusCode: number;
  createdAt: number;
  caseId?: string | undefined;
  actor?: string | undefined;
  comment?: string | undefined;
  ineligibleForAppeal?: boolean | undefined;
  isCascading?: boolean | undefined;
};

export type UpdateMicrofrontendsHasProjectsResponse200Value = {
  eq: string;
};

export type UpdateMicrofrontendsHasProjects2 = {
  type: "host";
  value: UpdateMicrofrontendsHasProjectsResponse200Value;
};

export const UpdateMicrofrontendsHasProjectsKey = {
  XVercelIpCountry: "x-vercel-ip-country",
} as const;
export type UpdateMicrofrontendsHasProjectsKey = ClosedEnum<
  typeof UpdateMicrofrontendsHasProjectsKey
>;

export type UpdateMicrofrontendsHasProjectsResponseValue = {
  eq: string;
};

export type UpdateMicrofrontendsHasProjects1 = {
  type: "header";
  key: UpdateMicrofrontendsHasProjectsKey;
  value: UpdateMicrofrontendsHasProjectsResponseValue;
};

export type UpdateMicrofrontendsRouteProjectsHas =
  | UpdateMicrofrontendsHasProjects1
  | UpdateMicrofrontendsHasProjects2;

export const UpdateMicrofrontendsRouteProjectsAction = {
  BlockLegalCwc: "block_legal_cwc",
} as const;
export type UpdateMicrofrontendsRouteProjectsAction = ClosedEnum<
  typeof UpdateMicrofrontendsRouteProjectsAction
>;

export type UpdateMicrofrontendsRouteProjectsMitigate = {
  action: UpdateMicrofrontendsRouteProjectsAction;
};

export type UpdateMicrofrontendsRouteProjects2 = {
  has: Array<
    UpdateMicrofrontendsHasProjects1 | UpdateMicrofrontendsHasProjects2
  >;
  mitigate: UpdateMicrofrontendsRouteProjectsMitigate;
  src?: string | undefined;
};

export type UpdateMicrofrontendsRouteProjects1 = {
  src: string;
  status: number;
};

export type UpdateMicrofrontendsBlockHistoryProjectsRoute =
  | UpdateMicrofrontendsRouteProjects1
  | UpdateMicrofrontendsRouteProjects2;

export type UpdateMicrofrontendsBlockHistory4 = {
  action: "route-unblocked";
  route:
    | UpdateMicrofrontendsRouteProjects1
    | UpdateMicrofrontendsRouteProjects2;
  statusCode?: number | undefined;
  createdAt: number;
  caseId?: string | undefined;
  actor?: string | undefined;
  comment?: string | undefined;
  ineligibleForAppeal?: boolean | undefined;
  isCascading?: boolean | undefined;
};

export type UpdateMicrofrontendsHasProjectsResponse200ApplicationJSONResponseBodyValue =
  {
    eq: string;
  };

export type UpdateMicrofrontendsHasProjectsResponse2 = {
  type: "host";
  value:
    UpdateMicrofrontendsHasProjectsResponse200ApplicationJSONResponseBodyValue;
};

export const UpdateMicrofrontendsHasProjectsResponseKey = {
  XVercelIpCountry: "x-vercel-ip-country",
} as const;
export type UpdateMicrofrontendsHasProjectsResponseKey = ClosedEnum<
  typeof UpdateMicrofrontendsHasProjectsResponseKey
>;

export type UpdateMicrofrontendsHasProjectsResponse200ApplicationJSONValue = {
  eq: string;
};

export type UpdateMicrofrontendsHasProjectsResponse1 = {
  type: "header";
  key: UpdateMicrofrontendsHasProjectsResponseKey;
  value: UpdateMicrofrontendsHasProjectsResponse200ApplicationJSONValue;
};

export type UpdateMicrofrontendsRouteHas =
  | UpdateMicrofrontendsHasProjectsResponse1
  | UpdateMicrofrontendsHasProjectsResponse2;

export const UpdateMicrofrontendsRouteAction = {
  BlockLegalCwc: "block_legal_cwc",
} as const;
export type UpdateMicrofrontendsRouteAction = ClosedEnum<
  typeof UpdateMicrofrontendsRouteAction
>;

export type UpdateMicrofrontendsRouteMitigate = {
  action: UpdateMicrofrontendsRouteAction;
};

export type UpdateMicrofrontendsRoute2 = {
  has: Array<
    | UpdateMicrofrontendsHasProjectsResponse1
    | UpdateMicrofrontendsHasProjectsResponse2
  >;
  mitigate: UpdateMicrofrontendsRouteMitigate;
  src?: string | undefined;
};

export type UpdateMicrofrontendsRoute1 = {
  src: string;
  status: number;
};

export type UpdateMicrofrontendsBlockHistoryRoute =
  | UpdateMicrofrontendsRoute1
  | UpdateMicrofrontendsRoute2;

export type UpdateMicrofrontendsBlockHistory3 = {
  action: "route-blocked";
  route: UpdateMicrofrontendsRoute1 | UpdateMicrofrontendsRoute2;
  reason: string;
  createdAt: number;
  caseId?: string | undefined;
  actor?: string | undefined;
  comment?: string | undefined;
  ineligibleForAppeal?: boolean | undefined;
  isCascading?: boolean | undefined;
};

export type UpdateMicrofrontendsBlockHistory2 = {
  action: "unblocked";
  createdAt: number;
  caseId?: string | undefined;
  actor?: string | undefined;
  comment?: string | undefined;
  ineligibleForAppeal?: boolean | undefined;
  isCascading?: boolean | undefined;
};

export type UpdateMicrofrontendsBlockHistory1 = {
  action: "blocked";
  reason: string;
  statusCode: number;
  createdAt: number;
  caseId?: string | undefined;
  actor?: string | undefined;
  comment?: string | undefined;
  ineligibleForAppeal?: boolean | undefined;
  isCascading?: boolean | undefined;
};

export type UpdateMicrofrontendsBlockHistory =
  | UpdateMicrofrontendsBlockHistory1
  | UpdateMicrofrontendsBlockHistory2
  | UpdateMicrofrontendsBlockHistory3
  | UpdateMicrofrontendsBlockHistory4;

export const UpdateMicrofrontendsProjectsAction = {
  AddDeploymentInterstitial: "add-deployment-interstitial",
  AddProjectInterstitial: "add-project-interstitial",
  RemoveDeploymentInterstitial: "remove-deployment-interstitial",
  RemoveProjectInterstitial: "remove-project-interstitial",
} as const;
export type UpdateMicrofrontendsProjectsAction = ClosedEnum<
  typeof UpdateMicrofrontendsProjectsAction
>;

export type UpdateMicrofrontendsInterstitialHistory = {
  action: UpdateMicrofrontendsProjectsAction;
  createdAt: number;
  caseId?: string | undefined;
  reason?: string | undefined;
  actor?: string | undefined;
  comment?: string | undefined;
};

export type UpdateMicrofrontendsAbuse = {
  scanner?: string | undefined;
  history: Array<UpdateMicrofrontendsHistory>;
  updatedAt: number;
  block?: UpdateMicrofrontendsBlock | undefined;
  blockHistory?:
    | Array<
      | UpdateMicrofrontendsBlockHistory1
      | UpdateMicrofrontendsBlockHistory2
      | UpdateMicrofrontendsBlockHistory3
      | UpdateMicrofrontendsBlockHistory4
    >
    | undefined;
  interstitial?: boolean | undefined;
  interstitialHistory?:
    | Array<UpdateMicrofrontendsInterstitialHistory>
    | undefined;
};

export type UpdateMicrofrontendsHasProjectsValue = {
  eq: string;
};

export type UpdateMicrofrontendsHas2 = {
  type: "host";
  value: UpdateMicrofrontendsHasProjectsValue;
};

export const UpdateMicrofrontendsHasKey = {
  XVercelIpCountry: "x-vercel-ip-country",
} as const;
export type UpdateMicrofrontendsHasKey = ClosedEnum<
  typeof UpdateMicrofrontendsHasKey
>;

export type UpdateMicrofrontendsHasValue = {
  eq: string;
};

export type UpdateMicrofrontendsHas1 = {
  type: "header";
  key: UpdateMicrofrontendsHasKey;
  value: UpdateMicrofrontendsHasValue;
};

export type UpdateMicrofrontendsInternalRoutesHas =
  | UpdateMicrofrontendsHas1
  | UpdateMicrofrontendsHas2;

export const UpdateMicrofrontendsInternalRoutesAction = {
  BlockLegalCwc: "block_legal_cwc",
} as const;
export type UpdateMicrofrontendsInternalRoutesAction = ClosedEnum<
  typeof UpdateMicrofrontendsInternalRoutesAction
>;

export type UpdateMicrofrontendsInternalRoutesMitigate = {
  action: UpdateMicrofrontendsInternalRoutesAction;
};

export type UpdateMicrofrontendsInternalRoutes2 = {
  has: Array<UpdateMicrofrontendsHas1 | UpdateMicrofrontendsHas2>;
  mitigate: UpdateMicrofrontendsInternalRoutesMitigate;
  src?: string | undefined;
};

export type UpdateMicrofrontendsInternalRoutes1 = {
  src: string;
  status: number;
};

export type UpdateMicrofrontendsInternalRoutes =
  | UpdateMicrofrontendsInternalRoutes1
  | UpdateMicrofrontendsInternalRoutes2;

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

export type UpdateMicrofrontendsValuePreviousValue = string | number | boolean;

export type UpdateMicrofrontendsValueCurrentValue = string | number | boolean;

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

export type UpdateMicrofrontendsValue =
  | UpdateMicrofrontendsValue3
  | string
  | number
  | boolean;

export type UpdateMicrofrontendsDismissedToasts = {
  key: string;
  dismissedAt: number;
  action: UpdateMicrofrontendsAction;
  value: UpdateMicrofrontendsValue3 | string | number | boolean | null;
};

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

export type UpdateMicrofrontendsSamplingRules = {
  rate: number;
  env?: UpdateMicrofrontendsProjectsEnv | undefined;
  requestPath?: string | undefined;
};

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

export type UpdateMicrofrontendsResponseBody = {
  accountId: string;
  analytics?: UpdateMicrofrontendsAnalytics | undefined;
  appliedCve55182Migration?: boolean | undefined;
  speedInsights?: UpdateMicrofrontendsSpeedInsights | undefined;
  autoExposeSystemEnvs?: boolean | undefined;
  autoAssignCustomDomains?: boolean | undefined;
  autoAssignCustomDomainsUpdatedBy?: string | undefined;
  buildCommand?: string | null | undefined;
  commandForIgnoringBuildStep?: string | null | undefined;
  connectConfigurations?:
    | Array<UpdateMicrofrontendsConnectConfigurations>
    | null
    | undefined;
  connectConfigurationId?: string | null | undefined;
  connectBuildsEnabled?: boolean | undefined;
  passiveConnectConfigurationId?: string | null | undefined;
  createdAt?: number | undefined;
  customerSupportCodeVisibility?: boolean | undefined;
  crons?: UpdateMicrofrontendsCrons | undefined;
  dataCache?: UpdateMicrofrontendsDataCache | 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: UpdateMicrofrontendsDeploymentExpiration;
  expiration?: UpdateMicrofrontendsExpiration | undefined;
  devCommand?: string | null | undefined;
  directoryListing: boolean;
  installCommand?: string | null | undefined;
  env?: Array<UpdateMicrofrontendsEnv> | undefined;
  customEnvironments?:
    | Array<UpdateMicrofrontendsCustomEnvironments>
    | undefined;
  framework?: UpdateMicrofrontendsFramework | null | undefined;
  services?: Array<UpdateMicrofrontendsServices> | undefined;
  gitForkProtection?: boolean | undefined;
  gitLFS?: boolean | undefined;
  id: string;
  ipBuckets?: Array<UpdateMicrofrontendsIpBuckets> | undefined;
  jobs?: UpdateMicrofrontendsJobs | undefined;
  latestDeployments?: Array<UpdateMicrofrontendsLatestDeployments> | undefined;
  link?: UpdateMicrofrontendsLink | undefined;
  microfrontends?: UpdateMicrofrontendsMicrofrontends | undefined;
  name: string;
  nodeVersion: UpdateMicrofrontendsNodeVersion;
  optionsAllowlist?: UpdateMicrofrontendsOptionsAllowlist | null | undefined;
  outputDirectory?: string | null | undefined;
  passwordProtection?:
    | UpdateMicrofrontendsPasswordProtection
    | null
    | undefined;
  passport?: UpdateMicrofrontendsPassport | null | undefined;
  protectionConfig?: UpdateMicrofrontendsProtectionConfig | undefined;
  productionDeploymentsFastLane?: boolean | undefined;
  resourceConfig: UpdateMicrofrontendsResourceConfig;
  /**
   * Description of why a project was rolled back, and by whom. Note that lastAliasRequest contains the from/to details of the rollback.
   */
  rollbackDescription?: UpdateMicrofrontendsRollbackDescription | undefined;
  /**
   * Project-level rolling release configuration that defines how deployments should be gradually rolled out
   */
  rollingRelease?: UpdateMicrofrontendsRollingRelease | null | undefined;
  defaultResourceConfig: UpdateMicrofrontendsDefaultResourceConfig;
  rootDirectory?: string | null | undefined;
  serverlessFunctionZeroConfigFailover?: boolean | undefined;
  skewProtectionBoundaryAt?: number | undefined;
  skewProtectionMaxAge?: number | undefined;
  skewProtectionAllowedDomains?: Array<string> | undefined;
  skipGitConnectDuringLink?: boolean | undefined;
  staticIps?: UpdateMicrofrontendsStaticIps | undefined;
  sourceFilesOutsideRootDirectory?: boolean | undefined;
  enableAffectedProjectsDeployments?: boolean | undefined;
  enableExternalRewriteCaching?: boolean | undefined;
  ssoProtection?: UpdateMicrofrontendsSsoProtection | null | undefined;
  targets?: { [k: string]: UpdateMicrofrontendsTargets | 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?: UpdateMicrofrontendsPermissions | undefined;
  lastRollbackTarget?:
    | UpdateMicrofrontendsLastRollbackTarget
    | null
    | undefined;
  lastAliasRequest?: UpdateMicrofrontendsLastAliasRequest | null | undefined;
  protectionBypass?:
    | { [k: string]: UpdateMicrofrontendsProtectionBypass }
    | undefined;
  hasActiveBranches?: boolean | undefined;
  trustedIps?: UpdateMicrofrontendsTrustedIps | null | undefined;
  trustedSources?: UpdateMicrofrontendsTrustedSources | null | undefined;
  gitComments?: UpdateMicrofrontendsGitComments | undefined;
  gitProviderOptions?: UpdateMicrofrontendsGitProviderOptions | undefined;
  paused?: boolean | undefined;
  concurrencyBucketName?: string | undefined;
  webAnalytics?: UpdateMicrofrontendsWebAnalytics | undefined;
  security?: UpdateMicrofrontendsSecurity | undefined;
  oidcTokenConfig?: UpdateMicrofrontendsOidcTokenConfig | 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?: UpdateMicrofrontendsDeploymentPolicy | null | undefined;
  tier?: string | undefined;
  flatRateTier?: UpdateMicrofrontendsFlatRateTier | undefined;
  usageStatus?: UpdateMicrofrontendsUsageStatus | undefined;
  features?: UpdateMicrofrontendsFeatures | undefined;
  v0?: boolean | undefined;
  v0Created?: boolean | undefined;
  abuse?: UpdateMicrofrontendsAbuse | undefined;
  internalRoutes?:
    | Array<
      UpdateMicrofrontendsInternalRoutes1 | UpdateMicrofrontendsInternalRoutes2
    >
    | undefined;
  hasDeployments?: boolean | undefined;
  dismissedToasts?: Array<UpdateMicrofrontendsDismissedToasts> | undefined;
  protectedSourcemaps?: boolean | undefined;
  tracing?: UpdateMicrofrontendsTracing | undefined;
  avatar?: string | null | undefined;
};

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

/** @internal */
export const UpdateMicrofrontendsTrafficSources$inboundSchema: z.ZodType<
  UpdateMicrofrontendsTrafficSources,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action: types.optional(
    UpdateMicrofrontendsProjectsResponse200ApplicationJSONResponseBodySecurityAction$inboundSchema,
  ),
});

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

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

/** @internal */
export const UpdateMicrofrontendsBotFilter$inboundSchema: z.ZodType<
  UpdateMicrofrontendsBotFilter,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action: types.optional(
    UpdateMicrofrontendsProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesAction$inboundSchema,
  ),
});

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

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

/** @internal */
export const UpdateMicrofrontendsAiBots$inboundSchema: z.ZodType<
  UpdateMicrofrontendsAiBots,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action: types.optional(
    UpdateMicrofrontendsProjectsResponse200Action$inboundSchema,
  ),
});

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

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

/** @internal */
export const UpdateMicrofrontendsOwasp$inboundSchema: z.ZodType<
  UpdateMicrofrontendsOwasp,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action: types.optional(
    UpdateMicrofrontendsProjectsResponse200ApplicationJSONAction$inboundSchema,
  ),
});

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

/** @internal */
export const UpdateMicrofrontendsManagedRules$inboundSchema: z.ZodType<
  UpdateMicrofrontendsManagedRules,
  z.ZodTypeDef,
  unknown
> = z.object({
  vercel_ruleset: UpdateMicrofrontendsVercelRuleset$inboundSchema,
  traffic_sources: z.lazy(() =>
    UpdateMicrofrontendsTrafficSources$inboundSchema
  ),
  bot_filter: z.lazy(() => UpdateMicrofrontendsBotFilter$inboundSchema),
  ai_bots: z.lazy(() => UpdateMicrofrontendsAiBots$inboundSchema),
  owasp: z.lazy(() => UpdateMicrofrontendsOwasp$inboundSchema),
}).transform((v) => {
  return remap$(v, {
    "vercel_ruleset": "vercelRuleset",
    "traffic_sources": "trafficSources",
    "bot_filter": "botFilter",
    "ai_bots": "aiBots",
  });
});

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

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

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

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

/** @internal */
export const UpdateMicrofrontendsSecurityPlusMetadata$inboundSchema: z.ZodType<
  UpdateMicrofrontendsSecurityPlusMetadata,
  z.ZodTypeDef,
  unknown
> = z.object({
  updatedAt: types.number(),
  firstEnabledAt: types.optional(types.number()),
});

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

/** @internal */
export const UpdateMicrofrontendsSecurity$inboundSchema: z.ZodType<
  UpdateMicrofrontendsSecurity,
  z.ZodTypeDef,
  unknown
> = z.object({
  attackModeEnabled: types.optional(types.boolean()),
  attackModeUpdatedAt: types.optional(types.number()),
  firewallEnabled: types.optional(types.boolean()),
  firewallUpdatedAt: types.optional(types.number()),
  attackModeActiveUntil: z.nullable(types.number()).optional(),
  firewallConfigVersion: types.optional(types.number()),
  firewallSeawallEnabled: types.optional(types.boolean()),
  ja3Enabled: types.optional(types.boolean()),
  ja4Enabled: types.optional(types.boolean()),
  firewallBypassIps: types.optional(z.array(types.string())),
  managedRules: z.nullable(
    z.lazy(() => UpdateMicrofrontendsManagedRules$inboundSchema),
  ).optional(),
  botIdEnabled: types.optional(types.boolean()),
  log_headers: types.optional(
    smartUnion([
      z.array(types.string()),
      UpdateMicrofrontendsLogHeaders2$inboundSchema,
    ]),
  ),
  securityPlus: types.optional(types.boolean()),
  securityPlusMetadata: types.optional(
    z.lazy(() => UpdateMicrofrontendsSecurityPlusMetadata$inboundSchema),
  ),
  pageIntegrityEnabled: types.optional(types.boolean()),
}).transform((v) => {
  return remap$(v, {
    "log_headers": "logHeaders",
  });
});

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

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

/** @internal */
export const UpdateMicrofrontendsOidcTokenConfig$inboundSchema: z.ZodType<
  UpdateMicrofrontendsOidcTokenConfig,
  z.ZodTypeDef,
  unknown
> = z.object({
  enabled: types.optional(types.boolean()),
  issuerMode: types.optional(UpdateMicrofrontendsIssuerMode$inboundSchema),
});

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

/** @internal */
export const UpdateMicrofrontendsSources2$inboundSchema: z.ZodType<
  UpdateMicrofrontendsSources2,
  z.ZodTypeDef,
  unknown
> = z.object({
  provider: types.literal("gitlab"),
  namespace: types.string(),
  project: types.optional(types.string()),
});

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

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

/** @internal */
export const UpdateMicrofrontendsSources1$inboundSchema: z.ZodType<
  UpdateMicrofrontendsSources1,
  z.ZodTypeDef,
  unknown
> = z.object({
  provider: UpdateMicrofrontendsSourcesProvider$inboundSchema,
  org: types.string(),
  repo: types.optional(types.string()),
});

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

/** @internal */
export const UpdateMicrofrontendsSources$inboundSchema: z.ZodType<
  UpdateMicrofrontendsSources,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => UpdateMicrofrontendsSources1$inboundSchema).and(
    z.object({ provider: z.literal("bitbucket") }),
  ),
  z.lazy(() => UpdateMicrofrontendsSources1$inboundSchema).and(
    z.object({ provider: z.literal("github") }),
  ),
  z.lazy(() => UpdateMicrofrontendsSources2$inboundSchema),
]);

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

/** @internal */
export const UpdateMicrofrontendsEnvironments2$inboundSchema: z.ZodType<
  UpdateMicrofrontendsEnvironments2,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("custom"),
  environmentId: types.string(),
});

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

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

/** @internal */
export const UpdateMicrofrontendsEnvironments1$inboundSchema: z.ZodType<
  UpdateMicrofrontendsEnvironments1,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("system"),
  target: UpdateMicrofrontendsEnvironmentsTarget$inboundSchema,
});

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

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

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

/** @internal */
export const UpdateMicrofrontendsGitSources$inboundSchema: z.ZodType<
  UpdateMicrofrontendsGitSources,
  z.ZodTypeDef,
  unknown
> = z.object({
  sources: z.array(
    z.union([
      z.lazy(() => UpdateMicrofrontendsSources1$inboundSchema).and(
        z.object({ provider: z.literal("bitbucket") }),
      ),
      z.lazy(() => UpdateMicrofrontendsSources1$inboundSchema).and(
        z.object({ provider: z.literal("github") }),
      ),
      z.lazy(() => UpdateMicrofrontendsSources2$inboundSchema),
    ]),
  ),
  enabled: types.boolean(),
  environments: z.array(
    z.union([
      z.lazy(() => UpdateMicrofrontendsEnvironments1$inboundSchema),
      z.lazy(() => UpdateMicrofrontendsEnvironments2$inboundSchema),
    ]),
  ),
});

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

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

/** @internal */
export const UpdateMicrofrontendsEnvironmentsProjects2$inboundSchema: z.ZodType<
  UpdateMicrofrontendsEnvironmentsProjects2,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("custom"),
  environmentId: types.string(),
});

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

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

/** @internal */
export const UpdateMicrofrontendsEnvironmentsProjects1$inboundSchema: z.ZodType<
  UpdateMicrofrontendsEnvironmentsProjects1,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("system"),
  target: UpdateMicrofrontendsEnvironmentsProjectsTarget$inboundSchema,
});

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

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

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

/** @internal */
export const UpdateMicrofrontendsDeploymentSources$inboundSchema: z.ZodType<
  UpdateMicrofrontendsDeploymentSources,
  z.ZodTypeDef,
  unknown
> = z.object({
  sources: z.array(UpdateMicrofrontendsProjectsSources$inboundSchema),
  enabled: types.boolean(),
  environments: z.array(
    z.union([
      z.lazy(() => UpdateMicrofrontendsEnvironmentsProjects1$inboundSchema),
      z.lazy(() => UpdateMicrofrontendsEnvironmentsProjects2$inboundSchema),
    ]),
  ),
});

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

/** @internal */
export const UpdateMicrofrontendsDeploymentPolicy$inboundSchema: z.ZodType<
  UpdateMicrofrontendsDeploymentPolicy,
  z.ZodTypeDef,
  unknown
> = z.object({
  gitSources: z.nullable(
    z.array(z.lazy(() => UpdateMicrofrontendsGitSources$inboundSchema)),
  ).optional(),
  deploymentSources: z.nullable(
    z.array(z.lazy(() => UpdateMicrofrontendsDeploymentSources$inboundSchema)),
  ).optional(),
});

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

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

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

/** @internal */
export const UpdateMicrofrontendsUsageStatus$inboundSchema: z.ZodType<
  UpdateMicrofrontendsUsageStatus,
  z.ZodTypeDef,
  unknown
> = z.object({
  kind: UpdateMicrofrontendsKind$inboundSchema,
  exceededAllowanceUntil: types.optional(types.number()),
  bypassThrottleUntil: types.optional(types.number()),
  throttled: types.optional(types.boolean()),
});

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

/** @internal */
export const UpdateMicrofrontendsFeatures$inboundSchema: z.ZodType<
  UpdateMicrofrontendsFeatures,
  z.ZodTypeDef,
  unknown
> = z.object({
  webAnalytics: types.optional(types.boolean()),
});

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

/** @internal */
export const UpdateMicrofrontendsHistory$inboundSchema: z.ZodType<
  UpdateMicrofrontendsHistory,
  z.ZodTypeDef,
  unknown
> = z.object({
  scanner: types.string(),
  reason: types.string(),
  by: types.string(),
  byId: types.string(),
  at: types.number(),
});

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

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

/** @internal */
export const UpdateMicrofrontendsBlock$inboundSchema: z.ZodType<
  UpdateMicrofrontendsBlock,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: UpdateMicrofrontendsProjectsResponseAction$inboundSchema,
  reason: types.string(),
  statusCode: types.number(),
  createdAt: types.number(),
  caseId: types.optional(types.string()),
  actor: types.optional(types.string()),
  comment: types.optional(types.string()),
  ineligibleForAppeal: types.optional(types.boolean()),
  isCascading: types.optional(types.boolean()),
});

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

/** @internal */
export const UpdateMicrofrontendsHasProjectsResponse200Value$inboundSchema:
  z.ZodType<
    UpdateMicrofrontendsHasProjectsResponse200Value,
    z.ZodTypeDef,
    unknown
  > = z.object({
    eq: types.string(),
  });

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

/** @internal */
export const UpdateMicrofrontendsHasProjects2$inboundSchema: z.ZodType<
  UpdateMicrofrontendsHasProjects2,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("host"),
  value: z.lazy(() =>
    UpdateMicrofrontendsHasProjectsResponse200Value$inboundSchema
  ),
});

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

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

/** @internal */
export const UpdateMicrofrontendsHasProjectsResponseValue$inboundSchema:
  z.ZodType<
    UpdateMicrofrontendsHasProjectsResponseValue,
    z.ZodTypeDef,
    unknown
  > = z.object({
    eq: types.string(),
  });

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

/** @internal */
export const UpdateMicrofrontendsHasProjects1$inboundSchema: z.ZodType<
  UpdateMicrofrontendsHasProjects1,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("header"),
  key: UpdateMicrofrontendsHasProjectsKey$inboundSchema,
  value: z.lazy(() =>
    UpdateMicrofrontendsHasProjectsResponseValue$inboundSchema
  ),
});

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

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

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

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

/** @internal */
export const UpdateMicrofrontendsRouteProjectsMitigate$inboundSchema: z.ZodType<
  UpdateMicrofrontendsRouteProjectsMitigate,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: UpdateMicrofrontendsRouteProjectsAction$inboundSchema,
});

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

/** @internal */
export const UpdateMicrofrontendsRouteProjects2$inboundSchema: z.ZodType<
  UpdateMicrofrontendsRouteProjects2,
  z.ZodTypeDef,
  unknown
> = z.object({
  has: z.array(
    z.union([
      z.lazy(() => UpdateMicrofrontendsHasProjects1$inboundSchema),
      z.lazy(() => UpdateMicrofrontendsHasProjects2$inboundSchema),
    ]),
  ),
  mitigate: z.lazy(() =>
    UpdateMicrofrontendsRouteProjectsMitigate$inboundSchema
  ),
  src: types.optional(types.string()),
});

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

/** @internal */
export const UpdateMicrofrontendsRouteProjects1$inboundSchema: z.ZodType<
  UpdateMicrofrontendsRouteProjects1,
  z.ZodTypeDef,
  unknown
> = z.object({
  src: types.string(),
  status: types.number(),
});

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

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

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

/** @internal */
export const UpdateMicrofrontendsBlockHistory4$inboundSchema: z.ZodType<
  UpdateMicrofrontendsBlockHistory4,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: types.literal("route-unblocked"),
  route: smartUnion([
    z.lazy(() => UpdateMicrofrontendsRouteProjects1$inboundSchema),
    z.lazy(() => UpdateMicrofrontendsRouteProjects2$inboundSchema),
  ]),
  statusCode: types.optional(types.number()),
  createdAt: types.number(),
  caseId: types.optional(types.string()),
  actor: types.optional(types.string()),
  comment: types.optional(types.string()),
  ineligibleForAppeal: types.optional(types.boolean()),
  isCascading: types.optional(types.boolean()),
});

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

/** @internal */
export const UpdateMicrofrontendsHasProjectsResponse200ApplicationJSONResponseBodyValue$inboundSchema:
  z.ZodType<
    UpdateMicrofrontendsHasProjectsResponse200ApplicationJSONResponseBodyValue,
    z.ZodTypeDef,
    unknown
  > = z.object({
    eq: types.string(),
  });

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

/** @internal */
export const UpdateMicrofrontendsHasProjectsResponse2$inboundSchema: z.ZodType<
  UpdateMicrofrontendsHasProjectsResponse2,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("host"),
  value: z.lazy(() =>
    UpdateMicrofrontendsHasProjectsResponse200ApplicationJSONResponseBodyValue$inboundSchema
  ),
});

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

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

/** @internal */
export const UpdateMicrofrontendsHasProjectsResponse200ApplicationJSONValue$inboundSchema:
  z.ZodType<
    UpdateMicrofrontendsHasProjectsResponse200ApplicationJSONValue,
    z.ZodTypeDef,
    unknown
  > = z.object({
    eq: types.string(),
  });

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

/** @internal */
export const UpdateMicrofrontendsHasProjectsResponse1$inboundSchema: z.ZodType<
  UpdateMicrofrontendsHasProjectsResponse1,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("header"),
  key: UpdateMicrofrontendsHasProjectsResponseKey$inboundSchema,
  value: z.lazy(() =>
    UpdateMicrofrontendsHasProjectsResponse200ApplicationJSONValue$inboundSchema
  ),
});

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

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

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

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

/** @internal */
export const UpdateMicrofrontendsRouteMitigate$inboundSchema: z.ZodType<
  UpdateMicrofrontendsRouteMitigate,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: UpdateMicrofrontendsRouteAction$inboundSchema,
});

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

/** @internal */
export const UpdateMicrofrontendsRoute2$inboundSchema: z.ZodType<
  UpdateMicrofrontendsRoute2,
  z.ZodTypeDef,
  unknown
> = z.object({
  has: z.array(
    z.union([
      z.lazy(() => UpdateMicrofrontendsHasProjectsResponse1$inboundSchema),
      z.lazy(() => UpdateMicrofrontendsHasProjectsResponse2$inboundSchema),
    ]),
  ),
  mitigate: z.lazy(() => UpdateMicrofrontendsRouteMitigate$inboundSchema),
  src: types.optional(types.string()),
});

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

/** @internal */
export const UpdateMicrofrontendsRoute1$inboundSchema: z.ZodType<
  UpdateMicrofrontendsRoute1,
  z.ZodTypeDef,
  unknown
> = z.object({
  src: types.string(),
  status: types.number(),
});

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

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

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

/** @internal */
export const UpdateMicrofrontendsBlockHistory3$inboundSchema: z.ZodType<
  UpdateMicrofrontendsBlockHistory3,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: types.literal("route-blocked"),
  route: smartUnion([
    z.lazy(() => UpdateMicrofrontendsRoute1$inboundSchema),
    z.lazy(() => UpdateMicrofrontendsRoute2$inboundSchema),
  ]),
  reason: types.string(),
  createdAt: types.number(),
  caseId: types.optional(types.string()),
  actor: types.optional(types.string()),
  comment: types.optional(types.string()),
  ineligibleForAppeal: types.optional(types.boolean()),
  isCascading: types.optional(types.boolean()),
});

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

/** @internal */
export const UpdateMicrofrontendsBlockHistory2$inboundSchema: z.ZodType<
  UpdateMicrofrontendsBlockHistory2,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: types.literal("unblocked"),
  createdAt: types.number(),
  caseId: types.optional(types.string()),
  actor: types.optional(types.string()),
  comment: types.optional(types.string()),
  ineligibleForAppeal: types.optional(types.boolean()),
  isCascading: types.optional(types.boolean()),
});

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

/** @internal */
export const UpdateMicrofrontendsBlockHistory1$inboundSchema: z.ZodType<
  UpdateMicrofrontendsBlockHistory1,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: types.literal("blocked"),
  reason: types.string(),
  statusCode: types.number(),
  createdAt: types.number(),
  caseId: types.optional(types.string()),
  actor: types.optional(types.string()),
  comment: types.optional(types.string()),
  ineligibleForAppeal: types.optional(types.boolean()),
  isCascading: types.optional(types.boolean()),
});

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

/** @internal */
export const UpdateMicrofrontendsBlockHistory$inboundSchema: z.ZodType<
  UpdateMicrofrontendsBlockHistory,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => UpdateMicrofrontendsBlockHistory1$inboundSchema),
  z.lazy(() => UpdateMicrofrontendsBlockHistory2$inboundSchema),
  z.lazy(() => UpdateMicrofrontendsBlockHistory3$inboundSchema),
  z.lazy(() => UpdateMicrofrontendsBlockHistory4$inboundSchema),
]);

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

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

/** @internal */
export const UpdateMicrofrontendsInterstitialHistory$inboundSchema: z.ZodType<
  UpdateMicrofrontendsInterstitialHistory,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: UpdateMicrofrontendsProjectsAction$inboundSchema,
  createdAt: types.number(),
  caseId: types.optional(types.string()),
  reason: types.optional(types.string()),
  actor: types.optional(types.string()),
  comment: types.optional(types.string()),
});

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

/** @internal */
export const UpdateMicrofrontendsAbuse$inboundSchema: z.ZodType<
  UpdateMicrofrontendsAbuse,
  z.ZodTypeDef,
  unknown
> = z.object({
  scanner: types.optional(types.string()),
  history: z.array(z.lazy(() => UpdateMicrofrontendsHistory$inboundSchema)),
  updatedAt: types.number(),
  block: types.optional(z.lazy(() => UpdateMicrofrontendsBlock$inboundSchema)),
  blockHistory: types.optional(
    z.array(z.union([
      z.lazy(() => UpdateMicrofrontendsBlockHistory1$inboundSchema),
      z.lazy(() =>
        UpdateMicrofrontendsBlockHistory2$inboundSchema
      ),
      z.lazy(() => UpdateMicrofrontendsBlockHistory3$inboundSchema),
      z.lazy(() => UpdateMicrofrontendsBlockHistory4$inboundSchema),
    ])),
  ),
  interstitial: types.optional(types.boolean()),
  interstitialHistory: types.optional(
    z.array(
      z.lazy(() => UpdateMicrofrontendsInterstitialHistory$inboundSchema),
    ),
  ),
});

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

/** @internal */
export const UpdateMicrofrontendsHasProjectsValue$inboundSchema: z.ZodType<
  UpdateMicrofrontendsHasProjectsValue,
  z.ZodTypeDef,
  unknown
> = z.object({
  eq: types.string(),
});

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

/** @internal */
export const UpdateMicrofrontendsHas2$inboundSchema: z.ZodType<
  UpdateMicrofrontendsHas2,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("host"),
  value: z.lazy(() => UpdateMicrofrontendsHasProjectsValue$inboundSchema),
});

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

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

/** @internal */
export const UpdateMicrofrontendsHasValue$inboundSchema: z.ZodType<
  UpdateMicrofrontendsHasValue,
  z.ZodTypeDef,
  unknown
> = z.object({
  eq: types.string(),
});

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

/** @internal */
export const UpdateMicrofrontendsHas1$inboundSchema: z.ZodType<
  UpdateMicrofrontendsHas1,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("header"),
  key: UpdateMicrofrontendsHasKey$inboundSchema,
  value: z.lazy(() => UpdateMicrofrontendsHasValue$inboundSchema),
});

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

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

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

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

/** @internal */
export const UpdateMicrofrontendsInternalRoutesMitigate$inboundSchema:
  z.ZodType<UpdateMicrofrontendsInternalRoutesMitigate, z.ZodTypeDef, unknown> =
    z.object({
      action: UpdateMicrofrontendsInternalRoutesAction$inboundSchema,
    });

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

/** @internal */
export const UpdateMicrofrontendsInternalRoutes2$inboundSchema: z.ZodType<
  UpdateMicrofrontendsInternalRoutes2,
  z.ZodTypeDef,
  unknown
> = z.object({
  has: z.array(
    z.union([
      z.lazy(() => UpdateMicrofrontendsHas1$inboundSchema),
      z.lazy(() => UpdateMicrofrontendsHas2$inboundSchema),
    ]),
  ),
  mitigate: z.lazy(() =>
    UpdateMicrofrontendsInternalRoutesMitigate$inboundSchema
  ),
  src: types.optional(types.string()),
});

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

/** @internal */
export const UpdateMicrofrontendsInternalRoutes1$inboundSchema: z.ZodType<
  UpdateMicrofrontendsInternalRoutes1,
  z.ZodTypeDef,
  unknown
> = z.object({
  src: types.string(),
  status: types.number(),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const UpdateMicrofrontendsResponseBody$inboundSchema: z.ZodType<
  UpdateMicrofrontendsResponseBody,
  z.ZodTypeDef,
  unknown
> = z.object({
  accountId: types.string(),
  analytics: types.optional(UpdateMicrofrontendsAnalytics$inboundSchema),
  appliedCve55182Migration: types.optional(types.boolean()),
  speedInsights: types.optional(
    UpdateMicrofrontendsSpeedInsights$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(UpdateMicrofrontendsConnectConfigurations$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(UpdateMicrofrontendsCrons$inboundSchema),
  dataCache: types.optional(UpdateMicrofrontendsDataCache$inboundSchema),
  deploymentExpiration: UpdateMicrofrontendsDeploymentExpiration$inboundSchema,
  expiration: types.optional(UpdateMicrofrontendsExpiration$inboundSchema),
  devCommand: z.nullable(types.string()).optional(),
  directoryListing: types.boolean(),
  installCommand: z.nullable(types.string()).optional(),
  env: types.optional(z.array(UpdateMicrofrontendsEnv$inboundSchema)),
  customEnvironments: types.optional(
    z.array(UpdateMicrofrontendsCustomEnvironments$inboundSchema),
  ),
  framework: z.nullable(UpdateMicrofrontendsFramework$inboundSchema).optional(),
  services: types.optional(z.array(UpdateMicrofrontendsServices$inboundSchema)),
  gitForkProtection: types.optional(types.boolean()),
  gitLFS: types.optional(types.boolean()),
  id: types.string(),
  ipBuckets: types.optional(
    z.array(UpdateMicrofrontendsIpBuckets$inboundSchema),
  ),
  jobs: types.optional(UpdateMicrofrontendsJobs$inboundSchema),
  latestDeployments: types.optional(
    z.array(UpdateMicrofrontendsLatestDeployments$inboundSchema),
  ),
  link: types.optional(UpdateMicrofrontendsLink$inboundSchema),
  microfrontends: types.optional(
    UpdateMicrofrontendsMicrofrontends$inboundSchema,
  ),
  name: types.string(),
  nodeVersion: UpdateMicrofrontendsNodeVersion$inboundSchema,
  optionsAllowlist: z.nullable(
    UpdateMicrofrontendsOptionsAllowlist$inboundSchema,
  ).optional(),
  outputDirectory: z.nullable(types.string()).optional(),
  passwordProtection: z.nullable(
    UpdateMicrofrontendsPasswordProtection$inboundSchema,
  ).optional(),
  passport: z.nullable(UpdateMicrofrontendsPassport$inboundSchema).optional(),
  protectionConfig: types.optional(
    UpdateMicrofrontendsProtectionConfig$inboundSchema,
  ),
  productionDeploymentsFastLane: types.optional(types.boolean()),
  resourceConfig: UpdateMicrofrontendsResourceConfig$inboundSchema,
  rollbackDescription: types.optional(
    UpdateMicrofrontendsRollbackDescription$inboundSchema,
  ),
  rollingRelease: z.nullable(UpdateMicrofrontendsRollingRelease$inboundSchema)
    .optional(),
  defaultResourceConfig:
    UpdateMicrofrontendsDefaultResourceConfig$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(UpdateMicrofrontendsStaticIps$inboundSchema),
  sourceFilesOutsideRootDirectory: types.optional(types.boolean()),
  enableAffectedProjectsDeployments: types.optional(types.boolean()),
  enableExternalRewriteCaching: types.optional(types.boolean()),
  ssoProtection: z.nullable(UpdateMicrofrontendsSsoProtection$inboundSchema)
    .optional(),
  targets: types.optional(
    z.record(types.nullable(UpdateMicrofrontendsTargets$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(UpdateMicrofrontendsPermissions$inboundSchema),
  lastRollbackTarget: z.nullable(
    UpdateMicrofrontendsLastRollbackTarget$inboundSchema,
  ).optional(),
  lastAliasRequest: z.nullable(
    UpdateMicrofrontendsLastAliasRequest$inboundSchema,
  ).optional(),
  protectionBypass: types.optional(
    z.record(UpdateMicrofrontendsProtectionBypass$inboundSchema),
  ),
  hasActiveBranches: types.optional(types.boolean()),
  trustedIps: z.nullable(UpdateMicrofrontendsTrustedIps$inboundSchema)
    .optional(),
  trustedSources: z.nullable(UpdateMicrofrontendsTrustedSources$inboundSchema)
    .optional(),
  gitComments: types.optional(UpdateMicrofrontendsGitComments$inboundSchema),
  gitProviderOptions: types.optional(
    UpdateMicrofrontendsGitProviderOptions$inboundSchema,
  ),
  paused: types.optional(types.boolean()),
  concurrencyBucketName: types.optional(types.string()),
  webAnalytics: types.optional(UpdateMicrofrontendsWebAnalytics$inboundSchema),
  security: types.optional(
    z.lazy(() => UpdateMicrofrontendsSecurity$inboundSchema),
  ),
  oidcTokenConfig: types.optional(
    z.lazy(() => UpdateMicrofrontendsOidcTokenConfig$inboundSchema),
  ),
  deploymentPolicy: z.nullable(
    z.lazy(() => UpdateMicrofrontendsDeploymentPolicy$inboundSchema),
  ).optional(),
  tier: types.optional(types.string()),
  flatRateTier: types.optional(UpdateMicrofrontendsFlatRateTier$inboundSchema),
  usageStatus: types.optional(
    z.lazy(() => UpdateMicrofrontendsUsageStatus$inboundSchema),
  ),
  features: types.optional(
    z.lazy(() => UpdateMicrofrontendsFeatures$inboundSchema),
  ),
  v0: types.optional(types.boolean()),
  v0Created: types.optional(types.boolean()),
  abuse: types.optional(z.lazy(() => UpdateMicrofrontendsAbuse$inboundSchema)),
  internalRoutes: types.optional(
    z.array(smartUnion([
      z.lazy(() => UpdateMicrofrontendsInternalRoutes1$inboundSchema),
      z.lazy(() =>
        UpdateMicrofrontendsInternalRoutes2$inboundSchema
      ),
    ])),
  ),
  hasDeployments: types.optional(types.boolean()),
  dismissedToasts: types.optional(
    z.array(z.lazy(() => UpdateMicrofrontendsDismissedToasts$inboundSchema)),
  ),
  protectedSourcemaps: types.optional(types.boolean()),
  tracing: types.optional(
    z.lazy(() => UpdateMicrofrontendsTracing$inboundSchema),
  ),
  avatar: z.nullable(types.string()).optional(),
});

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