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

import * as z from "zod/v4-mini";
import {
  CustomerBenefitGrantCustomUpdate,
  CustomerBenefitGrantCustomUpdate$Outbound,
  CustomerBenefitGrantCustomUpdate$outboundSchema,
} from "./customerbenefitgrantcustomupdate.js";
import {
  CustomerBenefitGrantDiscordUpdate,
  CustomerBenefitGrantDiscordUpdate$Outbound,
  CustomerBenefitGrantDiscordUpdate$outboundSchema,
} from "./customerbenefitgrantdiscordupdate.js";
import {
  CustomerBenefitGrantDownloadablesUpdate,
  CustomerBenefitGrantDownloadablesUpdate$Outbound,
  CustomerBenefitGrantDownloadablesUpdate$outboundSchema,
} from "./customerbenefitgrantdownloadablesupdate.js";
import {
  CustomerBenefitGrantFeatureFlagUpdate,
  CustomerBenefitGrantFeatureFlagUpdate$Outbound,
  CustomerBenefitGrantFeatureFlagUpdate$outboundSchema,
} from "./customerbenefitgrantfeatureflagupdate.js";
import {
  CustomerBenefitGrantGitHubRepositoryUpdate,
  CustomerBenefitGrantGitHubRepositoryUpdate$Outbound,
  CustomerBenefitGrantGitHubRepositoryUpdate$outboundSchema,
} from "./customerbenefitgrantgithubrepositoryupdate.js";
import {
  CustomerBenefitGrantLicenseKeysUpdate,
  CustomerBenefitGrantLicenseKeysUpdate$Outbound,
  CustomerBenefitGrantLicenseKeysUpdate$outboundSchema,
} from "./customerbenefitgrantlicensekeysupdate.js";
import {
  CustomerBenefitGrantMeterCreditUpdate,
  CustomerBenefitGrantMeterCreditUpdate$Outbound,
  CustomerBenefitGrantMeterCreditUpdate$outboundSchema,
} from "./customerbenefitgrantmetercreditupdate.js";
import {
  CustomerBenefitGrantSlackSharedChannelUpdate,
  CustomerBenefitGrantSlackSharedChannelUpdate$Outbound,
  CustomerBenefitGrantSlackSharedChannelUpdate$outboundSchema,
} from "./customerbenefitgrantslacksharedchannelupdate.js";

export type CustomerBenefitGrantUpdate =
  | CustomerBenefitGrantCustomUpdate
  | CustomerBenefitGrantDiscordUpdate
  | CustomerBenefitGrantDownloadablesUpdate
  | CustomerBenefitGrantFeatureFlagUpdate
  | CustomerBenefitGrantGitHubRepositoryUpdate
  | CustomerBenefitGrantLicenseKeysUpdate
  | CustomerBenefitGrantMeterCreditUpdate
  | CustomerBenefitGrantSlackSharedChannelUpdate;

/** @internal */
export type CustomerBenefitGrantUpdate$Outbound =
  | CustomerBenefitGrantCustomUpdate$Outbound
  | CustomerBenefitGrantDiscordUpdate$Outbound
  | CustomerBenefitGrantDownloadablesUpdate$Outbound
  | CustomerBenefitGrantFeatureFlagUpdate$Outbound
  | CustomerBenefitGrantGitHubRepositoryUpdate$Outbound
  | CustomerBenefitGrantLicenseKeysUpdate$Outbound
  | CustomerBenefitGrantMeterCreditUpdate$Outbound
  | CustomerBenefitGrantSlackSharedChannelUpdate$Outbound;

/** @internal */
export const CustomerBenefitGrantUpdate$outboundSchema: z.ZodMiniType<
  CustomerBenefitGrantUpdate$Outbound,
  CustomerBenefitGrantUpdate
> = z.union([
  CustomerBenefitGrantCustomUpdate$outboundSchema,
  CustomerBenefitGrantDiscordUpdate$outboundSchema,
  CustomerBenefitGrantDownloadablesUpdate$outboundSchema,
  CustomerBenefitGrantFeatureFlagUpdate$outboundSchema,
  CustomerBenefitGrantGitHubRepositoryUpdate$outboundSchema,
  CustomerBenefitGrantLicenseKeysUpdate$outboundSchema,
  CustomerBenefitGrantMeterCreditUpdate$outboundSchema,
  CustomerBenefitGrantSlackSharedChannelUpdate$outboundSchema,
]);

export function customerBenefitGrantUpdateToJSON(
  customerBenefitGrantUpdate: CustomerBenefitGrantUpdate,
): string {
  return JSON.stringify(
    CustomerBenefitGrantUpdate$outboundSchema.parse(customerBenefitGrantUpdate),
  );
}
