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

import * as z from "zod/v3";
import { safeParse } from "../lib/schemas.js";
import { ClosedEnum } from "../types/enums.js";
import { Result as SafeParseResult } from "../types/fp.js";
import * as types from "../types/primitives.js";
import { smartUnion } from "../types/smartUnion.js";
import { SDKValidationError } from "./sdkvalidationerror.js";

export type GetProjectEnvRequest = {
  /**
   * The unique project identifier or the project name
   */
  idOrName: string;
  /**
   * The unique ID for the environment variable to get the decrypted value.
   */
  id: string;
  /**
   * The Team identifier to perform the request on behalf of.
   */
  teamId?: string | undefined;
  /**
   * The Team slug to perform the request on behalf of.
   */
  slug?: string | undefined;
};

export const GetProjectEnvResponseBodyProjectsType = {
  Encrypted: "encrypted",
  Plain: "plain",
  Secret: "secret",
  Sensitive: "sensitive",
  System: "system",
} as const;
export type GetProjectEnvResponseBodyProjectsType = ClosedEnum<
  typeof GetProjectEnvResponseBodyProjectsType
>;

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

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

export type GetProjectEnvResponseBodyProjectsTarget =
  | Array<GetProjectEnvTargetProjects1>
  | GetProjectEnvTargetProjects2;

export type GetProjectEnvContentHintProjects17 = {
  type: "flags-connection-string";
  projectId: string;
};

export type GetProjectEnvContentHintProjects16 = {
  type: "integration-store-secret";
  storeId: string;
  integrationId: string;
  integrationProductId: string;
  integrationConfigurationId: string;
};

export type GetProjectEnvContentHintProjects15 = {
  type: "postgres-url-no-ssl";
  storeId: string;
};

export type GetProjectEnvContentHintProjects14 = {
  type: "postgres-database";
  storeId: string;
};

export type GetProjectEnvContentHintProjects13 = {
  type: "postgres-password";
  storeId: string;
};

export type GetProjectEnvContentHintProjects12 = {
  type: "postgres-host";
  storeId: string;
};

export type GetProjectEnvContentHintProjects11 = {
  type: "postgres-user";
  storeId: string;
};

export type GetProjectEnvContentHintProjects10 = {
  type: "postgres-prisma-url";
  storeId: string;
};

export type GetProjectEnvContentHintProjects9 = {
  type: "postgres-url-non-pooling";
  storeId: string;
};

export type GetProjectEnvContentHintProjects8 = {
  type: "postgres-url";
  storeId: string;
};

export type GetProjectEnvContentHintProjects7 = {
  type: "blob-webhook-public-key";
  storeId: string;
};

export type GetProjectEnvContentHintProjects6 = {
  type: "blob-store-id";
  storeId: string;
};

export type GetProjectEnvContentHintProjects5 = {
  type: "blob-read-write-token";
  storeId: string;
};

export type GetProjectEnvContentHintProjects4 = {
  type: "redis-rest-api-read-only-token";
  storeId: string;
};

export type GetProjectEnvContentHintProjects3 = {
  type: "redis-rest-api-token";
  storeId: string;
};

export type GetProjectEnvContentHintProjects2 = {
  type: "redis-rest-api-url";
  storeId: string;
};

export type GetProjectEnvContentHintProjects1 = {
  type: "redis-url";
  storeId: string;
};

export type GetProjectEnvResponseBodyProjectsContentHint =
  | GetProjectEnvContentHintProjects1
  | GetProjectEnvContentHintProjects2
  | GetProjectEnvContentHintProjects3
  | GetProjectEnvContentHintProjects4
  | GetProjectEnvContentHintProjects5
  | GetProjectEnvContentHintProjects6
  | GetProjectEnvContentHintProjects7
  | GetProjectEnvContentHintProjects8
  | GetProjectEnvContentHintProjects9
  | GetProjectEnvContentHintProjects10
  | GetProjectEnvContentHintProjects11
  | GetProjectEnvContentHintProjects12
  | GetProjectEnvContentHintProjects13
  | GetProjectEnvContentHintProjects14
  | GetProjectEnvContentHintProjects15
  | GetProjectEnvContentHintProjects16
  | GetProjectEnvContentHintProjects17;

