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

import * as z from "zod/v4-mini";
import { smartUnion } from "../../types/smartUnion.js";
import {
  SubscriptionCreateCustomer,
  SubscriptionCreateCustomer$Outbound,
  SubscriptionCreateCustomer$outboundSchema,
} from "../components/subscriptioncreatecustomer.js";
import {
  SubscriptionCreateExternalCustomer,
  SubscriptionCreateExternalCustomer$Outbound,
  SubscriptionCreateExternalCustomer$outboundSchema,
} from "../components/subscriptioncreateexternalcustomer.js";

export type SubscriptionsCreateSubscriptionCreate =
  | SubscriptionCreateCustomer
  | SubscriptionCreateExternalCustomer;

/** @internal */
export type SubscriptionsCreateSubscriptionCreate$Outbound =
  | SubscriptionCreateCustomer$Outbound
  | SubscriptionCreateExternalCustomer$Outbound;

/** @internal */
export const SubscriptionsCreateSubscriptionCreate$outboundSchema:
  z.ZodMiniType<
    SubscriptionsCreateSubscriptionCreate$Outbound,
    SubscriptionsCreateSubscriptionCreate
  > = smartUnion([
    SubscriptionCreateCustomer$outboundSchema,
    SubscriptionCreateExternalCustomer$outboundSchema,
  ]);

export function subscriptionsCreateSubscriptionCreateToJSON(
  subscriptionsCreateSubscriptionCreate: SubscriptionsCreateSubscriptionCreate,
): string {
  return JSON.stringify(
    SubscriptionsCreateSubscriptionCreate$outboundSchema.parse(
      subscriptionsCreateSubscriptionCreate,
    ),
  );
}
