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

import * as z from "zod/v3";
import { ClosedEnum } from "../types/enums.js";

/**
 * The issuer policy kind.
 */
export const DeleteKmsIssuerPolicyPathParamKind = {
  ProjectGrant: "project-grant",
  ConnexGrant: "connex-grant",
} as const;
/**
 * The issuer policy kind.
 */
export type DeleteKmsIssuerPolicyPathParamKind = ClosedEnum<
  typeof DeleteKmsIssuerPolicyPathParamKind
>;

export type DeleteKmsIssuerPolicyRequest = {
  /**
   * The ID of the issuer.
   */
  issuerId: string;
  /**
   * The issuer policy kind.
   */
  kind: DeleteKmsIssuerPolicyPathParamKind;
  /**
   * The policy identifier.
   */
  policyKey: 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;
};

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

/** @internal */
export type DeleteKmsIssuerPolicyRequest$Outbound = {
  issuerId: string;
  kind: string;
  policyKey: string;
  teamId?: string | undefined;
  slug?: string | undefined;
};

/** @internal */
export const DeleteKmsIssuerPolicyRequest$outboundSchema: z.ZodType<
  DeleteKmsIssuerPolicyRequest$Outbound,
  z.ZodTypeDef,
  DeleteKmsIssuerPolicyRequest
> = z.object({
  issuerId: z.string(),
  kind: DeleteKmsIssuerPolicyPathParamKind$outboundSchema,
  policyKey: z.string(),
  teamId: z.string().optional(),
  slug: z.string().optional(),
});

export function deleteKmsIssuerPolicyRequestToJSON(
  deleteKmsIssuerPolicyRequest: DeleteKmsIssuerPolicyRequest,
): string {
  return JSON.stringify(
    DeleteKmsIssuerPolicyRequest$outboundSchema.parse(
      deleteKmsIssuerPolicyRequest,
    ),
  );
}