export const GetProjectEnvResponseBodyProjectsResponse200Type = {
  FlagsSecret: "flags-secret",
} as const;
export type GetProjectEnvResponseBodyProjectsResponse200Type = ClosedEnum<
  typeof GetProjectEnvResponseBodyProjectsResponse200Type
>;

/**
 * Similar to `contentHints`, but should not be exposed to the user.
 */
export type GetProjectEnvResponseBodyProjectsInternalContentHint = {
  type: GetProjectEnvResponseBodyProjectsResponse200Type;
  /**
   * Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda.
   */
  encryptedValue: string;
};

export type GetProjectEnvResponseBody2 = {
  type: GetProjectEnvResponseBodyProjectsType;
  value: string;
  edgeConfigId?: string | null | undefined;
  edgeConfigTokenId?: string | null | undefined;
  createdAt?: number | undefined;
  updatedAt?: number | undefined;
  id?: string | undefined;
  key: string;
  target?:
    | Array<GetProjectEnvTargetProjects1>
    | GetProjectEnvTargetProjects2
    | undefined;
  gitBranch?: string | undefined;
  createdBy?: string | null | undefined;
  updatedBy?: string | null | undefined;
  /**
   * This is used to identify variables that have been migrated from type secret to sensitive.
   */
  sunsetSecretId?: string | undefined;
  /**
   * Legacy now-encryption ciphertext, present after migration swaps value/vsmValue
   */
  legacyValue?: string | undefined;
  decrypted?: boolean | undefined;
  configurationId?: string | null | undefined;
  contentHint?:
    | GetProjectEnvContentHintProjects1
    | GetProjectEnvContentHintProjects2
    | GetProjectEnvContentHintProjects3
    | GetProjectEnvContentHintProjects4
    | GetProjectEnvContentHintProjects5
    | GetProjectEnvContentHintProjects6
    | GetProjectEnvContentHintProjects7
    | GetProjectEnvContentHintProjects8
    | GetProjectEnvContentHintProjects9
    | GetProjectEnvContentHintProjects10
    | GetProjectEnvContentHintProjects11
    | GetProjectEnvContentHintProjects12
    | GetProjectEnvContentHintProjects13
    | GetProjectEnvContentHintProjects14
    | GetProjectEnvContentHintProjects15
    | GetProjectEnvContentHintProjects16
    | GetProjectEnvContentHintProjects17
    | null
    | undefined;
  /**
   * Similar to `contentHints`, but should not be exposed to the user.
   */
  internalContentHint?:
    | GetProjectEnvResponseBodyProjectsInternalContentHint
    | null
    | undefined;
  comment?: string | undefined;
  customEnvironmentIds?: Array<string> | undefined;
};

export const GetProjectEnvResponseBodyType = {
  Encrypted: "encrypted",
  Plain: "plain",
  Secret: "secret",
  Sensitive: "sensitive",
  System: "system",
} as const;
export type GetProjectEnvResponseBodyType = ClosedEnum<
  typeof GetProjectEnvResponseBodyType
>;

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

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

export type GetProjectEnvResponseBodyTarget =
  | Array<GetProjectEnvTarget1>
  | GetProjectEnvTarget2;

export type GetProjectEnvContentHint17 = {
  type: "flags-connection-string";
  projectId: string;
};

export type GetProjectEnvContentHint16 = {
  type: "integration-store-secret";
  storeId: string;
  integrationId: string;
  integrationProductId: string;
  integrationConfigurationId: string;
};

export type GetProjectEnvContentHint15 = {
  type: "postgres-url-no-ssl";
  storeId: string;
};

export type GetProjectEnvContentHint14 = {
  type: "postgres-database";
  storeId: string;
};

export type GetProjectEnvContentHint13 = {
  type: "postgres-password";
  storeId: string;
};

export type GetProjectEnvContentHint12 = {
  type: "postgres-host";
  storeId: string;
};

export type GetProjectEnvContentHint11 = {
  type: "postgres-user";
  storeId: string;
};

export type GetProjectEnvContentHint10 = {
  type: "postgres-prisma-url";
  storeId: string;
};

export type GetProjectEnvContentHint9 = {
  type: "postgres-url-non-pooling";
  storeId: string;
};

export type GetProjectEnvContentHint8 = {
  type: "postgres-url";
  storeId: string;
};

export type GetProjectEnvContentHint7 = {
  type: "blob-webhook-public-key";
  storeId: string;
};

export type GetProjectEnvContentHint6 = {
  type: "blob-store-id";
  storeId: string;
};

export type GetProjectEnvContentHint5 = {
  type: "blob-read-write-token";
  storeId: string;
};

export type GetProjectEnvContentHint4 = {
  type: "redis-rest-api-read-only-token";
  storeId: string;
};

export type GetProjectEnvContentHint3 = {
  type: "redis-rest-api-token";
  storeId: string;
};

export type GetProjectEnvContentHint2 = {
  type: "redis-rest-api-url";
  storeId: string;
};

export type GetProjectEnvContentHint1 = {
  type: "redis-url";
  storeId: string;
};

export type GetProjectEnvResponseBodyContentHint =
  | GetProjectEnvContentHint1
  | GetProjectEnvContentHint2
  | GetProjectEnvContentHint3
  | GetProjectEnvContentHint4
  | GetProjectEnvContentHint5
  | GetProjectEnvContentHint6
  | GetProjectEnvContentHint7
  | GetProjectEnvContentHint8
  | GetProjectEnvContentHint9
  | GetProjectEnvContentHint10
  | GetProjectEnvContentHint11
  | GetProjectEnvContentHint12
  | GetProjectEnvContentHint13
  | GetProjectEnvContentHint14
  | GetProjectEnvContentHint15
  | GetProjectEnvContentHint16
  | GetProjectEnvContentHint17;

export const GetProjectEnvResponseBodyProjectsResponseType = {
  FlagsSecret: "flags-secret",
} as const;
export type GetProjectEnvResponseBodyProjectsResponseType = ClosedEnum<
  typeof GetProjectEnvResponseBodyProjectsResponseType
>;

/**
 * Similar to `contentHints`, but should not be exposed to the user.
 */
export type GetProjectEnvResponseBodyInternalContentHint = {
  type: GetProjectEnvResponseBodyProjectsResponseType;
  /**
   * Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda.
   */
  encryptedValue: string;
};

export type GetProjectEnvResponseBody1 = {
  decrypted: boolean;
  type: GetProjectEnvResponseBodyType;
  edgeConfigId?: string | null | undefined;
  edgeConfigTokenId?: string | null | undefined;
  createdAt?: number | undefined;
  updatedAt?: number | undefined;
  id?: string | undefined;
  key: string;
  target?: Array<GetProjectEnvTarget1> | GetProjectEnvTarget2 | undefined;
  gitBranch?: string | undefined;
  createdBy?: string | null | undefined;
  updatedBy?: string | null | undefined;
  /**
   * This is used to identify variables that have been migrated from type secret to sensitive.
   */
  sunsetSecretId?: string | undefined;
  /**
   * Legacy now-encryption ciphertext, present after migration swaps value/vsmValue
   */
  legacyValue?: string | undefined;
  configurationId?: string | null | undefined;
  contentHint?:
    | GetProjectEnvContentHint1
    | GetProjectEnvContentHint2
    | GetProjectEnvContentHint3
    | GetProjectEnvContentHint4
    | GetProjectEnvContentHint5
    | GetProjectEnvContentHint6
    | GetProjectEnvContentHint7
    | GetProjectEnvContentHint8
    | GetProjectEnvContentHint9
    | GetProjectEnvContentHint10
    | GetProjectEnvContentHint11
    | GetProjectEnvContentHint12
    | GetProjectEnvContentHint13
    | GetProjectEnvContentHint14
    | GetProjectEnvContentHint15
    | GetProjectEnvContentHint16
    | GetProjectEnvContentHint17
    | null
    | undefined;
  /**
   * Similar to `contentHints`, but should not be exposed to the user.
   */
  internalContentHint?:
    | GetProjectEnvResponseBodyInternalContentHint
    | null
    | undefined;
  comment?: string | undefined;
  customEnvironmentIds?: Array<string> | undefined;
};

export type GetProjectEnvResponseBody =
  | GetProjectEnvResponseBody1
  | GetProjectEnvResponseBody2;

/** @internal */
export type GetProjectEnvRequest$Outbound = {
  idOrName: string;
  id: string;
  teamId?: string | undefined;
  slug?: string | undefined;
};

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

export function getProjectEnvRequestToJSON(
  getProjectEnvRequest: GetProjectEnvRequest,
): string {
  return JSON.stringify(
    GetProjectEnvRequest$outboundSchema.parse(getProjectEnvRequest),
  );
}

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

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

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

/** @internal */
export const GetProjectEnvResponseBodyProjectsTarget$inboundSchema: z.ZodType<
  GetProjectEnvResponseBodyProjectsTarget,
  z.ZodTypeDef,
  unknown
> = smartUnion([
  z.array(GetProjectEnvTargetProjects1$inboundSchema),
  GetProjectEnvTargetProjects2$inboundSchema,
]);

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

/** @internal */
export const GetProjectEnvContentHintProjects17$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects17,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("flags-connection-string"),
  projectId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects16$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects16,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("integration-store-secret"),
  storeId: types.string(),
  integrationId: types.string(),
  integrationProductId: types.string(),
  integrationConfigurationId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects15$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects15,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-url-no-ssl"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects14$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects14,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-database"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects13$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects13,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-password"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects12$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects12,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-host"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects11$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects11,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-user"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects10$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects10,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-prisma-url"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects9$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects9,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-url-non-pooling"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects8$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects8,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-url"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects7$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects7,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("blob-webhook-public-key"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects6$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects6,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("blob-store-id"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects5$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects5,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("blob-read-write-token"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects4$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects4,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("redis-rest-api-read-only-token"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects3$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects3,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("redis-rest-api-token"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects2$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects2,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("redis-rest-api-url"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHintProjects1$inboundSchema: z.ZodType<
  GetProjectEnvContentHintProjects1,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("redis-url"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvResponseBodyProjectsContentHint$inboundSchema:
  z.ZodType<
    GetProjectEnvResponseBodyProjectsContentHint,
    z.ZodTypeDef,
    unknown
  > = z.union([
    z.lazy(() => GetProjectEnvContentHintProjects1$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects2$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects3$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects4$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects5$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects6$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects7$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects8$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects9$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects10$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects11$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects12$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects13$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects14$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects15$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects16$inboundSchema),
    z.lazy(() => GetProjectEnvContentHintProjects17$inboundSchema),
  ]);

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

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

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

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

/** @internal */
export const GetProjectEnvResponseBody2$inboundSchema: z.ZodType<
  GetProjectEnvResponseBody2,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: GetProjectEnvResponseBodyProjectsType$inboundSchema,
  value: types.string(),
  edgeConfigId: z.nullable(types.string()).optional(),
  edgeConfigTokenId: z.nullable(types.string()).optional(),
  createdAt: types.optional(types.number()),
  updatedAt: types.optional(types.number()),
  id: types.optional(types.string()),
  key: types.string(),
  target: types.optional(
    smartUnion([
      z.array(GetProjectEnvTargetProjects1$inboundSchema),
      GetProjectEnvTargetProjects2$inboundSchema,
    ]),
  ),
  gitBranch: types.optional(types.string()),
  createdBy: z.nullable(types.string()).optional(),
  updatedBy: z.nullable(types.string()).optional(),
  sunsetSecretId: types.optional(types.string()),
  legacyValue: types.optional(types.string()),
  decrypted: types.optional(types.boolean()),
  configurationId: z.nullable(types.string()).optional(),
  contentHint: z.nullable(
    z.union([
      z.lazy(() => GetProjectEnvContentHintProjects1$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects2$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects3$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects4$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects5$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects6$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects7$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects8$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects9$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects10$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects11$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects12$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects13$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects14$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects15$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects16$inboundSchema),
      z.lazy(() => GetProjectEnvContentHintProjects17$inboundSchema),
    ]),
  ).optional(),
  internalContentHint: z.nullable(
    z.lazy(() =>
      GetProjectEnvResponseBodyProjectsInternalContentHint$inboundSchema
    ),
  ).optional(),
  comment: types.optional(types.string()),
  customEnvironmentIds: types.optional(z.array(types.string())),
});

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

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

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

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

/** @internal */
export const GetProjectEnvResponseBodyTarget$inboundSchema: z.ZodType<
  GetProjectEnvResponseBodyTarget,
  z.ZodTypeDef,
  unknown
> = smartUnion([
  z.array(GetProjectEnvTarget1$inboundSchema),
  GetProjectEnvTarget2$inboundSchema,
]);

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

/** @internal */
export const GetProjectEnvContentHint17$inboundSchema: z.ZodType<
  GetProjectEnvContentHint17,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("flags-connection-string"),
  projectId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint16$inboundSchema: z.ZodType<
  GetProjectEnvContentHint16,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("integration-store-secret"),
  storeId: types.string(),
  integrationId: types.string(),
  integrationProductId: types.string(),
  integrationConfigurationId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint15$inboundSchema: z.ZodType<
  GetProjectEnvContentHint15,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-url-no-ssl"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint14$inboundSchema: z.ZodType<
  GetProjectEnvContentHint14,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-database"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint13$inboundSchema: z.ZodType<
  GetProjectEnvContentHint13,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-password"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint12$inboundSchema: z.ZodType<
  GetProjectEnvContentHint12,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-host"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint11$inboundSchema: z.ZodType<
  GetProjectEnvContentHint11,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-user"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint10$inboundSchema: z.ZodType<
  GetProjectEnvContentHint10,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-prisma-url"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint9$inboundSchema: z.ZodType<
  GetProjectEnvContentHint9,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-url-non-pooling"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint8$inboundSchema: z.ZodType<
  GetProjectEnvContentHint8,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-url"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint7$inboundSchema: z.ZodType<
  GetProjectEnvContentHint7,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("blob-webhook-public-key"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint6$inboundSchema: z.ZodType<
  GetProjectEnvContentHint6,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("blob-store-id"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint5$inboundSchema: z.ZodType<
  GetProjectEnvContentHint5,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("blob-read-write-token"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint4$inboundSchema: z.ZodType<
  GetProjectEnvContentHint4,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("redis-rest-api-read-only-token"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint3$inboundSchema: z.ZodType<
  GetProjectEnvContentHint3,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("redis-rest-api-token"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint2$inboundSchema: z.ZodType<
  GetProjectEnvContentHint2,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("redis-rest-api-url"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvContentHint1$inboundSchema: z.ZodType<
  GetProjectEnvContentHint1,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("redis-url"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectEnvResponseBodyContentHint$inboundSchema: z.ZodType<
  GetProjectEnvResponseBodyContentHint,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetProjectEnvContentHint1$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint2$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint3$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint4$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint5$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint6$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint7$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint8$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint9$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint10$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint11$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint12$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint13$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint14$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint15$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint16$inboundSchema),
  z.lazy(() => GetProjectEnvContentHint17$inboundSchema),
]);

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

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

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

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

/** @internal */
export const GetProjectEnvResponseBody1$inboundSchema: z.ZodType<
  GetProjectEnvResponseBody1,
  z.ZodTypeDef,
  unknown
> = z.object({
  decrypted: types.boolean(),
  type: GetProjectEnvResponseBodyType$inboundSchema,
  edgeConfigId: z.nullable(types.string()).optional(),
  edgeConfigTokenId: z.nullable(types.string()).optional(),
  createdAt: types.optional(types.number()),
  updatedAt: types.optional(types.number()),
  id: types.optional(types.string()),
  key: types.string(),
  target: types.optional(
    smartUnion([
      z.array(GetProjectEnvTarget1$inboundSchema),
      GetProjectEnvTarget2$inboundSchema,
    ]),
  ),
  gitBranch: types.optional(types.string()),
  createdBy: z.nullable(types.string()).optional(),
  updatedBy: z.nullable(types.string()).optional(),
  sunsetSecretId: types.optional(types.string()),
  legacyValue: types.optional(types.string()),
  configurationId: z.nullable(types.string()).optional(),
  contentHint: z.nullable(
    z.union([
      z.lazy(() => GetProjectEnvContentHint1$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint2$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint3$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint4$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint5$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint6$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint7$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint8$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint9$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint10$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint11$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint12$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint13$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint14$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint15$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint16$inboundSchema),
      z.lazy(() => GetProjectEnvContentHint17$inboundSchema),
    ]),
  ).optional(),
  internalContentHint: z.nullable(
    z.lazy(() => GetProjectEnvResponseBodyInternalContentHint$inboundSchema),
  ).optional(),
  comment: types.optional(types.string()),
  customEnvironmentIds: types.optional(z.array(types.string())),
});

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

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

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